最近、データ形式として、XMLという言葉をよく耳にします。 そこで、XMLとは何か、なぜXMLなのかといった、XMLの基礎的な話から、Linuxを使って、XMLを扱う環境について、簡単な紹介を行います。
XMLとは、拡張可能なマーク付け言語(eXtensible Markup Language)のことです。 マーク付け言語とは、テキストの内容を区別するために、タグと呼ぶ記号を付加して表す言語のことです。 XMLでは、タグは "<" と ">" で囲んで表します。
<タグ名> 内容 </タグ名> |
HTMLでは固定のタグしか利用できませんでしたが、XMLでは、独自のタグを利用できるようになります。 そのため、論理的なタグを付けることができるため、ドキュメントがわかりやすくなります。 以下に、XML形式と、HTML形式と、CSV形式の比較した例を示します。
XML形式 | HTML形式 | CSV形式 |
---|---|---|
<成績表> <名前>金沢 太郎</名前> <国語>67</国語> <算数>70</算数> <理科>95</理科> <社会>87</社会> </成績表> |
<TABLE> <TD>金沢 太郎</TD> <TD>67</TD> <TD>70</TD> <TD>95</TD> <TD>87</TD> </TABLE> |
金沢 太郎, 67, 70, 95, 87 |
HTMLでは、タグはドキュメントの物理的な表現方法を表しているため、データの意味はわかりません。
これに対して、XMLでは、タグが論理的な内容を表しているため、データの意味も表わすことができます。
また、表計算などの標準的なデータ形式として、CSV形式があります。
CSVとは、Conma Separated Valueの略で、"," で区切られたデータ形式です。
CSVでは、データサイズが小さくなるというメリットはありますが、データの意味はわかりませんし、階層的なデータも表すことができません。
さらに、データの順序が重要となってきますので、データの順序が変わると、データの互換性が保てなくなるという問題もあります。
XMLには、以下の特徴があります。
DTDとは、Document Type Definitionの略で、文書の型定義のことです。
XML文書で利用可能な要素の型と、親要素に含まれる子要素のリストを定義します。
また、属性を持っている要素は、その属性についても定義します。
DTDを持たないXML文書は、整形式(Well-Formed)XML文書と呼びます。
整形式XML文書は、チェックをしないため、表示が速いという特徴があり、インターネットで使うのに適しています。
ただし、ルート・エレメントが1つある階層構造であることや、タグが重ならないなどの条件を満たしている必要があります。
これに対して、DTDを持つXML文書は、検証済(Valid)XML文書と呼びます。
検証済XML文書は、データのチェックができるので、正確なXML文書を作成する場合に適しています。
XMLのスタイルシートは、XSL(eXtensible Style Language)とも呼ばれ、XMLデータの表現方法を定義するための言語です。
XMLデータに対して、スタイルシートを指定することで、整形して表示することができます。
XMLでは、HTML4.0+CSSと同様、XML+XSLとして、文書の内容と表現(書式)は分離して管理できます。
スタイルシートを使うことにより、文書を記述するときに、表現方法を考えなくてよくなります。
また、スタイルシートの切り替えにより帳票と単票の表示を切り替える
XML上でスクリプトを使う時の標準化の方法として、W3Cによって検討されているDOMがあります。
DOMは、Document Object Modelの略で、XML文書の内容や構造に対して、スクリプトやプログラムを使って動的にアクセスすることを可能にするための規格です。
DOMでは、プラットフォームや言語に依存しない中立的なアプリケーションインターフェイス(API)を提供します。
DOMを使うことにより、クライアント側でデータに対する処理ができるため、サーバとのやりとりが少なくなるため、操作性の良いシステムが構築できます。
さらに、サーバの負荷も減らすことができます。
各種業界毎の企業間でデータ交換を行う際に、標準のデータ形式が必要となってきます。
XMLは、タグの拡張性から、この業界標準データ形式を定義するのに有効な技術として注目されています。
以下に、XMLを使った標準データ形式仕様の例を示します。
仕様 | 用途 | URL | 管理団体 |
---|---|---|---|
MathML (Mathematical Markup Language) |
数式 | http://www.w3.org/Math/ | W3C |
SMIL 1.0 (Synchronized Multimedia Integration Language) |
マルチメディア情報 | http://www.w3.org/TR/REC-smil/ (日本語訳) |
W3C |
P3P (The Platform for Privacy Preferences) |
個人情報 | http://www.w3.org/TR/P3P/ | W3C |
SVG (Scalable Vector Graphics) |
ベクトル情報 | http://www.w3.org/Graphics/SVG/ | W3C |
RDF (Resource Description Framework) |
メタデータの定義 | http://www.w3.org/RDF/ | W3C |
IOTP (Internet Open Trading Protocol) |
電子商取引 |
http://www.ietf.org/internet-drafts/ draft-ietf-trade-iotp-v1.0-protocol-07.txt |
IETF |
MML (Medical Markup Language) |
電子カルテ | http://www.seagaia.org/mml221/ | 日本医療情報学会 |
JepaX | 電子出版 | http://x.jepa.or.jp/ks/dish/jepax/spec/ | 日本電子出版協会 |
CML (Chemical Markup Language) |
化学式 | http://www.xml-cml.org/ | |
CDF (Channel Definition Format) |
チャンネル定義 |
http://msdn.microsoft.com/workshop/ delivery/cdf/reference/CDF.asp |
Microsoft社 |
2000年4月現在、XMLデータを扱えるブラウザは、IE5.0ぐらいしかありません。
しかし、データ管理をXMLにすることには、非常に価値があります。
そこで、Webサーバ側で、XMLデータをHTMLデータに変換して表示する方法について説明します。
この方法だと、どのようなブラウザでも、XMLデータを表示することができるようになります。
ここでは、Cocoonというプログラムを使って実現しています。
Cocoonとは、Apache Projectから提供されている、XMLファイルをHTMLに変換するサーブレットです。
ブラウザから、*.xmlファイルに対してリクエストがあると、Cocoonは、XMLからHTMLに変換します。
従って、Netscape NavigatorやLynxなどのXMLに対応していないブラウザでも、XMLデータを参照することができます。
Cocoonには、Xerces(ザーシス)というXMLパーサと、Xalan(ザラン)というXSLレンダラ(XSLT)が組み込まれています。
XMLパーサは、XMLデータ(*.xml)を解析してメモリに展開し、XSLTが、スタイルシート(*.xsl)を参照してHTMLに変換します。
XSLスタイルシート ↓ XMLデータ → XMLパーサ(Xalan) → XSLレンダラ/XSLT(Xerces) → HTMLデータ |
XMLを扱うシステムの場合は、Unicodeが基本であることもあって、このように、Javaを使ったシステムが多く見られます。 Linux上でも、このような、Javaサーブレットが動作する環境構築は可能です。
XMLは、コンピュータ間のデータ交換方法として急速に普及しています。
XMLは、その拡張性から、各種データの業界標準としての地位も築きつつあります。
そこで、Linux上のデータベースのデータを、XMLデータに変換するシステムを作成してみました。
データベースへのアクセスは、SQLを使って、XMLデータに変換しています。
XMLに変換することで、クライアントでXSLスタイルシートを切り替えたり、いろいろな処理ができるようになります。
SQL → データベース(PostgreSQL) → XMLデータ |
XMLデータはタグが付くため、データ量は増えますし、検索なども遅くなります。
ですから、データの内部保存形式としては、適していませんので、このようなデータベースとXML間の変換システムは、必要となってくると思われます。
たとえば、Oracleでは、XSQLという言語を使って、簡単にXMLデータに変換することができます。
現在は、SQL言語によるデータベースの検索、登録が主流ですが、将来的には、XSLによる、データベースの検索や、XMLデータによるデータベースの登録などができる、データベースは出てくると思います。
PostgreSQLとは、SQLでアクセスが可能な、フリーのデータベースです。
PHPとは、サーバ上でスクリプトを動作させるための、Apacheのモジュールです。 PHPは、CGIのようにスクリプトを動作させたり、SSIのようにHTML内に埋め込んだスクリプトを動作させたりできます。
今回のセミナーの詳細や、具体的なインストール方法や環境設定方法などは、ASHのホームページで紹介しています。
また、LUGHでは、今後もこのようなセミナーを北陸で開催することを企画しています。
参加希望の方は、LUGHメーリングリストに御参加ください。
ASHホームページ | http://ash.jp/ |
---|---|
LUGHホームページ | http://www.sfdata.ne.jp/LUGH/ |
LUGHメーリングリスト | LUGH@sfdata.ne.jp |