Книга: XSLT
Элемент : создание наборов атрибутов
Элемент <xsl:attribute-set>: создание наборов атрибутов
Иногда при создании нового элемента возникает потребность добавить в него сразу несколько атрибутов. Существует простой способ сделать это при помощи элемента <xsl:attribute-set>
. У этого элемента два атрибута:
• name
(обязательный). Имя набора атрибутов. Устанавливается в QName
;
• use-attribute-sets
(необязательный). Имена других наборов атрибутов, которые вы хотите включить в этот набор. Устанавливается в список QName
, разделенных символами-разделителями.
Элемент <xsl:attribute-set>
содержит элементы <xsl:attribute>
, по одному для каждого нового создаваемого атрибута. При использовании <xsl:attribute-set>
для создания нового набора атрибутов элемента нужно задать имя набору. Затем при создании нового элемента для использования набора атрибутов это имя можно присваивать атрибуту use-attribute-sets
элементов <xsl:copy>
, <xsl:element>
, <xsl:for-each>
и даже самого элемента <xsl:attribute-set>
.
Ранее в текущей главе мы уже рассматривали один пример применения наборов атрибутов в JavaScript при создании шаблона. В том примере я при помощи набора атрибутов задавал все атрибуты HTML-кнопок планет и затем создавал их, используя этот набор атрибутов в элементе <xsl:element>
:
<BODY>
<CENTER>
<H1>The Mass Page</H1>
</CENTER>
<xsl:for-each select="PLANET">
<P/>
<xsl:element name="input" use-attribute-sets="attribs"/>
</xsl:for-each>
<P/>
<P/>
<DIV></DIV>
</BODY>
</HTML>
</xsl:template>
<xsl:attribute-set name="attribs">
<xsl:attribute name="type">BUTTON</xsl:attribute>
<xsl:attribute name="value"><xsl:value-of select="NAME"/></xsl:attribute>
<xsl:attribute name="onclick"><xsl:value-of select="NAME"/>()</xslt:attribute>
</xsl:attribute-set>
В результирующем документе такой набор атрибутов был добавлен каждой кнопке HTML:
<Р></Р>
<input type="BUTTON"value="Mercury">
<P></P>
<input type="BUTTON" value="Venus">
<P></P>
<input type='BUTTON" value="Earth">
В листинге 6.11 я воспользуюсь набором атрибутов для нумерации планет в planets.xml
. Каждому элементу <PLANET>
я добавил два атрибута: number
и total
. В атрибуте number
будет храниться номер планеты начиная с 1, а атрибут total
будет содержать общее число планет в planets.xml
, которое можно найти при помощи функции count
(мы рассмотрим ее в главе 8).
Листинг 6.11. Применение <xsl:attribute-set>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version=1.0">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="*">
<xsl:copy>
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:template match="PLANET">
<xsl:copy use-attribute-sets="numbering">
<xsl:apply-templates/>
</xsl:copy>
</xsl:template>
<xsl:attribute-set name="numbering">
<xsl:attribute name="number"><xsl:number/></xsl:attribute>
<xsl:attribute name="total"><xsl:value-of select="count(//PLANET)"/>
</xsl:attribute>
</xsl:attribute-set>
</xsl:stylesheet>
Обратите внимание на то, что в результирующем документе каждый элемент <PLANET>
имеет атрибуты number
и total
:
<?xml version="1.0" encoding="UTF-8"?> <PLANETS>
<PLANET number="1" total="3">
<NAME>Mercury</NAME> <MASS>.0553</MASS> <DAY>58.65</DAY> <RADIUS>1516</RADIUS> <DENSITY>.983</DENSITY> <DISTANCE>43.4</DISTANCE> </PLANET>
<PLANET number="2" total="3">
<NAME>Venus</NAME> <MASS>.815</MASS> <DAY>116.75</DAY> <RADIUS>3716</ RADIUS> <DENSITY>.943</DENSITY> <DISTANCE>66.8</DISTANCE> </PLANET>
<PLANET number="3" total="3"> <NAME>Earth</NAME> <MASS>1</MASS> <DAY>1</DAY> <RADIUS>2107</RADIUS> <DENSITY>1</DENSITY> <DISTANCE>128.4</DISTANCE> </PLANET>
</PLANETS>
- Элемент
- Изменение структуры документа на основе входных данных
- Элемент : создание новых элементов на этапе выполнения
- Элемент : создание новых атрибутов
- Элемент : создание комментариев
- Элемент : создание инструкций обработки
- Элемент : создание нескольких выходных документов
- Элемент : создание объявлений пространств имен
- Элемент : создание наборов атрибутов
- Пропуск объявления XML и создание фрагментов XML
- Создание уникальных идентификаторов при помощи generate-id
- Создание разделов CDATA
- Установка кодировки символов
- Режимы: форматирование в зависимости от контекста
- Элемент xsl:number
- Элемент : создание комментариев
- Элемент : создание объявлений пространств имен
- Элемент : создание новых атрибутов
- Элемент xsl:attribute-set
- Создание файлов с блокировкой
- Создание свободно позиционируемых элементов
- 12. Лекция: Создание приложений с графическим интерфейсом пользователя.
- Создание объектов Collection
- 7.4.2.4. Создание своего первого LiveCD
- 4.2. Создание трехмерной модели и построение горизонтальной проекции детали
- 7.4.2. Создание собственного LiveCD