« 今日は雨 | メイン | インテルのアンドリュー・S. グローヴ の本 »

2005年06月15日

[技術] XML&XSLT&Perl

【技術メモ】

HTMLでなくてXML形式で記述することの意義は、ワンソース、マルチユースということだ。つまり、一粒で何度でも美味しい思いをするためだ。

また、作成したXMLファイルを処理するプログラムは、XML関連のライブラリが豊富な物を選択すれば、実際に記述するプログラムの量はすくなくて済む。私はPerlを使っている。

まず、サンプルとして以下のXMLファイルを作成した。これは、山に登った時の山行記録で、南アルプス山脈の北岳(日本で二番目の標高)へ登った記録である。

北岳登山の記録(xml形式)

XML形式のままでも、ウェブブラウザで表示することは可能だが、人が見るにはすこし見ずらい。そこで、このXML形式をHTML形式に変換するプログラムをPerlでつくることにする。

変換プログラムはXMLファイルを読み込み、内部に保持して、XMLをHTMLに逐一変換していくわけだがこれを一から書いていくと相当なボリュームになり何日も掛かってしまう。

しかし、幸いにもPerlにはXMLファイルを読み込んでくれるLibXMLというモジュール(ライブラリ)がある。また、XMLの変換形式として、XSLTが定められていて、そのXSLTを解釈して変換実行してくれるLibXSLTというモジュール(ライブラリ)もある。

これらのモジュールを利用すると、XMLをHTMLに変換するPerlのプログラムは以下のように書けばできてしまう。

XMLをHTMLに変換するPerlプログラムのサンプル

では、次にXMLをHTMLに変換するXSLTファイルを用意する。ここでは、2種類のXSLTファイルをサンプルとして作成した。一つは実際に歩いた行程だけを抜き出してHTMLにするXSLT、もう一つは行程をテーブル表示した上で、ポイント(地点)ごとに記述したテキストも表示するHTMLに変換するXSLTだ。

1)行程だけのHTMLを作成するXSLT
2)記録内容を全て載せたHTMLを作成するXSLT

これらのXSLTファイルを使って、変換したHMTLはそれぞれ以下のようになる。

1)行程だけのHTML
2)内容全部のHTML

このようにしておけば、もとのXMLから必要な部分だけを使って、HTMLを作成でき、しかも、新しいHTMLが必要になったら、Perlのプログラムは一切変更しないで、XSLTを新規に書くだけでよいことになる。XSLT自身はある種のプログラムと呼べるなくもないが、Perlを覚えるよりは数段簡単だ。それにHTMLを知っている人なら、すぐにマスターできると思う。

今回はXML→HTMLまでだが、変換されたHTMLにCSSを適用することにより、表示上のデザインをHTMLを変更しないでかえることができる。つまり、データ(情報)と形式とデザインを分離して扱うことができ、開発の生産性を大幅に向上する。

XML(データ)  →   HTML(形式) →  表示(デザイン)
        {XSLT}         {CSS}


例)ひとつのデータ(XML)から、4つのページをつくる場合

kitadake.xml ---{r.xsl}--> kitadake_r.html ---{明るい感じのcss}--->明るい感じのページ
        |                  |
        |                  +--{シックな感じのcss}--->シックな感じのページ
        |
        +--{q.xsl}--> kitadake_q.html ---{明るい感じのcss}--->明るい感じのページ
                          |
                          +--{シックな感じのcss}--->シックな感じのページ

投稿者 nekobara : 2005年06月15日 11:59


トラックバック

このエントリーのトラックバックURL:
http://www.ishihara.ne.jp/mt/mt-tb.cgi/331

コメント