</HEAD>

 <BODY>

  <H1>

   The Planets Table

  </H1>

  <TABLE BORDER='2'>

   <TR>

    <TD>Name</TD>

    <TD>Mass</TD>

    <TD>Radius</TD>

    <TD>Day</TD>

   </TR>

   <TR>

    <TD>Mercury</TD>

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

    <TD>1516 miles</TD>

    <TD>58.65 days</TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

В следующем примере в элемент <PLANET> Земли были добавлены атрибуты COLOR (цвет) и POPULATED (населена):

<PLANET COLOR='blue' POPULATED='yes'>

 <NAME>Earth</NAME>

 <MASS UNITS='(Earth = 1)'>1</MASS>

 <DAY UNITS='days'>1</DAY>

 <RADIUS UNITS='miles'>2107</RADIUS>

 <DENSITY UNITS='(Earth = 1)'>1</DENSITY>

 <DISTANCE UNITS='million miles'>1284</DISTANCE><!--B перигелии-- >

</PLANET>

Как выбрать только элементы, имеющие оба атрибута, COLOR и POPULATED? Можно применить предикат '[@COLOR and @POPULATED]'. Чтобы убрать другие элементы — так, чтобы правило по умолчанию не поместило их текст в результирующий документ, — можно применить предикат '[not(@COLOR) or not(@POPULATED)] ', как показано в листинге 4.11.

Листинг 4.11. Выбор только элементов с двумя атрибутами COLOR и POPULATED

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

 xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>

 <xsl:template match='/PLANETS'>

  <HTML>

   <HEAD>

    <TITLE>

     Colorful, Populated Planets

    </TITLE>

   </HEAD>

   <BODY>

    <H1>

     Colorful, Populated Planets

    </H1>

    <TABLE BORDER='2'>

     <TR>

      <TD>Name</TD>

      <TD>Mass</TD>

      <TD>Radius</TD>

      <TD>Day</TD>

     </TR>

     <xsl:apply-templates/>

    </TABLE>

   </BODY>

  </HTML>

 </xsl:template>

 <xsl:template match='PLANET[@COLOR and @POPULATED]'>

  <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='PLANET[not(@COLOR) or not (@POPULATED)]'>

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

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

0

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

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