このページの本文へ

DOMってなに?

2001年04月20日 00時00分更新

文● インフォテリア 川添貴生

  • この記事をはてなブックマークに追加
  • 本文印刷

前々回、XML Schemaのことを解説した際に、XMLパーサと呼ばれるソフトウェアについて簡単に触れた。そこではXML文書を検証するための存在としてXMLパーサを解説したが、今回はそれ以外の役割りについて解説してみたい。

DOMという規格の意味

XMLパーサが持つ役割りの中で、XML文書の検証と並んで重要なのが、ソフトウェアがXML文書へとアクセスするための手段の提供である。たとえば、XML文書の読み取り、あるいは読み取ったものに対して何らかの変更を加えるといったことを可能にする機能だ。

こうした機能はXMLパーサが個々で独自に実装しているよりも、共通の形で実装されているほうがユーザーとしては望ましい。XMLパーサごとに独自に実装されていると、そのパーサとそれを利用してXML文書へアクセスしているプログラムの依存関係は強くなる。つまりXMLパーサを切り替えた場合、そのソフトウェアも多くの変更が必要となってしまうわけだ。それに加えて、XML文書へアクセスするための方法をXMLパーサを切り替えるたびに1から習得しなければならないという問題も無視できない。

W3Cで勧告されている「DOM(Document Object Model)」という仕様は、こうした問題を解決するためのものだ。DOMはXML文書へアクセスするための標準的な方法を定義したもので、XMLパーサがDOMに対応していれば、開発者はどのパーサを使っても(ほぼ)同じ方法でXML文書へとアクセスするためのコードを記述できる。多くのXMLパーサはこのDOMの仕様に準拠しており、標準として広く普及している。

なおDOMは「DOM Level 1」と「DOM Level 2」が現在勧告として公開されている。DOM Level 1は1998年10月に勧告となったもので、それから約2年を経た2000年11月にDOM Level 2が勧告された。Level 1から2になったことで多くの機能が追加されており、CSSの構文を扱えるようになるなど大きな機能強化も見られるが、地味ながら注目したいのがネームスペースが正式にサポートされたという部分だ。それまでのXMLパーサはネームスペースのサポートに対して、独自に実装してサポートする、あるいはサポートしないなど足並みはバラバラだった。しかしDOM Level 2の登場によって標準的な方法でサポートすることが可能になったのである。

メモリ消費量が少ないSAX

こうして広く普及しているDOMだが、まったく欠点がないわけではない。中でもよく指摘されるのが、メモリ環境への厳しさだ。DOMはXMLを読み込むと、それを木(ツリー)構造としてメモリ上に展開し、ソフトウェアはこの木構造に対してアクセスするという形になる。つまりDOMを使用する限り、XMLはメモリ上にすべて置かれることになり、特に大きなXMLを扱おうとすると多くのメモリ領域を必要とする。こうしたDOMの不満を解消するために登場したのがSAXである。

SAX(Simple API for XML)の特徴は、イベント駆動型のパーサであるという点だ。イベントには要素の開始や終了、テキストの出現などがあり、XML文書の解析中にこれらのイベントが発生すると、逐一それがソフトウェアに通知される。ソフトウェア側では、それぞれのイベントに対して行なう処理を記述することになる。こうしてイベントを通知したあとの結果は保持されないため、解析している部分しかメモリを消費しない。そのため、巨大なXML文書でも少ないメモリで処理が行なえるわけだ。

このようにメモリ消費量という点ではSAXのほうが有利になる。逆にDOMは、最初に木構造に変換したあと、自由に木構造の中を行き来してアクセスできる(SAXはXMLの構造が複雑になると、プログラム自体も複雑になってしまう)のがメリット。ちなみに現在利用されているXMLパーサの多くはDOMとSAXの両方に対応しているので、開発するプログラムの特性とDOMとSAXの得手不得手を考えて、このいずれかを選択することになるだろう。

まとめ

XMLへアクセスするための方法がDOMやSAXといった形で標準化され、またそれをXMLパーサが対応したことによるメリットは大きい。ソフトウェアをXMLに対応させる際にこれらのXMLパーサを部品として組み込めば、簡単な方法でXMLから必要な情報の読み取りや更新が可能になり、その方法は別のソフトウェアでも利用できる。これによって、XMLに対応させるために必要となる労力を大きく削減できるのだ。今後多くのソフトウェアがXMLを利用すれば、XMLパーサの重要性がさらに増していくのは間違いない。

カテゴリートップへ

アスキー・ビジネスセレクション

ASCII.jp ビジネスヘッドライン

ピックアップ