Главная » Java, Web, XML » Таблицы стилей XSL

0

В документах HTML часто применяются таблицы стилей CSS, задающие общие правила оформления документов HTML: цвет, шрифт, заголовки. Выполнение этих правил придает документам единый стиль оформления.

Для документов XML, в которых вообще не определяются правила визуализации, идея применить таблицы стилей оказалась весьма плодотворной. Таблицы стилей для документов XML записываются на специально сделанной реализации языка XML, названной XSL (XML Stylesheet Language). Все теги документов XSL относятся к пространству имен http://www.w3.org/1999/XSL/Transform. Обычно они записываются с префиксом xsi. Если принят этот префикс, то корневой элемент таблицы стилей XSL будет называться <xsl: stylesheet».

Простейшая таблица стилей выглядит так, как записано в листинге 1.11.

Листинг 1.11. Простейшая таблица стилей XSL

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

<xsl:stylesheet version="l.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform">

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

</xsl:stylesheet»

Здесь только определяется префикс пространства имен xsi и правила вывода, а именно, выводится плоский текст, на что показывает значение text (другие значения — html и xml), в кодировке СР8 66. Такая кодировка выбрана для вывода кириллицы на консоль MS Windows. Объект класса Transformer, руководствуясь таблицей стилей листинга 1.11, просто выводит тела элементов так, как они записаны в документе XML, то есть просто удаляет теги вместе с атрибутами, оставляя их содержимое.

таблицу стилей записываем в файл, например,                              Ссылку на

таблицу стилей можно поместить в документ XML как одну из инструкций по обработке:

<?xml version="1.0" encoding="Windows-1251"?> <?xml-stylesheet type = "text/xsl" href="simple.xsl"?> <notebook>

<!— Продолжение адресной книжки —>

После этого XML-napcep, если он, кроме того, является XSLT- процессором, выполнит преобразование, заданное в файле simple.xsl.

Другой путь — использовать таблицу стилей при создании объекта- преобразователя, например, так, как записано в листинге 1.12.

[ Листинг 1.12. Консольная программа преобразования документа XML

import j ava. io. *; import

import javax.™l. transform, stream. *;

public class SimpleTransform{

public static voidrnin(String[] args)

throws TransformerException{

if (args.length != 2){

System.out.println("Usage: " +

"java SimpleTransform xmlFileName xsltFileName"); System.exit(1);

}

File xmlFile = new File(args[0]);

File xsltFile = new File(args[1]);

Source xmlSource = new StreamSource(xmlFile) ; Source xsltSource = new StreamSource(xsltFile); Result result = new StreamResult(System.out);

TransformerFactory transFact =

TransformerFactory.newInstance();

Transformer trans =

transFact.newTransformer(xsltSource) ;

trans.transform (xmlSource, result) ;

}

}

После компиляции набираем в командной строке java SimpleTransform ntb.xml simple.xsl

и получаем на экране дисплея содержимое тегов документа ntb.xml.

В более сложных случаях просто изменяем таблицу стилей. Например, если мы хотим получить содержимое документа на консоли, то таблицу стилей для объекта-преобразователя класса Transformer надо записать так, как показано в листинге 1.13.

Листинг 1.13. Таблица стилей для показа адресной книжки

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

<xsl:stylesheet version="l.0"

xmlns:xsl="http://www.w3.org/19 9 9/XSL/Trans form"> <xsl: output method="text" encoding="CP866" /> <xsl: templats 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»S#xA; </xsl: text» <xsl:value-of select="home-phone" /> <xsl:text»&#xA;</xsl:text»

</xsl:template»

</xsl:stylesheet»

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

и свободно распространяет популярный XSLT-процессор Saxon, http://users.iclway.co.uk/mhkay/saxon/index.html. Хорошее изложение XSLT сделал Алексей Валиков [2], его книгой вы можете воспользоваться для дальнейшего изучения XSLT. В этой книге вы найдете описание XSLT-процессоров и их сравнение.

Надо заметить, что язык XSL, в котором выделяются правила преобразования XSLT (XSL Transform), правила форматирования XSL FO (XSL Formatting Objects) и язык описания путей к различным частям документов XPath (XML Path Language), бурно развивается, и сделать полное его описание сейчас просто невозможно.

Литература:

Хабибуллин И. Ш. Разработка Web-служб средствами Java. — СПб.: БХВ-Петербург, 2003. — 400 с: ил.

По теме:

  • Комментарии