Электронный магазин на Java и XML

         

Таблица стилей, генерирующая...



Листинг 1.8. Таблица стилей, генерирующая документ HTML (CDstyle.xsl)

<?xml version="l.0"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl">
<xsl:template match="/">
<TABLE STYLE="border:lpx solid black; width:300px">
<TR STYLE="font-size:10pt; font-family:Verdana; font weight:bold; text-decoration:underline">
<TD>
Title</TD>
<TD>
Artist</TD>
</TR>
<xsl:for-each select="library/cd">
<TR STYLE="font-family:Verdana; font-size:12pt; padding:0px 6px">
<TD>
<xsl lvalue-of select=" title"/>
</TD>
<TD>
<xsl:value-of select="artist"/>
</TD>
</TR>
</xsl:for-each>
</TABLE>


</xsl:template>
</xsl:stylesheet>

Связать таблицы стилей с документом XML можно с помощью инструкции по обработке. Например:

<?xml-stylesheet href="CDstyle.xsl" type="text/xsl"?>

Также вы можете использовать каскадные таблицы стилей (Cascading Style Sheets, CSS) для применения определенного формата к данным XML. В этом случае вы должны связать документ с таблицей стилей с помощью инструкции по обработке, подобной следующей:

<?xml-stylesheet href="CDstyle.ess" type="text/css"?>

В листинге 1.8 показан базовый пример трансформации данных XML с помощью стандартной таблицы стилей. XSLT находит данные, которые соответствуют некоторому образцу, и вставляет их в нужное место шаблона. Поиск соответствия с образцом — очень важная часть XSL. Посмотрим на образец, который применялся во второй части нашего примера:

<xsl:for-each selееt="library/cd">

Эта строка задает цикл по всем экземплярам элемента cd внутри элемента library. Если вы хотите создать разделенный запятыми список всех песен на каждом диске (каждому диску соответствует свой экземпляр элемента cd), вы можете задать еще один цикл внутри приведенного выше цикла, как показано в следующем примере:

... <xsl:for-each select="library/cd">
<TR STYLE="font-family:Verdana; font-size:12pt; padding:0px 6px">
<TD>
<xsllvalue-of select="title"/>
</TD>
<TD>
<xsl:value-of select="artist"/>
</TD>
<TD>
<xsl:for-each select="song">
"<xsl :value-of select="title"/>
" <xsl:if test="context()[not(end())]">
, </xsl:if>
</xsl: for-each>
</TD>
</TR>
</xsl:for-each>
...

Если получившийся документ XML открыть в браузере, поддерживающем XSL, то он будет выглядеть примерно так, как показано на рис. 1.1.



Содержание раздела