<TD>needs</TD>

   <TD>no</TD>

   <TD>introduction.</TD>

  </TR>

 </xsl:template>

 <xsl:template match='PLANET[NAME!='Earth']'>

  <TR>

   <TD><xsl:value-of select='NAME'/></TD>

   <TD><xsl:apply-templates select='MASS'/></TD>

   <TD><xsl:apply-templates select='RADIUS'/></TD>

   <TD><xsl:apply-templates select='DAY'/></TD>

  </TR>

 </xsl:template>

 <xsl:template match='MASS'>

  <xsl:value-of select='.'/>

  <xsl:text> </xsl:text>

  <xsl:value-of select='@UNITS'/>

 </xsl:template>

 <xsl:template match='RADIUS'>

  <xsl:value-of select='.'/>

  <xsl:text> </xsl:text>

  <xsl:value-of select='@UNITS'/>

 </xsl:template>

 <xsl:template match='DAY'>

  <xsl:value-of select='.'/>

  <xsl:text> </xsl:text>

  <xsl:value-of select='@UNITS'/>

 </xsl:template>

</xsl:stylesheet>

Вот результат:

<HTML>

 <HEAD>

  <TITLE>

   The Planets Table

  </TITLE>

 </HEAD>

 <BODY>

  <Н1>

   The Planets Table

  </Н1>

  <TABLE BORDER='2'>

   <TR>

    <TD>Name</TD>

    <TD>Mass</TD>

    <TD>Radius</TD>

    <TD>Day</TD>

   </TR>

   .

   .

   .

   <TR>

    <TD>Earth</TD>

    <TD>needs</TD>

    <TD>no</TD>

    <TD>introduction.</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

Результат можно увидеть на рис. 4.1.

Рис. 4.1. Применение предикатов XPath

В следующем примере используется логическая операция >. Это правило применяется ко всем элементам <PLANET> после позиции 5:

<xsl:template match='PLANET[position() > 5]'>

 <xsl:value-of select='.'/>

</xsl:template>

Имеется также функция true, всегда возвращающая значение true, и функция false, всегда возвращающая значение false. Функция not инвертирует логический смысл выражения, как в следующем случае, где я выбираю все элементы <PLANET>, кроме последнего:

<xsl:template match='PLANET[not(position() = last())]'>

 <xsl:value-of select='.'/>

</xsl:template>

Наконец, функция lang возвращает истину или ложь в зависимости от того, является ли язык контекстного узла (определяемый атрибутами xml:lang) таким же, как язык, который передан в эту функцию.

Предикаты: числа

В XPath числа хранятся в формате числа с плавающей точкой двойной точности. (Технически все числа XPath хранятся в 64-разрядном формате IEEE числа с плавающей точкой двойной точности, floating- point double.) Все числа хранятся как числа с двойной точностью — даже целые числа, как 5 в рассматриваемом примере:

<xsl:template match='PLANET[position() > 5]'>

 <xsl:value-of select='.'/>

</xsl:template>

Над числами можно производить ряд операций:

• + сложение;

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

0

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

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