矢沢 久雄
前回の講座では,XML文書の構造と,XML文書を記述するときの書式を説明しました。今回は,XML文書をアプリケーションからアクセスする方法を説明します。XML文書は,単なるデータ・ファイルです。HTMLのように,そのままでWebブラウザに表示して意味のあるものではありません。データ・ファイルの内容を解析して処理しなければなりません。そのために使われるのが「XMLパーサー」と「DOM」です。
●XMLパーサーの役割
XML文書は,テキスト・ファイルなのですから,皆さんがお得意のプログラミング言語でアプリケーションを作成し,自由に読み書きすることができます。例えば,Visual Basicを使うなら,OpenステートメントでXML文書を開き,Line Inputステートメントで1行ずつデータを読み出し,その内容を解析すればよいわけです。しかし,これはかなり面倒な作業になるはずです。
図1●妥当でないXML文書をInternet Explorer 5.xに読み込むとエラーが表示される |
IE5.xに装備されているXMLパーサーのバージョンは,MSXML2.5です。XMLパーサーは,Webブラウザとは独立したプログラムとなっているので,後から新しいバージョンのXMLパーサーに交換することもできます。最新のXMLパーサーは,MSXML3.0であり,マイクロソフトのWebページや雑誌に添付されたCD-ROMなどから無償で入手できます。もちろん,マイクロソフト以外のメーカーもXMLパーサーを開発しています(サンマイクロシステムズのJAXPやIBMのXercesなど)。
●DOMの役割
XMLパーサーの役割は,XML文書の妥当性を検証してくれることだけではありません。他のアプリケーションにXML文書の解析結果を渡すこともできます。そのために取り決められているAPI(Application Programming Interface:アプリケーションとのインタフェース)が,DOM(Document Object Model)です。XMLパーサーは,DOMを装備しています。DOMによって,プログラマは簡単な手順でXML文書にアクセスできるようになります。OpenステートメントやLine Inputステートメントなどを使う必要はありません。
図2●アプリケーションはDOMによってXML文書に簡単にアクセスできる |
DOMは,W3Cが正式に公開している唯一のAPIです。DOM以外にも,多くのXMLパーサーがサポートしているAPIとしてSAX(Simple API for XML)があります。SAXは,XML文書を読み込みながら逐次処理を行い,その結果をアプリケーションに渡すので,少ないメモリー容量の環境であっても大きなXML文書を処理できます。ただし,SAXはW3Cによって開発されたものではなく,XMLの研究者のメーリング・リストから生まれたAPIです。そこでこの講座では,DOMだけを取り上げることにします。
●Visual BasicでDOMを使う
マイクロソフトのXMLパーサーが提供するDOMは,ActiveX DLL(COMに準拠したソフトウエア・コンポーネント)となっています。したがって,オブジェクトのインスタンスを生成して,そのプロパティやメソッドを利用できるプログラミング言語であれば,DOMを使うことができます。ここでは,Visual Basicで作成されたアプリケーションからDOMを使う方法を説明しましょう。第1回で解説したように,XMLはインターネット専用というわけではありませんから,スタンドアロンのアプリケーションからDOMを使っても,まったく問題ありません。
あらかじめリスト2(MyFile6.xml)に示したXML文書を作成し,MyFile6.xmlというファイル名で任意のディレクトリ(ここでは,C:\ITPro)に保存しておいてください。MyFile6.xmlは整形式XML文書なので,DTDは省略しています。
図3●「Microsoft XML, v3.0」に参照設定する |
フォーム(Form1)の下の方に,テキストボックス(Text1)とコマンドボタン(Commnad1)を1つずつ貼り付けます。プロパティウインドウで,フォームのCaptionプロパティに「DOMのサンプルアプリケーション」と設定し,コマンドボタンのCaptionプロパティに「読み込み」と設定します。フォームのAutoRedrawプロパティは,Trueに設定してください。
コマンドボタンをダブルクリックし,表示されるコード・エディタにリスト3に示したコードを記述します。これは,テキストボックスで指定されたXML文書を読み出し,ルートのノード名,子ノード名,及び子ノードのコンテントをフォームに表示するものです。
図4●アプリケーションの実行結果 |
●VB ScriptでDOMを使う
Visual Basicには,HTMLファイルの中に直接プログラムを記述するVB Script(Visual Basic Scripting Edition)というエディションがあります。VB ScriptからDOMを使えば,XML文書の情報をWebページに挿入することができます。ここでは,簡単なサンプルを示しましょう。JavaScriptを使っても,同様のことができます。
Windowsのメモ帳などのテキスト・エディタを使って,リスト4(MyFile7.htm)に示したHTMLファイルを作成し,MyFile7.htmというファイル名で保存してください。これは,先ほど作成したVisual Basicアプリケーションと同じ機能をVB Scriptで記述したものです。CreateObject関数でインスタンスを作成していることに注意してください。
図5●HTMLファイルの表示結果 |
現実問題として,テキスト・エディタを使ってコツコツとXML文書を作成する必要がないのと同様に,エンドユーザーが,XMLパーサーやDOMを直接使ってプログラミングする必要などないでしょう。様々なアプリケーションや開発ツールが,たとえ内部的にXML文書を使っていたとしても,それをエンドユーザーに見せないように処理してくれるはずだからです。そういった意味で,XMLは,裏方の存在だと言えます。
しかし,例えば企業システムにおいては,サーバー・アプリケーション同士がXMLを使ってデータをやりとりすることもあるでしょう。その際にはXMLパーサーとDOMという“裏方”を知っておくことが重要です。
次回は,XML文書に書式情報(スタイルシート)を付加して,レイアウトされた文書としてWebブラウザに表示する方法を説明します。お楽しみに!