スタイルシート変換言語 XSLT

<xsl:fallback>の解説です。  スタイルシート変換言語 XSLTリファレンス 

<xsl:fallback>

<xsl:fallback>
・・・
</xsl:fallback>
xsl:fallbackは、現在使用しているXSLTプロセッサで、要素や関数などが使用できない場合の挙動を 示すのに使用します。xsl:fallbackの内容には、ある要素が利用できない場合にどういった処理を すべきかのテンプレートを記述します。
なお、要素が利用できるのかについては「element-available()」関数で、 関数が利用できるのかについては「function-available()」で確認することができます。
element-available("要素名")
function-available("関数名")
共に、指定した要素名、関数名がXSLTプロセッサで使用できるのならば「真」、 使用できなければ「偽」を返します。
なお、以下のサンプルでは、xsl:fallback内の処理が適用された時と そうでない時の、両方のサンプルを掲載しています。 最初の「aaa.xml」と「bbb.xsl」では、xsl:fallback 内の処理は無視され、本来の処理を行った結果が出力されます。
zipファイル 以下のサンプルをダウンロード(ZIP圧縮)
■ aaa.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="bbb.xsl"?>

<data>
<word>
<ab>XSLT</ab>
<mean>XSL Transformations</mean>
</word>

<word>
<ab>XML</ab>
<mean>extensible Markup Language</mean>
</word>

<word>
<ab>DTD</ab>
<mean>Document Type Definition</mean>
</word>
</data>
■ bbb.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <body>
  <xsl:for-each select="data/word">
  <xsl:apply-templates select="ab" /><br />
   <xsl:fallback>
    <xsl:for-each select="data/word">
     <b><xsl:value-of select="ab" /></b><br />
     <xsl:text>(</xsl:text><xsl:value-of select="mean" /><xsl:text>)</xsl:text><br />
    </xsl:for-each>
   </xsl:fallback>
  </xsl:for-each>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>
サンプル
次のサンプルでは、「bbb-fallback.xsl」内にXSLTプロセッサが使用できない要素 「<xsl:aaa>」を記述しています。 その為、xsl:fallback内に記述された処理が行われ、その結果が出力されています。
■ aaa-fallback.xml
<?xml version="1.0" encoding="Shift_JIS"?>
<?xml-stylesheet type="text/xsl" href="bbb-fallback.xsl"?>

<data>
<word>
<ab>XSLT</ab>
<mean>XSL Transformations</mean>
</word>

<word>
<ab>XML</ab>
<mean>extensible Markup Language</mean>
</word>

<word>
<ab>DTD</ab>
<mean>Document Type Definition</mean>
</word>
</data>
■ bbb-fallback.xsl
<?xml version="1.0" encoding="Shift_JIS"?>
<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

<xsl:template match="/">
 <html>
 <body>
  <xsl:aaa>
  <xsl:apply-templates select="ab" /><br />
   <xsl:fallback>
    <xsl:for-each select="data/word">
     <b><xsl:value-of select="ab" /></b><br />
     <xsl:text>(</xsl:text><xsl:value-of select="mean" /><xsl:text>)</xsl:text><br />
    </xsl:for-each>
   </xsl:fallback>
  </xsl:aaa>
 </body>
 </html>
</xsl:template>

</xsl:stylesheet>
サンプル
XSLT要素一覧
+ <xsl:apply-imports>
+ <xsl:apply-templates>
+ <xsl:attribute>
+ <xsl:attribute-set>
+ <xsl:call-template>
+ <xsl:comment>
+ <xsl:copy>
+ <xsl:copy-of>
+ <xsl:decimal-format>
+ <xsl:element>
+ <xsl:fallback>
+ <xsl:for-each>
+ <xsl:if>
+ <xsl:import>
+ <xsl:include>
+ <xsl:key>
+ <xsl:message>
+ <xsl:namespace-alias>
+ <xsl:number>
+ <xsl:otherwise>
+ <xsl:output>
+ <xsl:param>
+ <xsl:preserve-space>
+ <xsl:processing-instruction>
+ <xsl:sort>
+ <xsl:strip-space>
+ <xsl:stylesheet>
+ <xsl:template>
+ <xsl:text>
+ <xsl:value-of>
+ <xsl:variable>
+ <xsl:when>
+ <xsl:with-param>