【发布时间】:2015-07-02 00:50:16
【问题描述】:
假设我有下面显示的 XML:
<ns1:test xmlns:ns1="http://www.w3.org/TR/html3/" xmlns:UML="http://www.w3.org/TR/html4/">
<UML:Class name="test1">
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test2" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test3" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="RCS"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test4" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="DFK"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test5" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="DSO"/>
</UML:ModelElement.stereotype>
</UML:Class>
</ns1:test>
如何编写一个与命名空间无关的 XPath 查询,它将获取所有包含属性名称等于“AFV”的“Stereotype”元素的“Class”元素?
如果没有任何命名空间,我将使用所谓的 Xpath Axes,我的查询将如下所示:
//Class[descendant::Stereotype[@name='AFV']]
XPath 查询应该返回:
<UML:Class name="test1">
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
<UML:Class name="test2" >
<UML:ModelElement.stereotype>
<UML:Stereotype name="AFV"/>
</UML:ModelElement.stereotype>
</UML:Class>
【问题讨论】: