13.1 XQuery简介

XQuery和前面介绍的XPath、XSLT都有非常密切的关联,下面将详细介绍XQuery和XPath、XSLT之间的关系。

13.1.1 XQuery和XPath的关系

XQuery 1.0和XPath 2.0使用相同的数据模型,而且支持相同的函数和运算符。因此读者应该先掌握本书第9章的内容,然后再来学习本章内容。

实际上,XQuery中包含大量的路径表达式,用于定位树中的节点,就像XSLT必须建立在XPath基础上一样,XQuery也必须建立在XPath基础之上。

如下代码用于在books.xml文件中选取所有的title元素:

alt

其中/bookstore选取<bookstore…/>元素,/book选取<bookstore…/>元素下的所有<book…/>元素,而/title则选取每个<book…/>元素下的所有<title…/>元素,这实际上就是典型的XPath表达式。


alt提示

上面的路径表达式中的doc()是一个函数,它负责根据指定URI加载XML文档,并返回该XML文档对应的文档节点。


除此之外,XQuery中的路径表达式一样可使用限定谓语。

下面的谓语用于选取<bookstore…/>元素下的所有<price…/>子元素的值小于30的<book…/>元素:

alt

13.1.2 XQuery和XSLT的关系

XQuery和XSLT都是建立在XPath基础之上的,而且都可用于提取XML文档中的数据,因此它们之间存在很多相似和重叠的地方。XQuery和XSLT之间的关键区别在于:XQuery主要用于从XML数据中提取数据;而XSLT则主要用于将XML文档转换为其他文档。

归纳起来,XQuery和XSLT之间主要存在如下两点差异:

alt 从功能上分:XQuery侧重于从XML文档中提取数据,并可以将提取的数据放入任意的文档片段之中。而XSLT侧重于将XML文档转换为其他文档,因此XSLT总是对XML文档进行整体转换。

alt 从语法上分:XSLT使用样式单文档进行转换,其样式单文档采用的依然是XML语法;而XQuery则不再采用XML语法,它采用全新的查询语法,因此更加简单易用。