我正在使用Saxon的ANT任务将XSLT应用于XML。以下是我创建的ANT目标:
<target name="applyXSLT">
<xslt in="${srcXML}" basedir="in/xml" destdir="out/xml" style="${basedir}/src/main/templates/xslt/stylesheet.xslt">
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
<classpath refid="master-classpath" />
<!-- All necessary varibles have been defined before -->
</xslt>
</target>
当XSLT被放在项目中的上述文件夹中时,它工作得很好。但是现在,我需要将XSLT打包为jar的一部分,以便能够将代码分发给第三方客户端。我震坏了XSLT,但现在无法引用它(即使删除了{basedir}/
)。在使用Saxon时,有没有其他方法可以引用作为jar一部分的XSLT?
您尝试过URL格式吗
jar:///some/dir/!path/within/jar/stylesheet.xsl
Saxon意识到了这一点,但我不知道Ant是否通过了。
否则,我认为您必须首先将JAR解压缩到一个临时目录中,然后从那里运行转换。
您可以使用嵌套的style
标记而不是style
属性,从而可以指定任何有效的Ant资源。要引用JAR中的文件,可以使用javaresource
标记。以下示例将在master-classpath
中的JAR中找到XSL文件;如果您愿意,您可以通过定义一个新的classpath
内联来显式指定一个JAR文件。
<target name="applyXSLT">
<xslt in="${srcXML}" basedir="in/xml" destdir="out/xml">
<style>
<javaresource name="path/within/jar/to/stylesheet.xslt">
<classpath refid="master-classpath"/>
</javaresource>
</style>
<factory name="net.sf.saxon.TransformerFactoryImpl"/>
<classpath refid="master-classpath" />
<!-- All necessary varibles have been defined before -->
</xslt>
</target>
有关javaresource
的更多详细信息,请点击此处。