如何在 Saxon-HE 中获得 EXSLT 支持?
Posted
技术标签:
【中文标题】如何在 Saxon-HE 中获得 EXSLT 支持?【英文标题】:How do I get EXSLT support in Saxon-HE? 【发布时间】:2011-08-19 08:28:14 【问题描述】:我有一堆 XSLT 文件,我需要针对一些 XML 文件进行处理。我无法更改 XSLT 文件,因为它们来自第 3 方。 XSLT 是 2.0 版。
我使用的是 Mac OS X 10.6,看起来 Saxon-HE 是唯一可用的 XSLT 2.0 处理器。
XSLT 的大部分工作都很好,但是,有些函数会出现关于缺少函数的错误,特别是 month-in-year()
和其他与日期/时间相关的函数。
根据 http://www.saxonica.com/documentation/extensions/exslt.xml 关于 EXSLT:
这些扩展在 Saxon-PE 和 Saxon-EE 中“开箱即用”可用。它们在 Saxon-HE 中不可用
我是否可以在 Saxon-HE 中使用 EXSLT 函数?
如果可行的话,我很高兴转向另一个工具/处理器。
【问题讨论】:
【参考方案1】:Saxon9 HE 没有 EXSLT 扩展。为了使用 EXSLT,您需要恢复到 Saxon 9.1 或完全选择不同的产品,例如 Xalan (Java) 或 MSXML (Windows) 或 LibXSLT(C 和脚本),所有这些都只实现 XSLT 和 XPath 1.0。也就是说,对于 Saxon9 HE 和 XSLT 2.0,为什么需要 EXSLT?
好的,在回复之前应该阅读您的帖子。要求似乎是:
XSLT 2.0 EXSLT 无法更改 XSLT如果这一切都是假设,那么看起来你只剩下 Saxon9 PE 或 EE。 (嗯,当然是 Saxon 9.1。)
【讨论】:
谢谢。我已经成功使用 Saxon-B 9.1 :)【参考方案2】:Saxon-B 9.1 仍可供有此类要求的用户使用。当您使用 XSLT 2.0 时,几乎不需要 EXSLT 扩展,但您确实会遇到使用它们的样式表,如果您想坚持使用开源软件,Saxon-B 仍然可以用于此目的。
【讨论】:
下载地址:sourceforge.net/projects/saxon/files/Saxon-B【参考方案3】:无论您选择哪种处理器,它都不必原生支持 EXSLT 函数,它只需要可扩展,以便您可以注册自己的函数,这样您就可以自己实现 EXSLT 函数。
【讨论】:
谢谢,是的,我看到你可以注册外部函数,我从exslt.org 下载了它们,但我不知道如何注册它们。 我不知道 exslt.org 是否有 Saxon 的实现。有关如何在 Saxon 中编写和注册自己的扩展函数的信息,请参阅 saxonica.com/documentation/extensibility/…。以上是关于如何在 Saxon-HE 中获得 EXSLT 支持?的主要内容,如果未能解决你的问题,请参考以下文章
如何在 .NET 中使用 Saxon-HE 9.8 使用 XSLT 3.0
Saxon-HE Java 扩展 - 如何访问作为参数传递的 xsl 变量的值?