"/"与XPath 1.0中的"/*/parent ::*"相同吗?

pre*_*edi 1 xml xpath

我一直在阅读XPath规范并使用XPath Visualizer工具以获得更深入的XPath 1.0知识.

我可以使用选择文档的根节点/.当我在工具中输入此字符时,在其文本编辑器中没有指示可视选择,但状态栏包含以下文本:

"/: 1 node selected",

这是预期的.选择的是不可见的根节点(文档根).

但是当我将/*/parent::*字符序列输入到工具中时,我得到了

"/*/parent::*: Zero nodes selected".

该工具是否正确或该表达式是否还应选择根节点?

我也尝试使用祖先轴而不是父节点,规格说明如下:

祖先轴包含上下文节点的祖先; 上下文节点的祖先由上下文节点的父节点和父节点的父节点组成,依此类推; 因此,除非上下文节点是根节点,否则祖先轴将始终包括根节点

其中特别提到了根节点.因为在我的情况下,第一个位置步骤的上下文节点是文档元素,结果集是否应该包含根节点?为什么不?

规格也说这个:

父轴包含上下文节点的父节点(如果有)

还有这个:

/选择文档根(始终是文档元素的父级)

请注意,我故意在上面的文本中使用与规范中使用的相同的术语.

Edit01

加载到工具中的xml文档是一个格式良好的XML文档,因此非空.

Pau*_*her 5

/是文件.不是文档元素(正如你所提到的,你自己).

*选择一个元素(与attribute::or一起使用时除外namespace::).

对于任何节点,只要它是一个元素,就parent::*选择父节点,而不仅仅是任何父节点.因此,对于文档元素,不存在.parent::*

/*是文档元素,所以/*/parent::*不可能存在.

同样如此ancestor::*.由于document元素的唯一祖先不是元素,因此不匹配.

  • `节点测试*对于主节点类型的任何节点都为真.主节点类型是元素,名称空间或属性之一,它不包括根节点.`node()`然而,确实如此. (2认同)