Π§ΠΈΡ‚Π°ΠΉΡ‚Π΅ ΠΊΠ½ΠΈΠ³ΠΈ ΠΎΠ½Π»Π°ΠΉΠ½ Π½Π° Bookidrom.ru! БСсплатныС ΠΊΠ½ΠΈΠ³ΠΈ Π² ΠΎΠ΄Π½ΠΎΠΌ ΠΊΠ»ΠΈΠΊΠ΅

Π§ΠΈΡ‚Π°Ρ‚ΡŒ ΠΎΠ½Π»Π°ΠΉΠ½ Β«XSLTΒ». Π‘Ρ‚Ρ€Π°Π½ΠΈΡ†Π° 101

Автор Π‘Ρ‚ΠΈΠ²Π΅Π½ Π₯ΠΎΠ»Π·Π½Π΅Ρ€

     Name

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-weight="bold" font-size="18pt">

     Mass

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-weight="bold" font-size="18pt">

     Day

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-weight="bold" font-size="18pt">

     Radius

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-weight="bold" font-size="18pt">

     Density

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-weight="bold" font-size="18pt"

     Distance

    </fo:block>

   </fo:table-cell>

  </fo:table-row>

  <fo:table-row>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     Mercury

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     .0553

    </fΠΎ:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     58.65

    </fΠΎ:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     1516

    </fo:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     .983

    </fΠΎ:block>

   </fo:table-cell>

   <fo:table-cell border-width="0.5mm">

    <fo:block font-size="18pt">

     43.4

    </fo:block>

   </fo:table-cell>

  </fo:table-row>

  .

  .

  .

 </fo:table-body>

</fo:table>

Π’Π΅ΠΏΠ΅Ρ€ΡŒ всС Π³ΠΎΡ‚ΠΎΠ²ΠΎ β€” Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚Π°Ρ‚ ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 11.2, Π³Π΄Π΅ Π²Ρ‹ ΠΌΠΎΠΆΠ΅Ρ‚Π΅ ΡƒΠ²ΠΈΠ΄Π΅Ρ‚ΡŒ ΠΏΠΎΠ»Π½ΠΎΡΡ‚ΡŒΡŽ ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½ΡƒΡŽ Ρ‚Π°Π±Π»ΠΈΡ†Ρƒ, ΡΠΎΠ·Π΄Π°Π½Π½ΡƒΡŽ процСссором fop. Π’Π΅ΠΏΠ΅Ρ€ΡŒ Π²Ρ‹ Π·Π½Π°Π΅Ρ‚Π΅, ΠΊΠ°ΠΊ ΡΠΎΠ·Π΄Π°Π²Π°Ρ‚ΡŒ Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΡ… ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ΠΎΠ² XSL.

БСзусловно, ΠΌΠΎΠΆΠ½ΠΎ Π΅Ρ‰Π΅ ΠΌΠ½ΠΎΠ³ΠΎ ΡΠΊΠ°Π·Π°Ρ‚ΡŒ ΠΎ XSL-FO. Π’ ΡΠ»Π΅Π΄ΡƒΡŽΡ‰Π΅ΠΉ Π³Π»Π°Π²Π΅ ΠΌΡ‹ рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ со списками, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅, ΠΊΠΎΠ»ΠΎΠ½ΠΊΠΈ, ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚ΠΈ страниц ΠΈ Π΄Ρ€ΡƒΠ³ΠΈΠ΅ элСмСнты.

Π“Π»Π°Π²Π° 12

Π”ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚Ρ‹ XSL-FO

Π’ этой Π³Π»Π°Π²Π΅ ΠΌΡ‹ ΠΏΡ€ΠΎΠ΄ΠΎΠ»ΠΆΠΈΠΌ Ρ€Π°Π±ΠΎΡ‚Ρƒ с XSL-FO. Π—Π΄Π΅ΡΡŒ ΠΌΡ‹ рассмотрим Ρ€Π°Π±ΠΎΡ‚Ρƒ со списками, рисунками ΠΈ ΠΊΠΎΠ»ΠΎΠ½ΠΊΠ°ΠΌΠΈ, Ρ€Π°Π·ΠΌΠ΅Ρ‰Π΅Π½ΠΈΠ΅ тСкста, созданиС многостраничных ΠΏΠΎΡΠ»Π΅Π΄ΠΎΠ²Π°Ρ‚Π΅Π»ΡŒΠ½ΠΎΡΡ‚Π΅ΠΉ ΠΈ Π΄Ρ€ΡƒΠ³ΠΎΠ΅. По ΠΏΡ€ΠΎΡ‡Ρ‚Π΅Π½ΠΈΠΈ этой Π³Π»Π°Π²Ρ‹ Π²Ρ‹ усвоитС основы Ρ€Π°Π±ΠΎΡ‚Ρ‹ с XSL-FO β€” ΠΏΠΎ ΠΊΡ€Π°ΠΉΠ½Π΅ΠΉ ΠΌΠ΅Ρ€Π΅, с Ρ‚ΠΎΠΉ Ρ‡Π°ΡΡ‚ΡŒΡŽ, которая Ρ€Π΅Π°Π»ΠΈΠ·ΠΎΠ²Π°Π½Π° Π² соврСмСнном ΠΏΡ€ΠΎΠ³Ρ€Π°ΠΌΠΌΠ½ΠΎΠΌ обСспСчСнии. Π― Π½Π°Ρ‡Π½Ρƒ Π³Π»Π°Π²Ρƒ со списков XSL-FO.

БозданиС списков XSL-FO

Как ΠΌΡ‹ Π²ΠΈΠ΄Π΅Π»ΠΈ Π² Π³Π»Π°Π²Π΅ 11, Ρ‚Π°Π±Π»ΠΈΡ†Ρ‹ XSL-FO Ρ€Π°Π±ΠΎΡ‚Π°ΡŽΡ‚ Π²ΠΎ ΠΌΠ½ΠΎΠ³ΠΎΠΌ Ρ‚Π°ΠΊ ΠΆΠ΅, ΠΊΠ°ΠΊ Π² HTML, ΠΈ это Π² Ρ‚ΠΎΠΉ ΠΆΠ΅ ΠΌΠ΅Ρ€Π΅ относится ΠΊ спискам. Как ΠΈ Π² HTML, список XSL Π²Ρ‹Π²ΠΎΠ΄ΠΈΡ‚ Π²Π΅Ρ€Ρ‚ΠΈΠΊΠ°Π»ΡŒΠ½Ρ‹ΠΉ список элСмСнтов. Для создания списков слуТат Ρ‡Π΅Ρ‚Ρ‹Ρ€Π΅ элСмСнта XSL-FO:

β€’ <fo:list-block>;

β€’ <fo:list-item>;

β€’ <fo:list-item-label>;

β€’ <fo:list-item-body>.

Π’Π΅ΡΡŒ список Π·Π°ΠΊΠ»ΡŽΡ‡Π°Π΅Ρ‚ΡΡ Π² элСмСнт <fo:list-block>, ΠΈ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка β€” Π² элСмСнт <fo:list-item>. Для создания подписи ΠΊ элСмСнту списка слуТит элСмСнт <fo:list-item-label>, Π° для вставки Π΄Π°Π½Π½Ρ‹Ρ… Π² ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка β€” элСмСнт <fo:list-item-body>.

ΠŸΡ€ΠΈΠΌΠ΅Ρ€ lists.xsl (листинг 12.1) ΠΏΡ€Π΅ΠΎΠ±Ρ€Π°Π·ΡƒΠ΅Ρ‚ planets.xml Π² список Ρ„ΠΎΡ€ΠΌΠ°Ρ‚Π° XSL-FO, Π² ΠΊΠΎΡ‚ΠΎΡ€ΠΎΠΌ ΠΊΠ°ΠΆΠ΄Ρ‹ΠΉ элСмСнт списка ΠΎΡ‚ΠΎΠ±Ρ€Π°ΠΆΠ°Π΅Ρ‚ Π½Π°Π·Π²Π°Π½ΠΈΠ΅ ΠΏΠ»Π°Π½Π΅Ρ‚Ρ‹.

Листинг 12.1. lists.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-size="24pt">The Planets Table</fo:block>

     <fo:list-block provisional-distance-between-starts="15mm"

      provisional-label-separation="5mm">

      <xsl:apply-templates/>

     </fo:list-block>

    </fo:flow>

   </fo:page-sequence>

  </fo:root>

 </xsl:template>


 <xsl:template match="PLANET">

  <fo:list-item line-height="20mm">

   <fo:list-item-label>

    <fo:block font-family="sans-serif" font-size="36pt">

     <xsl:number/>

     <xsl:text>. </xsl:text>

    </fo:block>

   </fo:list-item-label>

   <xsl:apply-templates/>

  </fo:list-item>

 </xsl:template>


 <xsl:template match="NAME">

  <fo:list-item-body>

   <fo:block font-family="sans-serif" font-size="36pt">

    <xsl:value-of select='.'/>

   </fo:block>

  </fo:list-item-body>

 </xsl:template>


 <xsl:template match="MASS">

 </xsl:template>


 <xsl:template match="RADIUS">

 </xsl:template>


 <xsl:template match="DENSITY">

 </xsl:template>


 <xsl:template match="DAY">

 </xsl:template>


 <xsl:template match="DISTANCE">

 </xsl:template>

</xsl:stylesheet>

Π’ΠΎΡ‚ Ρ€Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Π΄ΠΎΠΊΡƒΠΌΠ΅Π½Ρ‚ XSL-FO, lists.fo (листинг 12.2).

Листинг 12.2. lists.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>

 </fo:layout-master-set>

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

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

   <fo:block font-size="24pt">The Planets Table</fo:block>

   <fo:list-block provisional-label-separation="5mm"

    provisional-distance-between-starts="15mm">

    <fo:list-item line-height="20mm">

     <fo:list-item-label>

      <fo:block font-size="36pt" font-family="sans-serif">

       1.

      </fo:block>

     </fo:list-item-label>

     <fo:list-item-body>

      <fo:block font-size="36pt" font-family="sans-serif">

       Mercury

      </fo:block>

     </fo:list-item-body>

    </fo:list-item>

    <fo:list-item line-height="20mm">

     <fo:list-item-label>

      <fo:block font-size="36pt" font-family="sans-serif">

       2.

      </fo:block>

     </fo:list-item-label>

     <fo:list-item-body>

      <fo:block font-size="36pt" font-family="sans-serif">

       Venus

      </fo:block>

     </fo:list-item-body>

    </fo:list-item>

    <fo:list-item line-height="20mm">

     <fo:list-item-label>

      <fo:block font-size="36pt" font-family="sans-serif">

       3.

      </fo:block>

     </fo:list-item-label>

     <fo:list-item-body>

      <fo:block font-size="36pt" font-family="sans-serif">

       Earth

      </fo:block>

     </fo:list-item-body>

    </fo:list-item>

   </fo:list-block>

  </fo:flow>

 </fo:page-sequence>

</fo:root> 

Π Π΅Π·ΡƒΠ»ΡŒΡ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠΉ Ρ„Π°ΠΉΠ» PDF со списком Π² Adobe Acrobat Reader ΠΏΠΎΠΊΠ°Π·Π°Π½ Π½Π° рис. 12.1.

Рис. 12.1. Бписок, ΠΎΡ‚Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΠΎΠ²Π°Π½Π½Ρ‹ΠΉ ΠΏΡ€ΠΈ ΠΏΠΎΠΌΠΎΡ‰ΠΈ XSL-FO, Π² Adobe Acrobat Reader 


Π”Π°Π²Π°ΠΉΡ‚Π΅ Ρ‚Π΅ΠΏΠ΅Ρ€ΡŒ ΠΏΠΎΠ΄Ρ€ΠΎΠ±Π½Π΅Π΅ рассмотрим, ΠΊΠ°ΠΊ Ρ€Π°Π±ΠΎΡ‚Π°Π΅Ρ‚ lists.fo, ΠΈ ΠΈΠ·ΡƒΡ‡ΠΈΠΌ Ρ„ΠΎΡ€ΠΌΠ°Ρ‚ΠΈΡ€ΡƒΡŽΡ‰ΠΈΠ΅ ΠΎΠ±ΡŠΠ΅ΠΊΡ‚Ρ‹ для списка.

БозданиС списка: <fo:list-block>

Для Π½Π°Ρ‡Π°Π»Π° Π²ΠΎΡΠΏΠΎΠ»ΡŒΠ·ΡƒΠΉΡ‚Π΅ΡΡŒ элСмСнтом <fo:list-block>, Ρ‡Ρ‚ΠΎΠ±Ρ‹ ΡΠΎΠ·Π΄Π°Ρ‚ΡŒ список XSL-FO; этот ΠΎΠ±ΡŠΠ΅ΠΊΡ‚ содСрТит элСмСнты <fo:list-item>, содСрТащиС Π΄Π°Π½Π½Ρ‹Π΅ списка.