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

Холзнер Стивен

Шрифт:

<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
, а атрибут
total
хранит общее количество элементов
<PLANET>
, которое было найдено при помощи
count
:

<?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>

id

Функция id возвращает набор узлов, в котором все узлы имеют такой же ID, как и переданный в эту функцию. Функция применяется следующим образом:

node-set id(id-value)

В функцию передается значение ID, и она возвращает набор узлов с узлами, имеющими этот ID. Заметьте, что вы можете задать несколько ID, разделенных символами-разделителями, и функция вернет набор узлов с элементами, обладающими этими ID.

Следующее правило-пример выбирает текст всех элементов с ID «favorite»:

<xsl:template match = "id('favorite')">

 <H3><xsl:value-of select="."/></H3>

</xsl:template>

Отметьте также, что вы должны объявлять значения ID как в DTD или схеме. Объявление DTD для

planets.xml
, объявляющее ID с именем
id
и присваивающее ему значение «favorite», может выглядеть так:

<?xml version="1.0"?>

<?xml-stylesheet type="text/xml" href="#"?>

<!DOCTYPE PLANETS [

<!ELEMENT PLANET (CUSTOMER)*>

  • Читать дальше
  • 1
  • ...
  • 163
  • 164
  • 165
  • 166
  • 167
  • 168
  • 169
  • 170
  • 171
  • 172
  • 173
  • ...

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

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

  • Моя полка

Контакты

  • chitat.ebooker@gmail.com

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