使用Saxon ANT任务从jar引用XSLT



我正在使用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的更多详细信息,请点击此处。

相关内容

  • 没有找到相关文章

最新更新