XSLT - サーバーサイド


すべてのブラウザが XSLT をサポートしているわけではないため、別の解決策としてサーバー上で XML から XHTML への変換を行います。


クロスブラウザソリューション

前の章では、ブラウザで XSLT を使用して XML から XHTML への変換を行う方法について説明しました。XML パーサーを使用して変換を行う JavaScript を作成しました。JavaScript による解決策は、XML パーサーを持たないブラウザでは機能しません。

XML データをあらゆる種類のブラウザで利用できるようにするには、サーバー上で XML ドキュメントを変換し、それを XHMTL としてブラウザに送信する必要があります。

これが XSLT のもう一つの利点です。XSLT の設計目標の一つは、サーバー上でデータをある形式から別の形式に変換することを可能にし、あらゆる種類のブラウザに読み取り可能なデータを返すことです。


XML ファイルと XSLT ファイル

前の章で紹介したこの XML ドキュメントを見てください:

<?xml version="1.0" encoding="UTF-8"?>
<catalog>
  <cd>
    <title>Empire Burlesque</title>
    <artist>Bob Dylan</artist>
    <country>USA</country>
    <company>Columbia</company>
    <price>10.90</price>
    <year>1985</year>
  </cd>
.
.
</catalog>

。

および付属の XSL スタイルシート:

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
  <h2>My CD Collection</h2>
  <table border="1">
    <tr bgcolor="#9ACD32">
      <th style="text-align:left">Title</th>
      <th style="text-align:left">Artist</th>
    </tr>
    <xsl:for-each select="catalog/cd">
    <tr>
      <td><xsl:value-of select="title" /></td>
      <td><xsl:value-of select="artist" /></td>
    </tr>
    </xsl:for-each>
  </table>
</xsl:template>

</xsl:stylesheet>

。

この XML ファイルには XSL ファイルへの参照が含まれていないことに注意してください。

重要な注意点:上記のことは、XML ファイルが複数の異なる XSL スタイルシートを使用して変換できることを意味します。


サーバー上で XML を XHTML に変換する

サーバー上で XML ファイルを XHTML に変換するためのソースコードは次のとおりです:

PHP コードを使用した変換:

<?php
// 载入 XML 文件
$xml = new DOMDocument;
$xml->load('cdcatalog.xml');

// 载入 XSL 文件
$xsl = new DOMDocument;
$xsl->load('cdcatalog.xsl');

// 设置转换
$proc = new XSLTProcessor;

// 添加 xsl 规则
$proc->importStyleSheet($xsl);

echo $proc->transformToXML($xml);
?>

ヒント:PHP の書き方がわからない場合は、次の内容を学習できます:PHP チュートリアル。

ASP コードを使用した変換:

<%
'载入 XML 文件
set xml = Server.CreateObject("Microsoft.XMLDOM")
xml.async = false
xml.load(Server.MapPath("cdcatalog.xml"))

'载入 XSL 文件
set xsl = Server.CreateObject("Microsoft.XMLDOM")
xsl.async = false
xsl.load(Server.MapPath("cdcatalog.xsl"))

'转换文件
Response.Write(xml.transformNode(xsl))
%>

ヒント:ASP の書き方がわからない場合は、次の内容を学習できます:ASP チュートリアル。

最初のコードは、マイクロソフトの XML パーサー(XMLDOM)のインスタンスを作成し、XML ファイルをメモリに読み込みます。2 番目のコードは、パーサーの別のインスタンスを作成し、この XSL ファイルをメモリに読み込みます。最後のコード行は、XSL ドキュメントを使用して XML ドキュメントを変換し、結果を XHTML としてブラウザに送信します。素晴らしい!

。


他の拡張