我要做的是,声明一个名为" data"的父元素,它们具有这些元素的6个子元素是条件的,这意味着一个元素只出现而且只有一个时间和其他任何订单都可以出现任意次数。
Example:
<data>
<Child1>text1</Child1>
<Child2>text1</Child2>
<Child3>text1</Child3>
<Child4>text1</Child4>
<Child5>text1</Child5>
<Child6>text1</Child6> <!-- Only one times-->
</data>
1:所有元素都可以按任意顺序和任意次数出现。
2:Child6只出现一次。
XSD代码
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:element name="sequence" minOccurs="0" maxOccurs="unbounded">
<xs:complexType>
<xs:choice minOccurs="0" maxOccurs="unbounded" >
<xs:element ref="Child1" />
<xs:element ref="Child1" />
<xs:element ref="Child3" />
<xs:element ref="Child4" />
<xs:element ref="Child5" />
<xs:element ref="Child6" minOccurs="0" maxOccurs="1"/>
</xs:choice>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
请建议我怎么做。?
答案 0 :(得分:1)
以下XSD将根据以下规则进行验证:
Child1
到Child5
元素,所有这些元素都是可选的,重复任意次。Child6
元素,如果存在,必须在所有其他元素之后定位。
<xs:element name="data">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element name="Child1" />
<xs:element name="Child2" />
<xs:element name="Child3" />
<xs:element name="Child4" />
<xs:element name="Child5" />
</xs:choice>
<xs:element name="Child6" minOccurs="0" maxOccurs="1"/>
</xs:sequence>
</xs:complexType>
</xs:element>
要允许Child6
出现在任何地方,您可以使用xs:all
但是您需要一个 XSD 1.1 兼容解析器,因为XSD 1.0解析器不允许使用xsd:all
无限次出现:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified"
xmlns:vc="http://www.w3.org/2007/XMLSchema-versioning" vc:minVersion="1.1">
<xs:element name="data">
<xs:complexType>
<xs:all>
<xs:element name="Child1" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Child2" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Child3" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Child4" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Child5" minOccurs="0" maxOccurs="unbounded" />
<xs:element name="Child6" minOccurs="0" maxOccurs="1"/>
</xs:all>
</xs:complexType>
</xs:element>
</xs:schema>
您可以在XSD 1.0之间实现某些目标,但您必须决定是否值得编写更复杂且更少可重复使用的架构,以便在放置元素时获得所需的灵活性