<transform> ステップは、ターゲットホスト上にあるファイルのテキストベース変換を行うために使用されます。現時点では、Perl タイプおよび XSLT ベースの変換がサポートされています。
<transform> の子要素は、入力ファイルに適用される変換を指定します。これらの子要素は、以下のどれでもかまいません。
入力ソースに適用する XSLT 変換を定義する単一の <stylesheet> 要素
入力ソースに順次適用する Perl に似た置換パターンを定義する 1 つ以上の <subst> 要素
変換を含んでいる外部ファイルを命名する単一の <source> 要素
空。これは、入力ファイルのコンテンツが出力ファイルに直接コピーされることを意味します。
これは、zip アーカイブから抽出する場合または zip アーカイブに書き込む場合に便利です。
<transform> ステップには次の属性があります。
input – オプション属性で、変換の適用先である、ターゲットホスト上のファイルの一般パス。この属性を指定しないと、入力は出力ファイルから読み取られます。この属性は、単純置換変数を参照できます。
output – 必須属性で、変換結果の書き込み先である、ターゲットホスト上のファイルの一般パス。この属性は、単純置換変数を参照できます。
input 属性と output 属性は、同じファイルまたは個別のファイルを参照できます。これらの属性の値は、zip アーカイブ (または zip の派生フォーマットである JAR など) をディレクトリ要素として含むことができる一般パスです(例: webapp/myapp.jar/config.xml)。
<stylesheet> 要素は <transform> ステップの子であり、入力ソースに適用する XSLT 変換を指定します。特定の <transform> 要素の子として指定できるのは <stylesheet> 要素 1 つであり、<stylesheet> 要素をほかの子要素と併用することはできません。
<stylesheet> 要素は、名前空間 http://www.w3.org/1999/XSL/Transform で定義されている XSLT バージョン 1.0 要素です。詳細は、http://www.w3.org/TR/xslt.html の『XSL Transformations (XSLT)』仕様のバージョン 1.0 を参照してください。<transform> 要素の子として受け入れられるのは、XSLT <stylesheet> 要素だけです。XSLT 仕様の節 2.3 で説明された XSLT シノニム <transform>、単純化された XSLT 変換構文とも、<transform> 要素の子としてはサポートされません。
<stylesheet> 要素本体には、本体が有効な XSLT であるかぎり、初めに変数置換を行うことなく置換変数参照を含めることができます。
<stylesheet> 要素が変換として使用される場合、入力ファイルは XML 形式でなければなりません。詳細は、『XSL Transformations (XSLT)』仕様のバージョン 1.0 を参照してください。
<transform output="/etc/hosts"> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:template match="/"> <xsl:for-each select="a"> <xsl:value-of select="b"/> </xsl:for-each> </xsl:template> </xsl:stylesheet> </transform> |
<subst> 要素は <transform> ステップの子であり、変換として適用する Perl に似た置換パターンを指定します。複数の <subst> 要素を <transform> 要素の子として指定できますが、ほかの子要素とは併用できません。複数の <subst> 要素が出現する場合、それらは順次適用されます。
入力ファイル内に出現するパターンは、1 行内に複数出現している場合も含めすべて置換されます。
サポートされる構文の詳細は、Java ドキュメント (class java.util.regex.Pattern) を参照してください。
<subst> 要素には次の属性があります。
match – 必須属性で、入力後に検索される Perl に似た正規表現 (大文字小文字の区別がなされる)。この属性は、単純置換変数を参照できます。
replace – 必須属性で、「match」で指定されたパターンが出現するごとに置換される Perl に似た置換値。この値は一語一語解釈されるのではなく、構成体 $n が検索表現内で n 番目に出現する括弧付きの表現として解釈されます。この属性は、単純置換変数を参照できます。
以下の変換は、ファイル /etc/hosts 内で、文字列 127.0.0. xxx をすべて 10.10.0.xxx に変換します。
<transform output=”/etc/hosts”> <subst match="127\.0\.0\.(\d+)" replace="10.10.0.$1"/> </transform> |
<source> 要素は <transform> ステップの子であり、入力ファイルに適用する変換が入っている、ターゲットホスト上の外部ファイルを指定します。特定の <transform> 要素の子として指定できるのは <source> 要素 1 つであり、<source> 要素をほかの子要素と併用することはできません。
指定されたソースファイルに対して <transform> ステップの一部として config 生成が行われることはありません。しかし、指定されたソースファイルが、コンポーネントインストールの一部として配備された config 型のリソースファイルである場合があります。このようなケースでは、ソースファイルに含まれる置換変数は、ソースファイルが配備された際に置換されています。
<source> 要素には次の属性があります。
type – 必須属性で、指定されたファイル内に含まれる変換のタイプ。次の値が使用できます。
PERL – <subst> 要素による変換に類似した Perl に似た変換。この場合、指定されるファイルは以下のような形式をとる必要があります。
<?xml version='1.0'?> <transform> <subst match="127\.0\.0\.(\d+)" replace="10.10.0.$1"/> </transform> |
Perl 型の外部変換ファイルは、任意の数の <subst> 要素を含むことができます。
XSLT – XSLT 変換。この場合、指定されたファイルには、名前空間 http://www.w3.org/1999/XSL/Transform で定義されているように、標準の XSLT バージョン 1.0 変換が含まれます。XSLT <stylesheet> 要素しか許可しないインライン変換と異なり、外部ソースファイルに含まれる XSLT 変換は任意の有効な最上位 XSLT 変換要素を含むことができます。このような要素としては、 <stylesheet>、<transform>、および単純化された XSLT 構文などが該当します。単純化された XSLT 構文は、XSLT 仕様の節 2.3 で説明されています。
name – 必須属性で、変換を含む、ターゲットホスト上のファイルの名前。ファイルのコンテンツは、「type」属性で定義された型に一致する必要があります。この名前は、ディレクトリ要素として zip アーカイブを含むことはできません。この属性は、単純置換変数を参照できます。