Элемент XSLT <xsl:key>
Определение и использование
<xsl:key> элемент является верхним уровнем, который может声明 именованный ключ (имя и значение пары для элементов, указанных в XML-документе).
Этот ключ используется через функцию key() в стилях, чтобы помочь вам эффективно обращаться к элементам, распределенным в сложных XML-документах.
Комментарий:Ключ не должен быть уникальным!
Грамматика
<xsl:key name="name" match="pattern" use="expression"/>
Атрибут
Атрибут | Значение | Описание |
---|---|---|
name | name | Обязателен. Определите имя ключа. |
match | pattern | Обязателен. Определите, на какие узлы будет применяться этот ключ. |
use | expression |
Обязателен. Укажите выражение, которое будет использоваться в качестве значения ключа. Значением ключа может быть любое из следующих значений: атрибут, подэлемент или содержимое соответствующего элемента. |
Пример
Пример 1
Предположим, что у вас есть XML-файл с именем "persons.xml":
<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> Id: <xsl:value-of select="@id"/><br /> Name: <xsl:value-of select="@name"/> </p> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>