<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>
.
.
.
Затем я применяю общий шаблон без каких-либо режимов обработки ко всем элементам и атрибутам,