1.3.5. 複雑サンプル

1.3.5.1. 概要

DTDから生成したスキーマをソーススキーマ・ターゲットスキーマとして利用したサンプルです。
dtdファイルの右クリックメニュー XMLマッピング > XMLスキーマへ変換 を選択して、スキーマを生成します。生成したスキーマをソーススキーマとして指定します。dtdファイルの内容を以下に示します。
<!ELEMENT Root (C1,(A1|A2|A3)*,(B1|B2|B3)+)>
<!ELEMENT A1 (#PCDATA)>
<!ELEMENT A2 (#PCDATA)>
<!ELEMENT A3 (#PCDATA)>
<!ELEMENT B1 (#PCDATA)>
<!ELEMENT B2 (#PCDATA)>
<!ATTLIST B2 name CDATA #REQUIRED>
<!ELEMENT B3 (#PCDATA)>
<!ATTLIST B3 name CDATA #REQUIRED>
<!ELEMENT C1 (#PCDATA)>
dtdファイルの右クリックメニュー XMLマッピング > XMLスキーマへ変換 を選択して、スキーマを生成します。生成したスキーマをターゲットスキーマとして指定します。dtdファイルの内容を以下に示します。
<!ELEMENT Root ((A1|A2|A3)+,(B1|B2|B3)*)>
<!ELEMENT A1 (#PCDATA)>
<!ELEMENT A2 (#PCDATA)>
<!ELEMENT A3 (#PCDATA)>
<!ELEMENT B1 (#PCDATA)>
<!ELEMENT B2 (#PCDATA)>
<!ELEMENT B3 (#PCDATA)>
<!ATTLIST B2 name CDATA #REQUIRED>
<!ATTLIST B3 name CDATA #REQUIRED> 
次のように線を結びます。
(1) Sourceファイルに ノードのサブ要素が存在したら、 のサブ要素の関数を呼出します。
(2) ソース側の テキストノードの値イコール チョイスノードのプロパティ値の場合、プロパティ値が対応するサブ要素の関数を呼出します。
(3) SourceファイルのA2の値をTargetファイルのA2に代入します。
(4) SourceファイルのA1の値をTargetファイルのB1に代入します。
(5) Sourceファイルに ノードのサブ要素が存在したら、 のサブ要素の関数を呼出します。
(6) SourceファイルのB1の値をTargetファイルのA3に代入します。
(7) SourceファイルのB2の値をTargetファイルのB2のname属性に代入します。
(8) SourceファイルのB3のname属性値をTargetファイルのB3に代入します。


図1.3.5.1-1

生成されたXSLT Source Codeは次の通りです。


図1.3.5.1-2


図1.3.5.1-3


1.3.5.2. 構成

表1.3.5.2-1
Sample_complicated プロジェクト名
schema/src.dtd ソースDTDファイル
schema/src.xsd ソースDTDから生成したソーススキーマファイル
schema/tar.dtd ターゲットDTDファイル
schema/tar.xsd ターゲットDTDから生成したターゲットスキーマファイル
xsl/complicated.xsl complicated.xmfから生成したXSLファイル
complicated.xmf XMLマッピングファイル


1.3.5.3. 実行手順

  1. サンプルプロジェクト Sample_complicated.zip をインポートします。
  2. ナビゲーターの中から、XMLマッピングファイル(complicated.xmf)を選択してダブルクリックすると、XMLマッピングエディタが開きます。

1.3.5.4. 注意事項

特になし。