実践XSLT 「DOMの使い方」
第3回:複数のXML文書を処理するには?
(株)日本ユニテック
青木 秀起
1.イントロダクション
先回までは、変換するXML文書が1つであることを前提に考えてきましたが、複数のXML文書を処理したい場合もあります。たとえば、ニュースリリース・データを一つのファイルにまとめてしまうと巨大なファイルになってしまうため、1つのニュースごとに1個のXMLファイルを作って格納してゆくケースが考えられます。今回は、弊社のXML関連ニュース・ライブラリの一部を例に、複数のXML文書をXSLT+DOMで処理するケースを考えてみましょう。同時に、XSLT+DOMを組み合わせて使うことのメリットも解説いたします。
2.複数のXML文書を処理するイメージ
今回も、サンプル・ファイルを使って考えてゆきましょう。まず、下のボタンをクリックして、HTMLファイルを開いてみてください。(サンプルファイルはIE5.0以上で表示してください)
10個あるXMLファイルのルート要素は<news>で、その子要素として<category>、<headline>、<text>、<link>の4要素が存在します。全ファイルの要素(ヘッドライン)を抽出してHTMLファイル上に表示し、ユーザが選択したヘッドラインに該当するXML文書をXSLファイルで変換してHTMLとして表示しています。この処理のファイル構成とコーディングは以下のようになっています。
図1.サンプル・ファイルのファイル構成
図2.HTMLファイルのコーディング
このサンプルのXMLファイルには、"xmlnews"の後に番号を続けたファイル名を付けていて、これをキーに検索しています。このように複数のXML文書を処理するためには、XMLファイルのファイル名に規則性のある連番を付けたり、IDをふっておくと便利でしょう。なお、今回新しく使ったDOMメソッドは以下のものです。
DOMメソッド getElementsByTagName
子孫の要素ノードの中から、指定されたタグ名を持つすべての要素を文書順に並べたノード・リストを返す |
3.XSLT+DOMを使用するメリット
今回使用したサンプル・ファイルは、以下のような他の方法で処理することもできます。
①XSLファイルを使用せず、HTMLファイル中のスクリプトとDOMだけでデータを抽出・表示する。
②XML文書の内容が少ない場合には、複数のXML文書を1ファイルにまとめてHTMLファイルに読み込む。
①の方法で表現するには、getElementsByTagNameメソッドやselectNodesメソッドなどを駆使してデータを抽出し、HTML化して表示します。しかし、XML文書のデータ構造に変更が加わった場合、HTMLファイルのスクリプトやDOMのコーディング自体を書き直す必要があります。スクリプトの部分をできるだけ簡単にしておき、XSLファイルで変換するようにしておくと、変更・更新されてもXSLファイルを変更したり切り替えたりするだけで済むのです。これが、XSLTを使用する利点と言えるでしょう。XSLTは変更・更新に柔軟に対応できるのです。
XSLTのメリット XSLTは変更・更新に柔軟に対応できる。 |
4.まとめ
今回は複数のXML文書を処理するケースを考えてみました。XML文書を扱うに当たり、XSLT、DOM、HTML、スクリプト(VBScriptやJavaScript)をどの部分でどれくらい使用したら良いのかがわからなくなってしまう場合もあります。そのような場合、何がなんでもHTML+スクリプト+DOMで書くというのではなく、それぞれのメリットを考慮して使い分けることが大切でしょう。更新の頻度、パフォーマンス、対話性などは考慮すべき要素となります。
サンプル・データをダウンロードすることができます。(このファイルはZIP形式で圧縮されています)
●NewsLineup.htm
●style.xsl
●xmlnews1.xml~xmlnews10.xml___<サンプル1>
>>次の記事「XSLT+DOMの将来」
関連サービス
IT技術およびIT製品の可用性調査・検証業務
関連キーワード: XML変換
関連キーワード: XSLT
|