Элемент <xsl:key>

Элемент <xsl:key> объявляет именованный ключ, т. е. пару «имя-значение», связанную с указанным элементом в XML-документе. Этот ключ используется с фукнцией key() в выражениях XPath для осуществления эффективного доступа к связанным элементам в сложном XML-документе.

<xsl:key
  name = QName
  match = Pattern
  use = Expression
</xsl:key>

Атрибуты

  • имя
    Задает ключу имя Полные имена (XSLT).

  • match
    Задает значение Шаблоны (XSLT), определяющее узел, содержащий этот ключ.

  • use
    Задает значение Выражения (XSLT), которое будет использоваться в качестве значения ключа. Ключ может иметь одно из следующих значений: атрибут, дочерний элемент или содержимое совпадающего элемента.

Сведения об элементе

Количество вхождений

Без ограничений

Родительские элементы

xsl:stylesheet

Дочерние элементы

(Нет дочерних элементов)

Заметки

Ключи можно использовать в качестве обобщенных идентификаторов для ссылок на элементы в XML-документе. Чтобы сделать это, нужно сначала использовать элемент <xsl:key> для того, чтобы объявить ключ для узла. Затем нужно вызвать функцию key() для получения узла, предоставив имя и значение ключа в качестве аргументов функции. Дополнительные сведения см. в приведенных ниже примерах.

Для узла можно объявить несколько ключей. Таким образом, можно выполнить запрос узла несколькими способами.

При работе с относительно большими XML-документами ключ является быстрым способом запроса элементов. Ключ в первую очередь индексирует расположение требуемых узлов. Тем не менее при компиляции элементов <xsl:key> обработчик XSLT не создает эти индексы до тех пор, пока функция key() не выполнит вызовы для ключей. Таким образом, требующая долгого времени операция индексации выполняется только при необходимости.

В таблице стилей элементы <xsl:key> являются элементами верхнего уровня и не могут появиться внутри шаблона. Чтобы избежать циклических ссылок, нельзя использовать ссылки на параметры или переменные в качестве частей совпадения <xsl:key>.

Пример

В следующем разделе приводится пример элемента <xsl:key>.