有没有一种方法可以将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中可用。
最佳答案
使用name()
或local-name()
函数按名称引用节点:
//*[starts-with(local-name(), 'FOO')]
关于xpath - XPath查询匹配特定模式的节点名称,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/9167369/