我查看了这个问题:如何使用XPath只选择第一个实例?
但是如果我有一个像这样的节点集:
<container value="">
<data id="1"></data>
<data id="2">test</data>
<container>
<data id="1">test</data>
<data id="3">test</data>
</container>
</container>
现在我的情况是,这个节点集深深地嵌套在文档中,而我有一个指向内部容器的指针。因此,我必须在XPath中加上前缀"/container/container"(实际路径更长,但对于此示例,这应该足够)。
编辑: 我想要一个"id"为1的"data"节点,它应该来自最低的节点首先或最近的祖先。因此,如果我在"当前"(/container/container)找不到它,我应该查找祖先并获取最近的一个(或者最后,什么都没有找到)。我尝试过这个:
/container/container/ancestor-or-self::container/data[@id="1"]
它返回了一个包含两个节点的结果集。我以为我可以使用last()来获取最深的节点,所以我将其添加到末尾,但没有成功。