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

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

• PassiveTeX. http://users.ox.ac.uk/~rahtz/passivetex/. Этот процессор фактически представляет собой библиотеку макросов ТеХ, обеспечивающих среду для тестирования XSL-FO;

• REXP. http://www.esng.dibe.unige.it/REXP. Эта ранняя версия процессора XSL-FO. Создает файлы PDF;

• Unicorn. http://www.unicorn-enterprises.com. Этот процессор (называемый UFO) распространяется бесплатно и работает в Windows NT 4.0 и Windows 95;

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

• XSL Formatter. http://www.antennahouse.com/xslformatter.html. Процессор 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 можно бесплатно загрузить с http://www.adobe.com/products/acrobat/readermain.html. Последнюю версию самого fop можно бесплатно загрузить с http://xml.apache.org/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:

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

<fo:root xmlns:fo='http://www.w3.org/1999/XSL/Format'>

 <fо:layout-master-set>

  <fo:simple-page-master margin-right='20mm' margin-left='20mm'

   margin-bottom='10mm' margin-top='10mm' page-width='300mm'

   page-height='400mm' master-name='page'>

   <fo:region-body margin-right='0mm' margin-left='0mm'

    margin-bottom='10mm' margin-top='0mm'/>

   .

   .

   .

Обратите внимание: документы; XSL-FO являются документами XML, поэтому везде можно использовать стандартные комментарии XML, <!-- такие как этот -->. Отметьте также, что элементы <fo:simple-page-master> и <fo:region-body> обладают такими атрибутами, как margin-right и page-height. В XSL-FO такие атрибуты называются свойствами, и их весьма много — на момент написания книги около 240. Например, вот как можно создать блок XSL-FO — прямоугольную область отображения — в котором выводится текст «Welcome to XSL formatting» (Добро пожаловать в форматирование XSL) шрифтом sans-serif размером 36 пунктов. Я использую форматирующий объект <fo:block> и свойства XSL- FO font-familyline-height (задающее высоту блока) и font- size:

<fo:block font-family='sans-serif' line-height='48pt' font-size='36pt'>

 Welcome to XSL formatting

</fo:block>

В этом разделе мы рассмотрим объекты XSL-FO, а в следующем — свойства XSL-FO для работы с ними. При помощи объектов и свойств XSL-FO вы можете создавать документы XSL-FO, которым обычно дается расширение .fo. Процессор fop преобразует такие документы в формат .pdf.

Все форматирующие объекты XSL-FO с описанием перечислены на www.w3.org/TR/xsl/slice6.html. Во время создания книги существуют такие объекты (с работой многих из них мы познакомимся в этой и следующей главах):

• <fo:bidi-override>. Перекрывает двунаправленный алгоритм Unicode (этот алгоритм используется в документах на нескольких языках);

• <fo:block>. Создает блок отображения для формирования прямоугольных областей, используемых при выводе абзацев, заголовков, подписей к рисункам и таблицам и т.д.;

• <fo:block-container>. Создает контейнер блоков, который затем можно помещать в любом месте;

• <fo:character>. Представляет единственный символ;

• <fo:color-profile>. Создает цветовой профиль для таблицы стилей, с которым

Вы читаете XSLT
Добавить отзыв
ВСЕ ОТЗЫВЫ О КНИГЕ В ИЗБРАННОЕ

0

Вы можете отметить интересные вам фрагменты текста, которые будут доступны по уникальной ссылке в адресной строке браузера.

Отметить Добавить цитату