Таблица стилей XSLT

Таблица стилей 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/>

  </fo:block>

 </xsl:template>

 <xsl:template match="PLANET/DAY">

  <fo:block

   font-size="36pt" line-height="48pt"

   font-family="sans-serif">

   Day (Earth = 1):

   <xsl:apply-templates/>

  </fo:block>

 </xsl:template>

 <xsl:template match="PLANET/RADIUS">

  <fo:block

   font-size="36pt" line-height="48pt"

   font-family="sans-serif">

   Radius (in miles):

   <xsl:apply-templates/>

  </fo:block>

 </xsl:template>

 <xsl:template match="PLANET/DENSITY">

  <fo:block

   font-size="36pt" line-height="48pt"

   font-family="sans-serif">

   Density (Earth = 1):

   <xsl:apply-templates/>

  </fo:block>

 </xsl:template>

 <xsl:template match="PLANET/DISTANCE">

  <fo:block

   font-size="36pt" line-height="48pt"

   font-family="sans-serif">

   Distance (million miles):

   <xsl:apply-templates/>

  </fo:block>

 </xsl:template>

</xsl:stylesheet>