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

/Mercury>

 .

 .

 .

В этом случае я не знаю имени выходного элемента до времени выполнения, потому и не могу просто применить элемент буквального результата. Я мог бы скомпоновать новый элемент, трактуя его как текст (что и показано в примере ниже, где я вывожу символы, подобные «<», при помощи атрибута

disable-output-escaping
элемента
): 

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


<

>

</

>

Но это грубый способ, при котором разметка рассматривается как простой текст. С другой стороны, зная название планеты, я могу создать новый элемент при помощи (листинг 6.6), получив название новой планеты из атрибута

NAME
следующим образом.

Листинг 6.6. Применение

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


Этот способ намного чище и проще. Ниже показан результат, в котором на этапе выполнения созданы новые элементы с именами различных планет:

.0553

58.65

1516

.983

43.4

.815

116.75

3716

.943

66.8

1

1

2107

1

128.4

Таким способом можно создавать новые элементы и задавать им имя во время преобразования XSLT.

Элемент : создание новых атрибутов

Аналогично тому, как вы можете создавать новые элементы при помощи

и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента
это можно делать для атрибутов. 

У элемента два атрибута:

• 

name
(обязательный). Имя нового атрибута. Принимает значение шаблона значений атрибута, возвращающего
QName
;

• 

namespace
(необязательный). Пространство имен нового атрибута. Устанавливается в URI.

Этот элемент содержит в себе тело шаблона, которое устанавливает значение атрибута.

В листинге 6.7 я создаю новые элементы

с атрибутами, которые соответствуют различным названиям планет (значения берутся из атрибута
COLOR
исходных элементов
).

Листинг 6.7. Применение

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

</code></pre></p><p><pre><code>     Planets</code></pre></p><p><pre><code>


Как можно видеть в приведенном ниже результате, я создал новые атрибуты «с ходу», используя названия планет:

<НТМL>

</code></pre></p><p><pre><code>   Planets</code></pre></p><p><pre><code>

Элемент : создание комментариев

По ходу дела можно также создавать и комментарии при помощи элемента

. Этот элемент не имеет атрибутов и содержит тело шаблона, задающего текст комментария.

В листинге 6.8 я создаю комментарии для замены элементов

; текст комментария включает название планеты.

Листинг 6.8. Применение

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

</code></pre></p><p><pre><code>     Planets</code></pre></p><p><pre><code>


This was the  element

Вот результат:

</code></pre></p><p><pre><code>   Planets</code></pre></p><p><pre><code>

<