我一直在尝试构建一个XSD文件来验证某些xml
XSD示例
<xs:element name="person" type="persontype"/>
<xs:complexType name="persontype">
<xs:sequence>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string"/>
</xs:sequence>
</xs:complexType>
XML示例
<persontype>
<firstname/>
<lastname/>
</persontype>
如何构造xsd以要求'firstname'是必需的,并且'lastname'甚至不需要xml有效,并且序列不必按顺序排列,只要层次结构受到尊重?
可以遇到的XML的最终结果,并且我希望根据我的最终xsd认为它有效。
有效方案1
<persontype>
<firstname/>
</persontype>
有效方案2
<persontype>
<lastname/>
<firstname/>
</persontype>
在帮助下感谢您的时间。
答案 0 :(得分:1)
我已经从XML Schema tutorial on indicators:
改编了这个<xs:element name="person">
<xs:complexType>
<xs:all>
<xs:element name="firstname" type="xs:string"/>
<xs:element name="lastname" type="xs:string" minOccurs="0"/>
</xs:all>
</xs:complexType>
</xs:element>
如果使用all
指示符,则元素的顺序可以是任意的,但默认情况下,每个元素必须恰好出现一次。
要使lastname可选,您可以通过提供minOccurs
指示符并将其设置为零来更改默认值。
这将允许您选择为每个人指定一个姓氏,包含任何元素顺序。