栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 面试经验 > 面试问答

如何在Java中将Saxon设置为Xslt处理器?

面试问答 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

如何在Java中将Saxon设置为Xslt处理器?

有多种方法可以执行此操作(按查找优先级顺序):

直接实例化

显式实例化Saxon工厂(对Michael在上面的评论致意):

TransformerFactory fact = new net.sf.saxon.TransformerFactoryImpl()

这种方法意味着您的代码在编译时被锁定为无法使用Saxon。 这可以看作是优势(没有风险使用错误的处理器运行)或劣势(没有机会在执行时配置其他处理器-
甚至没有Saxon Enterprise Edition)。

对于Saxon-PE,替代

com.saxonica.config.ProfessionalTransformerFactory
。对于Saxon-
EE,替代
com.saxonica.config.EnterpriseTransformerFactory

指定班级名称

在构造工厂类时指定它:

TransformerFactory fact = TransformerFactory.newInstance(        "net.sf.saxon.TransformerFactoryImpl", null);

注意:从Java
6开始可用
。在Java
5的版本没有此方法。

这种方法使您可以在执行时选择处理器,同时仍然避免了类路径搜索的成本和风险。
例如,您的应用程序可以提供一些配置机制,以通过在各种Saxon工厂类之间进行选择来使其与不同的Saxon版本一起运行。

使用系统属性

javax.xml.transform.TransformerFactory
在创建实例之前设置系统属性:

System.setProperty("javax.xml.transform.TransformerFactory", "net.sf.saxon.TransformerFactoryImpl");

或在命令行上(为便于阅读而中断行):

java -Djavax.xml.transform.TransformerFactory=        cnet.sf.saxon.TransformerFactoryImpl YourApp

这种方法的缺点是系统属性会影响整个Java VM。
设置此属性以选择Saxon可能意味着您甚至可能不知道的应用程序中的其他模块开始使用Saxon而不是Xalan,并且如果该模块使用特定于Xalan的XSLT构造,则该模块可能会失败。

使用属性文件

创建以下文件:

JRE/lib/jaxp.properties

具有以下内容:

javax.xml.transform.TransformerFactory=net.sf.saxon.TransformerFactoryImpl

这种方法具有与使用系统属性相似的结果。

服务加载器

在CLASSPATH上的任何JAR中创建以下文件:

meta-INF/services/javax.xml.transform.TransformerFactory

具有以下内容:

net.sf.saxon.TransformerFactoryImpl

这种方法的缺点是,对类路径进行小的更改可能会导致应用程序使用其他XSLT引擎运行,而该引擎可能从未经过过测试。

平台默认

如果以上都不做,则将

TransformerFactory
加载平台默认实例。在此处可以找到对该可插入性层的友好描述。

请注意,此处的“平台”是指Java VM,而不是其运行的硬件或操作系统。 对于所有当前已知的Java VM,平台默认为Xalan版本(仅支持XSLT
1.0)。无法保证将来所有Java VM都会如此。

我认为这个答案是反对Java做事的一种说法。



转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/609639.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号