Xml 相对于节点的XPath-如何选择当前节点?
我有一个计算相对于XML文档中节点的XPath表达式(过滤器)的系统。通常情况下,过滤器会匹配某个子节点并检查它是否存在。例如,Xml 相对于节点的XPath-如何选择当前节点?,xml,xpath,Xml,Xpath,我有一个计算相对于XML文档中节点的XPath表达式(过滤器)的系统。通常情况下,过滤器会匹配某个子节点并检查它是否存在。例如,/div[contains(@class,'soldout')]以筛选出已经售出的产品 现在,我想基于当前节点表达一个过滤器表达式。我尝试了以下方法: .[contains(@class, 'soldout')] 但是系统告诉我这不是有效的XPath “当前节点”或“上下文节点”的正确表达方式是什么?您可能需要self axis。它的工作原理如下: 要计算的节点/se
/div[contains(@class,'soldout')]
以筛选出已经售出的产品
现在,我想基于当前节点表达一个过滤器表达式。我尝试了以下方法:
.[contains(@class, 'soldout')]
但是系统告诉我这不是有效的XPath
“当前节点”或“上下文节点”的正确表达方式是什么?您可能需要self axis。它的工作原理如下: 要计算的节点/self::元素的路径[谓词]
/path to the node/self::*[contains(@class, 'soldout')]
你可能需要自我轴心。它的工作原理如下: 要计算的节点/self::元素的路径[谓词]
/path to the node/self::*[contains(@class, 'soldout')]
XPath 1.0语法中的一个不幸错误是“
”和“。
”后面不能跟谓词(这在2.0中已修复)。这是因为规则而产生的
[4] Step ::= AxisSpecifier NodeTest Predicate*
| AbbreviatedStep
(其中缩写步骤是
或。
)
因此,尽管规范中说“
”等同于self::node()
,但严格来说这不是真的,因为self::node()
后面可以跟谓词,而
后面不能跟谓词。这是XPath 1.0语法中的一个不幸错误,“
”和“。
”不能后跟谓词(这在2.0中已修复)。这是因为规则而产生的
[4] Step ::= AxisSpecifier NodeTest Predicate*
| AbbreviatedStep
(其中缩写步骤是
或。
)
因此,尽管规范中说“
”等同于self::node()
,但严格说来,这并不是真的,因为self::node()
后面可以跟谓词,而
后面不能跟谓词。谢谢你的理论背景,我总是对事物为什么是这样感兴趣+谢谢你的理论背景,我总是对为什么事情是这样感兴趣+1.