元素的后代(XPath)

6
我正在寻找一个XPath表达式,它可以给我一个元素的所有孙子元素。
这个表达式是否正确:child/child/*?

好问题(+1)!看正确答案。提示:它不是当前选择的那个... :) - Dimitre Novatchev
文本节点的子节点是否被认为是孙子节点? - vtd-xml-author
2个回答

5

4
这正确吗:child/child/*?
不,child 选择当前节点的所有子元素,其名称为 childchild/child 选择任何一个名为 child 的父元素的子元素中,名称也为 child 的所有元素。因此,以上表达式选择当前节点的所有孙子元素,这些元素名为 child,并且它们的父元素也名为 child。这最接近 "元素的孙子"。
你询问的 XPath 表达式: child/child/* 选择当前节点的所有元素(无论名称),这些元素是名为 child 的元素的子元素,这些元素又是名为 child 的元素的子元素,这些元素是当前节点的子元素。这些是当前节点的曾孙元素(孙子的子元素)。
为了完全回答问题,以下表达式选择当前节点的所有孙子元素: */node() 这些都是当前节点的所有元素的子元素,这些元素是当前节点的所有子元素的子元素。
请注意以下内容:
1. 只有元素和文档节点可以有子节点。 2. 除文档节点外的任何节点(除属性和命名空间节点外)都可以是其他节点的子节点。因此,有可能会存在不是元素的孙子节点 - 例如文本节点、注释节点和处理指令节点。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接