XPath查询与特定模式匹配的节点名称

时间:2012-02-06 21:15:11

标签: xpath

有没有办法将XPath的starts-with函数应用于节点名称而不是其值?我想从以下XML文档中选择FOObarFOObaz节点而不选择notFOO节点:

<?xml version="1.0" encoding="UTF-8" ?>
<RootNode>
    <FOObar xmlns="http://sample.example.com">
        <value>numOne</value>
    </FOObar>
    <FOObaz xmlns="http://sample.example.com">
        <value>numTwo</value>
    </FOObaz>
    <notFOO xmlns="http://sample.example.com">
        <value>numThree</value>
    </notFOO>
</RootNode>

我知道可以使用starts-with基于文本节点进行搜索,例如

//sample:value[starts-with(.,'num')]

有没有办法编写语法上有效的以下内容?

//sample:[starts-with(node(),'FOO')]

这个问题最初是由SSCCE提出的,但现在问题得到解答,所有代码都只是混乱。当然,它仍然可以在revision history中使用。

1 个答案:

答案 0 :(得分:25)

使用name()local-name()函数按名称引用节点:

//*[starts-with(local-name(), 'FOO')]