当前位置: 首页 > 知识库问答 >
问题:

使用Saxon ANT任务从jar引用XSLT

拓拔俊艾
2023-03-14

我正在使用Saxon的ANT任务将XSLT应用于XML。以下是我创建的蚂蚁目标:

<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,但是现在无法引用它(即使在删除了{base dir}/之后)。在使用Saxon时,是否有不同的方法来引用作为jar一部分的XSLT?

共有2个答案

吴松
2023-03-14

您可以使用嵌套的style标记,而不是style属性,这样您就可以指定任何有效的ant资源。要引用JAR中的文件,您可以使用javaResources标记。下面的示例将在您的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的详细信息。

宗政松
2023-03-14

你试过URL格式吗

jar:///some/dir/!path/within/jar/stylesheet.xsl

撒克逊人意识到了这一点,但我不知道蚂蚁是否能通过它。

否则,我认为您必须先将JAR解压缩到一个临时目录中,然后从那里运行转换。

 类似资料:
  • 我正在将一些用于iOS和OSX的Ant构建转换为Gradle。创建了以下内容: 这可能很简单,但我做错了什么?如何从自定义类中调用exec任务?

  • 问题内容: 如何编写一个从先前编译的JAR中删除文件的ant任务? 假设我的JAR文件为: …并且我想要一个没有包的JAR文件版本,我需要使用ant剥离它,以便最终得到一个包含以下内容的JAR: 谢谢! 问题答案: 您是否尝试过使用任务? 例如:

  • 我在用Gradle。我有两个任务:“A”和“B”。我想让任务“A”调用任务“B”。我怎么能这么做? 是否可以简单地从现有任务中调用另一个任务?

  • 我有一个gradle项目,它在build/libs文件夹中生成一个jar(myfoo.jar)。我有几个JUnit测试来测试myfoo.jar中的类。JUnits运行得很好,只是在运行测试时,测试在类路径中使用bin/运行,而类加载器并没有真正加载build/libs/myfoo.jar。测试使用类路径中的bin/运行。所以JUnits只通过了几个。 对于gradle测试任务,有没有办法从类路径中

  • 我有代码: 年级4.5.1对此警告为 但是link没有给我任何可以替换它的提示,因为我不能仅仅设置任务依赖项,比如dependsOn或FinalizdBy--它不是从其他任务调用的,而是从构建的末尾调用的。