В XSLT можно группировать узлы по определенным признакам, а потом выполнять преобразования над этими группами (например, с использованием инструкции xsl:for-each
). Сгруппировать узлы помогают так называемые ключи. По сути ключи и являются теми признаками, по которым группируются узлы. Ключи в XSLT задаются с помощью элемента верхнего уровня xsl:key
.
Синтаксис:
1 2 3 4 | <xsl:key name = "строка" match = "XPath" use = "XPath" /> |
Атрибуты:
name
— обязательный атрибут, задает имя ключа, по которому в дальнейшем можно будет использовать ключmatch
— обязательный атрибут, его значение является выражение XPath, выбирающее узлы, к которым будет применен ключ (ну или которые будут объединены ключом)use
— также обязательный атрибут, значением которого является выражение XPath, определяющее по какому признаку будут группироваться узлы (т.е. какой признак и будет являться ключевым)
Обратиться к множеству узлов по значению их ключей можно с помощью XPath функции key(name, use)
. Функция принимает два аргумента: первый — строка — имя ключа, заданное атрибутом name
элемента xsl:key
, второй — объект любого типа (строка, выражение XPath) — значение, которому должен быть равен результат вычисления выражения XPath, указанного в атрибуте use
элемента xsl:key
. Возвращает функция key
набор узлов.