XSLT(
Extensible Stylesheet Language Transformations)は、XML文書を変換するための
プログラミング言語であり、W3C(
World Wide Web Consortium)によって標準化されています。これは、XSL(
Extensible Stylesheet Language)という3つの仕様からなる規格の一つで、ジェームズ・クラーク氏を中心とする人々によって設計されました。XSLTは、XML文書を別のXML文書や他の形式のテキストデータに変換する際に利用されます。
XSLTの歴史と標準化
- - XSLT 1.0: 1999年11月23日にW3C勧告として発表され、2007年にはJIS規格(JIS X 4169)としても翻訳されました。
- - XSLT 2.0: 2007年1月23日にW3C勧告となりました。
- - XSLT 3.0: 2017年6月8日にW3C勧告となりました。
XSLTは、XPath(
XML Path Language)というXML文書内の特定の要素や属性を指定するための言語に基づいており、XML文書全体またはその一部を変換します。変換結果はXML形式だけでなく、HTMLやプレーンテキストのような他のテキスト形式でも出力可能です。例えば、HTML文書のヘッダー情報の追加、テキストの移動、ソートといった処理が挙げられます。
XSLTの特徴
- - 関数型言語: XSLTは関数型言語としての側面を持ち、チューリング完全であるため、理論的にはあらゆる計算処理を記述できます。しかし、その高度な機能を利用するには、プログラミングの知識が必要になります。しばしばXMLに対して持たれる「プログラミング不要」というイメージとは異なり、XSLTは高度なプログラミングスキルを要求することがあります。
- - 宣言的な変換: XSLTによる変換は宣言的に指定されます。つまり、どのように変換するかをルールとして記述し、XSLT処理系がそのルールに従ってXML文書を変換します。このルールは再帰的に適用されることがあります。
- - 変換処理: XSLT処理系は、どのルールを適用するかを判断し、優先順位に基づいて変換を行います。XSLTプログラムはXML形式で記述され、変換ルールを定義します。
XSLTの応用例
XSLTは、XML形式のデータを様々な形式に変換するために利用されます。以下は、その応用例の一部です。
- - データ変換: XMLデータを別の形式のデータに変換することができます。
テンプレート関数
XSLTはテンプレートという機能を使って、再帰的な関数を定義できます。以下は、文字列置換を行うテンプレート関数の例です。
xml
この例から、以下の点がわかります。
- - テンプレート関数の定義方法 (`xsl:template`, `xsl:param`)
- - 引数の参照方法 (`$引数名`)
- - 条件分岐の記述方法 (`xsl:if`, `xsl:choose`)
- - XSLT関数の利用方法(`not`, `contains`, `substring-before`, `substring-after`)
- - 定義されたテンプレート関数の呼び出し方 (`xsl:call-template`, `xsl:with-param`)
メディア型
XSLTのメディアタイプは`application/xslt+xml`としてIANAに登録されています。望ましいMIMEタイプは`application/xslt+xml`または`application/xml`です。しかし、一部のブラウザでは、`text/xsl`のような独自のMIMEタイプしか認識しない場合があります。
関連項目
外部リンク
以下に、XSLTの実装や仕様に関する外部リンクを記載します。
- Xalan-Java
- Xalan-C++
- libxslt
- Sablotron
- SAXON
- XT
- XSLT for MSXML
- Microsoft XSLTransformations (XSLT) Standards Support Document
- MozillaはXSLTにネイティブ対応
- X-SmilesはXSLTにネイティブ対応
- <oXygen/> XSLT editor and debugger
- XSLT 1.0 W3C 勧告
- JIS X 4169:2007
- XSLT 2.0 W3C 勧告
- XSLT 3.0 W3C 勧告
- XSLTチュートリアル (ドイツ語)
- XSLT 2.0参照 (ドイツ語)
- XSLTとXPathリファレンス (ドイツ語)