假设我有一个XML文件,如下所示:
<a>
<b d="value1"/>
<c d="value2"/>
</a>
在定义此XML文件结构的XSD文件中,我将名称“b”和“c”的元素定义为相同类型(类型需要属性“d”)。
假设我想要对'b'和'c'所有类型的元素进行keyReference,在XPath中有什么方法可以做到这一点吗?
在“a”类型的定义中,我希望这样:
<xs:keyref name="myReferenceName" refer="keyToReferTo">
<xs:selector xpath="[@type='typenameof elements b and c?']"/>
<xs:field xpath="@d"/>
</xs:keyref>
这样的事情是可能的,还是XPath,即使在XSD中,架构不知道?
答案 0 :(得分:1)
XPath 1.0当然不知道任何模式,版本1.0中的W3C XML模式规范甚至只使用XPath 1.0的子集。
我认为有一些工作正在定义使用XPath 2.0的W3C XML模式语言的新版本,但我不知道它的细节以及它是否允许在选择器中根据模式类型选择元素。
我认为XPath是element(*, NameOfTypeGoesHere)
,请参阅http://www.w3.org/TR/xpath20/#id-element-test