写点什么

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:261224
用户头像

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

关注

评论

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

新一代SRE:AI、可观测与未来丨暨2025第三届中国SRE大会,邀您共赴科技盛宴!

雅菲奥朗

YashanDB 使用 imp 导入时报 YAS-08023 的原因与处理办法

数据库砖家

数据库

想要给软件加点功能啥的,源码是必须要有的

程序员郭顺发

可观测性方案怎么选?SelectDB vs Elasticsearch vs ClickHouse

SelectDB

elastic 可观测性 实时数仓 Clickhouse 数据库 大数据

华为云超节点创新算力基础设施,推动千行万业AI应用开发落地

轶天下事

根据数据表快速生成原型图的工具

执于业务

DevEco重大更新快来体验吧

龙儿筝

RAG创始人关于RAG Agent的10个思考(上)

Bruce Talk

AI RAG知识库

一键多环境构建——用 Hvigor 玩转 HarmonyOS Next

鸿蒙魔法师

鸿蒙 HarmonyOS HarmonyOS NEXT Harmony5

TEN 开源超轻量 VAD 和全双工对话轮次检测模型;Stability AI 发布全新端侧音频生成模型,无版权风险丨日报

声网

《算法导论(第4版)》阅读笔记:p82-p82

codists

算法

ArkUI-X跨平台框架接入指南

龙儿筝

使用 Druid 查询 GIS 空间数据时报 read time out 的排查与规避方法

数据库砖家

数据库

通过 JDBC 向 YashanDB 批量插入空间数据的标准写法

数据库砖家

数据库

AARRR模型是什么,包括哪些阶段?一文弄懂PM必备的思维模型!

职场工具箱

人工智能 产品 AI 产品经理 AIGC

从China P&E 2025 看闪迪创作者系列如何提升生产力

极客天地

我这是“小作坊”,没那么多时间为爱奉献!

程序员郭顺发

MoE大模型迎来“原生战友”:昇腾超节点重构AI基础设施

Alter

AI 大模型 昇腾AI MoE

YashanDB 收集统计信息时报 YAS-00507 错误的处理方法

数据库砖家

数据库

Hive 初始化 YashanDB 报错 YAS-04209 的原因与处理办法

数据库砖家

数据库

Python 查询 GBK 编码的 YashanDB CLOB 字段数据被截断的原因与修复

数据库砖家

数据库

打造了一个未来感十足的图书管理 App 个人页面

繁依Fanyi

为什么在中国开源软件赚不到钱?

雅菲奥朗

#开源

RAG检索实践:多路检索(PostgreSQL环境准备)

程序员架构进阶

全文检索 5月日更 大模型 PgSQL rag

最新开源 TEN VAD 与 Turn Detection 让 Voice Agent 对话更拟人 | 社区来稿

声网

YashanDB 使用 listagg 报 YAS-02511 的原因及解决方案

数据库砖家

数据库

《算法导论(第4版)》阅读笔记:p76-p81

codists

算法

全平台开源即时通讯IM聊天框架MobileIMSDK的服务端开发指南,支持鸿蒙NEXT

JackJiang

网络编程 即时通讯 IM

迁徙:微信鸿蒙版的长征

脑极体

AI

RAG创始人关于RAG Agent的10个思考(下)

Bruce Talk

AI RAG知识库

Uniapp开发鸿蒙应用时如何运行和调试项目

幽蓝计划

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