<xsl:fallback> 要素

<xsl:fallback> 要素は、パーサーが処理できない XSLT 要素を処理する目的で用意されています。たとえば、新しいバージョンの拡張機能や認識されない拡張機能に含まれる要素などが対象となります。<xsl:fallback> 要素は、新しい要素の動作の適切な代替動作を指定するテンプレート コンテンツを呼び出すことによって機能します。

<xsl:fallback>
</xsl:fallback>

属性

なし

要素情報

出現回数

無制限

親要素

xsl:attributexsl:commentxsl:copyxsl:element、xsl:fallback、xsl:for-eachxsl:if, xsl:messagexsl:otherwisexsl:paramxsl:processing-instructionxsl:templatexsl:variablexsl:whenxsl:with-param、出力要素

子要素

xsl:apply-templatesxsl:attributexsl:call-templatexsl:choosexsl:commentxsl:copyxsl:copy-ofxsl:elementxsl:for-eachxsl:ifxsl:processing-instructionxsl:textxsl:value-ofxsl:variable、出力要素

解説

XSLT ドキュメントが初めて読み込まれると、XSLT プレパーサーがすべての XSLT 要素の検証を実行します。<xsl:stylesheet> 要素に挿入され、渡されたバージョンが、パーサーがサポートしているバージョンより上位のバージョンである場合、パーサーは、検出されるすべての未知の要素の <xsl:fallback> 子要素を実行します。<xsl:fallback> 要素にコンテンツがない場合、パーサーは何のアクションも実行しません。要素がサポートされている場合、その要素の <xsl:fallback> 子要素のテンプレートはインスタンス化されません。スタイル シートで指定されているバージョンが、ブラウザがサポートしているバージョンと同じであった場合は、エラーが呼び出されます。

フォールバックは、XSLT がアップグレードの処理に使用するフォワード処理メカニズムの一部です。フォワード処理では、要素がサポートされていない場合にコマンドを処理する代替の方法を作成するため、使用されるコードの信頼性が比較的高く、パーサーの準拠の度合いが問題になりません。

バージョンの違いに対応することに加えて、フォールバック メカニズムは、名前空間拡張で定義された要素の処理に利用できます。基本仕様に機能を追加することは、通常、非常に難しいため、開発者は名前空間拡張を利用して、XSLT 仕様で指定されている機能以外の機能を定義します。名前空間がサポートされていない場合 (名前空間の定義が指定されていない場合)、または名前空間関数または名前空間要素が定義されていない場合は、フォールバック メカニズムを利用して代替機能を実行できます。

拡張機能が XSLT 操作で必ず解釈されるようにするには、解釈されるプレフィックスの名前が <xsl:stylesheet> 要素に含まれるように、<xsl:stylesheet> 要素の extension-element-prefixes 属性を設定する必要があります。さらに、そのプレフィックスの名前空間を宣言します。

次のトピックでは、<xsl:fallback> の使用例を紹介します。