XPath、XQuery 和 XPointer 之间的区别

Posted

技术标签:

【中文标题】XPath、XQuery 和 XPointer 之间的区别【英文标题】:Difference between XPath, XQuery and XPointer 【发布时间】:2010-10-29 19:13:38 【问题描述】:

XPathXQueryXPointer 有什么区别?据我所知,XQueryXPath 的扩展版本。我对XPath有一些基本的了解。 XPath 中是否有 XQuery 中没有的任何功能?昨天,我听到了一个新词,XPointer。我很迷惑。哪种语言用于哪种目的?

【问题讨论】:

【参考方案1】:

***是解决此类问题的好地方。通常,XPath 是一种用于在 DOM 中简洁地精确定位 XML 节点的语言。 XQuery 是 XPath 的超集,它还提供类似于 SQL 的 FLWOR 语法。最后,XPointer 包括 XPath,但也提供了更简单的基于位置的寻址方案。

当然,您可以随时阅读 W3C 规范以获取完整详细信息。

【讨论】:

【参考方案2】:

嗯,我认为 XQuery 是值得区分的。 XPath 和 XPointer 几乎相同,都用于 XML 节点选择。另一方面,XQuery 是 XPath 的一个很大的扩展。例如,它提供了声明自定义函数的可能性。所以它更像是一种编程语言,它本机地与 XML 一起工作。 你可以在这里查看一些示例:embedding-xquery-in-java

问候

【讨论】:

【参考方案3】:

尽管 Matthew 的回答给人留下了良好的第一印象,但关于上述标准还有很多要讲的,还有很多相关的。有一篇来自 XML Holland 用户组杂志的不错的文章在线提供,它讲述了很多关于 XQuery 的历史,并且对这些标准的各种进行了透视。第一部分在这里非常相关:

XQuery 代表XML Query Language。这已经说明了本质。它是一种从大量 XML 文件中选择子集和子结构的语言。可以将结果处理成适合用于例如后续流程或在 Web 浏览器中显示的内容。 XPath 在 XQuery 中被大量使用。

所有 XML 标准都有自己的范围。我会举几个。 XSLT 是一种将 XML 转换为其他格式的语言。 XPointer 是 XPath 的扩展,用于在 XML 片段甚至节点的子部分中更准确地寻址节点。 XLink 是定义关系的标准。 XInclude 是一种使用例如 XLink 关系将多段 XML 组合成一个的标准。 XProc 是一个标准,可以用来描述如何处理 XML 文档以获得所需的最终结果。它以 XML 表示,并逐步描述流程,也称为 XML 管道。在 XProc 中,您使用 a.o. XQuery、XSLT 和 XInclude 语言(因此也间接地包括 XPath、XPointer 和 XLink)来准确表达每个步骤中需要做什么。

所有这些标准都联系在一起。它们是相关的,并且相互依赖。下一张图片很好地总结了一些提到的 XML 标准之间的重叠,您也可以在 W3Schools 找到:

完整的文章可以在这里找到:http://grtjn.blogspot.nl/2011/10/xquery-novelties-revisited.html

HTH!

【讨论】:

除上述之外,查询 XML 只是 XQuery 的开始。从一开始就定义了额外的标准,比如 XQuery Full-Text 和 XQuery Update Facility,使其比它本身的功能更加通用。虽然现在有点过时了,但上面引用的文章中的大部分内容都经过了......【参考方案4】:

XPath 有意限制为读取现有节点。

作为 XSLT,XQuery 可以创建节点。它还可以更新节点(使用 XQuery 更新工具)。

从我的 XQuery 实现者的角度来看 ;-)

【讨论】:

以上是关于XPath、XQuery 和 XPointer 之间的区别的主要内容,如果未能解决你的问题,请参考以下文章

python爬虫之xpath的基本使用

python爬虫之xpath的基本使用

Xpath()语法

XPath 相关内容

XML中的XPATH和DTD

Xpath语法与lxml库的用法