不存在XSLT扩展功能时的回退行为

时间:2011-01-13 23:06:53

标签: xslt

当在外部XSLT对象中实现的函数不存在时(在XSLT 1.0中)是否可以提供回退行为?

现在,我有类似于

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

然而,如果external-ns不可用,则可以生成有意义的内容,它不会那么聪明。所以,我想要像

这样的东西
<!-- (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>

我知道xsl:fallbackelement-available()但这些似乎只适用于元素,而不是函数。有没有办法实现这个目标?

1 个答案:

答案 0 :(得分:1)

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

  

功能布尔 可用功能 string

     

参数必须求值为字符串   这是一个QName。 QName已扩展   使用。扩展名称   范围内的名称空间声明   表达方式。功能可用   函数返回true,当且仅当   扩展名是a的名称   函数库中的函数。如果   扩展名称具有非null   命名空间URI,然后它引用一个   扩展功能;否则,它   指的是XPath定义的函数   或XSLT。