Форматирование документа XML

Чтобы посмотреть, как XSL-FO может форматировать данные XML, я воспользуюсь planets.xml (листинг 11.1).

Листинг 11.1. planets.xml

<?xml version='1.0'?>

<?xml-stylesheet type='text/xml' href='planets.xsl'?>

<PLANETS>

 <PLANET COLOR='RED'>

  <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 COLOR='WHITE'>

  <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 COLOR='BLUE'>

  <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 для форматирования файла planets.xml и преобразования его в planets.fo, использующую форматирующие объекты для задания шрифтов, стилей и цветов. Затем я воспользуюсь процессором fop и преобразую planets.fo в файл planets.pdf, который показан на рис. 11.1.

Рис. 11.1. Документ PDF, созданный при помощи форматирующих объектов

Как видно на рис. 11.1, в нашем первом примере я применил средства форматирования текста: установку шрифта, подчеркивание текста, выделение текста курсивом и даже установка цвета текста. (Хотя этого и не видно на рис. 11.1, заголовок «The Planets Table» выделен светло-голубым цветом.)

Первый шаг при создании документа на рис. 11.1 — применить таблицу стилей XSLT для преобразования planets.xml в planets.fo.

Преобразование в XSL-FO при помощи таблицы стилей XSLT

В этой главе я создам таблицу стилей для преобразования planets.xml в planets.fo. Я буду создавать таблицу шаг за шагом; для справки я приведу ее окончательный вид (листинг 11.2).

Листинг 11.2. planets.xsl

<?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>

   </fo:layout-master-set>

   <fo:page-sequence master-name='page'>

    <fo:flow flow-name='xsl-region-body'>

     <fo:block font-weight='bold' font-size='36pt'

      line-height='48pt' font-family='Times' color='blue'>

      The Planets Table

     </fo:block>

     <xsl:apply-templates/>

    </fo:flow>

   </fo:page-sequence>

  </fo:root>

 </xsl:template>

 <xsl:template match='PLANET/NAME'>

  <fo:block font-weight='bold' font-size='28pt'

   line-height='48pt' font-family='Times'

   font-style='italic'>

   Planet:

   <xsl:apply-templates/>

  </fo:block>

 </xsl:template>

 <xsl:template match='PLANET/MASS'>

  <fo:block font-size='24pt' line-height='32pt'

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

0

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

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