Книга: XSLT

Преобразование документа в представление с форматирующими объектами

Преобразование документа в представление с форматирующими объектами

Для того чтобы преобразовать planets.xml в документ, использующий форматирующие объекты, который я назвал planets.fo, достаточно всего лишь применить таблицу стилей planetsPDF.xsl. Это можно сделать при помощи техник XSLT, уже рассмотренных в этой главе.

Например, чтобы создать planets.fo при помощи Xalan, в Windows сначала нужно установить classpath:

C:>set classpath=c:xalanxalan-1_2_0_0binxalan.jar; c:xalanxalan-j_2_0_0binxerces.jar

Затем применить planetsPDF.xsl к planets.xml для генерации planets.fo:

C:planets>java org.apache.xalan.xslt.Process -IN planets.xml -XSL planetsPDF.xsl -OUT planets.fo

Для задания форматирования документ planets.fo использует форматирующие объекты XSL. Вот как выглядит файл planets.fo (листинг 1.9):

Листинг 1.9. planets.fo

<?xml version="1.0" encoding="UTF-8"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">
 <fo: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"/>
   <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">
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt" font-weight="bold">
    Name: Mercury
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Mass (Earth = 1): .0553
   </fo-block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Day (Earth = 1): 58.65
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Radius (in miles): 1516
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Density (Earth = 1):.983
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Distance (million miles): 43.4
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt" font-weight="bold">
    Name: Venus
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Mass (Earth = 1): .815
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Day (Earth = 1): 116.75
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font size="36pt">
    Radius (in miles): 3716
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Density (Earth = 1): .943
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Distance (million miles): 66.8
   </fo-block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt" font-weight="bold">
    Name: Earth
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Mass (Earth = 1): 1
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Day (Earth = 1):
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Radius (in miles): 2107
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Density (Earth = 1):
   </fo:block>
   <fo:block
    font-family="sans-serif" line-height="48pt"
    font-size="36pt">
    Distance (million miles): 128.4
   </fo:block>
  </fo:flow>
 </fo:page-sequence>
</fo:root>

Итак, мы успешно создали planets.fo. Как нам теперь с его помощью создать форматированный файл PDF?

Оглавление книги


Генерация: 1.934. Запросов К БД/Cache: 3 / 0
поделиться
Вверх Вниз