我無法理解下面的XML架構的行爲:理解XSD:選擇的minOccurs
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
<xsd:element name="rootnode">
<xsd:complexType>
<xsd:sequence>
<xsd:choice minOccurs="1" maxOccurs="2">
<xsd:element name="e1" minOccurs="1" maxOccurs="2"/>
<xsd:element name="e2" minOccurs="0" maxOccurs="1"/>
</xsd:choice>
</xsd:sequence>
</xsd:complexType>
</xsd:element>
</xsd:schema>
我希望無論是元素<e1>
或<e2>
需要爲<rootnode>
孩子的至少一個實例。儘管我的期望,一個空<rootnode>
將根據該模式驗證:
> xmllint --schema test.xsd empty.xml
<?xml version="1.0" encoding="UTF-8"?>
<rootnode>
</rootnode>
empty.xml validates
如果我改變元素e2
的minOccurs
屬性比其他"0"
東西,我得到我最初的預期行爲。
它好像元素的單純沒有
<e2>
數爲xsd:choice
的在我的例子發生。如果是這種情況,那麼如何發生這種無限次數的事件並不違反我的
xsd:choice
中的maxOccurs
限制?
@ mizo寫道(在我刪除的答案中):我畫了一個這樣的決策樹,並得出結論,這個選擇可能導致十一個不同的序列。如果我決定「去購物」一次,我可以用e1,e1 e1,nothing或e2結束。如果我決定「購物」兩次,我可以結束以前的四種排列或e1 e1 e1,e1 e2,e1 e1 e1 e1,e1 e1 e2,e2 e1,e2 e1 e1或e2 e2中的任何一個。它是否正確? - mizo 6小時前 – 2011-03-08 02:16:35
這就是我吃香蕉的原因:香蕉樹中的分支較少。 – Dan 2013-05-15 04:06:08
最佳答案我已閱讀過一段時間:清晰,簡潔,讓你在這個過程中微笑。榮譽。 – tsemer 2016-03-03 15:37:05