XML活用講座

 

本講座ではMagicでXMLを有効に活用するためのXMLの基本とMagicでどのように使うのかをサンプルを交えて解説いたします。

 

導入編   第3部
はじめに   SQL ServerのXML機能を活用する
XML 初歩の初歩    
XMLの書式について   第4部
    ExcelのXML機能を活用する
 
     
第1部   第5部
XMLデータ交換編   InfoPathのXML機能を活用する
 
     
第2部   第6部
XMLスタイルシート編   PDFフォームのXML機能を活用する
 

 


はじめに

  早いものでMagicフォーラムでMagicとXMLのお話をしてからかなりの年月がたちました。今やXMLはIT産業の寵児となり書店へ足を運ぶとXML関連の書籍がところ狭しと並べられ、最近ではむしろJavaや.NET関連の書籍より種類は豊富になってきたのではないでしょうかね。

 山下の方でも以前からお話ししてきたように既にXMLは「情報の共通通貨」としてIT関連技術者たるもの避けて通ることのできない常識的な基本技術となってきたようです。そこで本講座では山下の流儀でXMLのことをあまりよく知らないマジシャンにも理解できるようにXMLの実践的活用を念頭においたテクニカルかつソリューション的な内容を解説していきたいと考えております。

 今回の講座で前提とするMagic eDeveloperのバージョンは「V9.Plus」となりますが、本バージョンでは強力なXML対応機能がサポートされるようになりましたのでマジシャンの皆さんに有効に利用されることを願って解説をしていきます。Magicでの具体的なお話は次回以降ということで今回は「XMLの意義と価値」について簡単にまとめておきましょう。


【XMLとは?】

 いまさら、「XMLとはなんぞや?」と大上段に構えて説明するまでも無いとは思いますが、例えば技術評論社出版の「最新 XMLがわかる」という本の中では次のような説明があります。

「XML(eXtensible Markup Language)はインターネット上で文書やデータを交換したり、配布したりするときの汎用のデータ記述言語です。人とアプリケーションの両方が理解し、処理できる形式でデータを記述するため、ビジネス情報の交換手段としても優れている。」

 これはなかなかわかりやすい定義だと思いますので、この内容を前提にお話を進めていくことにしましょう。


【XMLはどのような場面で使われているか】
 

現在実用化されているXMLの応用をまとめておきますと
 

名称

用途

策定団体

BizTalk 

企業間電子商取引

マイクロソフト

BML

衛星デジタル放送

(社)日本電波工業会

CBL

企業間電子商取引

CommerceOne

CML

化学式の表現

Open Molecule Foundation

cXML

企業間電子商取引

ARIBA

DirXML

ディレクトリ

Novell

DocBook

技術文書

OASIS

FpML

金融商品取引

JPモルガン&プライスウォーターハウス

G-XML

地理情報

(社)データベース振興センター

MathML

数式の表現

W3C

MML

電子カルテ(医療記録)

日本医療情報学会

P3P

個人情報

W3C

REML

不動産情報

4th World Telecom

RWML

道路情報

RWML仕様作成ワーキンググループ

SMIL

マルチメディア

W3C

SVG

ベクトル図形(CAD等)

W3C

VoiceXML

音声

VoiceXML Forum

XHTML

HTML拡張

W3C


 

などの適用範囲があるます。 このなかでもちょと異色なのが「BML」と「VoiceXML」でどちらも通常のブラウザではなく特殊なブラウザが必要です。前者はデジタルテレビで後者がボイスブラウザです。後者については 数年ほど前のユーザ会(?)の山下の講演のなかでお披露目したので記憶している方もおられるでしょう。

 ちょと補足しますと現行のデジタルテレビの画面は「BML」で作られていますし、ボイスブラウザというのは絵や文字を表示する「画面」ではなく「音声」の入出力を使った「ブラウザ」です。ボイスブラウザは通常、サービスの提供側におき、利用者は普通の電話機だけがあれば利用できます。
 このようにXMLを使うと単なるデータ交換だけでなく新しいユーザインタフェース対応のアプリケーションとしても利用できるのがXMLの大きな魅力なのです。

 本講座では色々なお話をしたいのは山々なのですがある程度、焦点を絞らないとキリが無くなってしまいますので大多数のユーザにとって最も重要と思われる「データ交換」を中心としてお話を進めていきます。本題からはずれるけれども何か面白そうなトピックがあれば「番外編」という形でフォローしていきます。

目次に戻る

 


XML 初歩の初歩


 それでは早速、具体的に本講座を始めることにいたしましょう。本講座の主旨はXMLを全く知らないマジシャンにもXMLを活用してもらうことにありますので今回は「イロハのイ」から始めます。まずXMLは以下のような特徴があります。

    1.XMLはテキスト形式で記述される

    2.XMLはインターネットを介して交換が可能

    3.XMLは独自タグを追加することができる

    4.XMLは階層的なデータを保存することができる

 1.はXMLの保存の形式がテキストであるということです。もともとXMLはSGMLの一形態でありHTMLの機能を強化して策定されたものですのでHTML文書と同じような感覚で利用できます。またファイルの識別子は通常、「.xml」となります。

 2.は当たり前のことですが非常に重要な内容です。XMLは「情報の基本通貨」的な存在ですので世界中、いたるところで個人−会社−組織間でボーダレスにやりとりできなければ意味がありません。したがって「情報の公道」であるインターネットを介して交換できることは必須条件なのです。

 3.ですが、1でXMLはHTMLの機能拡張版であるといいましたが、XMLの最大の機能が自由にタグを追加・設定できるということです。たとえばXMLでは顧客情報データを以下のように独自タグを使って以下のように記述できます。

 

<顧客情報>
 <顧客番号>1000</顧客番号>
 <氏名>山田太郎</氏名>
 <郵便番号>134-0015</郵便番号>
 <住所>東京都江戸川区西瑞江5-X-X</住所>
 <電話番号>03-3878-XXXX</電話番号>
</顧客情報>
 




これをHTMLだけで表示すると「1000」とか「山田太郎」とかがそのまま記述されているだけでそれがいったい何を意味しているのか解りませんね。
XMLでは独自タグを利用することによってその内容が具体的に何を意味しているのかを明示することができます。CSV形式などと比べても記述は冗長になりますが「共通通貨」としてとても重要な機能です。

 4.はさらにこのようなデータを階層構造を持った形にして1つのXML文書に格納できるということを意味しています。例えばデータの管理上上記のデータの「氏名」を「姓」−「名」、住所を「都道府県」−「市区町村」−「番地」と階層的に管理したいときには次のように記述することができます。

 

<顧客情報>
 <顧客番号>1000</顧客番号>
 <氏名>
  <姓>山田</姓>
  <名>太郎</名>
 </氏名>
 <郵便番号>134-0015</郵便番号>
 <住所>
  <都道府県>東京都</都道府県>
  <市区町村>江戸川区西瑞江</市区町村>
  <番地>5-X-X</番地>
 </住所>
 <電話番号>03-3878-XXXX</電話番号>
</顧客情報>
 



このように階層構造を含むデータを何階層でも自由に一文書の中で格納することが可能です。XMLの全文書の内容を添付しましたので参考にしてください。
これは受注明細を含む受注内容のサンプルになっています。とりあえず、今回はXML文書が

    <?xml version="XXX" encoding="YYY" ?>

で始まることだけを記憶に留めておいてください。

また「XXX」の部分はW3Cで決められたXML企画のバージョンであり通常は「1.0」と記述します。それと「YYY」の部分はこのXML文書で使用している文字コードを表しており、
例えば「シフトJIS」の場合には「Shift-JIS」、UNIXの「EUC」の場合には「EUC-JP」のように記述します。

 なお、「encoding=」以下の部分を全て省略した場合には「UTF-8」か「UTF-16」のいずれかが自動的に選択されます。どちらが選択されるかはXMLプロセッサの仕様に依存します。ここでいうXMLプロセッサというのは単体もしくはIE等のブラウザなどに組み込まれたXML文書をハンドリングするためのモジュールのことです。

目次に戻る
 

XMLの書式について

 それでは遅ればせながらXMLの基本であるXMLの書式についてまとめておくことにいたしましょう。XML文書の作成には次のようなルールがあります。

    ルール1: XML文書であることを宣言する

    ルール2: 文字コードを指定する

    ルール3: XML文書には1つのルート要素が必要

    ルール4: 全ての要素は正しい入れ子の構造をとる

    ルール5: 全ての要素には終了タグが必要

    ルール6: 指定した文字コードで保存する

    ルール7: 属性値はダブルコーテーションでくくる

    ルール8: 大文字、小文字を区別する

<?xml version="1.0" encoding="Shift_JIS"?> ←ルール1 ・ ルール2
<受注内容> ←ルール3
 <顧客番号>00000002</顧客番号> ←ルール5
 <会社名>ジャパンマジック</会社名>
 <受注日付>021018</受注日付>
 <受注時刻>153802</受注時刻>
 <受注合計> 1331</受注合計>
 <受注明細> ←ルール4
  <商品番号>1300000854</商品番号>
  <大分類>1</大分類>
  <中分類>0</中分類>
  <商品名>ホワイトワイン</商品名>
  <受注数>2</受注数>
  <価格>109</価格>
 </受注明細> ←ルール4
  <受注明細>
  <商品番号>1300002801</商品番号>
  <大分類>1</大分類>
  <中分類>0</中分類>
  <商品名>パウダーミルク</商品名>
  <受注数>1</受注数>
  <価格>565</価格>
 </受注明細>
 <受注明細>
  <商品番号>6414404342</商品番号>
  <大分類>1</大分類>
  <中分類>0</中分類>
  <商品名>ピザキット</商品名>
  <受注数>1</受注数>
  <価格>318</価格>
 </受注明細>
 <受注明細>
  <商品番号>7754426100</商品番号>
  <大分類>1</大分類>
  <中分類>0</中分類>
  <商品名>インスタントファラフェル</商品名>
  <受注数>2</受注数>
  <価格>115</価格>
 </受注明細>
</受注内容> ←ルール3
 


    ルール1: 前項で紹介したように <?xml  の部分がXML文書の宣言になります。

    ルール2: 同じく前項で説明したように encoding= で文字コードを指定しています。

    ルール3: <受注内容>、</受注内容>のように一番外側に1回だけ現れるタグがルート要素になります。

    ルール4: <受注明細>の中に含まれる<商品番号>〜<価格>は正しい入れ子の構造になっています。

    ルール5: 全てのタグは <顧客番号>・・・</顧客番号>のようにペアの構造を持っています。

ルール6〜8についてはこの例では特に明記しておりませんが、今後意識する必要が出てきますので心に留めておいてください。
 

目次に戻る