Создать функцию XPath в XSLT 1.0 - PullRequest
7 голосов
/ 09 марта 2011

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

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

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

Ответы [ 3 ]

11 голосов
/ 09 марта 2011

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

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

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

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

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

5 голосов
/ 09 марта 2011

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

4 голосов
/ 09 марта 2011

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

...