1

我有一个看起来像这样的 Ant xslt 任务:

<xslt 
     basedir="${target.dir}"
     destdir="${target.dir}"
     style="${target.dir}/event.xsl"
     includes="*.xml"
     excludes="*Common.xml"
     extension=".tmp.log"
     force="yes"
     >
</xslt>

在 event.xsl 我有一个指令:

<xsl:stylesheet version="1.0"
            xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
            xmlns:redirect="http://xml.apache.org/xalan/redirect"
            xmlns:java="java"
            extension-element-prefixes="redirect"
            >

[other stuff to set $filename]

<redirect:write select="$filename">

对于 Xalan-J,这完全符合预期,生成的文件被写入destdir

我正在尝试删除 Xalan-J 依赖项以使用 Java 1.4+ 中的默认 XSLTC。XSLTC在这种情况下不尊重选择。相反,建议将其替换为:

<redirect:write file="{$filename}"

这可以正常工作,除了文件被写入当前工作目录而不是destdir。.tmp.log文件正确地以destdir结尾

任何人都知道为什么destdir被 XSLTC 的redirect:write忽略了吗?以及如何解决?

有一些解决方法,例如为该目录创建一个 build.xml 并使用 Ant 任务“ant”以 destdir 作为工作目录进行调用。或者我可以分叉到 Ant 中的有效 chdir 以达到类似的目的。但是,如果 destdir 像 Xalan-J 一样受到尊重,那么就没有必要了。

4

0 回答 0