Шрифт:
</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>
. Этот элемент не имеет атрибутов и содержит тело шаблона, задающего текст комментария.