Sebastian Rahtz 
An example from Sebastian. the saxon, xalan and lotusxsl XSLT processors also support a similar
extension, and Oracle will do any day now.(5/00) you just have to write your
XSLT code a little more defensively using fallback. here is an example 
from my TEI XSLT stylesheets 1  <xt:document method="html" href="{concat($ident,'.html')}">
2  <xsl:call-template name="docOut"/>
3  <xsl:fallback>
4    <saxon:output  method="html" file="{concat($ident,'.html')}">
5    <xsl:call-template name="docOut"/>
6      <xsl:fallback>
7         <xalan:write file="{concat($ident,'.html')}">
8             <xsl:call-template name="docOut"/>
9           <xsl:fallback>
10             <xsl:call-template name="docOut"/>
          </xsl:fallback>  
         </xalan:write>
      </xsl:fallback>  
    </saxon:output>
  </xsl:fallback>
 </xt:document>1 tries for an xt extension. If it is undefined
4 kicks in and tries a saxon extension. If it fails...
7 kicks in. If it fails 10 kicks in. xsl:fallback children are activated if the *parent element* cannot work
It could equally be rewritten as a choose structure using "element-available"  |