使用ant中的<xslt>任务,如何使输出生成到标准输出(stdout)?我的XSLT通过xsl:result-document生成多个文件,并且正常输出只是状态信息,我希望它能与正常的Ant输出一起显示。Ant似乎强制我提供一个destdir=或out=参数。Ant 1.8.2使用Saxon 9。
是的,ant确实可以做到这一点。不过XSLT有一个可以用来在标准输出中获取输出的元素:)
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:key name="types" match="a" use="text()"/>
<xsl:template match="/">
<result>
<xsl:message terminate="no">I am a message from xslt!</xsl:message>
</result>
</xsl:template>
</xsl:stylesheet>
输出:
build:
[xslt] Processing C:\Users\Stefanos\Documents\Visual Studio 2010\Projects\stackOverflow\stackOverflow\test.xml to C:\Users\Stefanos\Documents\Vis
ual Studio 2010\Projects\stackOverflow\stackOverflow\out.xml
[xslt] Loading stylesheet C:\Users\Stefanos\Documents\Visual Studio 2010\Projects\stackOverflow\stackOverflow\test.xslt
[xslt] I am a message from xslt!
BUILD SUCCESSFUL
Total time: 0 seconds
希望能对你有所帮助!
我最近遇到了类似的情况:一个带有XSLT任务的Ant脚本,其中样式表转换使用<xsl:result-document>
生成多个文件。由于Ant XSLT任务需要destdir
属性(除非已指定out
属性),因此我使用已知的临时文件作为out
目标,然后实现了一个“清理”任务,删除了临时文件。
<target name="removeTemporaryFiles" description="remove temporary files">
<delete file="${workspace}/temp.xhtml"></delete>
…
</target>