【楽々デブドックを書こう!】XMLで開発ドキュメント
第4回:XMLの出力環境
著者:佐賀大学総合情報基盤センター 只木 進一
公開日:2008/02/27(水)
データの活用
XMLはJavaと親和性が強い。JavaでXML文書を扱う方法として、SAX(Simple API for XML)とDOM(Document Object Model)がある。SAX はXML文書を先頭から読み、その内容をイベントとしてプログラムを駆動する枠組みである。XML文書の妥当性チェックやXSLによる他の形式の文書への出力で使われる。例としては、ApacheプロジェクトのXercesのSaxCounterがある。
また、SAXを使えば複数のXML文書に対して、文書中の項目一覧や特定の条件に一致する項目の一覧などを作成することができる。データベースへ格納するSQL分を作るなどの作業に利用できよう。
一方のDOMはXML文書の木構造をメモリ上にすべて取り込む。取り込んだ後、木構造の根から要素をたぐって、編集などの操作ができる。最後に、木構造をXML文書としてファイルへ書き込むことも可能だ。
DOMでは、XML文書全体がクラスorg.w3c.dom.Documentのインスタンスとして、読み込まれる。タグに対応した要素はクラスorg.w3c.dom.Nodeのインスタンスとなっている。そう、XML文書全体がオブジェクト指向文書になっていて、それをオブジェクト指向プログラミング言語で扱っているだけなのだ。DOMを使うことで、専用エディタを作ることも可能である。また、データベースと連携して、項目入力を支援することもできる。
XMLとデータベースの連携、特にデータベースシステムが直接XML文書を扱うことは、XML登場の当初から期待されてきたことである。XMLとデータベースの連携には、2つの考え方が混ざっている。第1はXML文書そのものを本当にデータベース的に検索するというものである。タグに対応した要素を検索対象とする。
現実的ソリューションが提示されいるものは、第2のXMLとデータベースの連携である。こちらは、XML文書のデータから、スキーマを用いて選択的に要素の内容を選び、そのデータをSQLデータベースに格納するものである。検索では、ヒットしたら、元のXML文書を引っ張り出すというものだ。
知らないところで使われているXML文書
今回は、情報システムの仕様策定を例にとって、開発ドキュメントをXMLで書くということを論じてきた。最後に、文書作成という観点でXMLの状況を見ていこう。
実は、技術文書をXMLで書こうというプロジェクトは、XMLの当初から存在している。DocBook(http://www.oasis-open.org/docbook/)である。DocBookは一般的技術文書全体をカバーしようと、スキーマを定めている。従って、LaTeXでjarticle.clsを使って文書を書くのと同様である。多様な技術文書に対応できるため、自由度が大きい。仕様書のような場合には、Wordで書くのと同じで、自由すぎるだろう。
世の中では「オープンソフトウェア」という言葉が飛び交っている。公開された規格に則ったソフトウェアという意味である。規格が公開されているので、互換性が保証される。そうすることで、ソフトウェアの囲い込みを防ぎ、使いやすさや効率で競争を促進し、結果として質の向上をはかろうということである。
文書作成や表計算などのオフィス統合環境にも「オープンソフトウェア」の流れが押し寄せている。ODF(Open Document Format)である。少し大きな組織であれば、組織内のコンピュータOSが単一ではないケースが多い。少なくともOSのバージョンの幅がある。つまり、使っているオフィス統合環境が異なっており、同じであってもバージョンの異なるものが混じってしまう。そのような状況の中で、文書を交換しなければならないのである。そこで、登場したのがOpenOfficeだ。OpenOfficeはODFに対応したオフィス環境である。
OpenOfficeは文書形式の仕様が公開されている。OpenOfficeで作成した文書ファイルは、拡張子がodtとなっている。fileコマンドでこのファイルタイプを見ると「ZIPアーカイブ」と表示されており、その実体はjarファイルであることがわかる。また、ファイルの中から文書本体に対応したXMLファイルが出てくる。となると、Javaから直接、触ることも難しくないということだ。
また、Office 2003ではデータがバイナリ形式で、それに対応してApacheではMicrosoftの文書や表計算をJavaから触るプロジェクトがある。MicrosoftのOffice 2007はODFに対応ではないが、やはりXML形式を使っているようである。
さらに、ODFにしてもMicrosoft Officeにしても、Javaなどからデータを触るSDK(Software Development Kit)がある。現状をみていくとXML文書の最終の出力形式をODFやMicrosoft Officeの文書形式に出すことも可能であろう。
このように、身近なところにもXML形式のものがあり、知らず知らずのうちに浸透していくと考えられる。今後もXML形式の文書の広がりは注目していきたい。 タイトルへ戻る