Книга: XSLT

Применение оси 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>

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


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