模式中是否有方法來指示由元素的開放或閉合屬性確定的屬性需求。例如,我有一個元素,如果打開沒有要求屬性'測試',但是如果它關閉它是必需的。基於開放/關閉元素的XSD限制
<element name="employee" >
blah!
</element>
確定
<element name="employee" />
故障 - 屬性 '測試' 必需的。
模式中是否有方法來指示由元素的開放或閉合屬性確定的屬性需求。例如,我有一個元素,如果打開沒有要求屬性'測試',但是如果它關閉它是必需的。基於開放/關閉元素的XSD限制
<element name="employee" >
blah!
</element>
確定
<element name="employee" />
故障 - 屬性 '測試' 必需的。
我猜你正在使用「打開」來表示元素有一個文本節點的孩子,「閉」意味着它沒有。所以你說的元素應該有一個文本節點的孩子或屬性,但不是兩個(?),而不是兩個。
這被歸類爲共現約束,無法在XSD 1.0中完成。它可以用XSD 1.1中的斷言來完成。
<xs:element name="employee" type="...">
<xs:assert test="string(.) or @name"/>
</xs:element>
當前Xerces和Saxon支持XSD 1.1。
不,沒有辦法做到這一點。 (我會引用一個參考文獻,但很難引用非功能!)
一般來說,這是超出XSD提供的步驟;在極少數情況下(如IDREF),它是否提供了通過引用另一個數據來驗證一個數據的方法。 XSD 1.1提供了一些新的assertion support,它們可以滿足您的需求,但規範僅僅是此時的工作草案。