2012-02-22 56 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和撒克逊实施。

相关问题