如何为单个XML文件编写具有两个目标/任务的build.xml,而XML文件使用两个XSLT文件提供两个输出文件?

时间:2018-10-24 10:24:08

标签: xml xslt ant build.xml

考虑此input.xml

<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl"?> 

<Settings>
    <Setting name="mail">
        <SettingAttributes>
            <SettingAttribute name="warning" value="yes">
            <SettingAttribute name="namestyle" value="None">
        </SettingAttributes>
    </Setting>

    <Setting name="camera">
        <SettingAttributes>
            <SettingAttribute name="allow" value="No">
            <SettingAttribute name="effect" value="No">
        </SettingAttributes>
    </Setting>
<Settings>

所以我现在想写一个带有目标的build.xml文件。设置邮件的一个目标,设置摄像机的另一个目标。我有两个XSLT样式表来转换每个设置。如何在Build.xml中实现它

我尝试为build.xml编写以下代码

<?xml version = "1.0"?>
<project name="CDF structure">
    <target name="mail">
        <xslt in="input.xml" out="E:Workspace\AntTrial\res\values\conf.xml"
            style="mail_xslt.xsl">
        </xslt>
    </target>

    <target name="Camera">
        <xslt in="input.xml" 
         out="E:Workspace\AntTrial\res\system\values\config.prop"
         style="camera_xslt.xsl">
        </xslt>
    </target>
</project>

上面的build.xml无法产生所需的输出。

请帮助我继续。

1 个答案:

答案 0 :(得分:0)

为什么不只在一个xslt文件和一个目标中这样做呢?

<xsl:template match="Setting[@name='mail']">
    <xsl:result-document href="E:Workspace\AntTrial\res\values\conf.xml">
    <!--Whatever you want here-->
    </xsl:result-document>
</xsl:template>

<xsl:template match="Setting[@name='camera']">
    <xsl:result-document href="E:Workspace\AntTrial\res\values\conf.xml">
    <!--Whatever you want here-->
    </xsl:result-document>
</xsl:template>

然后在您的构建文件中,具有:

<target name="transform">
    <xslt in="input.xml" style="xslt.xsl" destDir="${destDir}"/>
</target>