XSD 元素的不同顺序和无界出现的模式
XSD schema for different order of elements and occurrence as unbounded
下面是 XML 个文件的 2 个示例
<Parent>
<Child1>
<Child2> value</Child2>
<Child1>
<Child2>value<Child2>
<Child3> value </Child3>
<Child4> value </Child4>
</Child1>
<Child1>
<Child2>value<Child2>
<Child4> value </Child4>
</Child1>
</Child1>
</Parent>
<Parent>
<Child1>
<Child2> value</Child2>
<Child3> value </Child3>
<Child1>
<Child4> value </Child4>
<Child2>value<Child2>
<Child3> value </Child3>
</Child1>
</Child1>
</Parent>
元素可以是任意顺序,也可以有任意数量的序列
架构定义为:
<xs:complexType name="Child1">
<xs:sequence minOccurs="0" >
<xs:element type="xs:string" name="Child2" minOccurs="0" maxOccurs="unbounded" />
<xs:element type="xs:string" name="Child3" maxOccurs="unbounded" minOccurs="0" />
<xs:element type="xs:string" name="Child1" minOccurs="0" maxOccurs="unbounded" />
<xs:element type="xs:string" name="Child4" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Parent">
<xs:sequence>
<xs:element type="Child1" name="Child1" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
我遇到的问题是:
1.元素可以有不同的顺序。但是因为我已经将它设置为 xs:sequence ,所以需要按照特定的顺序
2. 如果我更改为 xs:all 以允许元素的不同顺序,那么我不能将 maxOccurs 设置为无限制,因为 xs:all 不允许这样做。
有没有办法允许元素的不同顺序和 maxOcurance 都是无限的?
你可以试试xs:choice:
`
<xs:complexType name="Child1">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element type="xs:string" name="Child2" />
<xs:element type="xs:string" name="Child3" />
<xs:element type="xs:string" name="Child1"/>
<xs:element type="xs:string" name="Child4" />
</xs:choice>
</xs:complexType>
`
下面是 XML 个文件的 2 个示例
<Parent>
<Child1>
<Child2> value</Child2>
<Child1>
<Child2>value<Child2>
<Child3> value </Child3>
<Child4> value </Child4>
</Child1>
<Child1>
<Child2>value<Child2>
<Child4> value </Child4>
</Child1>
</Child1>
</Parent>
<Parent>
<Child1>
<Child2> value</Child2>
<Child3> value </Child3>
<Child1>
<Child4> value </Child4>
<Child2>value<Child2>
<Child3> value </Child3>
</Child1>
</Child1>
</Parent>
元素可以是任意顺序,也可以有任意数量的序列
架构定义为:
<xs:complexType name="Child1">
<xs:sequence minOccurs="0" >
<xs:element type="xs:string" name="Child2" minOccurs="0" maxOccurs="unbounded" />
<xs:element type="xs:string" name="Child3" maxOccurs="unbounded" minOccurs="0" />
<xs:element type="xs:string" name="Child1" minOccurs="0" maxOccurs="unbounded" />
<xs:element type="xs:string" name="Child4" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
<xs:complexType name="Parent">
<xs:sequence>
<xs:element type="Child1" name="Child1" maxOccurs="unbounded" minOccurs="0" />
</xs:sequence>
</xs:complexType>
我遇到的问题是: 1.元素可以有不同的顺序。但是因为我已经将它设置为 xs:sequence ,所以需要按照特定的顺序 2. 如果我更改为 xs:all 以允许元素的不同顺序,那么我不能将 maxOccurs 设置为无限制,因为 xs:all 不允许这样做。
有没有办法允许元素的不同顺序和 maxOcurance 都是无限的?
你可以试试xs:choice:
`
<xs:complexType name="Child1">
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element type="xs:string" name="Child2" />
<xs:element type="xs:string" name="Child3" />
<xs:element type="xs:string" name="Child1"/>
<xs:element type="xs:string" name="Child4" />
</xs:choice>
</xs:complexType>
`