Языки информационного обмена

Декларация xsl:function


Элемент xsl:function позволяет описывать самые настоящие пользовательские функции. Имя функции записывается в обязательном атрибуте nаmе, (аргументы функции задаются элементами xsl:param, а тело функции - это конструктор последовательности, записанный в содержимом элементе xsl:function. Результатом функции будет последовательность, созданная конструктором. Тип функции можно указать необязательным атрибутом аs.

Имя функции - это уточненное имя типа QName, причем оно должно обязательно записываться с префиксом.

Все аргументы функции позиционные, следовательно, все элементы xsl:param должны быть записаны в начале тела функции и порядок их записи имеет значение при вызове функции. У аргументов функции не может быть значений по умолчанию, следовательно, элементы xsl:param должны быть пустыми и у них не должно быть атрибутов select. Например:

<xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:usr="http://myexamples.com" xmlns:xs="http://www.w3.org/2001/XMLSchema"> <xsl: function nаme= " usr:sum " as="xsl:integer"> <xsl:param name="x" as="xsl:integer" /> <хsl:раrаm name="y" as="xsl:integer" /> <xsl:value-of select="$x + $y" /> </xsl:function>

вызвать функцию можно в любом выражении подходящего типа, записав ее имя и аргументы в скобках. Например:

<хsl:value-of select="10 + 2 * usr:sum(2, 3)" />

Функция может вызываться рекурсивно.



Содержание раздела