Читать «Java 7 (Наиболее полное руководство)» онлайн - страница 486

Ильдар Шаукатович Хабибуллин

<?xml version="1.0" encoding="UTF-8"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="">

<xsl:output method="text" encoding="CP866" />

<xsl:template match="person">

<xsl:apply-templates />

</xsl:template>

<xsl:template match="name">

<xsl:value-of select="@first" /> <xsl:text> </xsl:text> <xsl:value-of select="@second" /> <xsl:text> </xsl:text>

<xsl:value-of select="@surname" />

</xsl:template>

<xsl:template match="address">

<xsl:value-of select="street" /> <xsl:text> </xsl:text> <xsl:value-of select="city" /> <xsl:text> </xsl:text> <xsl:value-of select="zip" />

</xsl:template>

<xsl:template match="phone-list">

<xsl:value-of select="work-phone" /> <xsl:text>&#xA;</xsl:text> <xsl:value-of select="home-phone" /> <xsl:text>&#xA;</xsl:text> </xsl:template>

</xsl:stylesheet>

Мы не будем в данной книге заниматься языком XSL — одно его описание будет толще всей этой книги. На русский язык переведена "библия" XSLT [20]. Ее автор Майкл Кэй (Michael H. Kay) создал и свободно распространяет популярный XSLT -процессор Saxon, .

Преобразование документа XML в HTML

С помощью языка XSL и методов класса Transformer можно легко преобразовать документ XML в документ HTML. Достаточно написать соответствующую таблицу стилей. В листинге 28.15 показано, как это можно сделать для адресной книжки листинга 28.2.

Листинг 28.15. Таблица стилей для преобразования XML в HTML

<?xml version="1.0" encoding="Windows-1251"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="">

<xsl:output method="html" encoding="Windows-1251"/>

<xsl:template match="/">

<html><head><title>ADpecHaH книжка</title></head> <body><h2>Фамилии, адреса и телефоны</!а2>

<xsl:apply-templates />

</body></html>

</xsl:template>

<xsl:template match="name">

<p />

<xsl:value-of select="@first" /> <xsl:text> </xsl:text> <xsl:value-of select="@second" /> <xsl:text> </xsl:text> <xsl:value-of select="@surname" /> <br />

</xsl:template>

<xsl:template match="address">

<br />

<xsl:value-of select="street" /> <xsl:text> </xsl:text>

<xsl:value-of select="city" /> <xsl:text> </xsl:text>

<xsl:value-of select="zip" /> <br />

</xsl:template>

<xsl:template match="phone-list">

Рабочий: <xsl:value-of select="work-phone" /> <br />

Домашний: <xsl:value-of select="home-phone" /> <br />

</xsl:template>

</xsl:stylesheet>

Эту таблицу стилей можно записать в файл, например, ntb.xsl, и сослаться на него в документе XML, описывающем адресную книжку:

<?xml version="1.0" encoding="Windows-1251"?>