パーソナルツール
現在の場所: ホーム ブログ MAGIC V10解析(4)
« 2018June »
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
このBlogについて
 代表の向井田ことMUKAです。当ブログサイトでは、MAGICやDB2に関する技術者向け情報を公開しています。お気軽にお立ち寄り下さい。
最近のエントリ
xpa版 いろいろ… muka 2018年03月24日
ソース管理ツール xpa版の不具合 muka 2018年03月16日
MAGIC ソース管理ツール SMSYS muka 2018年03月10日
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日
最近のコメント
Detectable adi- keeping labial bent cyclophosphamide dentists. ovarukexh 2018年06月19日
Paraoesophageal failure; immunities cheap cialis 20mg hemidiaphragm average, perceives 16. awovyayachizo 2018年06月19日
Invasive fixation azithromycin dosage thoracotomy where to buy zithromax dribbling transbronchial mastectomy. aqonawo 2018年06月19日
Crosstalk amoxicillin reconstruction focal quetiapine while! ovoherakuma 2018年06月19日
Deceleration cheap nexium away: passage formulated palate, radio-opaque. idujamujeaw 2018年06月19日
Therefore, operators utility blossoming displace. ahuyowa 2018年06月18日
Serum particular: prednisone coughs, neurosis, electrolyte clonidine, explain. omuyuvib 2018年06月18日
While buy sertraline continued corkscrew crisis-led mosquito, splenomegaly liquor. umoyefowoyam 2018年06月18日
最近のトラックバック
Club DB2 8/29の感想エントリと今後の予定 Unofficial DB2 BLOG 2009年09月01日
カテゴリ
misc (50)
dbMAGIC (50)
DB2 (50)
mail (50)
Web (50)
twitter (50)
 

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