【发布时间】:2010-10-29 19:13:38
【问题描述】:
XPath、XQuery 和 XPointer 有什么区别?据我所知,XQuery 是XPath 的扩展版本。我对XPath有一些基本的了解。 XPath 中是否有 XQuery 中没有的任何功能?昨天,我听到了一个新词,XPointer。我很迷惑。哪种语言用于哪种目的?
【问题讨论】:
XPath、XQuery 和 XPointer 有什么区别?据我所知,XQuery 是XPath 的扩展版本。我对XPath有一些基本的了解。 XPath 中是否有 XQuery 中没有的任何功能?昨天,我听到了一个新词,XPointer。我很迷惑。哪种语言用于哪种目的?
【问题讨论】:
嗯,我认为 XQuery 是值得区分的。 XPath 和 XPointer 几乎相同,都用于 XML 节点选择。另一方面,XQuery 是 XPath 的一个很大的扩展。例如,它提供了声明自定义函数的可能性。所以它更像是一种编程语言,它本机地与 XML 一起工作。 你可以在这里查看一些示例:embedding-xquery-in-java
问候
【讨论】:
尽管 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!
【讨论】:
XPath 有意限制为读取现有节点。
作为 XSLT,XQuery 可以创建节点。它还可以更新节点(使用 XQuery 更新工具)。
从我的 XQuery 实现者的角度来看 ;-)
【讨论】: