А вот результат:

<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 перигелии-- >

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

0

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

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