А вот результат:
<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>
<TR>
<TD>Earth</TD>
<TD>1 (Earth = 1)</TD>
<TD>2107 miles</TD>
<TD>1 days</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Этот документ показан на рис. 4.3.

Рис. 4.3. Применение предикатов XPath для проверки атрибутов
В следующем примере я копирую planets.xml
в новый XML-документ и изменяю текст в элементе <NAME>
Венеры на 'The Planet of Love
' (планета любви). Для этого я сначала копирую в результирующий документ все узлы и атрибуты:
<?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='@*|node()'>
<xsl:copy>
<xsl:apply-templates select='@*|node()'/>
</xsl:copy>
</xsl:template>
.
.
.
Теперь я добавлю новое правило, выбирающее элементы <NAME>
с текстом 'Venus
' (Венера) по образцу 'NAME[text()='Venus']
'. Хотя элементы <NAME>
удовлетворяют обоим правилам этой таблицы стилей, правило с образцом 'NAME[text()='Venus']
' осуществляет более узкий выбор, поэтому для элемента <NAME>
Венеры процессор XSLT применит его:
<?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='@*|node()'>
<xsl:copy>
<xsl:apply-templates select='@*|node()'/>
</xsl:copy>
</xsl:template>
<xsl:template match='NAME[text() = 'Venus']'>
<NAME>
The Planet of Love
</NAME>
</xsl:template>
</xsl:stylesheet>
И вот результат:
<?xml version='1.0' encoding='utf-8'?>
<?xml-stylesheet type='text/xml' href='planets.xsl'?>
<PLANETS>
<PLANET>
<NAME>Mercury</NAME>
<MASS UNITS='(Earth = 1)'>.0553</MASS>
<DAY UNITS='days'>58.65</DAY>
<RADIUS UNITS='miles'>1516</RADIUS>
<DENSITY UNITS='(Earth = 1)'>.983</DENSITY>
<DISTANCE UNITS='million miles'>43.4</DISTANCE><!--B перигелии-- >
</PLANET>
<PLANET>
<NAME>
The Planet of Love
</NAME>
<MASS UNITS='(Earth = 1)'>.815</MASS>
<DAY UNITS='days'>116.75</DAY>
<RADIUS UNITS='miles'>3716</RADIUS>
<DENSITY UNITS='(Earth = 1)'>.943</DENSITY>
<DISTANCE UNITS='million miles'>66.8</DISTANCE><!--B перигелии-- >
</PLANET>
<PLANET>
<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'>128.4</DISTANCE><!--B перигелии-- >