【问题标题】:Xpath concept confusionXpath 概念混淆
【发布时间】:2017-04-18 02:48:37
【问题描述】:

我一直在试图弄清楚以下 XPath 表达式在 XML 中会导致什么:

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

1) 首先是显示所有以作者为根元素的父节点? */ 是什么意思

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

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

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

【问题讨论】:

  • 这不是一个真正的教程网站。 XPath 有很多可用的文档页面;您可以通过 Google 找到它们。
  • 正如我所解释的,这不是一个教程网站。作为作业的一部分,您获得了这些 XPath 表达式,而您正是期望回答这些问题的人。如果我们为您做这件事,您将一无所获。如果您无法回答这些问题,请向您的导师寻求帮助。他们获得报酬是为了向您提供完成任务所需的知识,如果您不能,那么他们还没有完成他们的工作。
  • 现在我更困惑了。您不仅没有问题,而且希望我们为您编写学习指南?

标签: xpath nodes ancestor


【解决方案1】:
  1. 第一个 XPath 表达式使用带有元素通配符节点测试的 parent:: 轴。从publisher 元素,它“跳转”到它的父元素paper,然后选择author 子元素。如果存在publisher 兄弟,它只选择author 元素。它可以写得更紧凑,避免使用 paper 元素上的谓词过滤器使用此 XPath 查找节点树:paper[publisher]/author

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

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

下面是 XPath 轴的可视化,以便了解选择祖先、父代、兄弟姐妹、后代等的含义。

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

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

【讨论】:

    猜你喜欢
    • 2014-02-12
    • 1970-01-01
    • 2016-05-08
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-03-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多