Xml 在XSD模式中定义复杂类型的默认值
我有一个包含以下内容的xsd:Xml 在XSD模式中定义复杂类型的默认值,xml,xsd,Xml,Xsd,我有一个包含以下内容的xsd: <xs:complexType name="MyDataType"> <xs:simpleContent> <xs:extension base="xs:boolean"> <xs:attribute name="id" type="xs:int" fixed="9999" /> </xs:extension> </xs:sim
<xs:complexType name="MyDataType">
<xs:simpleContent>
<xs:extension base="xs:boolean">
<xs:attribute name="id" type="xs:int" fixed="9999" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
<xs:complexType name="MessageType">
<xs:all>
<xs:element name="Data" type="MyDataType"/>
</xs:all>
</xs:complexType>
所以这个片段是有效的:
<Message>
<Data>true</Data>
</Message>
真的
其中消息定义为MessageType类型。但我想做的是让客户端能够省略数据元素:
<Message></Message>
(或等效的自闭合元件)
在语义上,有点像:
<xs:complexType name="MyDataType">
<xs:simpleContent>
<xs:extension base="xs:boolean" default="true">
<xs:attribute name="id" type="xs:int" fixed="9999" />
</xs:extension>
</xs:simpleContent>
</xs:complexType>
将默认值添加到扩展中。但是不起作用……你不能实现你想要的 更重要的是,假设您将default=“true”移动到数据元素声明中,并使数据成为可选的(通过添加minOccurs=“0”)。。。它对元素和属性的工作方式不同。。。引用:“缺少属性时应用默认属性值,元素为空时应用默认元素值。” 因此,您可能得到的最接近的结果是允许使用
,在这种情况下,默认值“true”将通过PSVI可用。的可能副本