2025云栖大会,开启通往AGI的未来之旅 了解详情
写点什么

XQuery Java API JSR 225 发布公开预览版

  • 2007-07-04
  • 本文字数:1576 字

    阅读完需:约 5 分钟

JSR 225——XQuery API for Java——的第一个公开预览草案已经发布。其规范(由Oracle 领导)的目标在于为XQuery 的Java 实现提供标准的便捷的访问接口。XQJ 是一个通用的XQuery 数据访问框架,它在许多不同的XQuery 实现之上提供了一个统一的接口。

W3C 的 XQuery 是针对 XML 的查询语言。Wikipedia 对它的定义是,提供了用于抽取和操纵来自于 XML 文档或者任何可以视作 XML 的数据源(比如关系型数据库或者 office 文档)中数据的方式。XQuery 使用 XPath 表达式语法来解析 XML 文档中的特殊部分。 XQuery 的语法要求 之一是 Query 语言必须是方便人们读写的。现在 XQuery 语言既有一种方便人们阅读的语法,也有一种基于 XML 的语法。基于 XML 的语法开始于 XQueryX 1.0

用 Java 编写的基本 XQJ 表达式看起来是这样(源自规范):

...<br></br>// establish a connection to the XQuery engine<br></br>XQConnection conn = xqds.getConnection();<p>// create an expression object that is later used</p><br></br>// to execute an XQuery expression<br></br>XQExpression expr = conn.createExpression();<p>// the XQuery expression to be executed</p><br></br>String es = "for $n in fn:doc('catalog.xml')//item " +<br></br>"return fn:data($n/name)";<p>// execute the XQuery expression</p><br></br>XQResultSequence result = expr.executeQuery(es);<p>// process the result (sequence) iteratively</p><br></br>while (result.next()) {<br></br> // retrieve the current item of the sequence as a String<br></br> String str = result.getAtomicValue();<br></br> System.out.println("Product name: " + str);<br></br>}<p>// free all resources allocated for the result</p><br></br>result.close();<p>// free all resources allocated for the expression</p><br></br>expr.close();<p>// free all resources allocated for the connection</p><br></br>conn.close();<br></br>...
虽然 XQJ 规范是由 Jim Melton(Oracle)领导制定,但它的 JCP 专家组成员包括 Jason Hunter DataDirect BEA System 等等。除了 JCP 之外的行业领导者也一直遵循 XQJ 规范,贡献自己的思想,并为了统一而改善他们自己的产品。 Saxon 的创建者及 XPath 2.0 开发参考 的作者—— Michael Kay 写道 :> 这 是近一年来的第一个新版本,而且规范是在完全保密的情况下制定的,因此我很感兴趣它里面发生了什么。我原来并没有太多期望,因为我对于之前草案的多数评论 都被婉拒了(大约在我提交完的 8 个月后,而且没有任何公开的讨论)。但肯定的是,他们已经整理了很多细微之处,但总体设计并没有改变多少。(然而大多数应 用将不得不进行调整:不是重写,而是进行多处修改。这无疑说明了系统的兼容性并不好。)它还是坚定地基于客户机 - 服务器、面向连接的模 式,这样应用程序就存在于不同于数据库所在的那台机器上(就好像回到了上世纪八十年代!)……prepared 语句并不是线程安全的——你不能编译一个表 达式并让它在多个线程中同时运行,因为 XQPreparedExpression 持有它自己的动态执行上下文。

那有什么优点吗?是的,有一些。XPath 值(19 个基本数据类型)到 Java 对象的映射做得相当好——比 JAXP 好得多……这个版本还有针对所有 XPath 类型的 Java 表示……

还有,我认为还有一个可以做得更好……

W3C XQuery 规范和 8 个相关规范(包括 XSLT 2.0 XPath 2.0 )于 2006 年 6 月 8 日提交给 W3C。其中大多数更新于 2007 年 1 月 23 日。整个行业已经开始在他们的产品中使用 XQuery,甚至 JSR 170/Java 内容仓库也在使用它作为它们的标准访问机制。InfoQ 也一直在跟踪 XQuery 规范,XQJ 规范以及实现的发展。查看英文原文: http://www.infoq.com/news/2007/07/xquery-review

2007-07-04 21:261279
用户头像

发布了 127 篇内容, 共 47.9 次阅读, 收获喜欢 5 次。

关注

评论

发布
暂无评论
发现更多内容

宠物类自媒体运营心得:如何才能拍得更有创意

石头IT视角

零基础学Java第一节(语法格式、数据类型)

编程攻略

java 5月月更

FinClip小程序+Rust(二):环境搭建

Speedoooo

rust 前端框架 小程序容器

Druid 连接池源码阅读 06

石小天

druid源码学习六

Nick

jdk JMX Druid

Go Web 编程入门:Go pongo2 模板引擎

宇宙之一粟

Go web Go 语言 模板 5月月更

FinClip小程序+Rust(五):用内联SVG实现二维码

Speedoooo

rust 前端框架 小程序容器

FinClip小程序里如何安全使用SVG

Speedoooo

rust SVG 前端框架 小程序容器

学生管理系统(5)

5月月更

String基础整合

工程师日月

java 5月月更

OpenMLDB v0.5.0 发布 | 性能、成本、灵活性再攀高峰!

第四范式开发者社区

人工智能 机器学习 数据库 数据 特征平台

AIrserver2022手机软件无线投屏电脑屏幕

茶色酒

AirServer

FinClip小程序+Rust(四):端到端融合

Speedoooo

rust 前端框架 小程序容器

Magento 和 WordPress 的区别

海拥(haiyong.site)

WordPress 5月月更

稳扎稳打步步为营 英特尔GPU将在消费市场和数据中心全面开花

科技新消息

三种常见的 Mac 安装 git 工具的方法

liuzhen007

git git 学习 5月月更

设计模式之装饰器模式

乌龟哥哥

5月月更

数据库连接池 -Druid 源码学习(六)

wjchenge

Druid 数据库连接池

FinClip小程序+Rust(一):夹心饼架构

Speedoooo

rust 前端框架 小程序容器

FinClip小程序+Rust(三):一个加密钱包

Speedoooo

rust 前端框架 小程序容器

Kubernetes下web服务的性能测试三部曲之三:横向扩容

程序员欣宸

Java Kubernetes 5月月更

druid 源码阅读 6——如何实现断链重连的?

张大彪

层层剖析一次 HTTP POST 请求事故

vivo互联网技术

HTTP CORS XSS 跨域 waf

企业架构如何促进创新?

涛哥 数字产品和业务架构

企业架构

推荐几个机器学习的好资源

AIWeker

人工智能 深度学习 5月月更

ABBYY2022全新版PDF文字识别功能

茶色酒

FFmpeg介绍

Loken

音视频 5月月更

网站开发进阶(六十八)CSS3媒体查询@media

No Silver Bullet

5月月更 媒体查询 设备自适应 hsl

Qt软件开发_解决中文路径无法识别问题

DS小龙哥

5月月更

Dockerfile 的最佳实践 | Dockerfile 你写的都对么?

xcbeyond

最佳实践 镜像 Dockerfile

XQuery Java API JSR 225发布公开预览版_Java_Abhay Bakshi_InfoQ精选文章