XSLT — страница 64 из 124

>

Earth

1

1

2107

1

128.4

Earth

1

1

2107

1

128.4

С другой стороны, при использовании оси

following-sibling
в результирующий документ будут скопированы только следующие братья, то есть только элементы
, как мы увидим в следующем разделе.

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

Ось

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

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

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

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

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

Venus

.815

116.75

3716

.943

66.8

Earth

1

1

2107

1

128.4

Earth

1

1

2107

1

128.4

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

Ось

namespace
содержит узлы пространств имен контекстного узла. Заметьте, что эта ось пуста, если контекстным узлом не является элемент. У элемента присутствует узел пространства имен для:

• каждого атрибута элемента, чье имя начинается с «xmlns:»;

• каждого атрибута элемента-предка, чье имя начинается с «xmlns:» (конечно, если сам элемент или ближайший предок не объявит пространство имен заново);

• атрибута

xmlns
, если элемент или предок имеет атрибут
xmlns
.

В следующем примере (листинг 7.10) я хочу отобразить пространство имен элемента

в результирующем документе, и в исходном документе я присвоил пространству имен значение «http://www.starpowder.com».

Листинг 7.10. planets.xml с объявлением пространства имен

Mercury

.0553

58.65

1516

.983

43.4

 .

 .

 .

Вот таблица стилей (листинг 7.11), в которой я проверяю пространства имен, используемые в элементе

.

Листинг 7.11. Применение оси namespace в planets.xml

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

А вот результирующий документ (заметьте, что вид документа может меняться в зависимости от процессора XSLT):

http://www.starpowder.com

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

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

Предположим, что я хочу изменить содержимое элемента Земли

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

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

 xmlns:xsl="http://www.w3.org/1999/XSL/Transform">


The mass of Earth is set to 1.

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

Mercury

.0553

58.65

1516

.983

43.4