1. XMLデータ変換の開発

1.1. チュートリアル

本節ではXMLマッピングの利用方法について簡単に紹介します。

1.1.1. XMLマッピングアプリケーションの作成

メニュー ウインドウ > パースペクティブを開く > XMLマッピング  を選択。


図1.1.1-1

Memo
もし、はじめて本プラグインを利用すれば、メニュー ウインドウ > パースペクティブを開< > その他... を選択。
パースペクティブを開く ダイアログボックスから XMLマッピング  を選択。


1.1.1.1. XMLマッピングプロジェクトの作成

メニュー ファイル > 新規 > プロジェクト  を選択。


図1.1.1.1-1

マッピング 下方の XMLマッピングプロジェクト を選択、次へ  をクリック。


図1.1.1.1-2

プロジェクト名 テキストボックスにexampleと入力して、 完了 をクリック。


図1.1.1.1-3

ナビゲーターでexampleという名前のXML マッピングプロジェクトが生成されます。


図1.1.1.1-4

1.1.1.2. XMLスキーマファイルの作成

exampleを右クリック。右クリックメニュー 新規 > その他...  を選択。


図1.1.1.2-1

新規 ダイアログからXMLスキーマファイルを選択し、次へ  をクリック。


図1.1.1.2-2

デフォルトファイル名をmovielist.xsdに修正し、完了 をクリック。


図1.1.1.2-3

XMLスキーマエディタのソースページで、【図1a】でのコードにより、movielist.xsdファイルを作成します。
ファイルを保存します。


図1.1.1.2-4

【図1a】movielist.xsdファイル
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="movies">
        <xsd:complexType>
            <xsd:sequence maxOccurs="unbounded" minOccurs="0">
                <xsd:element name="movie" type="tMovie"/>
            </xsd:sequence>
        </xsd:complexType>
    </xsd:element>
    <xsd:complexType name="tMovie">
        <xsd:sequence>
            <xsd:element name="movieName" type="xsd:string"/>
            <xsd:element name="movieType" type="tMovieType"/>
            <xsd:element name="moviePrice" type="xsd:int"/>
            <xsd:element name="movieTime" type="xsd:time"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:simpleType name="tMovieType">
        <xsd:restriction base="xsd:string">
            <xsd:enumeration value="Action"/>
            <xsd:enumeration value="Love"/>
            <xsd:enumeration value="History"/>
        </xsd:restriction>
    </xsd:simpleType>
</xsd:schema>
      
上記と同様の手順でmoviecount.xsdファイルを作成します。
XMLスキーマエディタのソースページで、【図1b】でのコードにより、moviecount.xsdファイルを作成します。
ファイルを保存します。


図1.1.1.2-5

【図1b】moviecount.xsdファイル
<?xml version="1.0" encoding="UTF-8"?>
<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema">
    <xsd:element name="movies" type="tMovie"/>
    <xsd:complexType name="tMovie">
        <xsd:sequence>
            <xsd:sequence maxOccurs="unbounded" minOccurs="0">
                <xsd:choice>
                    <xsd:element name="movieType" type="tMovieType"/>
                    <xsd:element name="moviePrice" type="tMoviePrice"/>
                </xsd:choice>
            </xsd:sequence>
            <xsd:element name="count" type="xsd:int"/>
        </xsd:sequence>
    </xsd:complexType>
    <xsd:complexType name="tMovieType">
        <xsd:sequence>
            <xsd:element name="movieName" type="xsd:string"/>
            <xsd:element name="movieTime" type="xsd:time"/>
        </xsd:sequence>
        <xsd:attribute name="name" type="xsd:string" use="required"/>
    </xsd:complexType>
    <xsd:complexType name="tMoviePrice">
        <xsd:sequence>
            <xsd:element name="movieName" type="xsd:string"/>
            <xsd:element name="movieTime" type="xsd:time"/>
        </xsd:sequence>
        <xsd:attribute name="price" type="xsd:int" use="required"/>
    </xsd:complexType>
</xsd:schema>
      

1.1.1.3. XMLマッピングファイルの作成

exampleを右クリック。右クリックメニュー 新規 > XMLマッピングファイル  を選択。


図1.1.1.3-1

新規XMLマッピングファイル ダイアログで、ソーススキーマ 対応の ブラウズ(R)... をクリック、ワークスペース を選択、スキーマファイルの選択く ダイアログからmovielist.xsdファイルを指定し、ルート要素  からmoviesを選択します。
ターゲットスキーマ 対応の ブラウズ(W)... をクリック、ワークスペース を選択、スキーマファイルの選択 ダイアログからファイルmoviecount.xsdを指定し、ルート要素  からmoviesを選択します。
完了  をクリック。
新しいファイルnew_file.xmfが生成されます。下図を参照してください【図1c】。


図1.1.1.3-2

【図1c】new_file.xmfのマッピングエディタ


図1.1.1.3-3

ソーススキーマエリアで指定しているmoxelist.xsdファイルには四つの属性を含みます:movieName、movieType、moviePrice、movieTime。ターゲットスキーマエリアで指定しているmoviecount.xsdファイルは二つの選択条件があります:movieTypeとmoviePrice。movieTypeにはname属性、サブ要素movieNameとmovieTimeが含まれていますが、moviePriceにはprice属性、サブ要素movieNameとmovieTimeが含まれています。countとは条件に満足しているmovieの合計です。

1.1.2. XSL ファイルの作成

1.1.2.1. 線を結ぶ

説明:この例はmovieTypeによる選択して、条件に合致するmovieのmovieNameとmovieTime、及び条件に満足する合計countを出力します。具体的な結び手順は下図を参照してください。
ソーススキーマエリアから を選択し、ドラッグして、ターゲットスキーマエリアの にドロップします。 結線の意味:movieは繰り返し出現し、movieの出現回数だけ値がターゲットに出力されます。


図1.1.2.1-1

ソーススキーマエリアから 下の を選択し、ドラッグして、ターゲットスキーマエリアの にドロップします。 連接線の意味:movieTypeを選択条件として、movieTypeに設定する値により、条件に合うmovieを選択します。


図1.1.2.1-2

ターゲットスキーマエリアでのチョイスノードを右クリック。右クリックメニュー ノードのプロパティ設定  を選択。


図1.1.2.1-3

ノードのプロパティー設定  ダイアログでのmovieTypeの比較値をActionにして、moviePriceの比較値はデフォルト値2を保持しています(この例はmovieTypeによる選択を行います)。
適用 をクリック。閉じる  をクリック。


図1.1.2.1-4

ソーススキーマエリアから 下の を選択し、ドラッグして、ターゲットスキーマエリアの 下の にドロップします。 連接線の意味:movieTypeのため設置した比較値ActionをmovieTypeのname属性として出力します。


図1.1.2.1-5

ソーススキーマエリアから 下の を選択し、ドラッグして、ターゲットスキーマエリアの 下の にドロップします。 連接線の意味:movieTypeがActionであるmovieのmovieNameを出力します。


図1.1.2.1-6

ソーススキーマエリアから 下の を選択し、ドラッグして、ターゲットスキーマエリアの 下の にドロップします。 連接線の意味:movieTypeがActionであるmovieのmovieTimeを出力します。


図1.1.2.1-7

ソーススキーマエリアから を選択し、ドラッグして、ターゲットスキーマエリアの 下の にドロップします。 連接線の意味:movieTypeがActionであるmovieの合計をcountに出力します。


図1.1.2.1-8

マッピングエディタから 下の を選択し、右クリックメニューで 関数の編集 を選択。


図1.1.2.1-9

1番目の結線を選択します。
XPath表現式エディタ  に1番目の結線のXPath表現式が表示されます。


図1.1.2.1-10

Xpath表現式エディタ  に“/movie/movieType”を削除します。
関数リスト  からcount(node-set)を選択して、ダブルクリックします。
count(node-set)がエディタに挿入されます。


図1.1.2.1-11

Xpath表現式エディタ  に“node-set”を削除して、カーソルを()内に移動します。
ノードを挿入  をクリック。


図1.1.2.1-12

ノードの挿入  ウィンドウが表示されます。
“./movie/movieType/text()”ノードを選択して、挿入 をクリック。
ウィンドウを閉じます。


図1.1.2.1-13

XPath表現式エディタ
“count(./movie/movieType/text())”になります。


図1.1.2.1-14

XPath表現式を
count(./movie/movieType[text()='Action'])
に修正します。
適用 をクリック。修正したXPathを結線に保存します。
ウィンドウを閉じます。


図1.1.2.1-15

1.1.2.2. XSL 出力

メニュー XMLマッピング > XSL 出力  を選択。
XSL 出力が完成したら、確認ダイアログが表示され、OK  をクリック。


図1.1.2.2-1

ナビゲーター中のプロジェクトの構造を展開し、xslフォルダ下で新しいファイルnew_file.xslが追加されます。


図1.1.2.2-2


1.1.3. XMLデータ変換の実行

1.1.3.1. 入力出力ファイルの作成

プロジェクト名exampleを右クリック。右クリックメニュー 新規 > その他... を選択。新規 ダイアログが表示されます。XML ファイル を選択、次へ をクリック。


図1.1.3.1-1

デフォルトファイル名をinput.xmlに修正し、完了 をクリック。


図1.1.3.1-2

XMLエディタのソースページで、【図3a】でのコードにより、input.xmlファイルを作成します。
ファイルを保存します。


図1.1.3.1-3

【図3.a】input.xmlファイル
<?xml version="1.0" encoding="Shift_JIS"?>
<movies>
    <movie>
        <movieName>AAA</movieName>
        <movieType>Action</movieType>
        <moviePrice>10</moviePrice>
        <movieTime>2</movieTime>
    </movie>
    <movie>
        <movieName>BBB</movieName>
        <movieType>Love</movieType>
        <moviePrice>9</moviePrice>
        <movieTime>2</movieTime>
    </movie>
    <movie>
        <movieName>CCC</movieName>
        <movieType>Action</movieType>
        <moviePrice>8</moviePrice>
        <movieTime>2</movieTime>
    </movie>
    <movie>
        <movieName>DDD</movieName>
        <movieType>History</movieType>
        <moviePrice>8</moviePrice>
        <movieTime>3</movieTime>
    </movie>
    <movie>
        <movieName>EEE</movieName>
        <movieType>Love</movieType>
        <moviePrice>10</moviePrice>
        <movieTime>1.5</movieTime>
    </movie>
    <movie>
        <movieName>FFF</movieName>
        <movieType>Action</movieType>
        <moviePrice>8</moviePrice>
        <movieTime>2</movieTime>
    </movie>
    <movie>
        <movieName>GGG</movieName>
        <movieType>Love</movieType>
        <moviePrice>8</moviePrice>
        <movieTime>2</movieTime>
    </movie>
    <movie>
        <movieName>HHH</movieName>
        <movieType>History</movieType>
        <moviePrice>9</moviePrice>
        <movieTime>2</movieTime>
    </movie>
</movies>    
      
同様な手順でoutput.xmlファイルを作成します。
XMLエディタのソースページを利用し、デフォルトコードを表示させます。


図1.1.3.1-4

1.1.3.2. 実行

実行機能を使うと、XML(input.xml)からXML(output.xml)への変換処理を画面上で即座に実行して、作成したマッピングの動作を確認することができます。
メニュー 実行 > 実行構成 をクリック、実行構成  ダイアログが表示されます。
【図3b】 実行構成  ダイアログ


図1.1.3.2-1

XMLマッピング カテゴリを選択して、下方の 新規 をクリック、新しい 新規構成  を作成します。
XSLT変換  タブ :
ブラウズ(B)... をクリック、ファイルの選択  ダイアログが表示され、その中からinput.xmlファイルを選択します。
ブラウズ(S)... をクリック、ファイルの選択 ダイアログが表示され、その中からnew_file.xslファイルを選択します。
ブラウズ(E)... をクリック、ファイルの選択 ダイアログが表示され、その中からoutput.xmlファイルを選択します。
他の入力ボックスは全てデフォルト値を保持しています。
実行  をクリック、output.xmlファイルを開きます。
【図3c】output.xmlファイル


図1.1.3.2-2

output.xmlファイルで条件に合致している結果が表示されています:movieTypeがActionである全てのmovieのmovieNameとmovieTimeです。countとは条件に合致している結果の合計を表示しています。