в результирующий документ будут скопированы только следующие братья, то есть только элементы
<PLANET>
, как мы увидим в следующем разделе.
Применение оси 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>
При этом сначала копируются два узла-брата, следующие за Меркурием (Венера и Земля), затем копируется следующий узел-брат Венеры, Земля. У самой Земли нет следующих за ней братьев, поэтому результат выглядит так:
содержит узлы пространств имен контекстного узла. Заметьте, что эта ось пуста, если контекстным узлом не является элемент. У элемента присутствует узел пространства имен для:
• каждого атрибута элемента, чье имя начинается с «xmlns:»;
• каждого атрибута элемента-предка, чье имя начинается с «xmlns:» (конечно, если сам элемент или ближайший предок не объявит пространство имен заново);
• атрибута
xmlns
, если элемент или предок имеет атрибут
xmlns
.
В следующем примере (листинг 7.10) я хочу отобразить пространство имен элемента
<PLANET>
в результирующем документе, и в исходном документе я присвоил пространству имен значение «http://www.starpowder.com».
Листинг 7.10. planets.xml с объявлением пространства имен