WWW INFOMATION
XML top >>XSLT

XSLT

 XML文章を別形式に変換する手法であるXSLTは、利用範囲が広く重要なXML関連仕様となっています。本章では、InternetExploreを使用して、XMLをHTMLファイルに変換することによりXSLTを学びます。(HTML、ある程度のプログラミング知識、IEが必要となります。)

 以下にXSLTについて説明します。
XSLT概要
XSLT要素
補足

 XSLT概要

 XMLに対して、表示方法を設定したり、別の形式のフォーマットに変換するための仕様としてXSL(Extensible Stylesheet Language)があります。この仕様は、XMLの表示を設定するXSL-FO(XSL Formatting Object)とXMLファイルを別の形式に変換するXSLT(XSL Transfomation)から構成されています。

 本ページでは、XMLからHTMLへの変換に使用されることが多いXSLTについて説明します。

 上記で説明した通り、XSLはXMLを別形式に変換します。別形式に変換する際には、XSLファイルという変換方法を記述したファイルを使用します。


 XSLT要素

 XSLT変換を行うプログラム(XSLプロセッサ)は、変換を定義したXSLファイルを読み込みその定義に従ってXMLファイルを別形式に変換します。

 InternetExploreは、XSLプロセッサを内臓していますので、XMLファイル内に以下の命令があった場合、XSLTファイルを読み込み指定された形式に変換し、表示します。

<?xml-stylesheet type="text/xsl" href="XXXXX.xsl" ?>


<?xml-stylesheet type = "stylesheetの形式" href = "XSLファイルのURI" ?>


 XSLファイルは、XMLファイルですので[XML宣言]と[XMLインスタンス]からなります。

 例えば、以下のようなXMLファイルとXSLファイルがあったとします。

・XMLファイル

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="sample.xsl">

<members>

  <member>
    <name num="01">ななしのごんべい</name>
    <addr tel="03-xxxx-xxxxx">東京都江戸川区</addr>
  </member>

  <member>
    <name num="02">ななしの太郎</name>
    <addr tel="045-xxxx-xxxxx">神奈川県川崎市</addr>
  </member>

  <member>
    <name num="03">亀陀 亀増</name>
    <addr>鳥取県XXXX</addr>
  </member>


</members>

・XSLファイル(sample.xsl)

<?xml version="1.0" ?>

<!-- 
 以下の名前空間xslがXSLTの命令を意味する。URLは固定なので注意。
-->

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/tR/WD-xsl">
<xsl:template match="/">


<!-- 名前空間xslに属しない要素はそのまま出力される。 -->
  <html>
    <head>
    <title>Sample</title>
    </head>

    <body>


<!-- 名前空間xslに属する要素は命令として処理される。 -->

  <xsl:for-each select="members/member">

    <hr/>
    <table border="1" align="center" width="250">

      <tr>
        <td>会員番号</td>
        <td> <xsl:value-of select="./name/@num"/> </td>
      </tr>
      <tr>
        <td>名前</td>
        <td><xsl:value-of select="./name"/></td>
      </tr>

    </table>
    <br/>


  </xsl:for-each>

  <hr/>

</body>

</html>


</xsl:template>

<!-- 
xsl名前空間が有効であるここまでが XSLTの命令を書ける。
-->

</xsl:stylesheet>

 このファイルを表示するとこのようになります。

 箇条書きにXSLファイルのポイントを書いておきます。
  • XSLファイル内のURL”http://www.w3.org/tR/WD-xsl”で表される名前空間に属する要素がXSTの命令となる。
  • 名前空間のプリフィックスは、xslが使用されることが多いが何でも良い。
  • HTMLに変換する場合、XSLT用のタグ以外もXMLの仕様に従っている必要がある。例えば、HTMLの改行は<br>だが、これはXMLの仕様では誤りであるため、XMLで記述する場合は<br/>と記述する。
 以下、XSLT要素の主要な命令について説明します。(予備知識がない場合、順に読んでいって下さい。)
 説明中に出てくるXSL例文は、以下のXMLを使用しているものとします。

<?xml version="1.0" ?>
<?xml-stylesheet type="text/xsl" href="sample.xsl">

<members>

  <member>
    <name num="01">ななしのごんべい</name>
    <addr tel="03-xxxx-xxxxx">東京都江戸川区</addr>
  </member>

  <member>
    <name num="02">ななしの太郎</name>
    <addr tel="045-xxxx-xxxxx">神奈川県川崎市</addr>
  </member>

  <member>
    <name num="03">亀陀 亀増</name>
    <addr>鳥取県XXXX</addr>
  </member>


</members>


stylesheet ルート要素について。
template 処理する要素の指定と処理。
apply-template 処理するtemplateの指定。
組み込みtemplates templateが指定されなかった場合の動作について
value-of 要素の値の出力
for-each 繰り返し
if 条件判定
variable 変数
choose 複数項目の条件判定
sort ソート

 補足

 上記に、XSLTの要素の使用例を複数示していますが、XSLTの要素はこれだけではありません。要素を生成するなど生成系の要素、外部ファイルを読み込むための要素、XML文書をコピーする要素など他にもあります。

 また、本稿では、出力はテキストで行っていますが、HTMLやXMLでの出力も可能です。

 いずれ本文中に追記しますが、これらのことにご注意下さい。

戻る   進む