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"定位的价格元素集合中的浮点值的最小值。
|
Saxon B XQuery处理器包括用例示例程序和prices.xml测试数据库。在设置SAXONCP环境变量到saxon8.jar文件后,我执行了下面的Java命令,其中q10.xq指的是上面的程序。
java -cp %SAXONCP% net.sf.saxon.Query -t q10.xq
大约360毫秒后,输出了XML测试结果,如下所示:
|
针对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标准库中。
(责任编辑:铭铭)
|
|||
| · 我是黑客我怕谁——讲.. · ARP攻击防范与解决方案 · Solaris 10 配置管理 · Solaris基础知识入门 · RIP路由协议专栏 · MPLS路由协议专栏 · OSPF路由协议专栏 · 思科路由器产品 |
· 华为路由器产品 · 路由器模拟器 · AIX操作系统管理应用(.. · 思科路由器配置 · 路由器组网解决方案 · 路由器密码恢复 · 无线路由器故障处理 · 路由故障处理手册 |
||
|
|||
| · Java基础教程 · VPN技术 · SQL Server 2005全解 · ARP攻击防范与解决方案 · SOA 面向服务架构 · SQL Server 2005全解 · Java编程开发手册 · 三层交换技术专题 |
· SQL Server入门到精通 · Windows Server 2003企.. · Windows远程桌面应用 · C#技术开发指南 · VPN技术 · Solaris 10 配置管理 · C#技术开发指南 · Windows操作系统安装 |
||
|
|||
| · ARP攻击防范与解决方案 · VPN技术 · SQL Server 2005全解 · Java基础教程 · SQL Server入门到精通 · SQL Server 2005全解 · SOA 面向服务架构 · Java编程开发手册 |
· C#技术开发指南 · 三层交换技术专题 · C#技术开发指南 · Windows远程桌面应用 · Windows Server 2003企.. · 邮件服务器专题 · wimax技术与趋势 · Windows操作系统安装 |
||
| ·DB2 Viper快速入门 ·DB2 9数据库的镜像分割与.. |
·将XML应用程序从DB2 8.x.. ·DB2 9中的pureXML:如何.. |
| ·服务器中的“傻瓜机”在.. ·盖茨也喜欢登录Youtube看.. |
· · |
| ·网名接龙--之大话黄琨 ^o^ ·ARP欺骗引发的“冤案”—.. |
·ARP欺骗的原理、步骤和危.. ·利用负载均衡技术针对Web.. |
| ·VMware Workstation 6.01.. ·Windows Server 2008 RC0.. |
·ISA Server 2006的全自动.. ·ISA Server、虚拟机、托.. |
| · NGN:下一代网络 · 网络访问中断大排查 · FTTx光纤接入 |
· IT基础教程 · 平凡黑客讲述精彩人生(.. · 平凡黑客讲述精彩人生(.. |
| · C++是垃圾语言?! · 2007年IT界七大抄袭事件 · Java实用开发全集 |
· 解析Ajax开发框架 走进A.. · 基于Google Maps与Ajax.. · 基于Google Maps与Ajax.. |
| · 热门 IT 培训认证官方资.. · Ubuntu 中文开源频道 · Solaris基础知识入门 |
· AMD三核心处理器解析 痛.. · 服务器基础知识入门 · Rambus第二?看全缓冲内.. |
| · 甲骨文Oracle 11g正式发.. · Oracle数据库开发之PL/S.. · Oracle数据库开发基础教.. |
· 存储2006,一个并购的大.. · IDC宣布浪潮蝉联存储市.. · 双机热备技术 |