【发布时间】:2019-08-20 04:08:42
【问题描述】:
需要基于一些XSL文件使用net.sf.saxon.transformerfactoryimpl
转换XMLXSL 文件是指 XSL 中定义的一些扩展函数在 xmlns 部分下为
xmlns:rad ="http://mywebsite.com/saxon-extension"
当我在本地机器上执行我的代码时,一切正常并且没有错误。 当在 AWS centos 中部署相同的代码时,没有错误并且转换后的文档不正确。 AWS 中的 SAXON 有什么问题吗,centos 我需要启用一些在 XSL 中定义的外部 URL
变压器:
TransformerFactory transformerFactory = TransformerFactory.newInstance("net.sf.saxon.TransformerFactoryImpl",null);
if(transformerFactory instanceof net.sf.saxon.TransformerFactoryImpl)
{
Configuration configuration =((net.sf.saxon.TransformerFactoryImpl)transformerFactory).getCOnfiguration();
SaxonExtensionFunctionRegistery.registerAll(configuration);
}
registerALL 方法:
for (class c:extensionFunction)
{
try {
configuration.registerExtensionFunction((ExtensionFunctionDefination)c.newInstance());
}
catch(Exception ex) {
log.error("Error registering extension function:",c.getName(),ex);
}
}
xsl 声明及功能:
xmlns:functx="http://www.functx.com" xmlns:rad="http://mywebsite.com/saxon-extension" excluse-result-prefixes="dicom xs rad functx"
<xsl:function name ="dicom:getAccessionNo">
<xsl:param name="dicomNode"/>
<xsl:choose>
<xsl:otherwise>
<xsl:value-of select="dicom:getElement($dicomNode/attr[@tag='00080050'],rad:getResouce('StudyProcessing','unknownLabel'))"/>
</xsl:otherwise>
</xsl:choose>
</xsl:function>
【问题讨论】:
-
您是否在 XSLT 中使用
xsl:function定义了函数?还是用 Java 实现的扩展功能?无论如何,考虑添加最小但完整的 XML、XSLT、Java 示例,您想要的结果以及您获得的结果以及撒克逊版本和版本的确切细节。 -
添加XSL和代码,请检查
标签: java amazon-ec2 centos saxon