IISで、XML文書をHTMLに変換して送信する方法
サーバ内にあるXML文書を、HTMLに変換したうえでIISで送信したいのですが、どうすればできるのか分かりません。方法を教えてください。

回答/富士ソフトABC株式会社 技術センター
2001/9/14

 IISを利用してXML文書をHTMLに変換するには、ASP(Active Server Pages)でサーバサイドスクリプトを作成して処理します。具体的には、まずスタイルシートを作成し、それをASPによってXML文書に対して適用して、XML文書をHTML文書へ変換、それをResponse.Write命令で出力する、という手順になります。

 この処理を図解すると下図のようになります。ASPスクリプト中でDOMの機能が使われている場合、XMLパーサを呼び出してDOMの処理を実行します。XMLパーサは、XML文書ファイルとスタイルシートを読み込んで適用し、HTMLに変換します。XMLパーサから返ってきた結果とASPスクリプトの実行結果を組み合わせて、1つのHTML文書としてWebブラウザに送信します。

ASPによるXMLデータのHTML化の流れ

 簡単なサンプルを作成して、スクリプトの記述を解説します。HTML化するXML文書は、「個人情報」をXMLで表したものです。含まれている情報は、「氏名」「生年月日」「特技」の3つです。まず、この情報を表組みにしてWebブラウザに表示するASPスクリプトとスタイルシートを記述します。

 XML文書の内容は以下のようになります(Person.xml)。XML文書のルート要素は「名簿」とし、各個人の情報は「プロフィール」要素で表します。

<名簿>
  <プロフィール>
    <氏名>富士 太郎</氏名>
    <生年月日>1965.4.1</生年月日>
    <特技>プログラミング</特技>
  </プロフィール>


</名簿>

 表組みのための記述を含むスタイルシートは、以下のようになります(Person.xsl)。

<table align="center" border="2" >

  <tr> ……(1)
    <th>氏名</th>
    <th>生年月日</th>
    <th>特技</th>
  </tr>

  <xsl:for-each select="名簿/プロフィール"> ……(2)

  <tr> ……(3)
    <td><xsl:value-of select="氏名"/></td> ……(4)
    <td><xsl:value-of select="生年月日"/></td>
    <td><xsl:value-of select="特技"/></td>
  </tr>

  </xsl:for-each>

</table>

 (1)で始まる部分では、HTMLで表組みしたときの項目の見出しを作成しています。続いて(2)の部分では、<xsl:for-each>を使って、「プロフィール」要素がある間、表データを作成し、(3)で始まる部分で、実際に表データの作成を始めます。

 (4)の部分で、<xsl:value-of>を使って、「氏名」要素で定義されているデータを取り出します。以下「生年月日」「特技」も同様に行います。

 最後にASPのサーバサイドスクリプトを示します(Person.asp)。

<%@ Language="JScript" %> ……(1)

<html>
  <!-- ヘッダ -->
  <head>
    <!-- ページタイトル -->
    <title>個人情報</title>
  </head>
  <!-- ボディ -->
  <body>
    <!-- ページヘッダ -->
    <p align="center">[ 個人情報 ]</p>

    <!-- 個人情報を表示するスクリプト --> ……(2)
    <%

    var objXML=Server.CreateObject("Microsoft.XMLDOM"); ……(3)
    objXML.async=false; ……(4)
    objXML.load(Server.MapPath("Person.xml")); ……(5)

    // XSL ファイルの読み込みオブジェクトを作成
    var objXSL=Server.CreateObject("Microsoft.XMLDOM"); ……(6)
    objXSL.async=false; ……(7)
    objXSL.load(Server.MapPath("Person.xsl")); ……(8)

    Response.Write(objXML.transformNode(objXSL)); ……(9)
    %>

  </body>
</html>

 まず最初に、このスクリプトで使用する言語を指定します(1)。ここでは「JScript」を使用します。実際に処理が始まるのは(2)からで、DOMを使ってXML文書とスタイルシートを読み込んで適用します。読み込んでいるのは(3)からで、まずはXML文書を読み込むためのオブジェクトを作成し、(4)では、処理を同期モードで行うためのフラグを設定します。

 (5)でXML文書の読み込みを開始し、(6)でスタイルシートを読み込むためのオブジェクトを作成、(7)で同期モードのためのフラグを設定し、(8)でスタイルシートを読み込み、(9)でスタイルシートを適用し、出力までを行っています。

 以上のファイルを作成し、実行すると下記のように表示されます。

XMLデータをASPのサーバサイドスクリプトを使ってHTML化した結果

 

「Ask XML Expert」


XML & SOA フォーラム 新着記事
@ITメールマガジン 新着情報やスタッフのコラムがメールで届きます(無料)

注目のテーマ

HTML5+UX 記事ランキング

本日月間