【发布时间】:2011-01-04 17:56:43
【问题描述】:
我正在尝试查找当前节点下的所有表,但不包括嵌套表。换句话说,如果我有这个,我想找到“是”而不是“否”:
<table> <!-- outer table - no -->
<tr><td>
<div> <!-- *** context node *** -->
<table> <!-- yes -->
<tr><td>
<table> ... </table> <!-- no -->
</td></tr>
</table>
<table> <!-- yes -->
<tr><td>
<table> ... </table> <!-- no -->
</td></tr>
</table>
</div>
</td></tr>
</table>
在 XPath 1.0 中是否有任何简单的方法可以做到这一点? (在 2.0 中,应该是 .//table except .//table//table,但我没有 2.0 选项。)
编辑:请,到目前为止的答案不尊重当前上下文节点的想法。我不知道第一层桌子可能在多远(并且可能会有所不同),我也不知道我是否可能在另一张桌子(或两个或三个)内。
从字面上看,我想要 XPath 2.0 中的 .//table except .//table//table,但我只有 XPath 1。
【问题讨论】:
-
我认为只写一个 XPath 1.0 是不可能的,因为我需要多次使用一个上下文,这是不允许的。我可以使用两个 XPath,一个 XPath 用于获取变量的值,第二个 XPath 用于获取所需的表吗?
-
你把它做成CW是什么原因?这是一个相当棘手的问题,它会有一个正确的答案,它不是 CW 的候选人。
-
什么是“CW”?你在那里称呼谁为“你”?我?我是怎么把它变成“CW”的? :)
-
CW 是“社区 Wiki”——在最基本的层面上,它使您的问题 a:其他人更容易编辑,并且 b:您不会从中获得任何代表点数;但实际上它往往暗示这是一个更基于讨论的问题。您通过单击复选框来完成此操作,并且没有“撤消” - 但最终如果您得到合适的答案,这不会产生很大的不同。
标签: xpath set-difference