Xpath概念混乱

Xpath concept confusion

我一直在试图弄清楚以下 XPath 表达式在 XML 中的作用:

  1. paper/publisher/parent::*/author
  2. /bib//address[ancestor::book]
  3. /bib//author/ancestor::*//zip

1)首先是显示所有以author为根元素的parent? */ 是什么意思

2) 第二个列出book下的所有祖先根元素?

3) 第三个我真的没头绪,它列出了所有的zip节点

只是对祖先节点的整体工作方式感到困惑,请给予一些指导。

  1. 第一个 XPath 表达式使用带有元素通配符节点测试的 parent:: 轴。从 publisher 元素,"jumps up" 到 parent,paper 元素,然后 selects author child元素。如果存在 publisher 兄弟元素,则只有 select 是 author 元素。它可以写得更紧凑,并避免使用 paper 元素上的谓词过滤器使用此 XPath 查找节点树:paper[publisher]/author.

  2. XPath select 所有 address 元素都是 bib 元素的后代,也是 book 元素的后代(可能是 bib 祖先的祖先或后代)。方括号是一个谓词,它过滤通过表达式测试的节点。在这种情况下,它必须是 book 元素的后代才能 "pass" 测试并被 selected.

  3. 此 XPath 查找任何 zip 元素,该元素是 author 元素的祖先元素的后代元素,而 author 元素是 [=19= 的后代元素]元素.

下面是 XPath 轴的可视化,以了解它对 select 祖先、parent、兄弟姐妹、后代等的意义。

使用 XPath 可视化工具可能会有所帮助,以便针对某些示例评估您的 XPath 表达式 XML 并查看哪些是 selected 哪些不是。

例如: http://chris.photobooks.com/xml