Книга: Технология XSLT
Использование нескольких определений одного ключа
Использование нескольких определений одного ключа
Процессор должен учитывать все определения ключей данного преобразования — даже если некоторые из них находятся во включенных или импортированных модулях. Порядок импорта элементов xsl:key
не имеет значения: дело в том, что определения ключей с одинаковыми именами для одних и тех же узлов, но с разными значениями ключа не переопределяют, а дополняют друг друга.
Пример
Предположим, что в нашем документе имеется несколько элементов item
, в которых не указано значение атрибута source
, но по умолчанию мы будем причислять их к источнику а
. Соответствующие ключи будут определяться следующим образом:
<xsl:key name="src" match="item[@source]" use="@source"/>
<xsl:key name="src" match="item[not(@source)]" use="'a'"/>
To есть для тех элементов item
, у которых есть атрибут source
, значением ключа будет значение этого атрибута, для тех же элементов, у которых атрибута source
нет, его значением будет "а"
.
Для входящего документа вида
<items>
<item source="a" name="A"/>
<item source="b" name="B"/>
<item source="a" name="C"/>
<item source="c" name="D"/>
...
<item source="a" name="H"/>
<item name="I"/>
<item name="J"/>
<item name="K"/>
</items>
соответствующее множество ключей будет определяться следующим образом:
(<item name="А".../>, 'src', 'а')
(<item name="В".../>, 'src', 'b')
(<item name="С".../>, 'src', 'а')
(<item name="D".../>, 'src', 'c')
...
(<item name="H".../>, 'src', 'a')
(<item name="I".../>, 'src', 'a')
(<item name="J".../>, 'src', 'a')
(<item name="K".../>, 'src', 'a')
Функция key('src', 'a')
возвратит объекты с именами A
, C
, H
, I
, J
и K
.
То, что одни и те же узлы могут иметь разные значения одного ключа, является также очень удобным свойством. Например, два определения ключей, приведенные выше, можно дополнить третьим:
<xsl:key name="src" match="item[not(@source)]" use="'#default'"/>
Это определение позволит по значению "#default"
обращаться к объектам, принадлежащим источнику по умолчанию.
- Использование нескольких ключей в одном преобразовании
- Восстановление с использованием инструмента gbak
- Типы страниц и их использование
- Использование констант
- Использование переменной окружения ISC_PATH
- Использование сервера Yaffil внутри процесса
- Одновременный запуск нескольких копий сервера (multi-instancing)
- Использование CAST() с типами дата
- Как сделать, чтобы компьютер выключался
- Использование типов содержимого и столбцов
- Стиль написания исходного кода
- Вызов хранимых процедур InterBase с использованием стандартного синтаксиса ODBC