我有一个蚂蚁“属性”文件,看起来像这样(虽然我可以根据需要调整格式 - 如果更合适,我可以将其设为XML文件):
libraries.properties
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(来源)
<select>
<option value="@URL@">@NAME@</option>
</select>
...并且在libraries.properties中对标记进行搜索和替换次数与名称/值条目一样多,因此生成的options.html文件将如下所示:< / p>
options.html(构建后)
<select>
<option value="http://www.url1.com?a=b">name 1</option>
<option value="http://www.url2.com?c=d">name 2</option>
<option value="http://www.url3.com?3=f">name 3</option>
</select>
与属性文件一样,options.html源可以是不同的格式。我只需要一些方法来定义我从中复制的内容。
最干净的方法是什么?
谢谢!
答案 0 :(得分:3)
您需要templating engine来生成HTML文件。
ANT最直接支持的是XSLT transformation。
以下项目
|-- build.xml
`-- src
|-- options.xsl
`-- properties.xml
运行时生成单个HTML文件
|-- build
| `-- options.html
请注意,这不是格式正确的HTML文件。您的规范看起来更像是一个旨在导入另一个文件的片段。
<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>