2011-07-01 36 views
2

模式中是否有方法來指示由元素的開放或閉合屬性確定的屬性需求。例如,我有一個元素,如果打開沒有要求屬性'測試',但是如果它關閉它是必需的。基於開放/關閉元素的XSD限制

<element name="employee" > 
    blah! 
</element> 

確定

<element name="employee" /> 

故障 - 屬性 '測試' 必需的。

回答

2

我猜你正在使用「打開」來表示元素有一個文本節點的孩子,「閉」意味着它沒有。所以你說的元素應該有一個文本節點的孩子或屬性,但不是兩個(?),而不是兩個。

這被歸類爲共現約束,無法在XSD 1.0中完成。它可以用XSD 1.1中的斷言來完成。

<xs:element name="employee" type="..."> 
    <xs:assert test="string(.) or @name"/> 
</xs:element> 

當前Xerces和Saxon支持XSD 1.1。

0

不,沒有辦法做到這一點。 (我會引用一個參考文獻,但很難引用非功能!)

一般來說,這是超出XSD提供的步驟;在極少數情況下(如IDREF),它是否提供了通過引用另一個數據來驗證一個數據的方法。 XSD 1.1提供了一些新的assertion support,它們可以滿足您的需求,但規範僅僅是此時的工作草案。