2011-01-13 4 views
0

Возможно ли обеспечить резервное поведение, когда функция, реализованная во внешнем объекте XSLT, отсутствует (в XSLT 1.0)?Резервное поведение при отсутствии функции расширения XSLT

Прямо сейчас, у меня есть что-то похожее на

<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:fallback и element-available(), но это, кажется, только для элементов, а не функции. Есть ли способ достичь этого?

ответ

1

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

Функция: булево-функции доступны (строка)

Аргумент должен вычисляться в строку , которая является QName. QName разворачивается в расширенное имя с использованием объявлений пространства имен в области . Функция-доступная функция возвращает true тогда и только тогда, когда расширенное имя является именем функции в библиотеке функций. Если , расширенное имя имеет ненулевой URI пространства имен, то это относится к функции расширения ; в противном случае он относится к функции, определенной XPath или XSLT.

+0

Я не уверен, как я пропустил это. Благодаря! – Jacob

+0

@Jacob: Не упоминайте об этом. Добро пожаловать. –