スパース・マッピング

スキーマは多くの場合、多様な可能性に対応するよう作成されます。このようなスキーマがソースおよびターゲットのツリーの生成に使用されると、ツリーに非常に多くの(場合によっては数百万の)ノードが含まれる可能性があります。ただし、多くの場合、ユーザーが使用または移入する必要があるのは、スキーマに定義されているノードのうちごく一部のみです。

スパース・マッピングの処理には様々な方法があります。

サンプルXMLを使用したスキーマの生成

12c XSLTエディタにはXMLドキュメントからスキーマを作成する機能があり、これをソースまたはターゲットのツリーのスキーマ・ドキュメントとして使用できます。ソースまたはターゲット(あるいはその両方)用にサンプルXMLドキュメントがある場合、このドキュメントを使用してマップに必要なノードのみを含む小さなスキーマ・ドキュメントを作成できます。

サンプル・ソースおよびターゲットXMLドキュメントを使用してXSLTマップを作成するには、新規XSLマップのソースまたはターゲットのスキーマを選択する際、「XMLから生成」オプションを選択します。

「スキーマの選択」ダイアログ

スキーマが生成され、Schemasフォルダに配置されます。このスキーマを使用してマッピングのソースおよびターゲットのツリーを作成すると、元のサンプルXMLドキュメントに存在するノードのみが含まれます。

小さなサンプル・スキーマと大規模なスキーマの間で切り替える必要がある場合、キャンバスのコンテキスト・メニューから「ソースまたはターゲット・スキーマの置換/追加」を選択します。Schemasフォルダの小さなサンプル・スキーマまたは大規模なスキーマを選択します。

「ソース・スキーマの置換/追加」メニュー項目

XSLTビューの使用

12cのエディタには、設計ビュー・タブ内で使用可能な新規ビューが含まれています。これが、XSLTビューです。XSLTエディタ・ツールバーの右上の「XSLT」ボタンをクリックして使用します。

「XSLT」ボタン

XSLTビューには、XSLTファイル内に存在する文が表示されます。以前にソースXMLエディタでXSLTを編集したことのあるユーザーには、このビューの良さがわかるでしょう。XSLTソースでの文の出現と同じように編成されています。このビューを使用すると、作成中のマッピングの簡約版が表示されます。たとえば、大規模ターゲット・スキーマのマップのマップ・ビューでの表示を次に示します。スキーマでツリーの後半に出現するノードへのマップの線が表示の下端で切れていることに注意してください。

マップ・ビュー

同じマッピングのXSLTビューでの表示を次に示します。

XSLTビュー

この場合、使用されていないターゲット・ノードがスペースを取ることがなく、すべてのマッピングが明確にわかります。新規ターゲット要素をスキーマから追加する必要がある場合、コンテキスト・メニューで「スキーマからの子の追加」オプションを使用します。

親ノードのコンテキスト・メニューから「スキーマからの子の追加」オプションを選択すると、選択および追加可能な子ノードのリストが表示されます。親ノードのこのメニューから「すべての属性」/「すべての要素」/「すべての必須」を選択することもできます。

「スキーマからの子の追加」メニュー項目

さらに付け加えると、ノードがこのようにして追加された場合、挿入したノードのすべての必要な子が自動的に追加されます。前述の例では、ns2:records要素を追加するよう選択した場合、ツリー内の正しい位置に挿入され、これに必要なns1:idノードが自動的に追加されます。

ns2:records要素のns:Idノード

ソース・ビューでの編集に慣れている場合、ソース・ビューと設計ビューの間を簡単に移動できるオプションが12.2.1.0.0で追加されました。XSLTパネルで任意のノードを右クリックし、「ソース・ビュー内の検索」を選択します。

「ソース・ビュー内の検索」コンテキスト・メニュー項目

ソース・ビューが開き、ノードが選択されています。

「ソース」ビュー

設計ビューのノードに戻るには、ソース・ビューで「設計ビュー内の検索」オプションを選択します。

XSLTビューを使用して任意のXSLT文を挿入することもでき、XSLTビューで名前付きテンプレートおよび一致するテンプレート(テンプレート・ルール)を使用できます。XSLTビューの詳細は、「XSLTビューでのXSLTマップの編集」を参照してください。