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

(именами или обобщенными именами с символами подстановок).

Фактически элемент

является элементом по умолчанию для всех элементов в XSLT. Если вы использовали элемент
, все равно можно указать, в каком элементе или элементах нужно сохранить узлы-разделители, установив атрибут
elements
элемента
в список этих элементов:

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

Обсужденные средства удаления и сохранения разделителей могут показаться слишком сложными для форматирования выходных документов выравнивающими пробелами, но, к счастью, существует простой способ: атрибут

indent
элемента
позволяет автоматически выровнять выходной документ.

Автоматическое выравнивание

Элемент

поддерживает атрибут
indent
который устанавливается в «yes» или «no», и указывает процессору XSLT, нужно ли выравнивать результирующий документ. Как правило, выравнивание результирующего документа не имеет большого значения, поскольку с ним работает приложение, которому все равно, выровнен документ или нет, как мы видели в примерах преобразований XML- XML и XML-HTML. Однако иногда требуется представить результирующий документ в виде простого текста, и в таких случаях выравнивание документа для отображения иерархической структуры может оказаться удобным.

Способ работы процессора XSLT с переменной выравнивания не регламентируется W3C и зависит от процессора, поэтому для получения требуемого результата нужно экспериментировать. Пусть, например, у нас есть версия

planets.xml
без какого-либо выравнивания:

Mercury

.0553

58.65

1516

.983

43.4

Venus

.815

116.75

3716

.943

66.8

Earth

1

1

2107

1

128.4

При помощи элемента

можно указать процессору XSLT осуществлять выравнивание документа при преобразовании его в HTML (листинг 3.6).

Листинг 3.6. Таблица стилей, задающая выравнивание

The Planets Table

The Planets Table

NameMassRadiusDay>/TD>

Результат применения таблицы с использованием процессора Saxon (в котором особенно хорошо реализовано выравнивание) с требуемым выравниванием:

</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

Как видите, в XSLT обработке символов-разделителей приходится уделять достаточное внимание, но процедура упрощается, если вы знаете, что происходит.

ВЫРАВНИВАНИЕ ДОКУМЕНТОВ В ЭТОЙ КНИГЕ

Способ выравнивания документов зависит от конкретного процессора XSLT. В этой книге документы выровнены для удобочитаемости, даже если в действительности документы не были выровнены процессором XSLT.

Правила по умолчанию в шаблоне

Взгляните на следующую таблицу стилей XSLT — в ней заданы правила для выбора корневого узла, узлов

и узлов
:

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



<