- Фантастика и фэнтези
- Ироническое фэнтези
- Стимпанк
- Детективная фантастика
- Киберпанк
- Попаданцы
- LitRPG
- Космоопера
- Технофэнтези
- Городская фантастика
- Русское фэнтези
- Юмористическая фантастика
- Космическая фантастика
- Боевое фэнтези
- Эпическая фантастика
- Зарубежная фантастика
- Книги магов
- Мистика
- Разная фантастика
- Разное фэнтези
- Любовное фэнтези
- Романтическая фантастика
- Городское фентези
- Историческая фантастика
- Историческое фэнтези
- Социально-философская фантастика
- Сказочная фантастика
- Иностранное фэнтези
- Романтическое фэнтези
- Ироническая фантастика
- Ужасы и Мистика
- Постапокалипсис
- Героическая фантастика
- Фэнтези
- Научная Фантастика
- Социально-психологическая
- Альтернативная история
- Боевая фантастика
- Разная литература
- Пословицы, поговорки
- Шахматы
- Визуальные искусства
- Фанфик
- Авто и ПДД
- Военное
- Отраслевые издания
- Гиды, путеводители
- Зарубежная образовательная литература
- Военная история
- Цитаты из афоризмов
- Современная литература
- Великолепные истории
- Начинающие авторы
- Современная зарубежная литература
- Боевые искусства
- Изобразительное искусство, фотография
- Кино
- Литература 19 века
- Недвижимость
- Музыка, музыканты
- Готические новеллы
- Истории из жизни
- Культура и искусство
- Спецслужбы
- Зарубежная прикладная литература
- Музыка, танцы
- Подростковая литература
- Прочее
- Военная техника, оружие
- Газеты и журналы
- Периодические издания
- Домоводство, Дом и семья
- Любовные романы
- Экономическая литература
- Научные и научно-популярные книги
- О животных
- Биохимия
- Культурология
- Юриспруденция
- Политика
- Психотерапия
- Языкознание
- Научпоп
- Медицина
- Психология, личное
- Радиотехника
- Филология
- Педагогика
- Образовательная литература
- Деловая литература
- Физика
- Науки: разное
- Химия
- Воспитание детей, педагогика
- Детская психология
- Зарубежная публицистика
- Биология
- Архитектура
- Зарубежная психология
- Науки о космосе
- Социология
- Математика
- География
- Беременность, ожидание детей
- Литературоведение
- Транспорт, военная техника
- Обществознание
- Зоология
- География
- Альтернативная медицина
- Иностранные языки
- Ветеринария
- Рефераты
- Астрология
- Биофизика
- Экология
- История Европы
- Учебники
- Шпаргалки
- Государство и право
- Ботаника
- Религиоведение
- История
- Техническая литература
- Прочая научная литература
- Психология
- Детективы и Триллеры
- Справочная литература
- Проза
- Новелла
- Юмор
- Проза
- Историческая проза
- Русская современная проза
- Советская классическая проза
- Повести
- Очерки
- Эссе
- Рассказы
- Зарубежная современная проза
- Сентиментальная проза
- Зарубежная классика
- Афоризмы
- Эпистолярная проза
- Феерия
- Семейный роман/Семейная сага
- Разное
- Антисоветская литература
- Магический реализм
- Русская классическая проза
- Современная проза
- О войне
- Контркультура
- Классическая проза
- Поэзия, Драматургия
- Детская литература
- Детская фантастика
- Детские остросюжетные
- Детские стихи
- Детские приключения
- Внеклассное чтение
- Учебная литература
- Зарубежные детские книги
- Бизнес
- Загадки
- Книги для подростков
- Школьные учебники
- Детский фольклор
- Книги для дошкольников
- Детские детективы
- Детская познавательная и развивающая литература
- Буквари
- Прочая детская литература
- Сказка
- Детская проза
- Детская образовательная литература
- Юмор
- Документальные книги
- Бизнес
- Внешнеэкономическая деятельность
- Тайм-менеджмент
- Кадровый менеджмент
- О бизнесе популярно
- Управление, подбор персонала
- Бизнес
- Менеджмент и кадры
- Продажи
- Экономика
- Ценные бумаги и инвестиции
- Малый бизнес
- Делопроизводство, офис
- Корпоративная культура, бизнес
- Банковское дело
- Финансы
- Зарубежная деловая литература
- Ораторское искусство / риторика
- Личные финансы
- Интернет-бизнес
- Поиск работы
- Государственное и муниципальное управление
- Бухучет и аудит
- Работа с клиентами
- Менеджмент
- Краткое содержание
- Личная эффективность
- Переговоры
- Приключения
- Старинная литература
- Религия и духовность
- Компьютеры и Интернет
- Блог
Читаем без скачивания XSLT - Стивен Холзнер
Шрифт:
Интервал:
Закладка:
• XSpLit, www.percussion.com/xmlzone/technology.htm. Позволяет вам разделять документы HTML на определения DTD XML и таблицы стилей XSLT.
Утилиты XSLT
В Интернете существует также много утилит XSLT — в следующем списке перечислены наиболее известные:
• Microsoft XSL API Extension, http://msdn.microsoft.com/downloads/webtechnology/xml/xslisapi.asp. Упрощает задачу выполнения XSLT-преобразований на стороне сервера;
• Microsoft XSL-to-XSLT Converter, http://msdn.microsoft.com/downloads/webtechnology/xml/xsltconv.asp. Преобразует XSL в XSLT;
• XSL Lint, www.nwalsh.com/xsl/xslint. XSL Lint осуществляет проверку синтаксиса XSLT, позволяя обнаружить ошибки многих типов;
• XSL Trace, www.alphaworks.ibm.com/tech/xsltrace. Этот продукт позволяет пользователю проходить по шагам XSLT визуально;
• XSLT Compiler, www.sun.com/xml/developers/xsltc. Преобразует файлы XSLT в классы Java для преобразования файлов XML;
• XSLT test tool, www.netcrucible.com/xslt/xslt-tool.htm. Этот инструмент дает возможность запускать XSLT в различных популярных процессорах, что позволяет проверить, корректно ли ваше преобразование работает на всех системах. Существует возможность вызывать из командной строки MSXML3 от Microsoft, как и любой другой процессор XSLT;
• XSLTC, www3.cybercities.com/x/xsltc. Компилирует таблицы стилей XSLT в код на С++. Основан на Transformix, процессоре XSLT фирмы Mozilla;
• XSLTracer, www.zvon.org/xxl/XSLTracer/Output/introduction.html. XSLTracer — средство на языке Perl, демонстрирующее процесс обработки файлов XML при помощи таблиц стилей XSLT.
На этом завершается обзор XSLT в данной главе. Как видите, нас ждет огромный набор сведений. В оставшейся части главы будет представлен обзор XSL-FO.
Форматирующие объекты XSL: XSL-FO
Самая популярная часть XSL — это XSLT-преобразования, с которыми мы уже познакомились в этой главе. Другая, существенно большая часть — это форматирующие объекты XSL, XSL-FO (XSL Formatting Objects).
При помощи XSL-FO можно с точностью до миллиметра задать форматирование и способ отображения XML-документа. Для документов можно задать все, что угодно: шрифт текста, место, выравнивание, цвет, индексы, размер полей и многое другое. Работа с XSL-FO похожа на процесс создания вручную текстового процессора, и из-за сложности XSL-FO некоторые избегают их использовать. В главах 11 и 12 мы изучим то, что могут предложить нам XSL-FO, и способы работы с ними.
Ресурсы XSL-FO
Ряд ресурсов XSL-FO доступен в Интернете, но их гораздо меньше, чем ресурсов XSLT. Вот основные:
• www.w3.org/TR/xsl. Основная рекомендация-кандидат XSL, включающая также XSL-FO;
• http://lists.w3.org/Archives/Public/www-xsl-fo/. Список заметок W3C для XSL-FO.
Так же, как существуют процессоры XSLT, существуют и процессоры XSL-FO. Ни один из них, однако, не приближается к тому, чтобы реализовать стандарт полностью. Вот начальный список процессоров XSL-FO:
• FOP, http://xml.apache.org/fop. Приложение Java, которое считывает дерево форматирующих объектов XSL (создаваемое разборщиком XML) и создает документ PDF;
• PassiveTeX, http://users.ox.ac.uk/~rahtz/passivetex. Пакет ТеХ, форматирующий вывод XSL-FO в PDF. Использует разборщик XML xmltex Дэвида Карлайла (David Carlisle);
• SAXESS Wave, http://www.saxess.com/wave/index.html. Конвертер XML-Shockwave/Flash;
• TeXML, http://www.alphaworks.ibm.com/tech/texml. Преобразует документы XML в формат ТеХ;
• Unicorn Formatting Objects (UFO), http://www.unicorn-enterprises.com. Процессор форматирующих объектов XSL, написанный на С++. Может генерировать вывод в форматах PostScript, PDF и других форматах, поддерживаемых драйверами DVI ТеХ;
• XEP, http://www.renderx.com/F02PDF.html. Процессор XSL-FO на Java, преобразующий форматирующие объекты XSL в PDF или PostScript.
В этой книге я буду пользоваться FOP (formatting objects processor, процессор форматирующих объектов) — вероятно, самым распространенным процессором XSL-FO. Основанный на Java процессор XSL-FO берет XML-документ, написанный для использования форматирующих объектов XSL-FO, и преобразует его в формат PDF, который можно просмотреть в Adobe Acrobat. Хотя XSLT-преобразования часто производятся в HTML, для XSL-FO это работать не будет, потому что в этом случае указывается каждый аспект формата представления документа вплоть до мельчайших деталей, а для этих целей гораздо лучше подходит формат PDF.
Форматирование документа XML
Для форматирования planets.xml в planets.pdf мы можем воспользоваться форматирующими объектами XSL-FO, представленными в главе 12. Например, вот как мы можем отобразить название первой планеты, Меркурия, при помощи форматирующих объектов XSL-FO flow и block:
<fo:page-sequence master-name="page">
<fo:flow flow-name="xsl-region-body">
<fo:block font-family="sans-serif" line-height="48pt"
font-size="36pt" font-weight="bold">
Mercury
</fo:block>
.
.
.
Однако создание всего документа целиком при помощи форматирующих объектов XSL — непростая задача, за исключением коротких документов. W3C предвидел эти трудности, и это одна из главных причин, по которой консорциумом был представлен язык преобразований, XSLT. В частности, можно создать таблицу стилей и при помощи XSLT преобразовать XML-документ так, чтобы он использовал форматирующие объекты XSL.
На практике преобразования практически всегда выполняются при помощи таблиц стилей, и именно так мы поступим в главах 11 и 12. Все, что вам нужно сделать, это предоставить таблицу стилей XSLT, при помощи которой можно преобразовать ваш документ с использованием форматирующих объектов. При таком способе всю работу берет на себя процессор XSLT, преобразуя документ из представления, с которым вам удобно работать, в представление с форматирующими объектами, которое затем можно вставить в программу, способную обрабатывать форматирующие объекты и отображать форматированный результат.
Чтобы пояснить все вышесказанное, ниже приведен пример работы с XML-документом, с которым мы уже встречались в этой главе, planets.xml:
<?xml version="1.0"?>
<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><!--B перигелии-->
</PLANET>
<PLANET>
<NAME>Venus</NAME>
<MASS UNITS="(Earth = 1)">.815</MASS>
<DAY UNITS="days">116.75</DAY>
<RADIUS UNITS="miles">3716</RADIUS>
<DENSITY UNITS="(Earth = 1)">.943</DENSITY>
<DISTANCE UNITS="million miles">66.8</DISTANCE><!--B перигелии-->
</PLANET>
<PLANET>
<NAME>Earth</NAME>
<MASS UNITS="(Earth = 1)">1</MASS>
<DAY UNITS="days">1</DAY>
<RADIUS UNITS="miles">2107</RADIUS>
<DENSITY UNITS="(Earth = 1)">1</DENSITY>
<DISTANCE UNITS="million miles">128.4</DISTANCE><!--B перигелии-->
</PLANET>
</PLANETS>
В этом примере я воспользуюсь таблицей стилей XSLT — мы посмотрим, как ее создавать, в главе 11 — для преобразования planets.xml так, чтобы он использовал форматирующие объекты. Затем при помощи процессора FOP я преобразую новый документ в файл PDF. Мы также посмотрим, как форматированный документ выглядит в Adobe Acrobat.
Таблица стилей XSLT
В листинге 1.8 приведена таблица стилей planetsPDF.xcl, которая берет данные из planets.xml и форматирует их в файл PDF, planets.pdf. В этом случае для текста я использую крупный шрифт — 36 пунктов.
Листинг 1.8. Преобразование XML-XSL-FO<?xml version="1.0"?>
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:fo="http://www.w3.org/1999/XSL/Format" version="1.0">
<xsl:template match="PLANETS">
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
<fo:layout-master-set>
<fo:simple-page-master master-name="page" page-height="400mm"
page-width="300mm" margin-top="10mm" margin-bottom="10mm"
margin-left="20mm" margin-right="20mm">
<fo:region-body
margin-top="0mm" margin-bottom="10mm"
margin-left="0mm" margin-right="0mm"/>
<fo:region-after extent="10mm"/>
</fo:simple-page-master>
</fо:layout-master-set>
<fo:page-sequence master-name="page">
<fo:flow flow-name="xsl-region-body">
<xsl:apply-templates/>
</fo:flow>
</fo:page-sequence>
</fo:root>
</xsl:template>
<xsl:template match="PLANET/NAME">
<fo:block
font-weight="bold" font-size="36pt" line-height="48pt"
font-family="sans-serif">
Name:
<xsl:apply-templates/>
</fo:block>
</xsl:template>
<xsl:template match="PLANET/MASS">
<fo:block
font-size="36pt" line-height="48pt"
font-family="sans-serif">
Mass (Earth = 1):
<xsl:apply-templates/>