XSLT 1.0とXVCD 1.0の比較

XSLT 1.0とXVCD 1.0を比較して、共通点や相違点を説明します。

1. 概要

XVCDの文書変換機能では、原則的にXSLT 1.0の要素・属性に準拠して、要素・属性を再定義しています。さらに、機能上の要求に応じて、XSLT 2.0ワーキングドラフトの要素や機能を取り入れたり、独自の要素を追加したりしている場合があります。

この文書では、XSLT 1.0とXVCD 1.0の仕様を比較して、共通点や相違点を説明します。

なお、以下の説明では、XVCDの要素は名前空間接頭辞 xvcd: で要素名を記述します。 また、XSLTの要素は名前空間接頭辞 xsl: で要素名を記述します。

2. XSLT 1.0とXVCD 1.0の比較

XSLT 1.0とXVCD 1.0の仕様を比較した共通点や相違点を、具体的に説明します。

2.1. 文書構造

XSLTとXVCDの文書構造全般に関する仕様を比較します。

2.1.1. 名前空間URI参照

当然ながら、XSLTとXVCDでは、それぞれを識別するための名前空間URI参照が異なります。

XSLT http://www.w3.org/1999/XSL/Transform
XVCD http://xmlns.xfy.com/xvcd

2.1.2. 頂点要素

XSLTとXVCDでは、文書の頂点要素となる要素のローカル名が異なります。

XSLT stylesheet要素(またはtransform要素)
XVCD xvcd要素

2.2. 要素・属性の構成や機能

XSLT 1.0とXVCD 1.0の要素や属性の構成や、それぞれの要素・属性の機能を比較します。

原則的に、XSLT 1.0で定義された要素とローカル名が同じXVCD 1.0の要素は、同じ機能を有します。

2.2.1. XVCD 1.0ではXSLT 1.0の仕様と動作が異なる機能

XVCD 1.0では、次の機能がXSLT 1.0の仕様とは動作が異なります。

  • XSLT 1.0では、将来のバージョンを扱うときの互換処理は、XSLT 1.0のW3C勧告の「2.5 Forwards-Compatible Processing」のように規定されています。
    XVCD 1.0では、将来のバージョンを扱うときの互換処理は想定されていません。ただし、次の点ではXSLT 1.0と同じように処理されます。
    • 最上位要素に使用できない要素が最上位要素として使用されている場合は、無視されます。
    • 各要素に定義されていない属性が使用されている場合は、無視されます。
  • XSLTでは、文書要素がリテラル結果要素となっているような場合は、xsl:stylesheet要素内に"/"というパターンに対するテンプレートルールだけが記述されているXSLT文書と同等に扱われます。
    XVCDでは、このような処理は行われません。XVCDでは、xvcd:xvcd要素が頂点要素に使用されていなければなりません。
  • XVCD 1.0には、XSLTのsystem-property()関数に相当する機能はありません。
  • xsl:output要素に対応する xvcd:output要素は、定義されていますが機能しません。XVCDで変換された文書を保存するときにも反映されません。
  • XVCDには、xsl:text要素のdisable-output-escaping属性に相当する機能はありません。
  • xfy technologyでは、文書型宣言を無視します。そのため、DTDに記述されたデフォルトの属性や、ID型属性、実体参照は、XVCDでは機能しません。そのため、XPathのid()関数のような、DTDの記述を前提とする機能は使用できません。同じ理由で、XVCDではunparsed-entity-uri()関数をサポートしません。
  • XSLTでは、xsl:attribute要素で子要素が追加されたあとの要素に属性を追加するとエラーになります。
    XVCDでは、 xvcd:attribute要素で同じ操作をするとエラーにはならずに属性が追加されます。
  • XVCDの xvcd:xvcd要素には、XSLTのxsl:stylesheet要素(またはxsl:transform要素)のextension-element-prefixes属性に相当する属性はありません。
  • xsl:fallback要素に対応する xvcd:fallback要素は、定義されていますが機能しません。
  • XVCDでは、次の関数をサポートしません。
    • element-available()関数
    • function-available()関数
  • XSLTとXVCDでは、XML文書への関連付け方法が異なります。XSLTはXML文書中に処理命令を記述して関連付けます。XVCDをXML文書に割り付ける方法は、「XVCDによるボキャブラリコンポーネントの開発手順」の「3. xfy Developer's Toolkit によるボキャブラリコンポーネント作成支援」をご覧ください。
  • そのほか、XVCDではXSLTの次の各要素の各属性には対応していません。
    • xsl:message要素のterminate属性
    • xsl:number要素のlang属性、letter-value属性、grouping-separator属性、grouping-size属性
    • xsl:sort要素のlang属性、case-order属性

2.2.2. XSLT 2.0のワーキングドラフトから取り込まれた要素や機能

XSLT 2.0のワーキングドラフトで提案され、XVCDの機能実現のために取り込まれた要素や機能は、次のとおりです。

2.2.3. XVCD独自の要素・属性

XVCDの機能実現のために追加された独自の要素は、次のとおりです。

また、XVCDの機能実現のために、XSLT 1.0でも定義されている要素に追加された属性は、次のとおりです。

2.2.4. XSLT 1.0には存在しないXVCD 1.0の推奨事項

XVCDは複合XML文書を扱うため、次の関数を呼び出す場合に関する推奨事項が存在します。この推奨事項はXSLT 1.0には存在しません。