直到现在我所理解的是
::child
查找当前节点的直接子注释::following
查找当前节点的直接子节点和子节点等。::descendant
是什么?有人能用简单的例子帮助我理解吗?
答案 0 :(得分:4)
child::
将选择上下文节点的直接后代,但不会更深入,例如descendant::
。following::
将选择在上下文节点及其后代之后的所有节点,但不包括上下文节点的后代。descendant::
将选择child::
轴上的所有节点,以及他们的孩子和他们孩子的孩子等。有时候,一张图片胜过千言万语:
使用XPath可视化工具可能会有所帮助,以便针对某些示例XML评估XPath表达式,并查看选择的内容和内容。
答案 1 :(得分:1)
假设每个节点为框。现在在一个html页面中,我们有很多盒子,每个盒子里还有其他小盒子。
现在我们说: child :: of box - 这意味着我们正在查看主盒内的所有盒子。这只会考虑当前框内的框。它不会查看方框的内容。
以下::一个方框 - 这意味着我正在查看的方框后面的所有方框,这与我正在查看的当前方框没有任何关系。
后代:它就像孩子一样,但是它是 - 它看起来是节点框内的所有框,也看到了每个子框的内部。孩子只会寻找不在每个直接盒子内的直接盒子。
答案 2 :(得分:1)
主要的XPath轴遵循族树术语:
self::
是你。<强>向下:强>
child::
是你的直系孩子。descendant::
是你的孩子,他们的孩子,递归。descendant-or-self::
(又名//
):你和你的后代。<强>向上:强>
parent::
是你的母亲或父亲。 1 ancestor::
是您的父母,父母的父母是递归的。ancestor-or-self::
是你和你的祖先。横向(考虑文档中较早的元素):
previous-sibling::
是你年幼的兄弟姐妹。following-sibling::
是您的兄弟姐妹,按年龄顺序排列。previous::
是你年幼的兄弟姐妹和他们的后代,按年龄顺序排列。following::
是您的兄弟姐妹及其后代,按年龄顺序排列。<子> 1 不是两者,因为XML元素只有一个父元素。 子>
答案 3 :(得分:0)
<?xml version="1.0" encoding="UTF-8"?>
<head>
<meta content="image" property="my_property">
</head>
<body>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
</body>
child :选择当前节点的所有子节点。例如,如果您当前的节点为 <book>
,则关键字子将同时选择两个节点:
<title lang="en">Harry Potter</title>
<price>29.99</price>
跟随:在当前节点的结束标记之后选择文档中的所有内容。例如,如果您当前的节点是 <head>
,关键字跟随将选择所有节点:
<body>
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>
</body>
descendant :选择当前节点的所有后代(子孙,孙子等)。例如,如果您当前的节点是 <body>
,关键字后代将选择所有节点:
<bookstore>
<book>
<title lang="en">Harry Potter</title>
<price>29.99</price>
</book>
<book>
<title lang="en">Learning XML</title>
<price>39.95</price>
</book>
</bookstore>