7

我一直在研究 XPath 解析器,这里的语法作为参考。我很惊讶@带有 a 的符号KindTest是可能的。KindTest可以是, node(), comment(), text()or processing-instruction(xyz)(他们测试节点类型)。

我的问题是这些与@标志结合时会做什么?. @processing-instruction("xyz"), @comment(), @node, 和做什么@text?他们是否在搜索带有处理指令或注释的属性?

4

2 回答 2

11

@comment()是一个有效的 XPath 位置路径步骤表达式,保证不返回任何内容。从技术上讲,它要求沿属性轴找到所有评论节点(你永远找不到)。

我告诉我的学生,这/..是一种更紧凑、更易读的方式来编写保证不会返回任何内容的完整位置路径。从技术上讲,它要求根节点的父节点。

于 2013-06-20T20:28:06.843 回答
7

NateGlenn,它不是@comment()内置在语法中的。只是和的组合@comment()没有特别禁止。

如您所知,@它只是attribute::轴的缩写。轴是内置在语法中的。节点测试(如node()comment())内置在语法的单独部分中。

为了使组合@comment()被语法禁止,必须有一个特殊情况。例如,除了返回一个空的 nodeset: 之外,您可以考虑其他没有多大意义的组合parent::text()

这更像是期待1 / 0或被sqrt(-1)C 的语法所禁止。

于 2013-06-20T21:39:17.620 回答