有没有办法将XPath的starts-with
函数应用于节点名称而不是其值?我想从以下XML文档中选择FOObar
和FOObaz
节点而不选择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中使用。
答案 0 :(得分:25)
使用name()
或local-name()
函数按名称引用节点:
//*[starts-with(local-name(), 'FOO')]