パーソナルツール
現在の場所: ホーム ブログ MAGIC V10解析(4)
« 2018January »
Su Mo Tu We Th Fr Sa
  1 2 3 4 5 6
7 8 9 10 11 12 13
14 15 16 17 18 19 20
21 22 23 24 25 26 27
28 29 30 31      
このBlogについて
 代表の向井田ことMUKAです。当ブログサイトでは、MAGICやDB2に関する技術者向け情報を公開しています。お気軽にお立ち寄り下さい。
最近のエントリ
twitter / 新RT機能を英語モードで・・・ muka 2009年11月19日
twitter / List Widget muka 2009年11月03日
twitter API / Retweet の仕様が・・・ muka 2009年10月30日
twitter API / Lists muka 2009年10月24日
IBM Rational Software Conference 2009 と アジャイル開発 muka 2009年10月08日
twitter API / geoタグ! muka 2009年10月01日
Twitter Developers Meetup in Tokyo muka 2009年09月11日
Club DB2 2009/9/4 muka 2009年09月05日
最近のコメント
Re:Club DB2 2009/8/29 muka 2009年09月01日
Re:Club DB2 2009/8/29 SIM 2009年08月31日
最近のトラックバック
Club DB2 8/29の感想エントリと今後の予定 Unofficial DB2 BLOG 2009年09月01日
カテゴリ
misc (47)
dbMAGIC (47)
DB2 (47)
mail (47)
Web (47)
twitter (47)
 

MAGIC V10解析(4)


はじめに

 新年おめでとうございます。
 今年も宜しくお願い致します。

 さて、このCMSとして利用させて頂いているPloneですが、ちょっと内部的なデータがおかしくなってしまいまして(とあるデータが壊れた?)、この週末の休みを利用しデータを再構築しました。手順としては別なマシンにPloneをインストールし、それを同じようにカスタマイズし、最後に昨日までのこのサイトのデータを移し、全て同じように復元致しました。
 入力するときは大変な労力を要したので、それと同じような作業量は最初から覚悟していたのですが、Ploneにはデータの入出力機能(Export, Inport)がありそれを使うことでとてもスムーズに作業を完結させることができました。例えば、「MAGIC Decrypter」とかタブが出ている単位でサブフォルダにデータが格納されているのですが、それを単位に一括してデータの移行ができるんです。それに気付き、とても重宝しました。
 まずは、無事生き返りホッとしているところです。

 えーと、話を戻します。前回はプログラムのソースのタスク構造をXMLスタイルシートを使って再帰的に取得することを行いました。でも、開発の場面でXMLスタイルシートを使うようなことはあまり無いかも知れませんね。私としては、XMLになったということの「恩恵」として、ひとつはこういうこともできるよ・・・ということが言いたかったんです。
 さて、今日の本題は、V10で新しく機能が追加された「XML連携」に関することです。V10でMAGICは、標準のデータソースとしてXMLファイルを使用することができるようになりました。この機能は結構強力なので、いろいろなケースで威力を発揮するのではないかと思います。その反面、ちょっと「悩み」も増えてしまったんですが・・・。(このあたりはまたいつか話題にしたいと思います。)
 何はともあれ、今回はこの機能を使ってスタイルシートで行ったようにプログラムの一覧を表示してみようと思います。


スキーマの定義

 「XML連携」の機能を使う上で、XMLスキーマの定義は必須です。(MAGIC V10のスキーマも最初から提供してくれれば良いと思うけど・・・(^^;)
 でも「XMLSPY」とかを使えば楽勝でしょう。(私もフリー版の「Home Edition」を使用しています。)
 手順は慣れれば思ったより簡単です。XMLファイルのタグを階層的に連結させながら、階層構造図を描けばOKです。そのとき、属性値とかは省略せずに入力していきます。特にMAGIC V10のリポジトリの場合は、殆ど「属性」を使ってデータの値を定義している模様です。これを省略してしまうと、項目の値が取り出せませんし、数値にするか文字にするかなど、項目の型の判定にも影響が出ます。(なるべく数値らしきところは「integer」などを選択しましょう。)

 ProgramHeaders.xmlのソースの先頭部分は次のようになっていると思います。

<?xml version="1.0" encoding="UTF-8" standalone="no" ?>
<Application>
  <Header>
    <Version val="10001"/>
    <WithIsn val="Y"/>
  </Header>

この部分のXMLスキーマの入力手順は次のとおりです。


  • XML SPYを起動
  • 新規作成で、ドキュメントのタイプ=xsdを選択する
  • 「ENTER_NAME_OF_ROOT_ELEMENT_HERE」と書かれているところに「Application」と入力
  • 一番左にあるボタンをクリックし、画面を変える
  • 「Application」ボックスを右クリックし、「Add Child」で「Sequence」を選択
  • 追加された「Sequence」で右クリックし、「Add Child」」で「Element」を選択し「Header」を入力
  • 追加された「Header」ボックスを右クリックし、「Add Child」で「Sequence」を選択
  • 追加された「Sequence」で右クリックし、「Add Child」」で「Element」を選択し「Version」を入力、更にAttributes画面で「Attribute」を選択し、Nameに「val」を入力、Typeに「xs:integer」を選択
  • 同じく「Sequence」で右クリックし、「Add Child」」で「Element」を選択し「WithIsn」を入力、更にAttributes画面で「Attribute」を選択し、Nameに「val」を入力、Typeに「xs:string」を選択


 ここまでで、下図のような画面になると思います。

v10xsd01.jpg




 「Application/Header」の部分が終わりましたので、次は「Application/ProgramsRepositoryHeaders」からの入力を進めます。
 スキーマの入力を完成させ、最後にファイルを保存します。(「ProgramHeaders.xsd」などの名前で登録します。)

v10xsd02.jpg




データリポジトリの定義

 さて、いよいよV10の登場です。
 適当な名前の新規プロジェクトを作成します。このとき、下記の論理名を定義しておきましょう。

[MAGIC_LOGICAL_NAMES]
Project=(リポジトリの内容を検索させるプロジェクトのパス名)
Source=%Project%\Source

データリポジトリの画面を開き、下記のように定義します。

データリポジトリ名:ProgramHeaders
データソース名:%Source%\ProgramHeaders.xml
データベース:Default XML Database


プルダウンメニューの「オプション」から「定義取得」を実行し、作成したスキーマファイルのファイル名(ProgramHeaders.xsd)を入力します。
このとき、プロジェクトフォルダに格納しておくと、プロジェクトフォルダからの相対パス名で指定できるようです。

v10xsd03.jpg


 スキーマファイルを読み込む際に、ルートの要素を聞いてくるかもしれません。その時は「Application」を指定します。
 正常に読み込まれると、ビューにツリーが表示されます。
 次に、テーブルとして表示させる位置(MAGICでは「ビューのメイン要素」と呼ぶ模様)を指定します。
 ノードの位置「/Application/ProgramsRepositoryHeaders/Program/Header」をクリックし、マウス右ボタンから「ビューに含める」を選択します。

v10xsd04.jpg




 初期値では、属性のタイプが「xs:string」のものは、文字タイプの書式「15」に、同じく「xs:integer」のものは数値の書式「N10」に設定されます。不適切なものは書式を修正しておきます。

v10xsd05.jpg


 インデックスを追加しておきましょう。タブの「インデックス」をクリックします。
 例えば、「id」をインデックスとして作成しておきます。

v10xsd06.jpg


 これで、データ定義が終了しました。

実行結果


 とりあえず、APGを使って実行してみましょう。「Ctrl+G」キーを押して実行させ、下記のような画面が表示されれば成功です。

v10xsd07.jpg


 MAGICに慣れた人なら、テーブル(現在はデータになったんですね)として定義さえできれば、あとは言わずもがなですね。
 XMLファイルの場合は、同じファイルの中でもループする部分が幾つかあるので、その度毎に「ビューのメイン要素」を定義することになります。
 なお、「ノードID」はどのようにして割り振られるのかは定かではありませんが、XMLファイルの全ノードに対してユニークな番号を割り当てるようです。親ノードを正しく指定すれば、この画面からレコードの追加(ノードの追加)もできるようです。


★参考ファイル


 今回作成したスキーマファイル(ProgramHeaders.xml)


MAGIC V10解析(1) MAGIC V10解析(1)
サイズ 8337 - File type text/html
MAGIC V10解析(2) MAGIC V10解析(2)
サイズ 8904 - File type text/html
MAGIC V10解析(3) MAGIC V10解析(3)
サイズ 9714 - File type text/html
カテゴリ
dbMAGIC