ここまでの準備が整ったら、あとはVB Scriptで変換のためのロジックを実装すれば、すべては完了です。
では、以下のような流れで変換ロジックを記述します。
早速、VB Scriptのコードを記述していくことにしましょう。
'利用する変数をあらかじめ用意し、DOMDocumentオブジェクトの
'XSLTを利用したコードも同様にあらかじめDOMDocumentオブジェクトを利用して '以下のresult,result2というオブジェクトは、変換した結果を格納するための
'変換対象は異なりますが、同様の処理を繰り返しています |
リスト6 変換を実装したコード(SampleX.vbs) ※ コードを単純化するために変数の宣言やインスタンスの解放は行っていません。 |
基本的なコードの流れは、いままでのとおりです。
実際に変換の作業を行っていくには、2つのメソッドが用意されています。ここでは、ファイルとして保存することを前提にしていますので「transformNodeToObject」というメソッドを利用しています。これによって、変換された結果をDOMのドキュメントとしてメモリ上にロードしておくことが可能です。もし、単純に文字列として結果を表示するだけであれば、「transformNode」というメソッドを用いることで変換した結果を戻り値として受け取ることができます。
ここで、おのおののメソッドの利用方法を整理しておきます。
< transformNodeToObject メソッドの書式> |
||||
oXMLDOMNode.transformNodeToObject(stylesheet,
outputObject) |
||||
oXMLDOMNode |
… | 変換対象となるXML文書の格納された変数 |
||
stylesheet |
… | スタイルシートがロードされているDOMDocumentオブジェクト |
||
outputObject |
… | 出力結果を格納するDOMDocumentオブジェクト |
||
< transformNode メソッドの書式> |
||||
strValue = oXMLDOMNode.transformNode(objStylesheet) |
||||
strValue |
… | 戻り値を文字列として格納するため変数 |
||
oXMLDOMNode |
… | 変換対象となるXML文書の格納された変数 |
||
objStylesheet |
… | スタイルシートがロードされているDOMDocumentオブジェクト |
このサンプルアプリケーションでは、単純にファイル名を固定化し、読み込んでおくことで変換処理を実現していますが、実際のソリューションなどを考えると、この方法はファイルの固定化が前提となってしまうので、ベターですがベストではありません。この例はスクリプトを利用しているサンプルですので、拡張することを考えると、実行時のパラメータとしてXSLファイルを渡すことで動的な変換を行うような方法がよいでしょう。また、通常のVisual BasicやScripting Component(*1)などを用いてCOMコンポーネントとして生成しておくのであれば、プロパティやメソッドの引数としてファイル名を取得するようにすれば、柔軟性を得ることができるでしょう。
ともあれ、XSLTを利用したドキュメントの変換は単にいろいろな形式に変換することができるというだけではなく、これまで説明してきたようにXMLの持つ柔軟性を最大限に発揮するための重要な機能であると位置付けることができます。
スクリプト自身をコンポーネントとして扱う方法。拡張子.wscとして必要なシンタックスを追加すると、コンポーネントと同じように扱うことができます。
今回は、XSLTによるデータ変換に焦点を絞って解説をしてまいりました。XML文書を使用して得られるメリットには、さまざまなものがあります。ぜひ最大限に得られるように、いろいろな工夫をアプリケーションの中に取り入れていっていただければ幸いです。
次回は、今回紹介したドキュメント変換を応用した形で、ユーザーインターフェイスの生成を考えていくことにしましょう。XML文書を単純に表示させると、ツリーしか表示されません。しかし、今回紹介したテクノロジを応用することで、ユーザーインターフェイスを生成し、見た目のよいページを構成することができます。もちろん、XMLの特性を残したままに。
では、どのように実装していったらいいのか。次回をお楽しみに。
Copyright © ITmedia, Inc. All Rights Reserved.