如何使用ant构建文件获取当前文件名?

问题描述 投票:0回答:1

我最近创建了一个ANT构建文件,以使用xslt将.xml文件转换为.fo。 ANT构建按设计执行。但是,输入文件被硬编码到XSLT任务中。

我如何动态更改输入文件名,而不必每次都编辑构建文件?以下是我的代码段。

<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
      <xslt basedir="${srcdir}" 
            destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl"
            in="sample.xml"
            out="${dstDir}/new.fo"/>   

      <echo>The fo file has been created!</echo>
</target>

我没有提到我正在使用OxygenXML处理我的ANT文件。抱歉。

xslt ant
1个回答
3
投票

您不需要inout属性。相反,您可以使用包含要转换的文件的<fileset>

[<xslt>将删除输入文件中的后缀,并应用extension属性中使用的后缀。

<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
    <!-- Don't put "basedir" parameter. It comes from fileset! -->
      <xslt destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl">
            <fileset dir="${xslt.dir}"/>
      </xslt>
      <echo>The fo file has been created!</echo>
</target>

您也可以使用mappers将输入文件的名称转换为输出文件的名称。

另外,当然是使用属性作为输入文件名,然后让某人将文件名传递给Ant脚本:

<target name="createFO"
    description="Transform using XSLT 1.0" depends="clean, copyimg, copysrc">
      <fail message="You must pass in the parameter &auot;-Dxml.file=...&quot;">
           <condition>
               <not>
                   <available file="${xml.file}">
           </condition>
      </fail>

      <xslt basedir="${srcdir}" 
            destdir="${dstDir}"
            extension=".fo"
            style="${ss}/foobar.xsl"
            in="${xml.file}"
            out="${dstDir}/new.fo"/>   

      <echo>The fo file has been created!</echo>
</target>

现在,要执行此操作,请执行以下操作:

$ ant -Dxml.file=sample.xml createFO
© www.soinside.com 2019 - 2024. All rights reserved.