我有一个看起来像这样的 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 一样受到尊重,那么就没有必要了。