当前位置: 首页 > 工具软件 > Saxon > 使用案例 >

Saxon - XSLT与XQuery处理器

郝池暝
2023-12-01

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 的特许样式也更加灵活,在不同的价格层次提供不同的特性组合。

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

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

 类似资料: