要素ノードおよび属性ノードを、
ソース・ドキュメントからターゲット・ドキュメントに
マップすることができます。
このタスクについて
以下の組み合わせのマッピングが可能です。
- 属性から属性
- 属性から要素
- 要素から要素
- 要素から属性
- 複数ノードから単一ノード
以下の手順は、リソース・パースペクティブに適用されますが、
他の多くのパースペクティブでも使用できます。
マッピングを作成するには、次のステップを実行します。
手順
- マップ・ファイルを、XML マッピング・エディターで開きます。
- ソース・ドキュメント内の要素または属性を 1 つ以上選択します。 複数の要素または属性を選択するには、Ctrl キーを使用します。
- ターゲット・ドキュメントの要素または属性を選択します。
- ソース・ドキュメントまたはターゲット・ドキュメントで右クリックして、「変換の作成」をクリックします。 ノードは、お互いに対してマップされます。変換タイプを指定するには、ノード間の変換タイプ・ボックスをクリックします。次のいずれかのオプションを選択できます。
| オプション |
説明 |
| 「移動」 |
このタイプは、ソースからターゲットにデータをコピーします。 |
| 「連結」 |
このタイプは、ストリング連結を作成します。
これによって、複数のエンティティーから取得したデータを
リンクさせて、1 つにまとめることができます。 |
| 「インライン化マップ」 |
このタイプを使用すると、
あるマップから他のマップへのコールアウトが可能になります。
ただし、他のマップからそのマップを呼び出すことはできません。
そのマップは、現在のマップ内で使用されるのみです。入出力が配列の場合、インライン化マップは入力に対して暗黙的に反復されます。 |
| 「サブマップ」 |
このタイプは、別のマップを参照します。
この変換タイプを使用すると、このマップ・ファイルまたは別のマップ・ファイルからマップが呼び出されます。
再利用を考えている場合は、
この変換タイプを選択するのが最も効果的です。 |
| 「サブストリング」 |
このタイプは、必要に応じて情報を抽出します。
例えば、サブストリング「lastname, firstname」で、区切り文字に「,」、
サブストリング索引に「0」を指定した場合、値「lastname」が戻されます。サブストリング・インデックスを「1」に変更した場合は、「firstname」が出力されます。 |
| 「グループ」 |
このタイプは、データの配列またはコレクションを取得し、
コレクションのコレクションにグループ化します。
これは本質的に、配列を含む配列となります。
グループ化は、フィールド・レベルで行われます。つまり、「部門」などの入力コレクションのフィールドを選択することにより実行されます。 |
| 「正規化」 |
このタイプは、入力文字列を正規化します。
例えば、繰り返し発生する空白 (スペース、タブ、または改行) を削除する際に使用できます。 |
| 「カスタム」 |
このタイプを使用すると、
変換で使用されるカスタム・コードを入力したり、
参照コードを呼び出したりすることができます。
カスタム XPath 式および XSLT テンプレートを使用して組み込み変換関数を拡張することができます。 |
例
マッピングを削除するには、マッピング接続を右クリックして、「削除」を選択します。
コンテンツが空の要素へのマッピング
コンテンツを持たない XML 要素へのマッピング (例えば、<Person/>) は、
文字データを持つ XML 要素へのマッピングと異なります (例えば、
<Person>Molly</Person>)。
後者の場合では、マッピングはソース・ノードからのデータが
ターゲット要素の文字データとして使用されることを意味します。
ただし、前者の場合、生成される XSLT へのマッピングの影響はありません。
DTD では、まったくコンテンツを持たない要素は、
キーワード 'EMPTY' を使用して指定されます (例えば、<!ELEMENT Person
EMPTY>)。
XML スキーマでは、より非直接的な方法が必要となります。
XML スキーマ内で空のコンテンツ要素を指定する際に、
コンパクトな構文を作成する方法の 1 つとして、
単純コンテンツも複合コンテンツも含めずに、
複合型を定義する、という方法があります (例: <xsd:element name="Person"> <xsd:complexType/></xsd:element>)。
これは、anyType を制限する、
複合コンテンツの省略表現として解釈されます。