服务热线:13616026886

技术文档 欢迎使用技术文档,我们为你提供从新手到专业开发者的所有资源,你也可以通过它日益精进

位置:首页 > 技术文档 > JAVA > 新手入门 > 基础入门 > 查看文档

saxon - xslt与xquery处理器

saxon 是由英国的michael kay开发的xsltxquery处理器,自从1999年以开源产品发布,引导着xslt处理器技术,并赢得较高声誉。迄今依然是仅有的xslt2.0规范草案的实现,在很大程度上推动了xslt语言的普及。

2003年中发布的7.6版开始,saxon增加了对xquery的支持。两种语言的运行期代码是相同的,这说明,事实上它们有非常相似的语义。saxon中的xquery支持本质上由一个xquery解析器(也是xpath解析器的扩展)组成;解析器与xslt处理器一样,生成相同的内部可解释的代码。

xquery处理器没有提供图形用户界面,可以从操作系统的命令行调用,也可以通过java应用程序的api调用。

saxon是一个内存处理器。无论使用xslt还是xquerysaxon被设计来处理在内存中装配好的源。

saxon也是仅有的在一个集成包中提供xsltxquery的产品,可以使用每种语言以获得最好的效果。两个接口是互补的:你可以在xquery中写一个函数库,并在xslt样式表中调用此函数。

saxon介绍

版本8.1.1是最新的saxonica的对xpath2.0xslt2.0xquery1.0的实现。这个版本实现了这些语言的模式敏感(schema-aware)的特性,也包含一个自立的符合xml schema1.0的模式处理器。

saxon 8.1 是在与stylus studio合作下开发的。stylus studio版本6利用了8.1saxon引入的新特性,而支持样式表和查询调试。saxonica乐于推荐stylus studio作为一个领先的xmlxsltxquery开发环境。

saxon 8.1 提供新的功能,改良的性能,和更好的程序诊断。saxon-sa 的特许样式也更加灵活,在不同的价格层次提供不同的特性组合。

产品已经按照20046月发布的工作草案调整,虽然少数特性尚未实现,自从草案发布,改变已经列入实现结果。

saxon 8.1现有两个版本。saxon-b 8.1是一个无模式的处理器,并且作为开源产品免费在sourceforgehttp://saxon.sf.net/)上提供。它遵照xslt2.0的基本一致性,也遵循xquery1.0saxon-sa 8.1 是程序包的模式敏感(schema-aware)版本,在saxonica有限公司(http://www.saxonica.com/)以商业配套产品提供。许可证选项有xsltxquery、模式验证,全部证书就可获得全部功能。

saxon 8.1.1是一个维护版本,更正了8.1中的几个错误。

请注意:帮助文档在saxonica站点和下载文件中都有。有时在线版本会更新一些。下载文件也包括全部的api文档,在doc/api目录中。

当前版本的java文档api详细说明在http://www.saxonica.com/documentation/javadoc/index.html提供

全部变更记录在changes.html中提供。

saxon 8.0 已经被许多用户用来开发应用程序。代码提供稳定可靠。但是你要清楚,规范还在改动,新的saxon版本将跟踪规范改动,不保证向后兼容。

如果你期待完全的稳定性,优先选用版本是saxon 6.5.3,它实现了xslt1.0xpath1.0

saxon 8.1 要求java jdk 1.4。尽管由于在dom接口不兼容而不能在jdk1.5下编译源码,确信在jdk1.5下也没有问题。

什么是saxon?

saxon程序包是一个处理xml文档的工具集。主要组成有:

·         xslt 2.0处理器,可以从命令行使用,或者使用标准jaxp应用程序接口从java应用程序调用。saxon可以用jaxp应用程序接口与java应用程序结合,这意味着一个java应用程序可以在不改变应用程序代码的情况下,在不同的xslt处理器之间切换。saxon既精密的符合xslt 2.0规范,还提供了大量强大的扩展。

·         xpath 2.0处理器,java应用程序可以通过一个应用程序接口访问。

·         xquery 1.0处理器,可以从命令行使用,或者使用一个apijava应用程序调用。

·         xml schema 1.0处理器,可以单独使用来验证一个模式的正确性,或者对比一个模式中的定义来验证一个源文档。也用来支持xsltxquery处理器的模式敏感(schema-aware)功能。

你可以通过写xslt样式表、写xquery查询、写java应用程序、或者组合这些方法来使用saxon处理xml

saxon完全实现了xslt 1.0 推荐标准,包括xpath 1.0 saxon 8.0 也实现了在xslt 2.0xpath 2.0query 1.0工作草案中定义的几乎所有的特性。超出xslt 1.0以外的新特性包括:

·         使用xsl:result-document对多个输出文件的支持

·         临时树(以前通常所说的结果树片段)的完全处理能力

·         支持节点序列和简单值

·         功能组合

·         正则表达式处理

·         支持新的xpath结构比如if for some every

·         支持指定的排序序列

·         许多新函数和运算符

·         支持新的数据类型,如日期(dates)、时间(timews)和持续时间(durations

另外,saxon提供了一个广泛的扩展元素和扩展函数库,所有的实现与xslt推荐标准保持一致,以确保能够写出可移植的样式表。这些包括exslt扩展库common sets math、和 dates-and-times 。很多这类扩展都是saxon首先采用的。

这些扩展功能通常在xquery中也可以使用,除了那些依赖样式表信息的。

saxon还提供了一个api允许java应用程序执行xpath 表达式并处理结果。xquery使用一个单独的api,不同表现在设置的上下文的方式。

可扩展性及功能扩展

saxon提供了功能扩展机制,可以通过增加扩展函数和其他挂钩(hook)对saxon xslt样式表和xquery查询的性能进行扩展

saxon xquery 实现允许调用java方法作为外部函数,函数不需要声明。使用命名空间声明如下: declare namespace math=java:java.lang.math,就可以调用此方法,如: math:sqrt(2)

saxon 包括一套扩展组件,提供了对sql数据库的访问。这些不打算作为产品的必要属性(在设计中有许多局限性),更多的用以说明扩展组件如何增强处理器的性能。

在一个样式表中使用sql扩展,需要在元素xsl:stylesheet的扩展元素前缀属性中定义一个命名空间前缀(如“sql”),并把这个前缀映射到以“/net.sf.saxon.sql.sqlelementfactory”为结果的命名空间uri上。

这个扩展定义了5个新的样式表元素: sql:connect sql:query sql:insert sql:column sql:close

扫描关注微信公众号