Создать функцию XPath в XSLT 1.0

Я ищу, как создать свою собственную функцию XPath в XSLT-1.0. Например, у меня есть простое выражение XPath, которое я использую снова и снова в моем шаблоне XSLT. Я хочу создать свою собственную функцию XPath myOwnFunction($var) который вызывает выражение XPath.

пример выражения:

normalize-space(substring-after(substring-after($var, '-'), '-'))

3 ответов


предыдущие два ответа сказали все: XSLT 1.0 не предоставляет средства для создания функций, на которые можно ссылаться из выражения XPath.

Если кто-то хочет такую функциональность, они должны начать использовать XSLT 2.0 (и использовать стандарт элемент инструкции), или:

  • использовать <func:function> элемент расширения, предоставляемый EXSLT. Обратите внимание, что очень мало XSLT 1.0 процессоры реализуют этот элемент расширения.

  • используйте определенную функцию процессора XSLT, если таковая существует. Для платформы .NET можно использовать XsltContext класс IXsltContextFunction интерфейс и методы, такие как этой.

в любом случае, все это совсем не Программирование XSLT, поэтому мой совет-начать серьезно использовать XSLT 2.0.


Если вы застряли с 1.0, вы можете проверить, поддерживает ли ваш процессор функции EXSLT.


XSLT 1.0 не определяет эту функциональность. Он был добавлен в XSLT 2.0. для этого вам придется либо использовать 2.0, либо использовать некоторые средства реализации.