Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/12.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/spring-mvc/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 使用Saxon ANT任务从jar引用XSLT_Java_Xml_Xslt_Ant_Saxon - Fatal编程技术网

Java 使用Saxon ANT任务从jar引用XSLT

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

我使用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进行了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的方法,并且成功了。谢谢你的回答!采取了打开罐子拉链的方法,它成功了。谢谢你的回答!