XSLT
Шрифт:
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
.
.
.
Каждый
<PLANET>
имеет дочерние узлы <NAME>
, <MASS>
, <RADIUS>
и <DAY>
, и я хочу обрабатывать их именно в таком порядке — для того чтобы они добавлялись в HTML-таблицу в соответствии с заголовками таблицы. Для задания порядка их обработки я поместил элементы <xsl:value-of>
(листинг 2.5). Листинг 2.5. planets.xsl
<?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>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<xsl:apply-templates/>
</TABLE>
</BODY>
</HTML>
</xsl:template>
<xsl:template match="PLANET">
<TR>
<TD><xsl:value-of select="NAME"/></TD>
<TD><xsl:value-of select="MASS"/></TD>
<TD><xsl:value-of select="RADIUS"/></TD>
<TD><xsl:value-of select="DAY"/></TD>
</TR>
</xsl:template>
</xsl:stylesheet>
Это все, что нам нужно; вот результат:
<HTML>
<HEAD>
<TITLE>
The Planets Table
</TITLE>
</HEAD>
<BODY>
<H1>
The Planets Table
</H1>
<TABLE BORDER="2">
<TR>
<TD>Name</TD>
<TD>Mass</TD>
<TD>Radius</TD>
<TD>Day</TD>
</TR>
<TR>
<TD>Mercury</TD>
<TD>.0553</TD>
<TD>1516</TD>
<TD>58.65</TD>
</TR>
<TR>
<TD>Venus</TD>
<TD>.815</TD>
<TD>3716</TD>
<TD>116.75</TD>
</TR>
<TR>
<TD>Earth</TD>
<TD>1</TD>
<TD>2107</TD>
<TD>1</TD>
</TR>
</TABLE>
</BODY>
</HTML>
Это
практически то, что требовалось. Если взглянуть на рис. 2.2, видно, что в этом HTML-файле не выведены значения атрибутаUNITS
, который присутствует у каждого элемента (кроме атрибута <NAME>
) в planets.xml
: Рис. 2.2. Planets.html без атрибутов в Internet Explorer
<?xml version="1.0"?>
<?xml-stylesheet type="text/xml" href="#"?>
<PLANETS>
<PLANET>
<NAME>Mercury</NAME>
<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><!--В перигелии-->
</PLANET>
.
.
.
В главе 3, в которой шаблоны рассмотрены более подробно, будет показано, как извлекать значения атрибутов из элементов XML.
Однако перед тем, как начать углубляться в работу с шаблонами, необходимо еще изучить достаточно много материала о таблицах стилей в общем. Например, в рабочий проект XSLT 1.1 включена поддержка рекомендации XML Base, а это значит, что она также появится и в XSLT 2.0.
Поделиться с друзьями: