1. XSLT
- 1.1 XSLT とは
- 1.2 スタイルシートの構造
- 1.3 スタイルシートの適用
1.1 XSLT とは
HTML にスタイルシートとして CSS (Cascading Style Sheets) があるように、XML には、より豊富な機能を持つスタイルシート言語として W3C で標準化された XSL (Extensible Stylesheet Language) があります。
XSL スタイルシートの適用処理は、二つの局面でとらえることができます。第一は、XML 文書を別の XML 文書に変換することです。XML 文書はツリー構造をしており、変換前のツリーをソースツリーといい、変換後のものを結果ツリーといいます。第二は、結果ツリーを解釈して、ディスプレイ上、紙面上、音声、又はその他のメディア上での表示に適するフォーマット結果を生成することです。第一の局面をツリー変換と呼び、第二の局面をフォーマッティング (書式設定) と呼びます。
ツリー変換は、結果ツリーの構造をソースツリーの構造とは大きく異なるものにすることを可能にします。例えば、元の XML 文書に目次を追加できたり、ソートされた表形式の表示に再整理できたりします。結果ツリーを構築する際に、ツリー変換処理は、その結果ツリーをフォーマットするのに必要な情報も追加します。
当初これらの機能はすべて XSL に含まれていましたが、最終的にこのツリー変換の部分が独立して XSLT (XSL Transformations) として機能および構文が規定され、バージョン 1.0 が 1999/11/6 に W3C の勧告となり、バージョン 2.0 が 2002/11/15 にワーキングドラフトとなっています。 この文書において XSLT とは特に断りがない限り XSLT 1.0 を意味することとします。
1.2 スタイルシートの構造
XSLT のコードも XML 文書の構造をしています。よって最初に XML 文書と同様に XML 宣言が必要です。次に実際に変換を行う部分の記述があるスタイルシートの内容ですが、xsl:stylesheet 要素として表されます。xsl:stylesheet の同義語として xsl:transform を使用することもできます。
xsl:stylesheet 要素には version 属性としてスタイルシートに必要な XSLT のバージョンを記述しなければなりません。現在勧告となっているバージョンは 1.0 ですので、属性値としては 1.0 を指定することになります。また、変換処理を行う XSLT プロセッサに要素と属性がどこに属するかを認識させるために xmlns:xsl 属性の属性値として XSLT 名前空間を指定しなければなりません。この XSLT 名前空間の URI としては http://www.w3.org/1999/XSL/Transform を指定します。
xsl:stylesheet 要素の子として現れる要素は、トップレベル (top-level) 要素と呼ばれ、以下のような要素となります。これらの要素を必ず含めなければならないこともありませんし、複数含めてもかまいません。また、トップレベル要素の出現順序は xsl:import 要素や一部の例外を除いて自由に並べてかまいません。
-
xsl:import
-
xsl:include
-
xsl:strip-space
-
xsl:preserve-space
-
xsl:output
-
xsl:key
-
xsl:decimal-format
-
xsl:namespace-alias
-
xsl:attribute-set
-
xsl:variable
-
xsl:param
-
xsl:template
以下にごく単純な XSLT の例を示します。
<?xml version="1.0" encoding="UTF-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/TR/xhtml1/strict"> <xsl:template match="/"> <html> <head> <title>Expense Report Summary</title> </head> <body> <p>Total Amount: <xsl:value-of select="expense-report/total"/></p> </body> </html> </xsl:template> </xsl:stylesheet>