XPath:如何:使用当前上下文的给定属性名称选择所有子孙(不论深度)?

时间:2011-06-09 02:58:34

标签: xml xpath depth

的xml:

<root0>
    <elem1>
        <elem21 xlink:href="21"/>
        <elem22>
            <elem31 xlink:href="31"/>
            <elem32>
                <elem41 xlink:href="41"/>
            </elem32>
        </elem22>
    </elem1>
</root0>

深度未知。如何使用xlink:href属性选择所有元素?

我尝试了以下内容:

*[@xlink:href]
self::*[@xlink:href]

感谢任何指导。

2 个答案:

答案 0 :(得分:4)

对于只有孙子女的孩子使用

descendant-or-self::*[@xlink:href]

对于所有节点,只需在xpath前添加//

//*[@xlink:href]

此外,您的xml示例无效,但我猜它只是一个示例。

答案 1 :(得分:0)

*[@xlink:href]应该有效。您很可能尚未定义xlink命名空间。

如果您发布代码,那么我的答案可以更准确。