XMLTransformation ノードを使用して、XSL (Extensible Stylesheet Language) スタイルシートに規定されている規則に従って、XML メッセージを別の形式の XML メッセージに変換します。
このトピックには、以下のセクションが含まれています。
以下の 3 つの方法で、この変換に適用されるスタイル・シートの位置を指定することができます。
スタイル・シートがメッセージ内に組み込まれておらず、 ノード・キャッシュ・レベル (ノード・プロパティー 「スタイルシート・キャッシュ・レベル」) が 0 より大きい場合は、 変換に XSLT (Extensible Stylesheet Language for Transformations) コンパイラーが使用されます。 XSLT をキャッシュに入れると、XSLT が使用されるたびに構文解析されなくなるため、パフォーマンスが向上します。
入力メッセージ本体の先頭に XML エンコード方式の宣言が含まれる場合、 XMLTransformation ノードはエンコード方式を無視し、 常にメッセージ・プロパティー・フォルダーの CodedCharSetId を使用してメッセージをデコードします。
XMLTransformation ノードはパレットの「変換」ドロワーに含まれていて、ワークベンチ内では次のアイコンによって表されます。
このノードの使用方法の例については、2 つのニュース組織が定期的に情報を交換する方法を考慮してください。 1 つの組織はテレビ局であり、もう一方は新聞社とします。 情報は類似していますが、これら 2 つの組織で使用される用語は異なっています。 このノードは、指定されたスタイル・シートの規則を適用することによって、ある形式を別の形式に変換できます。 メッセージ内にスタイル・シート (XML データまたは LocalEnvironment のいずれか) を指定する場合、同じノードが両方の変換を実行することができます。
XMLTransformation ノードへの入力が XMLNSC パーサーまたは MRM パーサーから生成される場合の注意点があります。先行するノード上でプロパティーがこの情報を保存するように設定されていない場合は、 XMLNSC パーサーは、XML 文書の特定の情報 (処理命令およびコメントなど) を廃棄します。 XMLTransformation ノードが必ずメッセージを正しく変換するように、前のノード (たとえば MQInput ノード) で、「混合内容の保存」、「コメントの保存」、および「処理命令の保存」プロパティーを適切に設定します。 MRM パーサーは、また、この情報を廃棄しますが、このパーサー用に情報を保存することはできません。 したがって、そのような情報が変換にとって不可欠な場合は、MRM ドメインの使用を回避します。
デプロイされるスタイル・シートのファイル拡張子は、.xsl または .xslt のいずれかで、デプロイされる XML ファイルのファイル拡張子は .xml でなければなりません。
Eclipse ワークスペース・プロジェクトにデプロイされるスタイル・シートおよび XML ファイルをすべてインポートする。 ロケーション依存の、デプロイされる子孫スタイル・シートまたは XML ファイルを、その親スタイル・シートに対して正しいディレクトリー構造に配置します。デプロイしたくないロケーション依存の子孫は Eclipse ワークスペースに置いてはなりません。
一般的に、デプロイされたスタイル・シートへの参照はすべて、表示場所がどこであっても、相対参照にする必要があります。 基本スタイル・シートへの参照は、関連 Eclipse ワークスペース・プロジェクトのルートに対して相対的でなければなりません。
唯一の例外は、XMLTransformation ノードの「スタイルシート名」プロパティーとして基本スタイル・シートを指定する場合です。 その場合、Eclipse ワークスペース内の正しいディレクトリー構造を指す絶対パスを使用できます。 基本スタイル・シートが見つかった場合、システムはノード・プロパティーを自動的に正しい相対値にリセットします。
そしてシステムは基本スタイル・シート、 および関連する Eclipse ワークスペース・プロジェクトで使用可能なその基本スタイル・シートのロケーション依存の子孫スタイル・シートすべての自動デプロイメントも一緒に実行します。 基本スタイル・シートのロケーション依存の子孫スタイル・シート (または XML ファイル) への参照はすべて、その親スタイル・シートのロケーションに対する相対参照とする必要があります。例えば、スタイル・シート //project1/a/b.xsl が //project1/a/c/d.xsl というスタイル・シートを参照する場合、この参照は c/d.xsl (または ./c/d.xsl) に変更しなければなりません。
スタイル・シートは他のスタイル・シートを参照することができます。デプロイされない、
相対的に参照される子スタイル・シート (または XML ファイル) がある場合 (その親はデプロイされている)、
子スタイル・シートが workpath/XSL/external (workpath/XML/external) の下の正しい場所に配置されるようにしてください。
ただし、workpath は、ブローカーの作業ディレクトリーへの絶対パスです。
MQSI_WORKPATH 環境変数を使用して、システム上の作業パスのロケーションを見つけることができます。例えば、Windows® システムでは、デフォルトの作業パスは MQSI_WORKPATH=C:¥Documents and Settings¥All Users¥Application Data¥IBM¥MQSI です。
ブローカーは自動的に、実行グループがデプロイするストレージ・ツリー、workpath/XSL/external、および workpath/XML/external ツリーをそれぞれ相互に関連付けます。したがって、 例えば文書 b/c.xml がブローカーのデプロイ済みストレージの中に見つからない場合、ブローカーは、 この文書の参照を求めて、デプロイされる基本スタイル・シート a/style.xsl 内の workpath/XML/external/a/b ディレクトリー内の検索を自動的に実行します。すでにデプロイ済みであるもののワークスペースで使用可能になっていないファイルについても、相対パスの参照を使用する必要があります。
システムによって選出されていないスタイル・シートまたは XML ファイルのみを手動でデプロイします (Message Brokers Toolkit がこれらのファイルに関する警告を出します)。ノードの「ブラウズ」をクリックするか、Eclipse ワークスペース内でスタイル・シートの場所の絶対パスを指定すると、スタイル・シートは BAR ファイルに自動的に組み込まれます。
手動デプロイを行うには、デプロイされるファイルをブローカー・アーカイブに追加します。 詳しくは、ブローカー・アーカイブへのファイルの追加およびXSL スタイルシートへのキーワードの追加を参照してください。
workpath/XSL/external ディレクトリー中のスタイル・シートが、デプロイされるスタイル・シートと同じパスと名前を共有している場合は、デプロイされるスタイル・シートが使用されます。
XMLTransformation ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。ノードのプロパティーを「プロパティー」ダイアログに表示するには、ノードを右クリックしてから「プロパティー」をクリックします。 (XMLTransformation ノードをダブルクリックすると、「XSL 選択」ダイアログ・ボックスが開きます。)
値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。
以下のように、XMLTransformation ノードを構成します。
キャッシュに入れられたスタイル・シートを (ファイル・システムでファイルを再デプロイするか置き換えて) 変更すると、 キャッシュを保持する XMLTransformation ノードは、新しいメッセージを処理する前に、 キャッシュに入れられたバージョンを変更された (最新の) バージョンに置き換えます。 しかし、複数のスタイル・シートに変更を加えようとしている場合は、まず関連するメッセージ・フローを停止してから変更を加えてください。変更を加える前に関連するメッセージ・フローを停止しないと、実行中のメッセージ・フローで変更順序を保証できないので、変更を加えるスタイル・シートの間で非互換性が生じる可能性があります。mqsireload コマンドを使用してスタイル・シートを再ロードしてください。しかし、このコマンドにより非互換性が生じなくなるわけではありません。
<?xml-stylesheet type="text/xsl" href="foo.xsl"?>
このノードはバージョン 2.1 の SupportPac™ で使用可能であり、 スタイル・シートの名前としてエレメント ComIbmXslMqsiStylesheetname が使用されていたため、現行ノードは両方のエレメントをチェックします。両方が存在する場合、ComIbmXslXmltStylesheetname 内の値が優先されます。
複数のプロパティーを同じ値に設定できます。そのようにする場合であっても、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。
0 という値を設定する場合、 ノードはスタイル・シート ID の対応する位置を検索しません。 3 つのプロパティーすべてを 0 に設定すると、実行時エラーが生成されます。
このノードはバージョン 2.1 の SupportPac で使用可能であり、 出力文字セットとしてエレメント ComIbmXslMqsiOutputcharset が使用されていたため、現行ノードは両方のエレメントをチェックします。 両方が存在する場合、ComIbmXslXmltOutputcharset 内の値が優先されます。
「出力文字セット」に値を設定する場合、入力する値は数値でなければなりません。例えば、変換の出力を UTF-16 としてエンコードするには、1200 を入力します。
複数のプロパティーを同じ値に設定できます。そのようにする場合であっても、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。
値ゼロを設定する場合、ノードは、文字セット ID の対応する位置を検索しません。
値が設定されていないか、選択優先順位がゼロに設定されているために、ノードがこれらの 2 つのソースのどちらからも出力文字セットを判別できない場合は、デフォルト値 1208 (UTF-8) が使用されます。 (XSL 仕様は、出力文字セットをスタイル・シートに指定できることを示しています。 ただし、XMLTransformation ノードはこの値を無視します。)
トレース情報は、トレース・ファイル XMLTTrace.log に書き込まれます。
1 つの XMLTransformation ノードに関して「トレース設定」を「オン」に設定すると、実行グループ内のすべてのノードに対してオンになります。
このプロパティーは推奨されていません。 代わりにユーザー・トレースを開始してください。ユーザー・トレースには、同一の XML トレース情報が含まれています。「トレース設定」を XMLTransformation ノードに設定してあれば、ユーザー・トレースに影響を及ぼしません。
mqsireportproperties brokerName -e executionGroupLabel
-o ComIbmJVMManager -n jvmMaxHeapSize
mqsichangeproperties コマンドを使用して Java ヒープ・サイズを増やします。
mqsichangeproperties brokerName -e executionGroupLabel
-o ComIbmJVMManager -n jvmMaxHeapSize -v newSize
上の例では、brokerName、executionGroupLabel、および newSize を適切な値に置き換えてください。
newSize に指定する値は、 コンピューターの物理メモリー量および Java をどの程度使用するかによって異なります。 通常、512 MB (536870912) から 1 GB (1073741824) の範囲の値で十分です。
XMLTransformation ノードのターミナルについては、次の表に説明されています。
ターミナル | 説明 |
---|---|
In | ノードが処理するメッセージを受け入れる入力ターミナル。 |
Failure | 変換でエラーが検出された場合に、オリジナル・メッセージがルーティングされる出力ターミナル。 |
Out | 正常に変換されたメッセージがルーティングされる出力ターミナル。 |
以下の表は、ノード・プロパティーについて説明しています。 M の見出しの列は、プロパティーが必須 かどうかを示します (デフォルトが定義されていない場合に値を入力することが必要なら、アスタリスクのマークが付きます)。 C の見出しの列は、プロパティーが構成可能 かどうかを示します (メッセージ・フローを BAR ファイルに追加してデプロイするとき、値を変更できます)。
XMLTransformation ノードの「説明」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
ノード名 | いいえ | いいえ | ノード・タイプ | ノードの名前。 |
簡略説明 | いいえ | いいえ | ノードの簡単な説明 | |
詳細説明 | いいえ | いいえ | メッセージ・フロー内のノードの目的を説明するテキスト |
XMLTransformation ノードの「スタイルシート」プロパティーについては、 次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
スタイルシート名 | いいえ | はい | スタイル・シートの名前。 スタイル・シート仕様がノード・プロパティー内で検索される場合に使用されます。 |
XMLTransformation ノードの「拡張」プロパティーについては、次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
スタイルシート・ディレクトリー | いいえ | はい | スタイル・シートが位置付けられているパス。このパスは、すべての位置メソッドによって使用されます。 | |
スタイルシート・キャッシュ・レベル | いいえ | いいえ | 5 | このノードのインスタンス内に保管されているコンパイル済みまたは解析済みのスタイル・シートの数。
ゼロ (0) から 100 までの間の正整数を入力します。デフォルト値は 5 です。このプロパティーに正整数以外の文字を設定すると、フロー構成例外エラー・メッセージが出されます。 このプロパティーをゼロ (0) に設定すると、スタイルシートはキャッシュされず、スタイル・シートはコンパイルされずに解釈されます。 |
XML 組み込みスタイルシートの選択優先順位。 | はい | いいえ | 1 | XML データ内のスタイル・シート位置情報を検索するための優先順位の値。 |
メッセージ環境の選択優先順位。 | はい | いいえ | 2 | 現行メッセージの LocalEnvironment フォルダー内のスタイル・シート位置情報を検索するための優先順位の値 |
ブローカー・ノード属性の選択優先順位。 | はい | いいえ | 3 | ノードのプロパティーとしてスタイル・シート位置情報を検索するための優先順位の値 |
XMLTransformation ノードの「出力文字セット」プロパティーについては、以下の表で説明しています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
出力文字セット | いいえ | いいえ | 出力文字セットの数値。 | |
メッセージ環境の選択優先順位。 | はい | いいえ | 1 | 現行メッセージの LocalEnvironment フォルダー内の出力文字セット ID を検索するための優先順位の値。 |
ブローカー・ノード属性の選択優先順位。 | はい | いいえ | 2 | ノードのプロパティーとして出力文字セット ID を検索するための優先順位の値。 |
XMLTransformation ノードの「詳細のトレース」プロパティーについては、 次の表に説明されています。
プロパティー | M | C | デフォルト | 説明 |
---|---|---|---|---|
トレース設定 | はい | いいえ | Off | ![]() WebSphere® Message Broker の以前のバージョンでは、このプロパティーがトレースのオン/オフを制御していました。 トレースがオンである場合、ファイル内で低レベルのトレースが記録されます。 ![]() |