我有一个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 结尾。
任何人都知道XSLTC的重定向:写会忽略 destdir 的原因?以及如何解决它?
有一些解决方法,比如为该目录创建build.xml并使用Ant任务“ant”以destdir作为工作目录进行调用。或者我可以在Ant中将有效的chdir分叉到类似的结尾。但是,如果在Xalan-J下,destdir得到了尊重,那么就不需要使用kludge。