пространству имен. Для элемента
<bar:foo xmlns:bar='urn:bar-namespace'/>
придется писать шаблон вида
<xsl:template match='ns:foo' xmlns:ns='urn:bar-namespace'>
...
</xsl:template>
В случае целого документа принадлежащего ненулевому пространству имен, определения подобного рода могут оказаться слишком громоздкими. Решение этой проблемы может быть очень простым и элегантным.
<xsl:stylesheet
version='2.0'
xmlns:xsl='http://www.w3.org/1999/XSL/Transform'
xmlns='urn:bar-namespace'>
<xsl:template match='foo'>
...
</xsl:template>
</xsl:stylesheet>
В элементе xsl:stylesheet пространство имен с URI 'urn:bar-namespace'
определяется как пространство имен по умолчанию и паттерн foo
соответствует элементу с локальной частью имени 'foo'
и URI пространства имен 'urn:bar-namespace'
.
Средства для форматирования даты и времени
В первых версиях XSLT элемент xsl:decimal-format
и функция format- number
обеспечивали форматирование чисел при их текстовом отображении. К сожалению, подобных инструментов для форматирования даты предусмотрено не было.
Поскольку связка элемента, определяющего именованный формат и функции, выполняющей форматирование, оказалась очень удачной, по всей вероятности, подобную схему мы будем наблюдать и в версии 2.0. Скорее всего, связка для форматирования даты и времени будет состоять из элемента xsl:date-format
и функции format-date
.
Функции
В XSLT 1.1 функции id
и key
возвращают множества узлов документа, который содержит текущий узел преобразования. То есть для того, чтобы использовать ключи или уникальные идентификаторы для выбора узлов внешнего документа, необходимо сначала сменить контекст, например:
<xsl:for-each select='document('ext.xml')'>
<xsl:copy-of select='key('name', 'value')'/>
</xsl:for-each>
Требования ко второй версии XSLT предполагают упрощение работы с ключами и уникальными идентификаторами на внешних документах.
Включение неразбираемых внешних сущностей в виде текста
В первых версиях XSLT отсутствовала возможность включения внешних сущностей, не разбирая их как XML-документы. Без помощи расширений было невозможно включить в выходящий документ простой внешний текстовый файл. Между тем, вполне подходящим решением была бы функция типа unparsed-entity
, которая по данному URI возвращала бы содержимое ресурса в виде строки. Естественно, при этом необходимо учитывать кодировку внешней сущности и Unicode-символы, которые не могут присутствовать в XML (например, управляющие символы).
Использование именованных сущностей вместо кодов символов
Это требование связано с желанием пользователей видеть в выходящем документе вместо сущности  
ее более привычный вариант
. В настоящее время приходится прибегать ко всяким хитростям вроде
<xsl:text disable-output-escaping='yes'>&nbsp;</xsl:text>
совсем не гарантирующим, кстати, что в выходящем файле окажется именно
.
В самом преобразовании сущности можно определять в DTD-заголовке следующим образом:
<!DOCTYPE xsl:stylesheet [
<!ENTITY nbsp '&#хА0;'>
]>
<xsl:stylesheet ... >
...
</xsl:stylesheet>
Однако на выходящий документ эти определения никоим образом не сказываются.
Обращение ссылок по
Функция id
позволяет отыскать в документе элементы по заданным значениями ID
-атрибутов. Это особенно полезно при работе с IDREF
-атрибутами, которые ссылаются на ID
-атрибуты: можно с легкостью выбрать элементы, на которые ссылается текущий элемент. Новым требованием к XSLT 2.0 является возможность 'обращать' такого рода ссылки — то есть находить элементы, которые ссылаются на данный элемент (включают определенные значения в свои IDREF
-атрибуты).
Другие требования
В числе прочих требований, предъявленных к XSLT 2.0, можно перечислить следующие:
□ поддержка группировки;
□ поддержка Unicode-нормализации строк;
□ сортировка узлов в соответствии с информацией о их типах, сообщенной XML-схемой