Резервное поведение при отсутствии функции расширения XSLT - PullRequest
0 голосов
/ 14 января 2011

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

1 Ответ

1 голос
/ 14 января 2011

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

Функция : логический функция доступна ( строка )

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...