![](/img/trans.png)
[英]XSD - How to allow elements in any order any number of times in XML?
[英]XSD any element any order any number of times
我已經嘗試了所有的<xs:all>, <xs:choice>, and <xs:sequence>
這些都不能令我滿意。
有誰知道你會如何驗證這樣的東西。
<Menu>
<SubMenu>
<MenuItem .. />
<MenuItem .. />
<MenuItem .. />
</SubMenu>
<MenuItem .. >
<MenuItem .. >
</Menu>
其中,在<Menu>
標簽下<SubMenu>
和/或<MenuItem>
可以按任何順序出現任意次數(0-n)。 但至少其中一個必須至少發生一次。
忽略SubMenu標記內的驗證。
非常感謝這件事的任何幫助。
如果我已正確理解您的要求,那么您可以將模型短語稱為“SubMenu或MenuItem之一,后跟零個或多個SubMenu或MenuItem元素”。 這可以很容易地表達為兩個選擇的序列:
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<!-- whatever your element needs to be modelled as here -->
<xs:element name="MenuItem">
<xs:complexType>
<xs:attribute name="text"/>
</xs:complexType>
</xs:element>
<!-- only modelling the structure of the child elements here -->
<xs:element name="SubMenu">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="MenuItem"/>
<xs:element ref="SubMenu"/>
</xs:choice>
<xs:choice minOccurs="0" maxOccurs="unbounded">
<xs:element ref="MenuItem"/>
<xs:element ref="SubMenu"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Menu">
<xs:complexType>
<xs:sequence>
<xs:choice minOccurs="1" maxOccurs="1">
<xs:element ref="MenuItem"/>
<xs:element ref="SubMenu"/>
</xs:choice>
<xs:choice minOccurs="1" maxOccurs="unbounded">
<xs:element ref="MenuItem"/>
<xs:element ref="SubMenu"/>
</xs:choice>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
你可以使用Menu和SubMenu的共享全局類型更干凈地建模,但這種方式我希望相對明顯。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.