Элемент <xsl:fallback>

Элемент <xsl:fallback>

При помощи элемента XSLT 1.0 <xsl:fallback> можно указать, что следует делать в случае отсутствия элемента расширения. Этот элемент заключается в элемент расширения и используется в случае его недоступности.

У элемента <xsl:fallback> нет атрибутов, он содержит тело шаблона.

В следующем примере я создам элемент <xsl:fallback> внутри элемента <redirect:write> из предыдущего примера. В случае отсутствия элемента <redirect:write> элемент <xsl:fallback> прекратит обработку и выдаст сообщение:

<xsl:stylesheet

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

 version="1.0"

 xmlns:lxslt="http://xml.apache.org/xslt"

 xmlns:redirect="org.apache.xalan.lib.Redirect"

 extension-element-prefixes="redirect">

 <lxslt:component prefix="redirect" elements="write open close" functions="">

  <lxslt:script lang="javaclass" src="org.apache.xalan.lib.Redirect"/>

 </lxslt:component>

 <xsl:output method="xml"/>

 <xsl:template match="/">

  <xsl:apply-templates/>

 </xsl:template>

 <xsl:template match="PLANETS">

  <redirect:write select="@file">

   <PLANETS>

    <xsl:apply-templates/>

   </PLANETS>

   <xsl:fallback>

    <xsl:message terminate="yes">

     <xsl:text>Could not create multiple output documents.</xsl:text>

    </xsl:message>

   </xsl:fallback>

  </redirect:write>

 </xsl:template>

 <xsl:template match="@*|node()">

  <xsl:copy>

   <xsl:apply-templates select="@*|node()"/>

  </xsl:copy>

 </xsl:template>

</xsl:stylesheet>

На этом мы заканчиваем введение в работу с данными в документах XML. В следующей главе мы разберем эту тему и узнаем, как изменять содержимое документа и создавать новые элементы, атрибуты и инструкции обработки.