用于XQuery查询的Java API
http://tech.ddvip.com 2007年07月03日 社区交流
内容摘要:这篇文章对XQJ(XQuery Java API)进行了简要的介绍,并且讨论了一些为XQuery中的关键概念进行建模的接口。如同JDBC在关系数据库中的成功,我们相信XQJ会成为对XML数据源的XQuery引擎进行交互中最广泛使用的Java API。
XQuery类型系统的支持
XQuery有类型——并且还有支持它们的接口。XQSequenceType和XQItemType接口允许用户使用XQuery类型系统。XQSequenceType接口代表了XQuery中定义的序列类型(sequence ),而XQItemType接口代表了XQuery中定义的元素类型(item type) 。XQItemType扩展了XQSequenceType 但是将出现次数限制为1。XQItem接口包含了获得关于XQuery元素类型信息的方法,比如元素类型、基础类型、节点名(如果有的话)、节点类型名(如果有的话)以及和类型有联系的任何XML Schema URI。
XQJ给予了实现很大的自由处理XML模式类型。因为XQJ被设计为能够和各种XQuery引擎协同工作,你不能为XQJ的实现和底层的XQuery引擎之间假设任何特定的关系。因此你不能假设某个XQJ的时间和XQuery引擎会共享相同的XML模式仓储。为了解决这个问题,XQJ API使用叫做isUserDefinedXMLSchemaTypeSupported()的XQMetaData方法来判断是否XQJ的实现可以回答关于对XML模式依赖的问题。对于紧耦合的系统,XQuery引擎和XQJ实现共享了相同的XML模式仓储,isUserDefinedXMLSchemaTypeSupported 就会返回ture,对于松耦合的系统,这个值被设为false。
使用XQMetaData
XQMetaData接口为用户提供了关于底层XQJ和XQuery实现的额外的信息。它包含方法查询某些特定的XQuery的功能,比如StaticTypingFeature和SchemaImportFeature,是否被支持。它还提供了关于数据源的通用信息。XQMetaData接口为XQJ用户起到了可移植层的作用。这类似于JDBC中的DatabaseMetaData接口。
未来的发展方向
随着SQL/XML成为标准,程序员将能够在SQL中嵌入和执行XQuery——这样JDBC最终会支持XQuery。但是,我们相信XQJ仍然是必要的,由于不是所有的需要XQJ的XQuery处理器都支持SQL和SQL/XML。进一步,XQJ已经定义了一些重要的接口(上面已提到)来建模XQuery中的关键概念,以及经典的XML Java接口,比如DOM、SAX和StaX。当JDBC最终支持SQL/XML 2006,它让SQL调用XQuery,这些XQJ接口会被使用。潜在的集成点是让JDBC XMLType支持一个使用XQJ定义的接口来创建XQuery数据模型。
这篇文章对XQJ(XQuery Java API)进行了简要的介绍,并且讨论了一些为XQuery中的关键概念进行建模的接口。如同JDBC在关系数据库中的成功,我们相信XQJ会成为对XML数据源的XQuery引擎进行交互中最广泛使用的Java API。
责编:豆豆技术应用