Java 使用Saxon ANT任务从jar引用XSLT
我使用Saxon的ANT任务将XSLT应用于XML。以下是我创建的ANT目标:Java 使用Saxon ANT任务从jar引用XSLT,java,xml,xslt,ant,saxon,Java,Xml,Xslt,Ant,Saxon,我使用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.TransformerFa
<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进行了jar,但现在无法引用它(即使在删除
{basedir}/
之后)。在使用Saxon时,是否有其他方法引用作为jar一部分的XSLT?您尝试过URL格式吗
jar:///some/dir/!path/within/jar/stylesheet.xsl
撒克逊人意识到了这一点,但我不知道蚂蚁是否能通过它
否则,我认为您必须首先将JAR解压缩到一个临时目录中,然后从那里运行转换。您尝试过URL格式吗
jar:///some/dir/!path/within/jar/stylesheet.xsl
撒克逊人意识到了这一点,但我不知道蚂蚁是否能通过它
否则,我认为您必须首先将JAR解压到一个临时目录中,然后从那里运行转换。您可以使用嵌套的
style
标记,而不是style
属性,允许您指定任何有效的Ant资源。要引用JAR中的文件,可以使用javaresource
标记。下面的示例将在主类路径中的JAR中找到XSL文件;如果愿意,您可以通过定义一个新的classpath
inline来显式指定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
的更多详细信息您可以使用嵌套的style
标记,而不是style
属性,允许您指定任何有效的Ant资源。要引用JAR中的文件,可以使用javaresource
标记。下面的示例将在主类路径中的JAR中找到XSL文件;如果愿意,您可以通过定义一个新的classpath
inline来显式指定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
的更多细节采用了解压JAR的方法,并且成功了。谢谢你的回答!采取了打开罐子拉链的方法,它成功了。谢谢你的回答!