Чтение онлайн

на главную - закладки

Жанры

Холзнер Стивен

Шрифт:

Рис. 10.7. Применение XSLT с сервлетами Java

На этом мы заканчиваем изучение работы с API процессоров XSLT в программном коде. Мы рассмотрели весьма объемный материал: как взаимодействовать с API процессоров XSLT из JavaScript и Java для процессоров MSXML, Xalan, XT, Saxon и Oracle, а также примеры выполнения XSLT-преобразований на web-серверах при помощи ASP, JSP и сервлетов Java.

Глава 11

Применение XSLT

для создания документов XSL-FO

Мы уже рассмотрели XSLT-преобразования из XML в XML, HTML, XHTML, RTF, простой текст, JavaScript и даже в реляционные базы данных. В этой и следующей главах вы познакомитесь с новым преобразованием, для которого и создавались XSLT: преобразование XML в документы, которые используют форматирующие объекты, XSL (документы XSL-FO).

Такое преобразование являлось первоочередной задачей XSLT. Как вы знаете, XSLT вырос из спецификации XSL для упрощения работы с форматирующими объектами (formatting objects). Имейте в виду, что XSL-FO гораздо объемнее XSLT — здесь я смогу представить только введение в предмет.

Форматирование XSL

Как обсуждалось в главе 1, XSLT и XSL-FO составляют спецификацию XSL. В данный момент версия 1.0 этой спецификации обладает статусом рекомендации-кандидата, с последней версией вы сможете познакомиться на http://www.w3.org/TR/xsl.

Форматирующая часть XSL, XSL-FO, позволяет устанавливать точное форматирование для всего документа, вплоть до каждого миллиметра. Например, вы можете выбрать шрифт, его размер, расположение текста на странице, цвет текста, режим подчеркивания и т.д. Работа с XSL-FO во многом похожа на создание документов RTF, но с некоторыми дополнениями: например, в XSL-FO можно создавать ссылки для навигации по документам.

Если вы когда-либо видели огромное количество кодов, используемых в RTF для форматирования документов, вы поймете, что XSL-FO представляет собой сложную и очень большую спецификацию. (Вот почему появились XSLT — чтобы упростить работу с XSL-FO.) Таким образом, на отведенном месте я смогу только дать введение в эту тему. Однако пока что еще нет программ, полностью реализующих всю спецификацию, поэтому сравнительно небольшое число людей пользуются возможностями XSL-FO, выходящими за рамки материала этой и следующей глав. В следующем списке перечислен ряд доступных процессоров XSL-FO:

• fop.Этот популярный процессор преобразует XSL- FO в PDF. Разработан Джеймсом Таубером в Apache Software Foundation ;

• PassiveTeX.Этот процессор фактически представляет собой библиотеку макросов ТеХ, обеспечивающих среду для тестирования XSL-FO;

• REXP.Эта ранняя версия процессора XSL-FO. Создает файлы PDF;

• Unicorn.Этот процессор (называемый UFO) распространяется бесплатно и работает в Windows NT 4.0 и Windows 95;

• ХЕР.Этот процессор, обычно называемый FOP2PDF, преобразует документы XSL-FO в формат PDF;

• XSL Formatter.Процессор XSL-FO для Windows. Доступна бесплатная копия с ограниченным сроком действия (evaluation version);

Я лично предпочитаю fop, который сегодня является самым популярным

процессором XSL-FO. В этой и следующей главах я буду работать с последней версией fop, 0.17. Apache Software Foundation, группа, которая создала и Xalan, осуществляет сопровождение процессора fop, преобразующего документы XSL-FO в документы в формате Portable Data Format (PDF), для просмотра которых служит Acrobat reader фирмы Adobe. Acrobat reader можно бесплатно загрузить сПоследнюю версию самого fop можно бесплатно загрузить с(на сегодняшний день достаточно только щелкнуть на ссылку для загрузки на этой странице).

Процессор fop работает с документами XSL-FO, и в этой и следующей главах я воспользуюсь XSLT для преобразования документов XML в формат XSL-FO и затем применю fop для преобразования документов XSL-FO в формат PDF. (Применение XSL-FO не означает, что обязательно будут создаваться документы PDF — существуют и другие форматы, — XSL-FO просто позволяет вам форматировать данные, а то, как эти форматированные данные будут представлены, зависит от используемого приложения.) Для работы с XSL-FO необходимо понимать, как работать с существующими форматирующими объектами XSL.

Форматирующие объекты XSL-FO

В документах XSLT мы работали с такими элементами, как

<xsl:stylesheet>
,
<xsl:output>
и т.д.:

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

<xsl:stylesheet version="1.0"

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

 <xsl:output method="xml"/>

 <xsl:template match="*">

<xsl:copy>

<xsl:apply-templates/>

.

.

.

Документ XSL-FO написан во многом таким же способом, но вместо таких элементов XSLT, как

<xsl:stylesheet>
, применяются элементы, основанные на форматирующих объектах XSL-FO. Существует всего 56 таких форматирующих объектов — например, объект корня, создающий корневой узел документа XSL-FO, или объект блока, создающий область блока (прямоугольную область отображения, похожую на область, которую тег заголовка <Н1> создает в документе HTML).

У форматирующих объектов есть свое собственное пространство имен, «http://www.w3.org/1999/XSL/Format», и в качестве префикса этого пространства имен практически всегда используется fo, сокращение для formatting objects. (Это соглашение было принято потому, что данный префикс пространства имен используется в спецификации XSL.) При написании документов XSL-FO используются элементы, соответствующие различным объектам XSL-FO — например,

<fo:root>
для корневого элемента,
<fo:block>
для создания блока отображения и т.д. Вот как можно начать документ XSL-FO — заметьте, что я объявляю префикс пространства имен «
fo
», соответствующий пространству имен XSL-FO:

Поделиться:
Популярные книги

Перешагнуть пропасть

Муравьёв Константин Николаевич
1. Перешагнуть пропасть
Фантастика:
боевая фантастика
космическая фантастика
8.38
рейтинг книги
Перешагнуть пропасть

Княжья Русь

Мазин Александр Владимирович
6. Варяг
Приключения:
исторические приключения
9.04
рейтинг книги
Княжья Русь

Бандит

Щепетнов Евгений Владимирович
1. Петр Синельников
Фантастика:
фэнтези
7.92
рейтинг книги
Бандит

Барон нарушает правила

Ренгач Евгений
3. Закон сильного
Фантастика:
фэнтези
попаданцы
аниме
5.00
рейтинг книги
Барон нарушает правила

Неучтенный элемент. Том 3

NikL
3. Антимаг. Вне системы
Фантастика:
фэнтези
5.00
рейтинг книги
Неучтенный элемент. Том 3

Газлайтер. Том 8

Володин Григорий
8. История Телепата
Фантастика:
попаданцы
альтернативная история
аниме
5.00
рейтинг книги
Газлайтер. Том 8

Эволюционер из трущоб. Том 7

Панарин Антон
7. Эволюционер из трущоб
Фантастика:
попаданцы
аниме
фэнтези
фантастика: прочее
5.00
рейтинг книги
Эволюционер из трущоб. Том 7

"Искажающие реальность" Компиляция. Книги 1-14

Атаманов Михаил Александрович
Искажающие реальность
Фантастика:
боевая фантастика
космическая фантастика
киберпанк
рпг
5.00
рейтинг книги
Искажающие реальность Компиляция. Книги 1-14

Второгодка. Книга 3. Ученье свет

Ромов Дмитрий
3. Второгодка
Фантастика:
городское фэнтези
сказочная фантастика
альтернативная история
5.00
рейтинг книги
Второгодка. Книга 3. Ученье свет

Сержант. Назад в СССР. Книга 4

Гаусс Максим
4. Второй шанс
Фантастика:
попаданцы
альтернативная история
5.00
рейтинг книги
Сержант. Назад в СССР. Книга 4

Второй кощей

Билик Дмитрий Александрович
8. Бедовый
Фантастика:
юмористическое фэнтези
городское фэнтези
мистика
5.00
рейтинг книги
Второй кощей

Цикл "Отмороженный". Компиляция. Книги 1-14

Гарцевич Евгений Александрович
Отмороженный
Фантастика:
боевая фантастика
рпг
постапокалипсис
5.00
рейтинг книги
Цикл Отмороженный. Компиляция. Книги 1-14

Романов. Том 1 и Том 2

Кощеев Владимир
1. Романов
Фантастика:
фэнтези
попаданцы
альтернативная история
5.25
рейтинг книги
Романов. Том 1 и Том 2

Абсурдистан

Штейнгарт Гари
Проза:
современная проза
5.00
рейтинг книги
Абсурдистан