Limbaj extensibil pentru foaia de stil - Formatarea obiectelor

XSL-FO ( Extensible Stylesheet Language - Formatting Objects ) este o aplicație XML care descrie modul în care textul, imaginile, liniile și alte elemente grafice sunt aranjate pe o pagină. Cu XSL-FO puteți formata documente nu numai pentru afișare pe ecrane, ci și pentru produse tipărite de înaltă calitate pe hârtie. Cu XSL-FO, documentele pot fi chiar formatate pentru citirea cu voce tare folosind un sintetizator de vorbire.

XSL-FO face parte din specificațiile XSL ale W3C .

caracteristici

XSL-FO este un limbaj de marcare descriptiv care își are rădăcinile în DSSSL și a fost dezvoltat uneori în paralel cu CSS . Diferențele decisive dintre XSL-FO și CSS sunt modelul de pagină ( zone în XSL-FO, modelul cutiei în CSS) și modelul de proces (procesare în două etape folosind XSLT și apoi aspectul cu formatatori XSL-FO pe de o parte și formatarea ad-hoc cu randatoarele CSS pe de altă parte). XSL-FO conține elemente și atribute pentru următoarele aspecte:

  • Regiuni, margini și zone ale unei pagini,
  • Lățimea și înălțimea paginilor,
  • Secvența paginilor,
  • Paginare,
  • Rame, spații, coloane și blocuri,
  • Paragrafe, liste și tabele,
  • Formatarea textului, cum ar fi formatele de propoziții și separarea,
  • Linii, imagini și alte obiecte
  • și mult mai mult.

Lista este departe de a fi completă, în special în ceea ce privește XSL 1.1.

XSL-FO nu a fost dezvoltat pentru procesarea textelor, ci pentru tipărirea profesională, motiv pentru care gama de funcții a acestor două tehnologii este dificil de comparat. Cu toate acestea, dacă adăugați XSLT ca limbaj de transformare la XSL-FO, multe funcții ale sistemelor de procesare de text de astăzi pot fi simulate cu cele două limbi. Aveți un limbaj pentru reprezentare (prin XSL-FO) și logică de procesare (XSLT); sistemele de procesare a textelor combină de obicei ambele domenii de responsabilitate într-o singură limbă și într-un singur loc.

Așa-numitele procesoare FO sunt disponibile pentru generarea de PDF , RTF , text ASCII și alte suporturi tipărite dintr-un fișier XSL-FO . Un program utilizat pe scară largă este FOP (Formatting Objects Processor) din proiectul Apache (vezi linkul web), o aplicație Java care generează documente PDF din date XSL-FO și suportă parțial Postscript și PCL . Pentru dezvoltările .NET există un port NFop foarte limitat al proiectului Java, care acceptă doar formatul de ieșire PDF. În multe ramuri ale industriei, cu toate acestea, se folosesc formatatori comerciali care, pe de o parte, susțin părți mai mari ale specificației și, pe de altă parte, conțin propriile extensii care nu fac parte din XSL-FO, dar sunt absolut necesare pentru o utilizare practică, de ex. B. alte formate de ieșire.

metodă

Transformarea datelor XML într-un arbore FO și într-un document PDF, reprezentare schematică

Punctul de plecare este un document XML care este convertit într-un fișier XSL-FO utilizând foi de stil XSLT. Foaia de stil XSLT selectează elementele necesare din documentul original și le transformă într-o combinație de elemente și atribute XSL-FO ( arborele FO ). Acestea determină aspectul în mediul țintă (de exemplu, proiectarea paginilor, proiectarea coloanelor, listelor, tabelelor etc.). Acest proces se repetă până când documentul original a fost complet procesat. Într-un al doilea pas, un formatator adecvat (cunoscut și sub numele de procesor FO) creează fișierul țintă dorit (de exemplu, PDF, RTF sau PostScript).

exemplu

Următorul exemplu definește o pagină A4 cu textul Hallo Welt!:

<?xml version="1.0"?>
<fo:root xmlns:fo="http://www.w3.org/1999/XSL/Format">

  <fo:layout-master-set>
    <fo:simple-page-master  master-name="myA4page"
                            page-width="210mm" page-height="297mm">
      <fo:region-body region-name="xsl-region-body"  margin="2cm"/>
    </fo:simple-page-master>
  </fo:layout-master-set>

  <fo:page-sequence  master-reference="myA4page">   <!-- (in Versionen < 2.0 "master-name") -->
    <fo:flow flow-name="xsl-region-body">
      <fo:block>Hallo Welt!</fo:block>
    </fo:flow>
  </fo:page-sequence>

</fo:root>

literatură

Link-uri web