频 道 直 达 - 新闻 - 读书 - 培训 - 教程 - 前沿 - 组网 - 系统应用 - 安全 - 编程 - 存储 - 操作系统 - 数据库 - 服务器 - 专题 - 产品 - 案例库 - 技术圈 - 博客 - BBS
51CTO.COM_中国领先的IT技术网站
找资料:

使用XQuery搜索XML

作者: William Brogden 出处:TechTarget  (  ) 砖  (  ) 好  评论 ( ) 条  进入论坛
更新时间:2006-03-13 15:32
关 键 词:XQuery  XML
阅读提示:XQuery将成为一种用于描述对XML数据源的查询的语言,具有精确、强大和易用的特点。其支持者认为针对XML的XQuery非常类似针对关系数据库的SQL。

XQuery将成为一种用于描述对XML数据源的查询的语言,具有精确、强大和易用的特点。其支持者认为针对XML的XQuery非常类似针对关系数据库的SQL。对XQuery语言标准的定义工作还停留在W3C候选推荐阶段,而这也是在经过几次迭代后于2005年11月才达到的。XQuery的开发工作与XPath、XSLT 2.0以及XMLSchema的开发工作紧密相关。

从候选方案到最终推荐要十分谨慎,因为这与XPath以及其它XML和XSL标准有关。因为看起来,人们总是在不断尝试新的有趣的应用,所以他们在所有事情明确之前是不太愿意终结标准的。例如,在2月21号,某个数据类型就从XMLSchema名字空间移到了另一个。但是,有迹象表明不久将出台一个查询推荐方案。

尽管W3C十分谨慎,但是很多实现已经在过去几年内出现了。在W3C网站上列出了不少商业的和开源的应用,这表明最近的相关活动是多么频繁。如果你想了解如何使用XQuery,你可以经常浏览该网站。

为了确认所有了实现都是朝着同一个目标前进,W3C维护了一个经常更新的"XML Query测试套件"。想知道一个完整的XQuery实现将会是多么复杂吗?2006年2月15号的W3C XQuery测试套件就包含了28,245个文件,它们包括样本XML文档、查询以及期望结果的描述。

示例XQuery程序

下面是W3C用例文档中的一个示例XQuery程序。它想从"prices.xml"文件中取出标题和最低价,返回"minprice"元素的集合。操作符"doc"从文件中创建一个DOM,操作符"distinct-values"用"//book/title" XPath表达式创建两两不同的标题的集合,而操作符"min"负责计算通过XPath语句"//book[title = $t]/price"定位的价格元素集合中的浮点值的最小值。

<results>
{
let $doc := doc("prices.xml")
for $t in distinct-values($doc//book/title)
let $p := $doc//book[title = $t]/price
return
{ min($p) }
}
</results>

Saxon B XQuery处理器包括用例示例程序和prices.xml测试数据库。在设置SAXONCP环境变量到saxon8.jar文件后,我执行了下面的Java命令,其中q10.xq指的是上面的程序。

java -cp %SAXONCP% net.sf.saxon.Query -t q10.xq

大约360毫秒后,输出了XML测试结果,如下所示:

<?xml version="1.0" encoding="UTF-8"?>
<results>
<minprice title="Advanced Programming in the Unix environment">
&<price>65.95
<minprice>
<minprice title=" TCP/IP Illustrated ">
<price>65.95
<minprice>
<minprice title="Data on the Web">
<price>34.95
</minprice>
</results>

针对XML数据源应用XQuery程序的过程可以非常简单地在一个Java程序中完成。只需创建一个String的程序然后就得到一个org.w3c.dom.Document对象的结果。

XQuery表达式的结果

应用XQuery表达式的结果可以使一个简单的值也可以是一个全新的XML文档。XQuery表达式通常返回被W3C称为"sequences"的多个数据类型。它可以是类似一个字符串或浮点数的原子值,也可以是一个XML节点。

从前面的文字中,你或许会想到在Java 1.5 中实现的XPath 1.0表达式可以返回Java对象类型Double, Boolean, String, Node以及NodeList。XQuery 1.0和XPath 2.0则通过XML Schema中的类型信息大大扩展了对象类型。XQuery则想能够使用从简单内建类型开始的任何XML Schema类型。

XQuery, Java Standard Library APIs以及JSR 225

用于Java的XQuery API的正式开发工作被包括在Java Specification Request (JSR) 225中,它支持所有的在Java 应用业务领域的主要厂商。XQuery API将类似JDBC的风格,兼容所有的JAXP工具。但是现在,如果你想在Java程序中执行XQuery语句,你会使用特定厂商的API。由于XQuery还处于候选推荐的阶段,我们离在标准库中拥有标准API还非常远。

针对Java的XQuery的Saxon实现

Michael Kay发布了XQuery的Saxon B实现,并同时作为候选推荐版本发布。如果你想在Java中实验XQuery,Saxon B是一个不错的选择。Saxon使用和扩展Java 1.5中的XPath 1.0(javax.xml.xpath包)来支持XPath 2.0。

Saxon SA是Saxon的商业版本,它增添了重要功能,可以使用XML Schema中的信息来验证,还可以基于它们的schema定义类型来选择元素和属性。

其它开源实现

Sleepycat Software公司最近发布了"Berkeley DB XML 2.2"包。针对他们XML数据库的这个新版本能支持 XQuery 1.0 和XPath 2.0候选推荐文档。它不是Berkeley DB Java Edition,但它却有一个Java API来执行XQuery语句。Sleepycat被认为是开源软件领域的领导者之一。该公司最近被Oracle收购,令人震动。

总之,我发现用XQuery的Java编程的可能性比我预想的要大得多。你现在就可以使用Saxon B或其它厂商的产品,但你不应该期望XQuery会在将来加入到Java标准库中。

(责任编辑:铭铭)
发表
查看
我也说两句

匿名发表

(如果看不清请点击图片进行更换)


中 国 领 先 的 IT 技 术 网 站 ·
技 术 成 就 梦 想
·Ajax的应用开发 (查看118385次)
·SOA 面向服务架构 (查看59794次)
·AJAX技术汇总 (查看27542次)
·Ajax技术简介 (查看19573次)
·SOA概览 (查看16557次)
订阅技术快讯
电子杂志下载
名称:网络安全精品应用黄皮书
简介:《2007精品网络安全黄皮书》包括了9个大类24个小类, 800余篇文章,内容包含了熊猫烧香病毒、DDOS攻击、ARP病等热点问题的介绍及解决方案。从病毒查杀、防范、系统、数据等各方面的安全设置到黑客技术的了解、防范,涉及到了安全应用的全部领域, 由浅至深内容全面。
名称:Vista精品应用黄皮书
简介:《Vista精品应用黄皮书》囊括了Vista的各方面内容。此次的精简版,是将里面的内容做了提取,便于用户下载和使用。内容包含了各种Vista的安装与实施、技巧与解析以及各种Vista相关学习文档和相关软件的安全下载。该电子书是了解和应用Vista人员必备的工具手册,并且也是第一本
名称:2006中国IT论坛精品集合
简介:本书由“51CTO论坛推广联盟”制作完成。书中所有内容均来自各联盟成员的论坛(网站)。制作本书的目的是为了集中大家的优势资源,将更多更精彩的内容带给广大技术爱好者。本书是联盟成立以来制作的第一本书。
关键字阅读
频道精选
主编信箱 热线:010-66476606 告诉我们您想看的:专题 文章
关于我们 | 诚聘英才 | 联系我们 | 网站大事 | 意见反馈 | 网站地图
Copyright©2005-2007 51CTO.COM 版权所有