Xpath概念混乱

时间:2017-04-18 02:48:37

标签: xpath nodes ancestor

我一直试图找出以下XPath表达式在XML中的含义:

  1. paper/publisher/parent::*/author
  2. /bib//address[ancestor::book]
  3. /bib//author/ancestor::*//zip
  4. 1)第一个是显示所有以作者为根元素的父母?什么是* /意味着

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

    3)第三个我真的不知道,它列出了所有的zip节点

    对于祖先节点的整体运作方式感到困惑,请给出一些指导。

1 个答案:

答案 0 :(得分:0)

  1. 第一个XPath表达式使用parent::轴和元素通配符节点测试。从publisher元素开始,它会跳起来#34;到它的父级paper元素,然后选择author子元素。如果存在author兄弟,它仅选择publisher元素。它可以更紧凑地编写,并避免使用paper元素上的谓词过滤器使用此XPath查找节点树:{/ 1>

  2. XPath选择所有paper[publisher]/author元素作为address元素的后代,并且也是bib元素的后代(可能是book元素的后代。 bib祖先)。方括号是谓词,它过滤通过表达式测试的节点。在这种情况下,它必须是book元素的后代才能通过"传递"测试并被选中。

  3. 此XPath查找作为元素的后代的任何zip元素,该元素是author元素的祖先,是bib元素的后代。 / p>

  4. 下面是XPath轴的可视化,以便了解选择祖先,父,兄弟,后代等意味着什么。

    visualization of XPath axes

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

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