我希望定義強制執行下列規則XSD(基於V1.0)...控制maxOccurs的嵌套元素,而不執行序列
我有一個parent1元件,其可具有以下子元件兒童1,兒童2和兒童3。
- parent1可以具有parent1 0-1的child1
- 可以具有0-1 的的child2
- parent1可具有0 - 無界的child3
orde這些項目並不重要。例如。
<parent1>
<child3/>
<child1/>
<child2/>
<child3/>
<child3/>
</parent1>
我已經關閉了,但沒有雪茄。我能得到的最接近的是強制執行最小和最大值,但順序是強制執行的。
<xsd:element name="parent1" minOccurs="0" maxOccurs="unbounded">
<xsd:complexType>
<xsd:sequence>
<xsd:element name="child1" minOccurs="0" maxOccurs="1"/>
<xsd:element name="child2" minOccurs="0" maxOccurs="1" />
<xsd:element name="child3" minOccurs="0" maxOccurs="unbounded"/>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
我一直在使用all
代替sequence
試過,但限制maxOccurs
爲1的子元素。我也嘗試使用選項與maxOccurs
來替換序列,但這並不限制您可以在parent1
之下有多少個child1
或child2
元素。
編輯:這是XSD 1.0
我發現,對於XSD 1.1有效的解決方案,但是當你看到它是在Eclipse的喜歡如何很好的支持,我會努力並堅持與1.0。
謝謝你的答案。鑑於解決方案有多冗長,我們必須考慮使用v1.1。我的例子是一個相當小的人爲的例子,只是想了解1.0解決方案。實際上,我們將有超過3個子元素類型。而這只是XSD的1個區域。 – Roadkillnz
@Roadkillnz現在我有了更多的腦細胞功能,我想出了一個更短的解決方案。儘管如此,它仍然很冗長。 –