Книга: XSLT

Применение оси parent

Применение оси parent

Ось parent (родитель) содержит родителя (и только родителя) контекстного узла, если таковой имеется.

Предположим, что я хочу изменить содержимое элемента Земли <MASS> на «The mass of Earth is set to 1.>> (Масса Земли принимается за 1). В следующем шаблоне (листинг 7.12) для этого проверяется, содержит ли родитель <PLANET> элемента <MASS> элемент <NAME> со строковым значением «Earth».

Листинг 7.12. Применение оси parent

<?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="MASS[parent::node()/NAME='Earth']">
  <MASS>The mass of Earth is set to 1.</MASS>
 </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>Venus</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>The mass of Earth is set to 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 перигелии-->
 </PLANET>
</PLANETS>

Оглавление книги


Генерация: 1.127. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз