ObjectSquare

[XMLとオブジェクト指向]


XMLとオブジェクト指向

連載第2回

XMLドキュメントの(非オブジェクト指向)表示


はじめに

XMLとオブジェクト指向の関係を解きほぐそうとスタートしたはずの連載ですが、とある事情があって、XMLのWEBブラウザ表示に関する調査に時間が取られてしまいました。そこで、というわけではありませんが、連載開始早々、いきなりオブジェクト指向からは脱線です。ごめんなさい。

実は今まで表示部分に関しては、ほとんど調べる機会がなく、この記事を表示するために非常に基本的なXSLをテキトーに記述してきた程度でした。ところが、今回わけあって、表示に関して少し調べてみたところ、結構いろいろできるもんだと驚き、かつ楽しくもあったので、今回はこれについて書いてみようとなったわけです。まあ、表示を制御するためのJavaScriptなどもオブジェクト指向に関係なくはないということで、ご容赦ください。

今回も原稿はXML + XSLで記述しています。IE5.0でごらんの方はこちらでもどうぞ。前回前々回の原稿もXMLで参照可能です。

XMLの表示方法あれこれ

XMLをブラウザに表示させるというと、現状ではMicrosoftのIE5.0を使用するというのがもっとも現実的だと思います。すでにご覧になった方も多いと思いますが、特にスタイルを指定しない素の(?)XMLドキュメントを表示させるとXMLのツリー構造がエクスプローラーのツリービュー風に表示されます。とりあえず、XMLドキュメントをテキストエディタよりは見やすい形式で表示させたいということであれば、これだけでも価値がありそうです。

しかしながら、もっと見やすくフォーマットされた形で表示したいというのが通常の要求でしょう。そこで出てくる技術がCSS(Cascading Style Sheet)やXSL(XML Stylesheet Language)です。

CSSはすでにW3C勧告になっており、https://www.w3.org/TR/から仕様をダウンロードできます。また、すでに多数のホームページでもHTMLとともに使用されています(オージス総研のページでも多用されているようです)。基本的な使い方は、HTMLのタグに対してより詳細なスタイル情報を記述するというものですが、仕様書を見ると、HTMLへの適用例とともに、XMLへの適用例も記述されています。ただし、XMLドキュメントの要素を順番を入れ替えて表示するなどの凝った表示はできません。また、IE5.0では、タグ名に日本語を使用していると、うまく表示できないという問題もあるようです。

XSLは、まだW3CのWorking Draft段階で、今後仕様が変更される可能性があります。しかし、IE5.0はすでにXSLエンジンを搭載していて、これによってHTML化したドキュメントを表示することができます。ただし、IE5.0のリリース時期から仕様自体が変わっていることもあって、IE5.0では表示可能なXSLを、最近リリースされているXSLTエンジンで変換処理しても、期待通りの結果は得られないという問題があります(もちろん逆も同様です)。私たちの立場からすれば早く仕様が固まって、IE用のXSLなどと意識しないですむようになってもらいたいものですが、最近聞いた話では、W3Cも人手不足だそうで、XSLが勧告になるのはまだ時間がかかるだろうということでした。

ところで、XSLは単にスタイルを指定するだけではなく、XMLドキュメントの変換にも使える観点から、XSLT(XML Transformations)という仕様もWorking Draftになっています。これによって、XMLをブラウザに渡すだけではなく、他のプログラムとのやりとりも容易になります。たとえば異なるDTDを処理する2つのシステムがあったとしても、それを相互に変換するXSLを記述すればよいということです。あらかじめDTDを共通化する必要がなくなりますから、企業間などでの緩い連携が可能になり、ますますXMLの適用範囲が広がることになるでしょう。

HTMLの裏でXMLも?

ところで、IE5.0の機能で面白いのが、XMLデータアイランド (XML Data Islands) という機能です。これはHTMLファイルの中にXMLタグでくくった範囲にXMLドキュメントを埋め込んでしまう、あるいは外部XMLファイルを指定することができるというものです。ブラウザに表示されるのはHTML部分だけですが、その裏で同時にXMLのデータを別プログラムに渡したりということができるようになります。

TABLEなどのタグにはXMLドキュメントを指定するためのDATASRC属性、XMLドキュメントの中の要素を指定するためのDATAFLD属性などが拡張されており、XMLデータアイランド中のデータを読み込んで、表示に加えることもできます。

これによる表示はCSSやXSLを使用するよりも簡単なので、IE5.0でしか使えないという限定はあるものの、HTMLからデータ部分だけを分離して管理したいという要求には、ある程度応えられそうです。注意しなければならないのは、XMLドキュメントの構造が定型的かつシンプルなものでなければ表示には利用できないということです。

スクリプトで表示を制御する

さて、XMLをブラウザで処理する場合のもうひとつの利点は、様々な処理をクライアント側で行えるということです。HTML+JavaScriptでも、ある程度のことはできますが、データをいろいろと操作できるというのはXMLならではでしょう。

クライアントに渡したXMLドキュメントの構造を処理して、ブラウザに表示させるには、JavaScriptを使うのが容易だと思います。IE5.0ではJavaScriptのdocumentオブジェクトが拡張され、ここからXMLドキュメント (DOMツリー) へアクセスできるようになっています。DOMツリーのノード位置情報や、要素や属性の値を指定して、その条件にあうノードだけで、DOMツリーを再構成すれば、容易に検索機能やソート機能、フィルタ機能が実現できます。

同様にXMLに適用するXSLもJavaScriptを使用して動的に変更できますから、単一のデータを様々な形式で表示することも容易です。

ここで紹介したのはクライアント側のブラウザでJavaScriptを用いるものでした。この他、サーバー側の技術、たとえばJavaServerPagesなどを使って表示を制御したり、XSLTを搭載したWWWサーバーを使用して、IE5.0以外のブラウザからも利用可能な環境を作るということも、より大規模なWWWベースシステム構築では考えていかなければならないでしょう。

最後に、次回予告

冒頭にも書きましたが、オブジェクト指向と無縁の話になってしまいました。なんとか次号からは改心しようと思っています。

XMLの表示に関しては、MicrosoftのXMLページ( https://msdn.microsoft.com/xml )などに非常に詳しく掲載されています。今回の記事のIE5.0での表示に関しても、詳細はこちらを参照いただきたいと思います。 (英語ですが、、、) 

おば

© 1999 OGIS-RI Co., Ltd.

Prev.

Index

Next