=> Главная База Знаний Xslt Count()


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>