Элемент <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. В следующей главе мы разберем эту тему и узнаем, как изменять содержимое документа и создавать новые элементы, атрибуты и инструкции обработки.