XSLT — страница 77 из 124

: выбор по ключу 

Элемент

позволяет создать ключ и выбрать узлы по этому ключу. Он обладает следующими атрибутами:

• 

name
(обязательный). Имя ключа, устанавливается в
QName
;

• 

match
(обязательный). Устанавливается в образец выбора для выбора узлов, к которым применяется ключ;

• 

use
(обязательный). Устанавливается в выражение, определяющее значение ключа.

При помощи ключей можно легко распознавать элементы; конкретные ключи можно выбрать при помощи образца «key()». В главе 4 мы познакомились с ключами, имеющими одно значение. В следующем примере я использую ключи для выбора планет, у которых атрибут

COLOR
был установлен в «BLUE» — в данном случае это Земля:

 .

 .

 .

Earth

1

1

2107

1

128.4

Я создал ключ

COLOR
, выбирающий элементы
путем проверки их атрибута
COLOR
. Ключ выглядит следующим образом:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

 .

 .

 .

После этого я применил образец «key()» для того, чтобы выбрать элементы

, у которых атрибут
COLOR
установлен в «BLUE»:

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

</code></pre></p><p><pre><code>     The Planets Table</code></pre></p><p><pre><code>

     The Planets Table

NameMassRadiusDay

 .

 .

 .

И вот результат — как видите, образцу удовлетворяет только Земля:

</code></pre></p><p><pre><code>   The Planets Table</code></pre></p><p><pre><code>

   The Planets Table

NameMassRadiusDay
Earth1 (Earth = 1)2107 miles1 days

Но в данном случае существует больше вариантов. Например, ключу могут соответствовать несколько узлов, а это означает, что использующий ключ образец вернет набор узлов. Пусть, например, все планеты будут иметь одно и то же значение атрибута

COLOR
, «
UNKNOWN
» (неизвестен):

Mercury

.0553

58.65

1516

.983

<