saxon 是由英国的michael kay开发的xslt与xquery处理器,自从1999年以开源产品发布,引导着xslt处理器技术,并赢得较高声誉。迄今依然是仅有的xslt2.0规范草案的实现,在很大程度上推动了xslt语言的普及。
从2003年中发布的7.6版开始,saxon增加了对xquery的支持。两种语言的运行期代码是相同的,这说明,事实上它们有非常相似的语义。saxon中的xquery支持本质上由一个xquery解析器(也是xpath解析器的扩展)组成;解析器与xslt处理器一样,生成相同的内部可解释的代码。
xquery处理器没有提供图形用户界面,可以从操作系统的命令行调用,也可以通过java应用程序的api调用。
saxon是一个内存处理器。无论使用xslt还是xquery,saxon被设计来处理在内存中装配好的源。
saxon也是仅有的在一个集成包中提供xslt和xquery的产品,可以使用每种语言以获得最好的效果。两个接口是互补的:你可以在xquery中写一个函数库,并在xslt样式表中调用此函数。
saxon介绍
版本8.1.1是最新的saxonica的对xpath2.0、xslt2.0和xquery1.0的实现。这个版本实现了这些语言的模式敏感(schema-aware)的特性,也包含一个自立的符合xml schema1.0的模式处理器。
saxon 8.1 是在与stylus studio合作下开发的。stylus studio版本6利用了8.1版saxon引入的新特性,而支持样式表和查询调试。saxonica乐于推荐stylus studio作为一个领先的xml、xslt和xquery开发环境。
saxon 8.1 提供新的功能,改良的性能,和更好的程序诊断。saxon-sa 的特许样式也更加灵活,在不同的价格层次提供不同的特性组合。
产品已经按照2004年6月发布的工作草案调整,虽然少数特性尚未实现,自从草案发布,改变已经列入实现结果。
saxon 8.1现有两个版本。saxon-b 8.1是一个无模式的处理器,并且作为开源产品免费在sourceforge(http://saxon.sf.net/)上提供。它遵照xslt2.0的基本一致性,也遵循xquery1.0。saxon-sa 8.1 是程序包的模式敏感(schema-aware)版本,在saxonica有限公司(http://www.saxonica.com/)以商业配套产品提供。许可证选项有xslt、xquery、模式验证,全部证书就可获得全部功能。
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.0和xpath1.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处理器,可以从命令行使用,或者使用一个api从java应用程序调用。
· xml schema 1.0处理器,可以单独使用来验证一个模式的正确性,或者对比一个模式中的定义来验证一个源文档。也用来支持xslt和xquery处理器的模式敏感(schema-aware)功能。
你可以通过写xslt样式表、写xquery查询、写java应用程序、或者组合这些方法来使用saxon处理xml。
saxon完全实现了xslt 1.0 推荐标准,包括xpath 1.0, saxon 8.0 也实现了在xslt 2.0、xpath 2.0和query 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。
闽公网安备 35060202000074号