如何找到包含另一个节点名称的节点?
例如,如果<a>
存在并<b>
包含文本“a”,那么我希望选择<b>
但如果给定的名称不存在则不选择。
<root>
<a /> <!-- Do not care what is in this for now -->
<b>a</b> <!-- Find this node only -->
<b>c</b> <!-- This node is unwanted -->
</root>
我知道我可以有效地比较name()
和text()
值,以下查找引用自己的节点并排除其他节点:
*[name() = text()]
我尝试查找其他引用失败,因为text()
在此查询中处于错误的上下文中:
b[../*[name() = text()]]
<b>
当至少有一个兄弟包含它自己的名字时,上面简单地返回 all ,也许如果有<a>a</a>
.
我需要将节点的文本与名称的集合进行比较。我相信这应该是我正在寻找的,但*/name()
会引发语法错误:
b[text() = ../*/name()]