0

次のような ant の「プロパティ」ファイルがあります (必要に応じて形式を調整できますが、より適切であれば 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 (ソース)

<select>
    <option value="@URL@">@NAME@</option>
</select>

...そして、libraries.properties にある名前/値のエントリと同じ回数だけトークンの検索と置換を行うため、結果の options.html ファイルは次のようになります。

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 ソースは別の形式にすることができます。コピー元/コピー先を定義する方法が必要です。

これを行う最もクリーンな方法は何ですか?

ありがとう!

4

1 に答える 1

3

必要なのは、HTML ファイルを生成するためのテンプレート エンジンです。

ANT が直接サポートするこれに最も近いものはXSLT 変換です。

次のプロジェクト

|-- build.xml
`-- src
    |-- options.xsl
    `-- properties.xml

実行すると、単一の HTML ファイルが生成されます

|-- build
|   `-- options.html

これは適切にフォーマットされた HTML ファイルではないことに注意してください。あなたの仕様は、別のファイルにインポートするように設計されたフラグメントのように見えます。

プロパティ.xml

<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>

options.xsl

<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>

build.xml

<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>
于 2012-08-25T12:14:24.287 に答える