Книга: XSLT

count()

count()

Функция count подсчитывает число узлов в наборе узлов

number count(node-set)

Функция принимает набор узлов и возвращает количество узлов в этом наборе. Следующий пример применения функции count мы уже рассматривали в главе 6. В этом случае набор узлов образован из всех элементов <PLANET> в planets.xml; я получил его при помощи пути расположения «//PLANET»:

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

Оглавление книги

Оглавление статьи/книги

Генерация: 0.047. Запросов К БД/Cache: 0 / 2
поделиться
Вверх Вниз