Xpath概念混乱
Xpath concept confusion
我一直在试图弄清楚以下 XPath 表达式在 XML 中的作用:
paper/publisher/parent::*/author
/bib//address[ancestor::book]
/bib//author/ancestor::*//zip
1)首先是显示所有以author为根元素的parent? */ 是什么意思
2) 第二个列出book下的所有祖先根元素?
3) 第三个我真的没头绪,它列出了所有的zip节点
只是对祖先节点的整体工作方式感到困惑,请给予一些指导。
第一个 XPath 表达式使用带有元素通配符节点测试的 parent::
轴。从 publisher
元素,"jumps up" 到 parent,paper
元素,然后 selects author
child元素。如果存在 publisher
兄弟元素,则只有 select 是 author
元素。它可以写得更紧凑,并避免使用 paper
元素上的谓词过滤器使用此 XPath 查找节点树:paper[publisher]/author
.
XPath select 所有 address
元素都是 bib
元素的后代,也是 book
元素的后代(可能是 bib
祖先的祖先或后代)。方括号是一个谓词,它过滤通过表达式测试的节点。在这种情况下,它必须是 book
元素的后代才能 "pass" 测试并被 selected.
此 XPath 查找任何 zip
元素,该元素是 author
元素的祖先元素的后代元素,而 author
元素是 [=19= 的后代元素]元素.
下面是 XPath 轴的可视化,以了解它对 select 祖先、parent、兄弟姐妹、后代等的意义。
使用 XPath 可视化工具可能会有所帮助,以便针对某些示例评估您的 XPath 表达式 XML 并查看哪些是 selected 哪些不是。
我一直在试图弄清楚以下 XPath 表达式在 XML 中的作用:
paper/publisher/parent::*/author
/bib//address[ancestor::book]
/bib//author/ancestor::*//zip
1)首先是显示所有以author为根元素的parent? */ 是什么意思
2) 第二个列出book下的所有祖先根元素?
3) 第三个我真的没头绪,它列出了所有的zip节点
只是对祖先节点的整体工作方式感到困惑,请给予一些指导。
第一个 XPath 表达式使用带有元素通配符节点测试的
parent::
轴。从publisher
元素,"jumps up" 到 parent,paper
元素,然后 selectsauthor
child元素。如果存在publisher
兄弟元素,则只有 select 是author
元素。它可以写得更紧凑,并避免使用paper
元素上的谓词过滤器使用此 XPath 查找节点树:paper[publisher]/author
.XPath select 所有
address
元素都是bib
元素的后代,也是book
元素的后代(可能是bib
祖先的祖先或后代)。方括号是一个谓词,它过滤通过表达式测试的节点。在这种情况下,它必须是book
元素的后代才能 "pass" 测试并被 selected.此 XPath 查找任何
zip
元素,该元素是author
元素的祖先元素的后代元素,而author
元素是 [=19= 的后代元素]元素.
下面是 XPath 轴的可视化,以了解它对 select 祖先、parent、兄弟姐妹、后代等的意义。
使用 XPath 可视化工具可能会有所帮助,以便针对某些示例评估您的 XPath 表达式 XML 并查看哪些是 selected 哪些不是。