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

xsl:template match="PLANET">

Значение узла, содержащего текст, будет просто текстом, поэтому результат применения этой таблицы стилей к

planets.xml
следующий:

Mercury

Venus

Earth

АТРИБУТ DISABLE-OUTPUT-ESCAPING

Атрибут disable-output-escaping элемента более подробно рассмотрен в главе 3.

Предположим, нам нужно осуществить нечто более сложное — например, преобразовать данные из

planets.xml
в HTML-таблицу в новом файле
planets.html
(рис. 2.1), как мы видели в главе 1. Теперь это можно сделать при помощи
.

Рис. 2.1. Planets.html в Internet Explorer


Здесь важно учесть один момент. В

planets.xml
формально не задан порядок элементов
,
,
и
, однако важно, чтобы эти элементы обрабатывались в определенном порядке в соответствии с заголовками таблицы. Поэтому я буду использовать элементы
в том порядке, в котором они требуются в таблице HTML.

Таким образом, чтобы создать HTML-таблицу, изображенную на рис. 2.1, я сначала ищу элемент

и затем заменяю его на HTML для создания самой HTML-таблицы. Элемент
— дочерний элемент корневого узла, и поскольку на корневой узел можно сослаться через «/», на элемент
можно сослаться непосредственно через "
/PLANETS
", без необходимости предварительно применять шаблон для корневого узла. Это пример выражения XPath, большое число подобных мы также увидим в главе 4.

Ниже приведен пример того, как я начал создавать HTML-таблицу путем выбора элемента

непосредственно как "
/PLANETS
" — заметьте, что для применения шаблонов к любым дочерним узлам
я использовал
:

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

</b></code></pre></p><p><pre><code><b>     The Planets Table</b></code></pre></p><p><pre><code><b>

     The Planets Table

NameMassRadiusDay

 .

 .

 .

Каждый дочерний узел

имеет дочерние узлы
,
,
и
, и я хочу обрабатывать их именно в таком порядке — для того чтобы они добавлялись в HTML-таблицу в соответствии с заголовками таблицы. Для задания порядка их обработки я поместил элементы
(листинг 2.5).

Листинг 2.5. planets.xsl

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

</code></pre></p><p><pre><code>     The Planets Table</code></pre></p><p><pre><code>

     The Planets Table

NameMassRadiusDay


Это все, что нам нужно; вот результат:

</code></pre></p><p><pre><code>   The Planets Table</code></pre></p><p><pre><code>

   The Planets Table

NameMassRadiusDay
Mercury.0553151658.65
Venus.8153716116.75
Earth121071



Это практически то, что требовалось. Если взглянуть на рис. 2.2, видно, что в этом HTML-файле не выведены значения атрибута

UNITS
, который присутствует у каждого элемента (кроме атрибута
) в
planets.xml
:


Рис. 2.2. Planets.html без атрибутов в Internet Explorer


Mercury

.0553

58.65

1516