XSLT
Шрифт:
<xsl:apply-templates/>
</xsl:element>
</xsl:template>
</xsl:stylesheet>
Этот способ намного чище и проще. Ниже показан результат, в котором на этапе выполнения созданы новые элементы с именами различных планет:
<?xml version="1.0" encoding="UTF-8"/>
<?xml-stylesheet type="text/xml" href="#"?>
<PLANETS>
<Mercury>
<MASS UNITS="(Earth = 1)">.0553</MASS>
<DAY UNITS="days">58.65</DAY>
<RADIUS UNITS="miles">1516</RADIUS>
<DENSITY UNITS="(Earth = 1)">.983</DENSITY>
<DISTANCE UNITS="million miles">43.4</DISTANCE><!--B перигелии-->
</Mercury>
<Venus>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--B перигелии-->
</Venus>
<Earth>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->
</Earth>
</PLANETS>
Таким способом можно создавать новые элементы и задавать им имя во время преобразования XSLT.
Элемент <xsl:attribute>: создание новых атрибутов
Аналогично тому, как вы можете создавать новые элементы при помощи
<xsl:element>
и устанавливать имя и содержимое элемента на этапе выполнения, при помощи элемента <xsl:attribute>
это можно делать для атрибутов. У элемента два атрибута:
•
name
(обязательный). Имя нового атрибута. Принимает значение шаблона значений атрибута, возвращающего QName
; •
namespace
(необязательный). Пространство имен нового атрибута. Устанавливается в URI. Этот элемент содержит в себе тело шаблона, которое устанавливает значение атрибута.
В листинге 6.7 я создаю новые элементы
<PLANET>
с атрибутами, которые соответствуют различным названиям планет (значения берутся из атрибута COLOR
исходных элементов <PLANET>
). Листинг 6.7. Применение <xsl:attribute>
<?xml version="1.0"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="PLANETS">
<HTML>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
<xsl:apply-templates select="PLANET"/>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<PLANET>
<xsl:attribute name="{NAME}">
<xsl:value-of select="@COLOR"/>
</xsl:attribute>
</PLANET>
</xsl:template>
</xsl:stylesheet>
Как можно видеть в приведенном ниже результате, я создал новые атрибуты «с ходу», используя названия планет:
<НТМL>
<HEAD>
<TITLE>
Planets
</TITLE>
</HEAD>
<BODY>
<PLANET Mercury="RED">
</PLANET>
<PLANET Venus="WHITE">
</PLANET>
<PLANET Earth="BLUE">
</PLANET>
</BODY>
</HTML>
Элемент <xsl:comment>: создание комментариев
По ходу дела можно также создавать и комментарии при помощи элемента
<xsl:comment>
. Этот элемент не имеет атрибутов и содержит тело шаблона, задающего текст комментария.
Поделиться:
Популярные книги
Загадка башни
9. Игра не для слабых
Фантастика:
рпг
фэнтези
попаданцы
5.00
рейтинг книги
На границе империй. Том 8. Часть 2
13. Фортуна дама переменчивая
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
#Бояръ-Аниме. Газлайтер. Том 36
36. История Телепата
Фантастика:
боевая фантастика
аниме
фэнтези
5.00
рейтинг книги
Сильнейший Столп Империи. Книга 5
5. Сильнейший Столп Империи
Фантастика:
аниме
фэнтези
фантастика: прочее
попаданцы
5.00
рейтинг книги
Трапеция
Проза:
современная проза
5.00
рейтинг книги
"Дальние горизонты. Дух". Компиляция. Книги 1-25
Собрание сочинений
Фантастика:
фэнтези
боевая фантастика
попаданцы
5.00
рейтинг книги
Юнлинг
Фантастика:
героическая фантастика
космическая фантастика
попаданцы
8.35
рейтинг книги
На границе империй. Том 10. Часть 13
Вселенная EVE Online
Фантастика:
космическая фантастика
попаданцы
5.00
рейтинг книги
Бастард Императора. Том 7
7. Бастард Императора
Фантастика:
городское фэнтези
попаданцы
аниме
фэнтези
5.00
рейтинг книги
Наследие Маозари 9
9. Наследие Маозари
Фантастика:
попаданцы
постапокалипсис
рпг
сказочная фантастика
6.25
рейтинг книги
Страх
2. Дети Арбата
Проза:
историческая проза
9.49
рейтинг книги
Инженер Петра Великого
1. Инженер Петра Великого
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Дважды одаренный. Том IV
4. Дважды одаренный
Фантастика:
городское фэнтези
альтернативная история
аниме
7.00
рейтинг книги
Атаман царского Спецназа
Боевая фантастика Ю. Корчевского
Фантастика:
боевая фантастика
попаданцы
альтернативная история
6.00