<B>

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

   <xsl:text> </xsl:text>

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

  </B>

 </xsl:template>

 <xsl:template match='RADIUS' mode='fancy'>

  <B>

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

   <xsl:text> </xsl:text>

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

  </B>

 </xsl:template>

 <xsl:template match='DAY' mode='fancy'>

  <B>

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

   <xsl:text> </xsl:text>

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

  </B>

 </xsl:template>

</xsl:stylesheet>

Вот результат. Заметьте, что одни только данные Земли выделены полужирным:

<HTML>

 <HEAD>

  <TITLE>

   The Fancy Planets Table

  </TITLE>

 </HEAD>

 <BODY>

  <H1>

   The Fancy Planets Table

  </Н1>

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

   <TR>

    <TD>Venus</TD>

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

    <TD>3716 miles</TD>

    <TD>116.75 days</TD>

   </TR>

   <TR>

    <TD><B>Earth</B></TD>

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

    <TD><B>2107 miles</B></TD>

    <TD><B>1 days</B></TD>

   </TR>

  </TABLE>

 </BODY>

</HTML>

Этот документ показан на рис. 6.4.

Рис. 6.4. Применение режимов обработки 

Режимы также очень удобны в том случае, когда требуется обработать один и тот же документ более одного раза; классический пример — создание оглавления.

Следующий пример демонстрирует создание оглавления. Я добавил в planets.xml оглавление в элементе <TOC> (table of contents, оглавление), имеющем три элемента <ENTRY> для каждой из планет. Заметьте, что здесь мне необходимо применить два шаблона, выбирающие элементы <PLANET>, — один для создания оглавления и еще один для копирования всех элементов <PLANET> в результирующий документ — я использую режимы для того, чтобы их различать. Начну с установки режима в «toc» и применения шаблона, который поддерживает этот режим и создает оглавление:

<?xml version='1.0'?>

<xsl:stylesheet version='1.0'

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

 <xsl:output method='xml'/>

 <xsl:template match='PLANETS'>

  <PLANETS>

   <TOC>

    <xsl:apply-templates mode='toc'/>

   </TOC>

   .

   .

   .

  </PLANETS>

 </xsl:template>

 <xsl:template match='PLANET' mode='toc'>

  <ENTRY>

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

  </ENTRY>

 </xsl:template>

 .

 .

 .

Затем я применяю общий шаблон без каких-либо режимов обработки ко всем элементам и атрибутам,

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

0

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

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