XPath:使用local-name()获取包含具有特定属性的子节点的所有节点

时间:2013-06-16 11:09:12

标签: xml xpath

我需要获得所有owl:NamedIndividual个节点,这些节点的子rdf:type具有属性"some-attr"

<owl:NamedIndividual rdf:about="some-text">
        <rdf:type rdf:resource="some-attr"/>
        ...
</owl:NamedIndividual>

问题是前缀(owl,rdf) - 我在其他情况下使用local-name()函数来解决这个问题,但我不知道如何在属性的情况下应用它。

我尝试过这种方式(问题出在@我希望):

/*[local-name()='NamedIndividual'][local-name()='type'[local-name()='@resource'='some-attr']]/

1 个答案:

答案 0 :(得分:2)

@*[local-name() = 'resource' and . = 'some-attr']选择本地名称为resource且值为some-attr的属性。所以把它放在你的路径表达式中:

/*[local-name()='NamedIndividual']
  [*[local-name()='type' and @*[local-name() = 'resource' and . = 'some-attr']]]