<transform> 手順は、対象ホスト上に含まれるファイルのテキストベース変換を行うために使用されます。 現時点では、Perl5 および XSLT ベースの変換がサポートされています。
名前 |
型 |
必須 |
構成可能 |
説明 |
input |
文字列 |
いいえ |
可能 |
変換の適用先である、対象ホスト上のファイルの一般パス。 指定しないと、入力は出力ファイルから読み取られる |
output |
文字列 |
はい |
可能 |
変換結果の書き込み先である、対象ホスト上のファイルの一般パス |
input 属性と output 属性は、同じファイルまたは個別のファイルを参照できます。 input 属性と output 属性の値は、zip アーカイブ (または zip の派生フォーマットである JAR など) をディレクトリ要素として含むことができる一般パスです (例: webapp/myapp.jar/Configurablexml)。
<transform> 要素の子は、入力ファイルに適用される変換を指定します。 これらの子要素は、以下のどれでもかまいません。
入力ソースに適用する XSLT 変換を定義する単一の <stylesheet> 要素
入力ソースに順次適用する Perl5 ベースの置換パターンを定義する 1 つ以上の <subst> 要素
変換を含んでいる外部ファイルを指定する単一の <source> 要素
空。これは、入力ファイルのコンテンツが出力ファイルに直接コピーされることを意味します。 これは、zip アーカイブから抽出する場合または zip アーカイブに書き込む場合に便利です。
<stylesheet> 要素は <transform> 手順の子であり、入力ソースに適用する XSLT 変換を指定します。 各 <transform> 要素の子として指定できるのは <stylesheet> 要素 1 つであり、ほかの子要素と併用はできません。
<stylesheet> 要素は、ネームスペース//www.w3.org/1999/XSL/Transform” で定義されているように XSLT バージョン 1.0 要素です。 詳細は、"http://www.w3.org/TR/xslt” に挙げられた XSLT 仕様を参照してください。 transform 要素の子として受け入れられるのは、XSLT <stylesheet> 要素だけです。 XSLT 仕様の節 2.3 で説明された XSLT シノニム <transform>、単純化された XSLT 変換構文とも、transform 要素の子としてはサポートされません。
stylesheet 要素本体には、本体が有効な XSLT と見なされるかぎり、初めに変数置換を行うことなく置換変数参照を含めることができます。
<stylesheet> 要素が変換として使用される場合、入力ファイルが XML 形式で記述されていると見なされます。
以下に、XSLT 変換の例を示します。
<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> 手順の子であり、変換として適用する Perl5 ベースの置換パターンを指定します。 複数の <subst> 要素を <transform> 要素の子として指定できますが、ほかの子要素と併用はできません。 複数の <subst> 要素が出現する場合、それらは順次適用されます。
入力ファイル内に出現するパターンは、1 行内に複数出現している場合も含めすべて置換されます。
サポートされる構文の詳細は、Oro ドキュメント (class org.apache.oro.text.regex.Perl5Substitution) に入っています。
名前 |
型 |
必須 |
構成可能 |
説明 |
match |
文字列 |
はい |
可能 |
入力内で検索される Perl5 正規表現 (大文字小文字の区別がなされる) |
replace |
文字列 |
はい |
可能 |
「match」で指定されたパターンが出現するごとに置換される Perl5 置換値。 この値は一語一語解釈されるのではなく、 構成体 $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 つであり、ほかの子要素と併用はできません。
指定されたソースファイルに対して <transform> 手順の一部として config 生成が行われることはありません。 しかし、指定されたソースファイルが、コンポーネントインストールの一部として配備された config 型のリソースファイルである場合はあります。このようなケースでは、ソースファイルに含まれる置換変数は、通常、ソースファイルが配備された際に置換されています。
名前 |
型 |
必須 |
構成可能 |
説明 |
type |
次の 1 つ: PERL XSLT |
はい |
不可 |
指定されたファイル内に含まれる変換のタイプ (詳細は下記) |
name |
文字列 |
はい |
可能 |
変換を含む、対象ホスト上のファイルの名前。 指定されたファイルのコンテンツは、「type」属性で定義された型に一致する必要がある。 この名前は、ディレクトリ要素として zip アーカイブを含むことはできない |
<source> 要素の「type」属性は、指定されたファイル内に含まれる変換の型を指定します。
値「PERL」は、<subst> 要素による変換に似た Perl5 ベースの変換を示します。 この場合、指定されるファイルは以下のような形式をとる必要があります。
<?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 仕様の節 2.3 で説明しているように任意の有効な最上位 XSLT 変換要素 (<stylesheet>、<transform>、単純化された XSLT 構文など) を含むことができます。