【发布时间】:2013-12-20 11:51:37
【问题描述】:
我看过这个问题:Select first instance only with 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 的“数据”节点,它应该首先来自最低节点或最近的祖先。所以,如果我在“当前”(/container/container)上找不到它,我应该看看祖先并找到最近的一个(或者最后,什么都找不到)。我试过这个:
/container/container/ancestor-or-self::container/data[@id="1"]
这会带回一个包含两个节点的结果集。我想我可以使用 last() 来获得最深的,所以我在最后加上了它,但无济于事。
【问题讨论】:
-
规范可以做得更清楚。你想要数据节点吗?数据节点的 id 必须为 1?如果数据节点的 id 不为 1,则形成原始容器,您想将文档向上移动到父容器,以查看是否有 id 为 1 的数据节点,如果没有,则一直持续到具有 id 的数据节点1 个被发现。是这样描述的吗?
-
我试图更清楚地描述我正在寻找的东西,尽管有些人猜到了。对不起!
标签: xpath