「XML to XML マッピング・エディター」のサンプル README
このサンプル・プロジェクトは、ソースおよびターゲット XML 文書間のマッピングを定義して、対応する XSLT を生成する方法を示します。
多数のサンプルが組み込まれていて、マッピングのさまざまな局面を説明します。
「XML to XML マッピング・エディター」は、さまざまな入力フォーマット (DTD、XSD、または XML) を選ぶことができます。
次のテーブルは、各サンプルが入力および出力として選ぶ内容の要約です。
よくある質問:
DTD または XSD の入力としての指定
質問: 2 つのインスタンス・ドキュメント間のマッピングを定義する場合に、なぜ DTD または XSD ファイルが必要ですか?
DTD または XSD ファイルを持っていません。
回答: DTD または XSD には、正しい XSLT を生成するのに必要なタイプ情報が含まれています。
エレメントが反復可能か可能でないかを判別するのに、インスタンス・ドキュメントのみでは不十分です。
DTD または XSD を使用すると、変換に必要な情報レベルが解決されます。
DTD がなければ、DTD ファイル・エディターを使用して XML 文書から DTD を生成できます。
この生成された DTD ファイルを使用すると、「XML to XML マッピング・エディター」を起動できます。
望むなら、DTD から XSD を生成することもできます。
質問: XML 文書は指定できますか?
回答: XML 文書に、その対応する DTD または XSD を示す DOCTYPE または xsi:schemaLocation タグのいずれかが含まれている場合は、XML 文書を入力として指定できます。
インスタンス・ドキュメントが XML エディターによって正常に検証されるのであれば、それを「XML to XML マッピング・エディター」への入力として使用できます。
質問: DTD または XSD を入力として使用する際の相違点はなんですか?
回答: XSLT および出力文書で名前空間を使用するのであれば、XSD を入力として使用する必要があります。
名前空間の働きについて詳しくは、XML スキーマおよび XML エディターのドキュメンテーションを参照してください。
XSD サンプルにも、名前空間のさまざまな使用パターンが付いています。
HTML テンプレート
XSLT は、一般に XML 文書を HTML 文書に変換するのに使用します。
質問: XHTML および HTML は汎用タグであるため、DTD が完全に記述できません。
それでも、「XML to XML マッピング・エディター」を使用して XSLT を生成できますか?
回答: XHTML および HTML は DTD が完全に記述できませんが、DTD が使用されるのはメタデータを提供する場合に限られ、したがって、完全である必要はありません。
DTD は、マッピングに関係があるドキュメントの部分を定義する限り、「XML to XML マッピング・エディター」には十分です。
ブック (Books)、組織図 (OrgChart)、および オセロ (Othello) のサンプルは、HTML フラグメントの DTD を定義する方法を示し、さらに出力 HTML をターゲット HTML 文書のテンプレート・データによって補足します。
単純なサンプル。
このサンプルで、cdtitle.xml の CD に関する情報は newcdtitle.dtd ファイルが記述する別の XML フォーマットに変換されます。
このサンプルは、アドレス記述のフォーマットを別のフォーマットに変換する方法を示します。
このサンプルは、タグ変換のサンプルおよび XPath 関数の定義方法を備えています。
このサンプルで、Web クライアントから受け取った購入注文は、組織の下流工程システムが処理できる別のフォーマットに変換されます。
このサンプルは、要求に対して内部の固有 ID を生成するなど、計算値に対する Java Bean または 外部 JavaScript を呼び出す方法を示します。
このサンプルは、Books.xml で記述されたブックのリストを選び、それを Web ブラウザーでレンダリングするために HTML に変換するスタイルシートを生成する方法を示します。
bookhtml.xml は、HTML テーブルであるターゲット・フォーマットを記述します。
このサンプルは、ソートの概念も導入します。
XML に記述されたブックの未発注リストは、HTML のカテゴリーおよび価格に応じて表示されます。
このサンプルは、「XSLT Programmer's Reference」ブックから脚色され、「空欄に書き込む (Fill in the blanks)」スタイルシート・パターンとして知られる、いずれかの共通する stylexml.transformet パターンを使用します。
orgchart.xml ファイルは、会社の組織図を表します。
このファイルは、管理階層を反映する再帰構造で編成されます。
生成されたスタイルシートは、このデータを、人名、肩書き、および上司の名前を示す HTML テーブルに表示します。
このサンプルも、「XSLT Programmer's Reference」ブックから脚色され、「ルール・ベース」スタイルシート・パターンとして知られる共通スタイルシート・パターンを使用します。
othello.xml ファイルには、シェイクスピアの劇「オセロ」からのシーンが入っています。
生成されたスタイルシートは、最初の列にスピーカーの名前、2 番目の列にスピーチの行がある 2 つの列を持つ HTML テーブルとして劇を演じます。
これは、3 つのグループ・サンプルのうちの最初で、グループの概念を導入します。
このサンプルは、「XSLT Programmer's Reference」から脚色されています。
cities.xml ファイルは、すべての市とそのそれぞれの国をリストします。
グループおよびキーを定義して、特定の国に見られるすべての市をリストするために、出力フォーマットを変更できます。
これは、2 番目のグループ・サンプルです。
school.xml ファイルは、学校の学生のリストおよび各学生が選ぶコースを示します。
これをさまざまなフォーマットに変換して、学校が提供するコース、およびコースごとに登録された学生をリストできます。
これは、3 番目のグループ・サンプルです。
employee.xml ファイルには、代表的 SQL 照会から作成された従業員のリストが入っています。
この employee.xml ファイルは、SQL 照会ビルダーによって生成されます。
この照会の結果は、従業員のリストを示すフラット構造です。
これは、従業員のリストを部門別にグループ化する階層構造に変換できます。
このサンプルは、複数の調達先からのデータを集約して、結果ドキュメントを作成できることを示します。
hotel.xml にはホテルの予約に関する情報が入っており、airline.xml には航空機の予約に関する情報が入っています。
これら 2 つのファイルからのデータを結合して、旅行日程表を作成します。
そのフォーマットは、itinerary.dtd ファイルによって記述されています。
このサンプルでは、カナダおよび米国の両方の住所を扱うドライビングの道案内のフォーマットが別のフォーマットに変換されます。
このサンプルは、マッピング・セッションの間に、選択のさまざまなメンバーを動的に選択し、マップする方法を実演します。
また、XMX から XML へのマッピング (XMX to XML mapping) のすべてのターゲット・エレメントまたは属性に <xsl:choose> 説明を追加する方法も実演します。