XMLTransformation ノード

XMLTransformation ノードを使用して、XSL (Extensible Stylesheet Language) スタイルシートに規定されている規則に従って、XML メッセージを別の形式の XML メッセージに変換します。

このトピックには、以下のセクションが含まれています。

目的

以下の 3 つの方法で、この変換に適用されるスタイル・シートの位置を指定することができます。

  • メッセージ自体内の XML データの内容を使用する。これにより、メッセージ自体が定義するスタイル・シートにしたがってメッセージが変換されます。
  • LocalEnvironment フォルダー内に値を設定する。XMLTransformation ノードより前のノード (Compute ノードなど) にこの値を設定しなければなりません。 したがって、このメッセージに使用するスタイル・シートを判別するためにさまざまな入力データ (メッセージ・データの内容またはデータベース内の値など) を使用することができます。
  • ノード・プロパティーを使用する。これにより、この単一スタイル・シートで定義されている変換がこのノードで処理されるすべてのメッセージに確実に適用されます。

スタイル・シートがメッセージ内に組み込まれておらず、 ノード・キャッシュ・レベル (ノード・プロパティー 「スタイルシート・キャッシュ・レベル」) が 0 より大きい場合は、 変換に XSLT (Extensible Stylesheet Language for Transformations) コンパイラーが使用されます。 XSLT をキャッシュに入れると、XSLT が使用されるたびに構文解析されなくなるため、パフォーマンスが向上します。

入力メッセージ本体の先頭に XML エンコード方式の宣言が含まれる場合、 XMLTransformation ノードはエンコード方式を無視し、 常にメッセージ・プロパティー・フォルダーの CodedCharSetId を使用してメッセージをデコードします。

XMLTransformation ノードはパレットの「変換」ドロワーに含まれていて、ワークベンチ内では次のアイコンによって表されます。

XMLTransformation ノード・アイコン

メッセージ・フロー内でのこのノードの使用

このノードの使用方法の例については、2 つのニュース組織が定期的に情報を交換する方法を考慮してください。 1 つの組織はテレビ局であり、もう一方は新聞社とします。 情報は類似していますが、これら 2 つの組織で使用される用語は異なっています。 このノードは、指定されたスタイル・シートの規則を適用することによって、ある形式を別の形式に変換できます。 メッセージ内にスタイル・シート (XML データまたは LocalEnvironment のいずれか) を指定する場合、同じノードが両方の変換を実行することができます。

XMLTransformation ノードの使用法の詳細については、次のサンプルを参照してください。 サンプルは、Message Brokers Toolkit と統合されているインフォメーション・センターを使用する場合にのみ表示できます。

XMLTransformation ノードへの入力が XMLNSC パーサーまたは MRM パーサーから生成される場合の注意点があります。先行するノード上でプロパティーがこの情報を保存するように設定されていない場合は、 XMLNSC パーサーは、XML 文書の特定の情報 (処理命令およびコメントなど) を廃棄します。 XMLTransformation ノードが必ずメッセージを正しく変換するように、前のノード (たとえば MQInput ノード) で、「混合内容の保存」、「コメントの保存」、および「処理命令の保存」プロパティーを適切に設定します。 MRM パーサーは、また、この情報を廃棄しますが、このパーサー用に情報を保存することはできません。 したがって、そのような情報が変換にとって不可欠な場合は、MRM ドメインの使用を回避します。

デプロイされるスタイル・シートとデプロイされないスタイル・シート

XMLTransformation ノードでは、以下の 2 通りの方法でスタイル・シートを使用できます。
デプロイされるスタイル・シート
デプロイされるスタイル・シートとは、ブローカー・アーカイブ (BAR) ファイルにインポートしてターゲット・システムにデプロイするスタイル・シートのことです。デプロイされるスタイル・シートは、ブローカーによって管理されます。 基本スタイル・シートとは、メッセージ・フローで参照されるルート・スタイル・シートのことです。例えば、Eclipse ワークスペースの基本スタイル・シートへの参照 C:¥¥project1¥a¥b.xsl は、a/b.xsl (または ./a/b.xsl) のように指定します。 基本スタイル・シートは、その子孫のスタイル・シートを参照 (組み込みまたはインポート) できます。
デプロイされないスタイル・シート
デプロイされないスタイル・シートとは、XMLTransformation ノードがアクセスできる場所に保管されるスタイル・シートのことです。 デプロイされないスタイル・シートは、ブローカーによって管理されません。
詳しくは、スタイル・シートおよび XML ファイルのマイグレーションを参照してください。

デプロイ済みスタイル・シートまたは XML ファイルのデプロイメント

XMLTransformation ノードを構成する前に、スタイル・シートの扱い方について理解する必要があります。 スタイル・シートは、別の XML ファイルとスタイル・シートの両方を参照することができます。 デプロイされるスタイル・シートまたは XML ファイルを使用するには、以下のステップを行います。
  1. ファイルのファイル名拡張子が正しいことを確認する。

    デプロイされるスタイル・シートのファイル拡張子は、.xsl または .xslt のいずれかで、デプロイされる XML ファイルのファイル拡張子は .xml でなければなりません。

  2. ファイルを Eclipse ワークスペースにインポートする。

    Eclipse ワークスペース・プロジェクトにデプロイされるスタイル・シートおよび XML ファイルをすべてインポートする。 ロケーション依存の、デプロイされる子孫スタイル・シートまたは XML ファイルを、その親スタイル・シートに対して正しいディレクトリー構造に配置します。デプロイしたくないロケーション依存の子孫は Eclipse ワークスペースに置いてはなりません。

  3. ファイルへの参照がすべて相対参照になるようにする。

    一般的に、デプロイされたスタイル・シートへの参照はすべて、表示場所がどこであっても、相対参照にする必要があります。 基本スタイル・シートへの参照は、関連 Eclipse ワークスペース・プロジェクトのルートに対して相対的でなければなりません。

    唯一の例外は、XMLTransformation ノードの「スタイルシート名」プロパティーとして基本スタイル・シートを指定する場合です。 その場合、Eclipse ワークスペース内の正しいディレクトリー構造を指す絶対パスを使用できます。 基本スタイル・シートが見つかった場合、システムはノード・プロパティーを自動的に正しい相対値にリセットします。

    そしてシステムは基本スタイル・シート、 および関連する Eclipse ワークスペース・プロジェクトで使用可能なその基本スタイル・シートのロケーション依存の子孫スタイル・シートすべての自動デプロイメントも一緒に実行します。 基本スタイル・シートのロケーション依存の子孫スタイル・シート (または XML ファイル) への参照はすべて、その親スタイル・シートのロケーションに対する相対参照とする必要があります。例えば、スタイル・シート //project1/a/b.xsl//project1/a/c/d.xsl というスタイル・シートを参照する場合、この参照は c/d.xsl (または ./c/d.xsl) に変更しなければなりません。

  4. デプロイされない子スタイル・シートまたは XML ファイルを扱う。

    変更の始まりスタイル・シートは他のスタイル・シートを参照することができます。デプロイされない、 相対的に参照される子スタイル・シート (または 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 ディレクトリー内の検索を自動的に実行します。すでにデプロイ済みであるもののワークスペースで使用可能になっていないファイルについても、相対パスの参照を使用する必要があります。

  5. ファイルをデプロイする。

    システムによって選出されていないスタイル・シートまたは XML ファイルのみを手動でデプロイします (Message Brokers Toolkit がこれらのファイルに関する警告を出します)。ノードの「ブラウズ」をクリックするか、Eclipse ワークスペース内でスタイル・シートの場所の絶対パスを指定すると、スタイル・シートは BAR ファイルに自動的に組み込まれます。

    手動デプロイを行うには、デプロイされるファイルをブローカー・アーカイブに追加します。 詳しくは、ブローカー・アーカイブへのファイルの追加およびXSL スタイルシートへのキーワードの追加を参照してください。

    XMLTransformation ノードを使用するすべての実行グループで、以下のアクションの 1 つを実行します。
    • スタイル・シートをブローカー上の workpath/XSL/external ディレクトリーに組み込む。スタイル・シートを BAR ファイルに組み込まないでください。

      workpath/XSL/external ディレクトリー中のスタイル・シートが、デプロイされるスタイル・シートと同じパスと名前を共有している場合は、デプロイされるスタイル・シートが使用されます。

    • スタイル・シートを BAR ファイルに組み込み、BAR ファイルをデプロイする。複数の BAR ファイルに同じスタイル・シート名が組み込まれている場合は、最後にデプロイされた BAR ファイル中のスタイル・シートが使用されます。
    • スタイル・シートを独自の BAR ファイル中にデプロイする。XMLTransformation ノードを使用する BAR ファイルにスタイル・シートが組み込まれていない場合には、 Message Brokers Toolkit は警告メッセージを発行します。

XMLTransformation ノードの構成

XMLTransformation ノードのインスタンスをメッセージ・フローに入れると、それを構成することができます。メッセージ・フロー・ノードの構成を参照してください。 ノードのプロパティーが、「プロパティー」ビューに表示されます。ノードのプロパティーを「プロパティー」ダイアログに表示するには、ノードを右クリックしてから「プロパティー」をクリックします。 (XMLTransformation ノードをダブルクリックすると、「XSL 選択」ダイアログ・ボックスが開きます。)

値を入力する必要のある (デフォルト値が定義されていない) すべての必須プロパティーには、アスタリスクが表示されます。

以下のように、XMLTransformation ノードを構成します。

  1. オプション: 「説明」タブで、簡略説明詳細説明、あるいはその両方を入力します。このタブで、ノードを名前変更することもできます。
  2. ノード・プロパティーを使用してスタイル・シートを指定するには、 「スタイルシート」タブの「スタイルシート名」に必要な値を入力します。 スタイル・シート情報が希望する位置 (設定した選択優先順位値によって判別される) に見つかる場合、この値は無視されます。
    以下のいずれかの方式を使用して、基本スタイル・シートを指定します。
    • 「スタイルシート名」の隣にある「参照」をクリックします。 確認された基本スタイル・シートとその子孫となるすべての相対参照スタイル・シートは、BAR ファイルへのメッセージ・フローの追加時に BAR ファイルへ自動的に追加されます (それとその親スタイル・シートの両方が使用可能な場合)。
    • すでにデプロイ済みかまたはデプロイの準備の整ったスタイル・シートを指定するには、「スタイルシート名」プロパティーを使用し、「スタイルシート・ディレクトリー」プロパティーをブランクのままにします。
    • メッセージ・フロー・エディターで、.xslt ファイルを XMLTransformation ノードにドラッグします。 「スタイルシート名」が自動的に設定されます。
  3. 「詳細設定」サブタブで以下のようにします。
    1. スタイルシート ID が完全修飾されている場合、「スタイルシート・ディレクトリー」は無視されます。 そうでない場合、このプロパティー内に設定されている値は、見つかった場所に関係なく、その仕様の先頭に追加されます。
    2. 「スタイルシート・キャッシュ・レベル」で、このノードのインスタンスに保管されているコンパイル済みまたは解析済みのスタイル・シートの数を指定します。デフォルト値は 5 です。スタイルシート・キャッシュは、 ノードの存続期間中は保存され、ノードがフローから削除されるとき、フローが削除されるとき、または実行グループが停止されるときに消去されます。

      キャッシュに入れられたスタイル・シートを (ファイル・システムでファイルを再デプロイするか置き換えて) 変更すると、 キャッシュを保持する XMLTransformation ノードは、新しいメッセージを処理する前に、 キャッシュに入れられたバージョンを変更された (最新の) バージョンに置き換えます。 しかし、複数のスタイル・シートに変更を加えようとしている場合は、まず関連するメッセージ・フローを停止してから変更を加えてください。変更を加える前に関連するメッセージ・フローを停止しないと、実行中のメッセージ・フローで変更順序を保証できないので、変更を加えるスタイル・シートの間で非互換性が生じる可能性があります。mqsireload コマンドを使用してスタイル・シートを再ロードしてください。しかし、このコマンドにより非互換性が生じなくなるわけではありません。

    3. XML 組み込みスタイルシートの選択優先順位」、「メッセージ環境選択優先順位 」、および「ブローカー・ノード属性の選択優先順位」プロパティーの値を選択します。 設定する値は、スタイルシート情報の代替位置を検索する順序を判別します。 最高優先順位設定は 1 です。デフォルトの順序は、以下のとおりです。
      1. XML 組み込みスタイルシートの選択優先順位」。1 というデフォルト値があります。ノードは、スタイルシートのロケーション情報を求めてメッセージ XML データを検索します。 例えば、XML データには以下が含まれている場合があります。
        <?xml-stylesheet type="text/xsl" href="foo.xsl"?>
      2. メッセージ環境の選択優先順位」。2 というデフォルト値があります。ノードは、 ComIbmXslXmltStylesheetname と呼ばれるエレメント内に保管されているスタイル・シート情報に関する現行メッセージと関連した LocalEnvironment を検索します。

        このノードはバージョン 2.1 の SupportPac™ で使用可能であり、 スタイル・シートの名前としてエレメント ComIbmXslMqsiStylesheetname が使用されていたため、現行ノードは両方のエレメントをチェックします。両方が存在する場合、ComIbmXslXmltStylesheetname 内の値が優先されます。

      3. ブローカー・ノード属性の選択優先順位」。3 というデフォルト値があります。ノードは、「スタイルシート名」プロパティーおよび「スタイルシート・ディレクトリー」プロパティーを使用して、正しい値を判別します。

      複数のプロパティーを同じ値に設定できます。そのようにする場合であっても、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。

      0 という値を設定する場合、 ノードはスタイル・シート ID の対応する位置を検索しません。 3 つのプロパティーすべてを 0 に設定すると、実行時エラーが生成されます。

  4. 「出力文字セット」タブで、出力メッセージに使用する文字セットを見つけるためにノードが有効な位置を検索する順序を指定します。 最高優先順位設定は 1 です。デフォルトの順序は、以下のとおりです。
    1. メッセージ環境の選択優先順位」。1 というデフォルト値があります。ノードは、ComIbmXslXmltOutputcharset と呼ばれるエレメント内に保管されている文字セット情報に関する現行メッセージと関連した LocalEnvironment を検索します。例えば、変換の出力を UTF-8 としてエンコードするには、このエレメント内のストリングとして値 1208 を入力します。

      このノードはバージョン 2.1 の SupportPac で使用可能であり、 出力文字セットとしてエレメント ComIbmXslMqsiOutputcharset が使用されていたため、現行ノードは両方のエレメントをチェックします。 両方が存在する場合、ComIbmXslXmltOutputcharset 内の値が優先されます。

    2. ブローカー・ノード属性の選択優先順位」。2 というデフォルト値があります。ノードは、プロパティー「出力文字セット」を使用して、正しい値を判別します。

      「出力文字セット」に値を設定する場合、入力する値は数値でなければなりません。例えば、変換の出力を UTF-16 としてエンコードするには、1200 を入力します。

    複数のプロパティーを同じ値に設定できます。そのようにする場合であっても、ノードによって設定される優先順位の順序は、上記に示されているようにデフォルトの順序になります。

    値ゼロを設定する場合、ノードは、文字セット ID の対応する位置を検索しません。

    値が設定されていないか、選択優先順位がゼロに設定されているために、ノードがこれらの 2 つのソースのどちらからも出力文字セットを判別できない場合は、デフォルト値 1208 (UTF-8) が使用されます。 (XSL 仕様は、出力文字セットをスタイル・シートに指定できることを示しています。 ただし、XMLTransformation ノードはこの値を無視します。)

  5. 「詳細トレース」タブで、XMLTransformation ノードの アクションをトレースする「トレース設定値」プロパティーを設定します。 デフォルト値は Off です。トレースをアクティブにするには、プロパティーを On に設定します。

    トレース情報は、トレース・ファイル XMLTTrace.log に書き込まれます。

    • z/OS platform z/OS® システムでは、 ファイルは install_dir/output にあります (install_dir は、ブローカーをインストールしたディレクトリー)。
    • Windows platform Windows システムでは、作業パスを mqsicreatebroker コマンドの -w パラメーターを使用して設定する場合、場所は workpath¥log です。ブローカー作業パスを指定しなかった場合、場所は C:¥Documents and Settings¥All Users¥Application Data¥IBM¥MQSI¥common¥log です。
    • Linux platformUNIX platform Linux® および UNIX® システムでは、ファイルは /var/mqsi/common/log に置かれます。

    1 つの XMLTransformation ノードに関して「トレース設定」「オン」に設定すると、実行グループ内のすべてのノードに対してオンになります。

    このプロパティーは推奨されていません。 代わりにユーザー・トレースを開始してください。ユーザー・トレースには、同一の XML トレース情報が含まれています。「トレース設定」を XMLTransformation ノードに設定してあれば、ユーザー・トレースに影響を及ぼしません。

大規模な XML メッセージがあり、メモリー不足エラーを受け取る場合には、mqsireportproperties コマンドを使用して XSLT エンジンの Java™ ヒープ・サイズの現行値を確認します。
mqsireportproperties brokerName -e executionGroupLabel 
                                 -o ComIbmJVMManager -n jvmMaxHeapSize
mqsichangeproperties コマンドを使用して Java ヒープ・サイズを増やします。
mqsichangeproperties brokerName -e executionGroupLabel 
                                 -o ComIbmJVMManager -n jvmMaxHeapSize -v newSize
上の例では、brokerNameexecutionGroupLabel、および 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 変更の始まりこのプロパティーは推奨されていません。 代わりにユーザー・トレースを開始してください。ユーザー・トレースには、同一の XSL トレース情報が含まれています。このプロパティーを設定すれば、ユーザー・トレースに影響を及ぼしません。

WebSphere® Message Broker の以前のバージョンでは、このプロパティーがトレースのオン/オフを制御していました。 トレースがオンである場合、ファイル内で低レベルのトレースが記録されます。

変更の終わり
特記事項 | 商標 | ダウンロード | ライブラリー | サポート | フィードバック

Copyright IBM Corporation 1999, 2009Copyright IBM Corporation 1999, 2009.
最終更新 : 2009-02-20 12:42:51

ac12490_