Вход/Регистрация
Технология XSLT
вернуться

Валиков Алексей Н.

Шрифт:

Именованные наборы атрибутов можно использовать, указывая их имена в значении атрибута

use-attribute-sets
, который может присутствовать в элементах
xsl:element
,
xsl:copy
и
xsl:attribute-set
, а также в литеральных результирующих элементах. В атрибуте
use-attribute-sets
через пробел перечисляются имена наборов атрибутов, которые должны быть использованы в данном элементе.

Включение набора атрибутов в элемент равносильно простому копированию элементов

xsl:attribute
, определенных в соответствующих элементах
xsl:attribute-set
.

Пример

Предположим, что во входящем документе нам нужно вывести структуру, состоящую из элементов с именем

element
, атрибут
name
которых равен имени, атрибут
attr-count
 — количеству атрибутов, а атрибут
node-count
— количеству дочерних узлов соответствующего элемента.

Листинг 7.8. Входящий документ

<a b="1" c="2">

 <d e="3" f="4" g="5"/>

</a>

Листинг 7.9. Преобразование

<xsl:stylesheet

 version="1.0"

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

 <xsl:output indent="yes"/>

 <xsl:attribute-set name="attrs">

<xsl:attribute name="attr-count">

<xsl:value-of select="count(@*)"/>

</xsl:attribute>

 </xsl:attribute-set>

 <xsl:attribute-set name="elements">

<xsl:attribute name="name">

<xsl:value-of select="name"/>

</xsl:attribute>

<xsl:attribute name="node-count">

<xsl:value-of select="count(*)"/>

</xsl:attribute>

 </xsl:attribute-set>

 <xsl:template match="*">

<xsl:element name="element"

use-attribute-sets="elements attrs">

<xsl:apply-templates select="*"/>

</xsl:element>

 </xsl:template>

</xsl:stylesheet>

Листинг 7.10. Выходящий документ

<?xml version="1.0" encoding="utf-8"?>

<element name="a" node-count="1" attr-count="2">

 <element name="d" node-count="0" attr-count="3"/>

</element>

В этом преобразовании определение элемента

<xsl:element name="element"

 use-attribute-sets="elements attrs">

 <xsl:apply-templates select="*"/>

</xsl:element>

равносильно определению

<xsl:element name="element">

 <xsl:attribute name="name">

<xsl:value-of select="name"/>

 </xsl:attribute>

 <xsl:attribute name="node-count">

<xsl:value-of select="count(*)"/>

 </xsl:attribute>

 <xsl:attribute name="attr-count">

<xsl:value-of select="count(@*)"/>

 </xsl:attribute>

 <xsl:apply-templates select="*"/>

</xsl:element>

Как уже было сказано, элемент

xsl:attribute-set
может также использовать другие наборы атрибутов при помощи
use-attribute-sets
. Например, в предыдущем преобразовании набор атрибутов
elements
мог быть определен как:

<xsl:attribute-set name="elements"

 use-attribute-sets="attrs">

 <xsl:attribute name="name">

<xsl:value-of select="name"/>

 </xsl:attribute>

  • Читать дальше
  • 1
  • ...
  • 133
  • 134
  • 135
  • 136
  • 137
  • 138
  • 139
  • 140
  • 141
  • 142
  • 143
  • ...

Ебукер (ebooker) – онлайн-библиотека на русском языке. Книги доступны онлайн, без утомительной регистрации. Огромный выбор и удобный дизайн, позволяющий читать без проблем. Добавляйте сайт в закладки! Все произведения загружаются пользователями: если считаете, что ваши авторские права нарушены – используйте форму обратной связи.

Полезные ссылки

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

Подпишитесь на рассылку: