Jacob
Jacob

Reputation: 75

Fallback behavior when an XSLT extension function is not present

Is it possible to provide fallback behavior when a function implemented in an external XSLT object is not present (in XSLT 1.0)?

Right now, I have something similar to

<xsl:template match="an-element">
  <xsl:value-of select="external-ns:ExternalFunction(.)" />
</xsl:template>

However, it's possible to generate content that makes sense if external-ns is not available, it just won't be as smart. So, I'd like to have something like

<!-- (pseudo) -->
<xsl:template match="an-element">
  <xsl:try>
    <xsl:value-of select="external-ns:ExternalFunction(.)" />
    <xsl:catch>
      <!-- do something else with the node -->
    </xsl:catch>  
  </xsl:try>
</xsl:template>

I'm aware of xsl:fallback and element-available() but these seem to be only for elements, not functions. Is there any way to achieve this?

Upvotes: 0

Views: 204

Answers (1)

user357812
user357812

Reputation:

From http://www.w3.org/TR/xslt#function-function-available

Function: boolean function-available(string)

The argument must evaluate to a string that is a QName. The QName is expanded into an expanded-name using the namespace declarations in scope for the expression. The function-available function returns true if and only if the expanded-name is the name of a function in the function library. If the expanded-name has a non-null namespace URI, then it refers to an extension function; otherwise, it refers to a function defined by XPath or XSLT.

Upvotes: 1

Related Questions