ChatGPT解决这个技术问题 Extra ChatGPT

XPath、XQuery 和 XPointer 之间的区别

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


J
Joe Wicentowski

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

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


C
Community

尽管 Matthew 的回答给人留下了良好的第一印象,但关于上述标准还有很多要讲的,还有很多相关的。网上有一篇来自 XML Holland 用户组杂志的好文章,它讲述了很多关于 XQuery 的历史,并从不同角度看待这些标准。第一部分在这里非常相关:

XQuery 代表 XML 查询语言。这已经说明了本质。它是一种从大量 XML 文件中选择子集和子结构的语言。可以将结果处理成适合用于例如后续流程或在 Web 浏览器中显示的内容。 XPath 在 XQuery 中被大量使用。所有 XML 标准都有自己的范围。我会举几个。 XSLT 是一种用于将 XML 转换为其他格式的语言。 XPointer 是 XPath 的扩展,用于在 XML 片段甚至节点的子部分中更准确地寻址节点。 XLink 是定义关系的标准。 XInclude 是一种使用例如 XLink 关系将多段 XML 组合成一个的标准。 XProc 是一个标准,可以用它来描述应如何处理 XML 文档以获得所需的最终结果。它以 XML 表示,并逐步描述流程,也称为 XML 管道。在 XProc 中,您使用 ao XQuery、XSLT 和 XInclude 语言(因此也间接使用 XPath、XPointer 和 XLink)来表达在每个步骤中准确需要完成的内容。所有这些标准都捆绑在一起。它们是相关的,并且相互依赖。下一张图片很好地总结了一些提到的 XML 标准之间的重叠,您也可以在 W3Schools 上找到该图片:

https://i.stack.imgur.com/EQ8y6.gif

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


除了上述之外,Querying XML 只是 XQuery 的开始。从一开始就定义了额外的标准,例如 XQuery Full-Text 和 XQuery Update Facility,使其比现有的更加通用。虽然现在有点过时了,但上面引用的文章经历了其中的大部分内容。
R
Rafal Rusin

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

问候


A
Alain Couthures

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

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

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


关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅