|
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は以下のような特徴があります。
1.XMLはテキスト形式で記述される
2.XMLはインターネットを介して交換が可能
3.XMLは独自タグを追加することができる
4.XMLは階層的なデータを保存することができる
1.はXMLの保存の形式がテキストであるということです。もともとXMLはSGMLの一形態でありHTMLの機能を強化して策定されたものですのでHTML文書と同じような感覚で利用できます。またファイルの識別子は通常、「.xml」となります。
2.は当たり前のことですが非常に重要な内容です。XMLは「情報の基本通貨」的な存在ですので世界中、いたるところで個人−会社−組織間でボーダレスにやりとりできなければ意味がありません。したがって「情報の公道」であるインターネットを介して交換できることは必須条件なのです。
3.ですが、1でXMLはHTMLの機能拡張版であるといいましたが、XMLの最大の機能が自由にタグを追加・設定できるということです。たとえばXMLでは顧客情報データを以下のように独自タグを使って以下のように記述できます。
|
<顧客情報> |
これをHTMLだけで表示すると「1000」とか「山田太郎」とかがそのまま記述されているだけでそれがいったい何を意味しているのか解りませんね。
XMLでは独自タグを利用することによってその内容が具体的に何を意味しているのかを明示することができます。CSV形式などと比べても記述は冗長になりますが「共通通貨」としてとても重要な機能です。
4.はさらにこのようなデータを階層構造を持った形にして1つのXML文書に格納できるということを意味しています。例えばデータの管理上上記のデータの「氏名」を「姓」−「名」、住所を「都道府県」−「市区町村」−「番地」と階層的に管理したいときには次のように記述することができます。
|
<顧客情報> |
このように階層構造を含むデータを何階層でも自由に一文書の中で格納することが可能です。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文書の作成には次のようなルールがあります。
ルール1: XML文書であることを宣言する
ルール2: 文字コードを指定する
ルール3: XML文書には1つのルート要素が必要
ルール4: 全ての要素は正しい入れ子の構造をとる
ルール5: 全ての要素には終了タグが必要
ルール6: 指定した文字コードで保存する
ルール7: 属性値はダブルコーテーションでくくる
ルール8: 大文字、小文字を区別する
|
<?xml version="1.0" encoding="Shift_JIS"?> ←ルール1
・ ルール2 |
ルール1: 前項で紹介したように <?xml
の部分がXML文書の宣言になります。
ルール2: 同じく前項で説明したように encoding= で文字コードを指定しています。
ルール3: <受注内容>、</受注内容>のように一番外側に1回だけ現れるタグがルート要素になります。
ルール4: <受注明細>の中に含まれる<商品番号>〜<価格>は正しい入れ子の構造になっています。
ルール5: 全てのタグは <顧客番号>・・・</顧客番号>のようにペアの構造を持っています。
ルール6〜8についてはこの例では特に明記しておりませんが、今後意識する必要が出てきますので心に留めておいてください。