XSLT <xsl:key>Элемент
Полный справочник по элементам XSLT
Определение и использование
Элемент <xsl:key> — это элемент верхнего уровня, который может объявить именованный ключ (т.е. присвоить имена и пары значений указанным элементам в XML-документе). Этот ключ используется в таблицах стилей через функцию key(), помогая вам эффективно получать доступ к назначенным элементам в сложных XML-документах.
Примечание:Ключи не обязательно должны быть уникальными!
Синтаксис
<xsl:key
name="name"
match="pattern"
use="expression"/>
name="name"
match="pattern"
use="expression"/>
Атрибуты
| Attribute | Значение | Описание |
|---|---|---|
| name | name | Обязательный. Указывает имя ключа. |
| совпадение | pattern | Обязательный. Определяет узел, к которому применяется ключ. |
| использовать | выражение | Обязательный. Задаёт выражение, используемое в качестве значения ключа для каждого узла. |
Пример 1
Предположим, у вас есть XML-файл с именем "persons.xml":
<persons>
<person name="Tarzan" id="050676"/>
<person name="Donald" id="070754"/>
<person name="Dolly" id="231256"/>
</persons>
<person name="Tarzan" id="050676"/>
<person name="Donald" id="070754"/>
<person name="Dolly" id="231256"/>
</persons>
Вы можете определить ключ в XSL-файле следующим образом:
<xsl:key name="preg" match="person" use="@id"/>
Чтобы найти элемент person с id="050676", используйте этот код (в XSL-файле):
<?xml version="1.0" encoding="ISO-8859-1"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="preg" match="person" use="@id"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="key('preg','050676')">
<p>
Идентификатор: <xsl:value-of select="@id"/><br />
Имя: <xsl:value-of select="@name"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:key name="preg" match="person" use="@id"/>
<xsl:template match="/">
<html>
<body>
<xsl:for-each select="key('preg','050676')">
<p>
Идентификатор: <xsl:value-of select="@id"/><br />
Имя: <xsl:value-of select="@name"/>
</p>
</xsl:for-each>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Полный справочник по элементам XSLT Другие расширения