关于根节点的简单XPath问题

Luc*_*uke 2 xml xpath

我刚刚开始学习XPath,我正在学习没有缩写的语言.

当位置路径以字符'/'开头时,初始上下文节点强制成为根节点...

书中的xml示例:

<widget type="gadget">
    ...
</widget>
Run Code Online (Sandbox Code Playgroud)

如果我应该写XPath所以我得到type属性为什么我要写:

/子::小部件/属性::类型

而不喜欢这个/ attribute :: type

我是否误解了根节点或?因为我认为'/'和小部件是一样的......

谢谢

小智 5

来自http://www.w3.org/TR/xpath/#attribute-nodes

每个元素节点都有一组相关的属性节点; 元素是每个属性节点的父节点; 但是,属性节点不是其父元素的子节点.

只有元素节点具有属性.

根节点不是元素.来自http://www.w3.org/TR/xpath/#root-node

根节点是树的根.除了作为树的根之外,不会发生根节点.document元素的元素节点是根节点的子节点.根节点还具有处理指令和注释节点的子节点,用于处理在prolog中和文档元素结束之后发生的指令和注释.

因此,您无法像在/@*或中那样选择根节点的属性/attribute::*

你问:

我是否误解了根节点或?

是.您不应该将根节点(抽象)与文档元素混淆(有时也称为元素根)