为什么XPath的节点测试node()不返回属性Nodes?

寻找M

我一直在研究XPath的节点测试(在此处提供文档),并在一些示例xml上对其进行了测试。

<apartment residents="4" shared="true"> 
      fries
      <!-- potatosalad -->
</apartment>

属性// apartment / @ *的Kindtest将同时返回居民共享的意思,它们都是公寓节点的子代,而任何种类的Kindtest // apartment / nodes()将返回文本节点fries和注释节点potatosalad 但不是属性节点居民共享

这对我来说似乎违反直觉,我想知道:这是否有充分的理由?

汉斯(Mads Hansen)

中的XPath//apartment/node()将选择所有的apartment元素的节点,它们是*processing-instruction()comment(),和text()

属性和名称空间是特殊的,因为它们的父级是它们“附加到”的元素,但是它们不被视为节点,因此不会从轴中选择

规格中有关子轴的信息(为强调起见,我添加了粗体):

https://www.w3.org/TR/2017/REC-xpath-31-20170321/#axes

子轴包含上下文节点的子节点,即5.3节children Accessor返回的节点

注意:只有文档节点和元素节点才有子节点。如果上下文节点是任何其他类型的节点,或者上下文节点是空文档或元素节点,则子轴是空序列。文档节点或元素节点的子级可以是元素,处理指令,注释或文本节点。属性,名称空间和文档节点永远不能显示为子级。

https://www.w3.org/TR/xpath-datamodel-31/#ElementNodeOverview

  1. 不包括属性和命名空间节点,如果节点N具有父元素E,则N必须在E的子元素之中。(属性和命名空间节点具有父元素,但不会出现在其父元素的子元素中

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

为什么不添加新节点?

XPath-属性通配符不返回属性名为value的元素

为什么节点server.listen不返回外壳

phpunit测试返回302验证错误,为什么不返回422

XPath:为什么/ document-node()与文档节点匹配?

为什么函数不返回promise“无法读取未定义的属性'then'”?

为什么要获取节点元素的样式属性在javascript中返回false?

为什么页面不返回任何xpath?

为什么我的AWS Lambda node.js mysql查询不返回?

为什么恢复状态时redux-sessionstorage不更新节点的属性?

为什么我的复选框不返回文本属性

为什么我的单元测试在此React测试中返回“无法读取未定义的属性”模拟”?

如何使用XPath查找不包含属性的XML节点?

为什么此表单不返回结果?

为什么使用xpath获取属性失败?

为什么XPath.evaluate返回NULL?

为什么HXT的xpath搜索器不返回简单查询的结果?

为什么Node.js函数不返回JSm serializeDocument结果?

为什么phantomjs不返回

为什么我的程序什么也不返回?

为什么不返回值?

为什么XMPP函数什么也不返回?

为什么在JS的背景图像上不总是返回属性“ naturalWidth”?

为什么此WebElement不返回完整的xpath?

为什么Javax“XPath评估()方法不会在选择器使用Text()节点测试时返回具有不断空间的元素

为什么 * 与 XPath 节点函数一起使用时只返回第一个 XML 标记?

为什么在测试整数时此测试不返回 False

为什么索引 HashMap 不返回引用?

w3c 文档 xpath 不返回节点集