XML模式中任意顺序、任意数字和“Choice”元素;一元限制;?
我想做的是,声明一个名为“data”的父元素,它有6个子元素,其中一个元素是有条件的,这意味着一个元素只出现一次,另一个元素可以以任何顺序出现任意次数XML模式中任意顺序、任意数字和“Choice”元素;一元限制;?,xml,xsd,xsd-validation,Xml,Xsd,Xsd Validation,我想做的是,声明一个名为“data”的父元素,它有6个子元素,其中一个元素是有条件的,这意味着一个元素只出现一次,另一个元素可以以任何顺序出现任意次数 Example: <data> <Child1>text1</Child1> <Child2>text1</Child2> <Child3>text1</Child3> <Child4>text1</Child4>
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
文本1
文本1
文本1
文本1
文本1
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>
请建议我怎么做。?下面的XSD将根据这些规则进行验证:
- 允许
以任意顺序对Child1
元素执行所有可选操作,重复任意次数Child5
- 仅允许一个
元素,如果存在该元素,则必须位于所有其他元素之后Child6
使用XSD 1.0,您可以在两者之间取得一些成就,但您必须决定是否值得编写一个更复杂、可重用性更低的模式,以允许您在放置元素时具有所需的灵活性。先生,我希望以任意顺序从Child1到Child6,包括发生Child6时。谢谢。您是在设计这个XSD吗?如果是这样,最好将非重复元素放在另一个上下文中(例如包装重复元素,并将非重复元素作为同级元素)。如果确实需要验证与受限元素混合在一起的任何顺序无界元素,那么就不会这么简单了(除非你可以使用XSD 1.1,它支持无限元素的xs:all)。我将用一些替代方法编辑答案。是的,我正在设计这个XSD,你能给我一个简单的例子吗?
<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>
<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>