XSLT チュートリアルlogin
XSLT チュートリアル
著者:php.cn  更新時間:2022-04-20 15:02:22

XSLTクライアント



ブラウザが XSLT をサポートしている場合は、それを使用してブラウザ内でドキュメントを XHTML に変換できます。


JavaScript ソリューション

前の章では、XSLT を使用して XML ドキュメントを XHTML に変換する方法を説明しました。これを実現するには、XSL スタイルシートを XML ファイルに追加し、ブラウザを通じて変換を完了します。

このアプローチがうまく機能したとしても、XML ファイルにスタイルシート参照を含めることは必ずしも満足のいくものではありません (たとえば、このアプローチは XSLT を理解できないブラウザーでは機能しません)。

より一般的な方法は、JavaScript を使用して変換を完了することです。

JavaScript を使用すると、次のことが可能になります:

  • ブラウザ検証テストを実行する

  • ブラウザとユーザーのニーズに基づいて異なるスタイルシートを使用する

これが XSLT の利点です。 XSLT の設計目標の 1 つは、さまざまな種類のブラウザーやさまざまなユーザー ニーズをサポートしながら、データをある形式から別の形式に変換できるようにすることです。

クライアントサイドの XSLT 変換は、将来的にブラウザーによって実行される主要なタスクの 1 つになることは間違いなく、特定のブラウザー市場 (点字、聴覚ブラウザー、ネットワーク プリンター、ハンドヘルド デバイスなど) でもその成長が見られるでしょう。


XML ファイルと XSL ファイル

前の章で示したこの XML ドキュメントをご覧ください:

<?xml version="1.0"coding="ISO-8859-1"?>
< ;catalog> ;
​ <cd>
​​ <title>エンパイア バーレスク</title>
​​ <アーティスト>ボブ・ディラン</アーティスト>
​​ <国>アメリカ</国>
​​ <会社>コロンビア</会社>
​​ <価格>10.90
​​ <年>1985年
​ </cd>
.
.
</カタログ>

XML ファイルを参照してください。

および付属の XSL サンプル式表:

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

<xsl:template match="/">
   <html>
   <本体>
       <h2>私の CD コレクション</h2>
       <テーブルボーダー="1">
             <tr bgcolor="#9acd32">
                   <th align="left">タイトル</th>
                   <th align="left">アーティスト</th>
             </tr>
             <xsl:for-each select="カタログ/CD">
             <tr>
                   <td><xsl:value-of select="title" /></td>
                   <td><xsl:value-of select="アーティスト" /></td>
             </tr>
             </xsl:for-each>
   </表>
   </body>
   </html>
</xsl:template>

</xsl:stylesheet>

XSL ドキュメントを参照してください。

注意、この XML ドキュメントには XSL ドキュメントへの参照が含まれていません。

重要事項: 上のこれは、XML ファイルが変換を実行するために複数の異なる XSL サンプル式テーブルを使用できることを意味します。


ブラウザ内で XML を XHTML に変換します。转换 for XHTML 的资源代码:

实例

<html>
<head>
<script>
function loadXMLDoc(dname)
{
if (window.ActiveXObject)
  {
  xhttp=new ActiveXObject("Msxml2.XMLHTTP.3.0");
  }
else 
  {
  xhttp=new XMLHttpRequest();
  }
xhttp.open("GET",dname,false);
xhttp.send("");
return xhttp.responseXML;
}

function displayResult()
{
xml=loadXMLDoc("cdcatalog.xml");
xsl=loadXMLDoc("cdcatalog.xsl");
// code for IE
if (window.ActiveXObject)
  {
  ex=xml.transformNode(xsl);
  document.getElementById("example").innerHTML=ex;
  }
// code for Mozilla, Firefox, Opera, etc.
else if (document.implementation && document.implementation.createDocument)
  {
  xsltProcessor=new XSLTProcessor();
  xsltProcessor.importStylesheet(xsl);
  resultDocument = xsltProcessor.transformToFragment(xml,document);
  document.getElementById("example").appendChild(resultDocument);
  }
}
</script>
</head>
<body onload="displayResult()">
<div id="example"></div>
</body>
</html>

运行实例 »
点击 "运行实例" 按钮查在在线实例

ヒント: JavaScript の書き方がわからない場合は、JavaScript チュートリアルを読んでください。

例の説明:

loadXMLDoc()関数

loadXMLDoc()関数は、XMLおよびXSLファイルをロードするために使用されます。

ユーザーが使用しているブラウザの種類と、ファイルがロードされたブラウザの種類を確認します。

displayResult() 関数

この関数は、スタイルを定義する XSL ファイルを使用して XML ファイルを表示するために使用されます。

  • XML をロードし、

  • スタイルが適用された XML ドキュメントを含むように現在のドキュメントの本文 (id="example") を設定します

  • ユーザーのブラウザが ActiveX オブジェクトをサポートしていない場合:
    • 新しい XSLTProcessor オブジェクトを作成し、XSL ファイルをインポートします
    • transformToFragment() メソッドを使用して、XSL スタイル シートを XML ドキュメントに適用します
  • 現在のドキュメントの本文を設定します (id= example") スタイルが適用された XML ドキュメントを含めます