2012-02-22 84 views
0

是否可以根據XmlSchema中的元素名稱驗證屬性值? 例如對於下面的XML片段,我想確保'thisShouldBeAnElementName'屬性中的值應該是元素名稱。所以,有效值將是'a','b'或'c'。將值與XML Schema中的元素名稱匹配

<root> 
    <a/> 
    <b/> 
    <c thisShouldBeAnElementName='a'/> 
</root> 

謝謝。

+0

那麼你會使用這個東西反正呢? – ThomasRS 2012-02-22 15:42:13

+0

它的工作流規範,元素定義的步驟,屬性定義分支構造,例如轉到'a'。在問題中做了一個非常基本的xml以簡化它。 – ilias 2012-02-22 15:47:12

+0

那麼儘管XML Schema能夠幫助您,但您可以自由地首先進行XML Schema驗證,然後編寫自己的驗證器,然後運行該驗證器。 – ThomasRS 2012-02-22 15:49:07

回答

1

在XSD 1.1,你可以寫一個斷言:

<xs:element name="root"> 
    ... 
    <xs:assert test="every $a in .//@thisshouldbeanelementname 
        satisfies node-name($a) = .//*/node-name()"/> 
    ... 
</xs:element> 

XSD 1.1,目前在Xerces和撒克遜實施。

相關問題