</H1>

  <TABLE BORDER='2'>

   <TR>

    <TD>Name</TD>

    <TD>Mass</TD>

    <TD>Radius</TD>

    <TD>Day</TD>

   </TR>

   <TR>

    <TD>Mercury<IMG SRC='http://starpowder.com/image1.gif'></TD>

    <TD>.0553 (Earth = 1)</TD>

    <TD>1516 miles</TD>

    <TD>58.65 days</TD>

   </TR>

   <TR>

    <TD>Venus<IMG SRC='http://starpowder.com/image2.gif'></TD>

    <TD>.815 (Earth = 1)</TD>

    <TD>3716 miles</TD>

    <TD>116.75 days</TD>

   </TR>

   <TR>

    <TD>Earth<IMG SRC='http://starpowder.com/image3.gif'></TD>

    <TD>1 (Earth = 1)</TD>

    <TD>2107 miles</TD>

    <TD>1 days</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

На этом мы заканчиваем рассмотрение функций XSLT. Я перехожу к функциям XPath, начиная с функций для работы с наборами узлов.

Функции XPath для работы с наборами узлов

Следующие функции XPath работают с наборами узлов:

• count(node-set). Возвращает число узлов в наборе узлов;

• id(string ID). Возвращает набор узлов элемента, ID которого совпадает с переданной функции строкой, или пустой набор узлов, если таковых элементов не оказалось;

• last(). Возвращает число узлов в наборе узлов;

• local-name(node-set). Возвращает локальное имя первого узла в наборе узлов;

• name(node-set). Возвращает полное имя первого узла в наборе узлов;

• namespace-uri(node-set). Возвращает URI пространства имен первого узла в наборе узлов;

• position(). Возвращает позицию контекстного узла в контекстном наборе узлов, начиная с 1.

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>

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату