W3C勧告XSLの「XSL Transformation / XSLT」とは
XSLTによってXML文書やデータファイルを様々な形式(HTML/CHTML/XHTML/XHTML Basic/異なるXML文書/CSV...etc.)などに変換する事ができる点が大きな特徴です。
また、与えられた属性だけに依存する限定された変換という事ではなく、XPathによって要素や属性、属性値や要素内容まで含めたパターンマッチングが可能となっており、XML文書やデータファイルから多種多様な思い思いの書式に変換する機能を持ち合わせています。
XSLTはこのようにXSLの中の一部の機能ですが、変換機能が非常に柔軟で様々な機能を有するのでW3Cでも別枠で策定・勧告されています。
Extensible Stylesheet Language (XSL) Version 1.1 / W3C Recommendation 05 December 2006の目次に沿った日本語訳です。
当サイト管理人が2008年09月、意訳したものですが、構文解釈の違いや翻訳の違いが含まれるかもしれません。正式文書はW3C 各種仕様書(英語版)である事を予めご了承ください。
<< 【XSL 1.1】 1. 仕様・外観 / Introduction and Overview
2 XSLT / XSL Transformation Transformation 2.1 木(ツリー)構造 2.2 XSL名前空間 |
ツリー構造はXSLT/XSL Transformationsによって表現され、XSLTのデータモデルはXML1.0やXML1.1といったバージョンに影響されずに同じ挙動をします。
XSLの名前空間は、1999年W3Cによって領域が確保され以下のURIが示されています。
http://www.w3.org/1999/XSL/Format |
XSLプロセッサの仕様としては、要素や属性といったXML名前空間メカニズムにはこのXSL名前空間を使わなければならず、XSL名前空間となっている要素はそのスタイルシート上から認識されなければいけません。
また、これはソース文書ではないので追加が必要になったからといってここに要素や属性を追記して拡張してはいけません。
拡張する際には、別の名前空間として区別する必要があり、拡張された要素の拡張された名称は、Nullではない名前空間URIを持っていなければいけません。
ちなみにこの仕様上では、XSL名前空間にある要素を参照する為に[ fo: ]という接頭辞を使いますが、XSLスタイルシートでは、[ fo: ]に限る事なく、XSL名前空間を指し示すURIを持つ名前空間があります。
(どこの名前空間にも存在しない要素や属性は利用できませんが、)XSL名前空間にある要素が、XSL名前空間にない属性を持つ場合があれば、それは属性の拡張された名称であり、その情報を持つURIで示された名前空間が他にある事を示します。
こうした属性がある場合、この文書上で定義されているXSL要素や機能の挙動を変更してはいけません。
これは、拡張された属性がフォーマット済みのオブジェクト(FO)を変更する可能性があることを指していますが、FOによるXSLの仕様上の制約に限定されません。
このような場合、XSLプロセッサは、常に何もせずにこのような属性を無視し、名前空間のURIで示されず認識できない属性があった場合にもエラーを出さずに無視しなければいけません。
このような属性は、例えばユニーク値、識別子、最適化のヒント、文書などのように存在し得ます。
これは、例えば接頭辞のない属性名などこの文書で定義された属性以外のNullを持つURIで示された拡張された名称を持つXSL名前空間にある要素の為のエラーです。
XSLで要素や属性、機能名として利用できる名称は、名称全てが小文字であり、ハイフンを使用するのは文字区切りのみ、ドットを使用するのは複雑なデータタイプの集合につけられる名称を区切る場合のみ、略語は、XMLやHTMLなどの関連する言語で既に存在する場合のみという条件と一致するものだけです。
>> 【XSL 1.1】 3. フォーマット仕様 / Introduction to Formatting