=> Главная База Знаний Xslt Применение оси following-sibling


Применение оси following-sibling

Применение оси following-sibling

Ось

following-sibling
содержит всех последующих братьев контекстного узла.

Например, я могу выбрать каждый элемент

<PLANET>
и скопировать в результирующий документ все узлы в оси
following-sibling
следующим образом (листинг 7.9).

Листинг 7.9. Применение оси following-sibling

<?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="PLANET">

  <xsl:for-each select="following-sibling::*">

   <xsl:copy-of select="."/>

  <xsl:for-each>

 </xsl:template>

</xsl:stylesheet>

При этом сначала копируются два узла-брата, следующие за Меркурием (Венера и Земля), затем копируется следующий узел-брат Венеры, Земля. У самой Земли нет следующих за ней братьев, поэтому результат выглядит так:

<?xml version="1.0" encoding="UTF-8"?>

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

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

</PLANET>