Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/ant/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
使用ant迭代未知数量的属性并搜索和替换_Ant - Fatal编程技术网

使用ant迭代未知数量的属性并搜索和替换

使用ant迭代未知数量的属性并搜索和替换,ant,Ant,我有一个ant“properties”文件,看起来像这样(尽管我可以根据需要调整格式-如果更合适的话,我可以将其设置为XML文件): 库。属性 name 1 http://www.url1.com?a=b name 2 http://www.url2.com?c=d name 3 http://www.url3.com?e=f 注意:我知道这不是有效的属性格式,因为它的格式不是a=b。我可以将其更改为任何适当的内容,只要以后可以轻松添加条目 我希望ant获取一个签入的文件,如下所示: opti

我有一个ant“properties”文件,看起来像这样(尽管我可以根据需要调整格式-如果更合适的话,我可以将其设置为XML文件):

库。属性

name 1
http://www.url1.com?a=b
name 2
http://www.url2.com?c=d
name 3
http://www.url3.com?e=f
注意:我知道这不是有效的属性格式,因为它的格式不是a=b。我可以将其更改为任何适当的内容,只要以后可以轻松添加条目

我希望ant获取一个签入的文件,如下所示:

options.html(来源)


@名字@
。。。并在libraries.properties中搜索和替换标记的次数与名称/值条目的次数相同,因此生成的options.html文件如下所示:

options.html(生成后)


名字1
名称2
名字3
与属性文件一样,options.html源可以是不同的格式。我只需要一些方法来定义我从/复制到的内容

最干净的方法是什么

谢谢

您需要的是一个用于生成HTML文件的脚本

ANT直接支持的最接近这一点的是一个

例子 以下项目

|-- build.xml
`-- src
    |-- options.xsl
    `-- properties.xml
运行时生成单个HTML文件

|-- build
|   `-- options.html
注意,这不是一个格式正确的HTML文件。您的规范看起来更像是设计用于导入到另一个文件中的片段

properties.xml

名字1
http://www.url1.com?a=b
名称2
http://www.url2.com?c=d
名字3
http://www.url3.com?e=f
options.xsl

编译文件

您需要的是一个用于生成HTML文件的脚本

ANT直接支持的最接近这一点的是一个

例子 以下项目

|-- build.xml
`-- src
    |-- options.xsl
    `-- properties.xml
运行时生成单个HTML文件

|-- build
|   `-- options.html
注意,这不是一个格式正确的HTML文件。您的规范看起来更像是设计用于导入到另一个文件中的片段

properties.xml

名字1
http://www.url1.com?a=b
名称2
http://www.url2.com?c=d
名字3
http://www.url3.com?e=f
options.xsl

编译文件


谢谢您的详细建议。它工作得非常完美,并且比我在发布问题后实现的乱七八糟的东西优雅得多。(我在目标文件中添加了一个标记,然后多次搜索和替换以建立选项列表)。感谢您的详细建议。它工作得非常完美,并且比我在发布问题后实现的乱七八糟的东西优雅得多。(我在目标文件中添加了一个标记,然后多次搜索和替换以建立选项列表)。
<properties>
    <property>
        <name>name 1</name>
        <value>http://www.url1.com?a=b</value>
    </property>
    <property>
        <name>name 2</name>
        <value>http://www.url2.com?c=d</value>
    </property>
    <property>
        <name>name 3</name>
        <value>http://www.url3.com?e=f</value>
    </property>
</properties>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

    <xsl:output method="html"/>

    <xsl:template match="/">
        <select>
            <xsl:apply-templates select="properties/property"/>
        </select>
    </xsl:template>

    <xsl:template match="property">
        <option value="{value}"><xsl:value-of select="name"/></option>
    </xsl:template>

</xsl:stylesheet>
<project name="demo" default="generate">

    <target name="init">
        <mkdir dir="build"/>
    </target>

    <target name="generate" depends="init">
        <xslt style="src/options.xsl" in="src/properties.xml" out="build/options.html"/>
    </target>

    <target name="clean">
        <delete dir="build"/>
    </target>

</project>