/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">
Planets
Как можно видеть в приведенном ниже результате, я создал новые атрибуты «с ходу», используя названия планет:
<НТМL>
Planets