Различные дополнительные функции
Функция: набор-узлов current()
Функция возвращает набор узлов, состоящий из единственного члена - . Для внешнего выражения (выражения, которое не является частью другого выражения), текущий узел всегда тот же самый, что и узел контекста. Таким образом,
<xsl:value-of select="current()"/>
означает то же самое, что и
<xsl:value-of select="."/>
Однако внутри квадратных скобок текущий узел обычно отличается от узла контекста. Например,
<xsl:apply-templates select="//glossary/item[@name=current()/@ref]"/>
будет обрабатывать все элементы item, которые имеют родителем элемент glossary, а также имеют атрибут name, значение которого равно значению атрибута ref текущего узла. Этот вариант отличается от
<xsl:apply-templates select="//glossary/item[@name=./@ref]"/>
который означает то же самое, что
<xsl:apply-templates select="//glossary/item[@name=@ref]"/>
а потому будет обрабатывать все элементы item, которые имеют родителем элемент glossary, а также имеют атрибуты name и ref с одинаковыми значениями.
Если в использовать функцию , фиксируется ошибка.
Функция: строка unparsed-entity-uri(строка)
возвращает URI неразобранной сущности с заданным именем, находящейся в том же документе, что и узел контекста (см. ). Если такой сущности нет, функция возвращает пустую строку.
Функция: строка generate-id(список-узлов?)
Функция возвращает строку, уникальным образом идентифицирующую тот узел из набора узлов, представленного в аргументе, который первым встретится в документе. Уникальный идентификатор должен состоять из алфавитно-цифровых символов ASCII и должен начинаться с буквы. Таким образом, данная строка синтаксическим соответствует имени XML. Разработчик волен генерировать идентификатор любым удобным ему способом при условии, что для одного и того же узла всегда генерируется один и тот же идентификатор, а для разных узлов всегда генерируются разные идентификаторы. Процессор не обязан генерировать одни и те же идентификаторы при каждом преобразовании документа.
Нет гарантий, что сгенерированный уникальный идентификатор не совпадет с каким-либо уникальным ID, указанным у исходном документе. Если в аргументе был дан пустой набор узлов, функция возвращает пустую строку. Если аргумент отсутствует, то по умолчанию используется узел контекста.
Функция: object system-property(строка)
Аргумент функции должен обрабатываться как строка . приводится к расширенному имени с помощью деклараций пространства имен в области видимости данного выражения. Функция возвращает объект, представляющий значение системного параметра, идентифицируемого этим именем. Если такого системного свойства нет, должна возвращаться пустая строка.
Реализации процессора должны представлять следующие системные свойства, относящиеся к пространству имен XSLT: