2012-04-15 21 views
1

是我無法弄清楚什麼是錯,此代碼:要求儘快屬性因爲有一個以上的元素

<xs:choice> 
    <xs:element name="tiles" type="tiles" minOccurs="1" maxOccurs="1"/> 
    <xs:element name="tiles" type="tiles-with-key" minOccurs="2" maxOccurs="unbounded"/> 
</xs:choice> 

我想需要一個key只要有一個以上的tiles元素屬性:

<!-- one element, no need for the "key" attribute --> 
<tiles> 
    ... 
</tiles> 

<!-- two elements, we need the "key" to differentiate them --> 
<tiles key="1"> 
    ... 
</tiles> 
<tiles key="2"> 
    ... 
</tiles> 

我在做什麼錯?

回答

1

它被稱爲唯一粒子歸因(UPA),它基本上說解析器必須知道它在模型中的位置,而不必向前看。在這種情況下,標籤名稱在您選擇的選項之間是相同的,解析器將不知道要應用的模型。

你的問題基本上是控制基於外部條件的屬性(必需與可選)的使用,這裏是瓷磚元素的數量。這在XSD 1.0中根本無法實現。帶有XSD 1.0的Schematron將是一種選擇;其他人可能會建議XSD 1.1,因爲對它的支持相當低,所以在這裏找到一個可行的解決方案爲時尚早。

+0

非常明確的解釋。非常感謝! – 2012-04-15 16:40:49

相關問題