XSL:n muotoiluoliot "Formatting objects" (FO) muotoiluolioita, esim. lohko, kirjainmerkki, taulukon solu, (FO:n elementtejä) muotoiluominaisuuksia, esim. kehyksen leveys, kirjasinkoko, (FO:n elementtien attribuutteja) XSL:n osa XSLT muunnoskieli FO muotoiluoliot (FO DTD) Molemmat XML! Muotoilutoliot muotoiluolioilla ja ominaisuuksilla kuvataan hyvin tarkasti dokumentin ulkoasua ei XML hengen mukaista, mutta FO muotoinen tiedosto tuotetaan yleensä automaattisesti tyypillinen prosessi: XSLT prosessori tuottaa XML dokumentista ja XSLT tyylitiedostosta FO tiedoston (XML) XSL prosessori tuottaa FO tiedostosta esim. pdf tiedoston (tai jotain muuta muotoiltua muotoa) Muotoiluolio suorakulmainen tietoyksikkö(alue), "laatikko", muotoilualue usein yksi olio = yksi alue joskus olio kattaa useamman alueen, esim. kappale joka jakautuuu kahdelle sivulle joskus alueeseen mahtuu useampia olioita alueet sijoitetaan peräkkäin ruudulle tai paperille ja muodostavat materiaalin vuon (flow) FO tiedostosta muodostuu hierarkia: "muotoilupuu" Muotoilualueet lohkoalueet sisältää muita lohkoalueita tai esim. siv, kappaleet rivialue inlinealue esim. yksittäiset merkit "samalla rivillä" Muotoilualueiden sijoittelu Lohkoalueiden sijoittelu lohkoalueet säiliössä: kirjoitustavan mukaan (suomessa: left to right, top to bottom [lr tb]; heprea: top to bottom, right to left, jne.) riippuen kirjoitustavasta, before, after, start ja end määreet tarkoittavat eri asioita lohko voi jakaantua moneen säiliöön lohko voi sisältää lohkon, esim. kappale ja lista joskus lohkon voi sijoittaa absoluuttisesti esim. sivulle; yleensä lohkot ijoitetaan peräkkäin Muotoilualueiden sijoittelu Rivialueiden ominaisuuksia rivialue sijoittuu lohkoalueeseen kirjoitustavan mukaan (suomi: top to bottom; japani: right to left(?)) eri ominaisuuksilla säädetään esim rivivälit, ym. eivät vastaa alkuperäisen XML dokumentin rivejä! inlinealue sijoittuvat rivialueeseen kirjoitustavan mukaan (esim. left to right) voivat vastata XML dokumentin inline elementtejä voivat jakaantua useammalle riville
XSL FO ja CSS XSL:llä ja CSS:llä paljon yhteisiä olioita ja ominaisuuksia CSS: emph { font weight: bold } XSL: <fo:inline font weight="bold"> kirjasintiedot (font), tekstityylit, tausta, värit, kehykset, taulukot lähinnä niin kuin CSS:ssä mutta löytyy myös eroja CSS viittaa asioihin sanoilla left ja right XSL yleisempi ja käyttää before, after, start, end, esim. padding before (eikä padding left) <?xml version="1.0"?> Sivun rakentaminen <fo:root> <fo:layout master set></fo:layout master set> <fo:page sequence></fo:page sequence> <fo:page sequence></fo:page sequence> </fo:root> tyylitiedoston juuri fo:root sivumallit (layout master set) ja sisällöt (page sequence) Muotoilupuu Ominaisuuksien periytyminen Muotoilualueet (oliot) muodostavat puurakenteen (XML) Usein muotoiluolion ominaisuudet periytyvät vanhempiolioista esim jos lohkoalueen kirjasinkoko on 18pt, myös siihen kuuluva inlinemerkin oeltuskoko on 18 pt periytyvä arvo voidaan kumota antamalla lapsen ominaisuudelle uuden arvon Layout master set Sisältää sivumääritykset (sivumallit) <fo:layout master set> page master name="kansi"> page master name="bodyteksti"> </fo:layout master set> Määrittelee sivun (esim. kansilehti, sisällysluettelo, tavallinen raporttisivu, jne.) > <region body /> <! main flow > <region before /> <! header > <region after /> <! footer > <region start /> <! left margin > <region end /> <! right margin > Esimerkki margin right="2.5cm" margin left="2.5cm" margin bottom="2cm" margin top="1cm" page width="21cm" page height="29.7cm" master name="single"> <fo:region body margin top="3cm"/> <fo:region before extent="3cm"/> <fo:region after extent="1.5cm"/>
Sivun sisältö, page sequence Sivun sisältö, static content <fo:page sequence master name="single"> <fo:static content flow name="xsl region before"> > The Loch Ness Monster </fo:static content> <fo:flow> > > > </fo:flow> </fo:page sequence> <fo:static content flow name="xsl region before"> padding top="3pt" text align="center" color="white" background color="blue" space after.optimum="15pt" line height="24pt" font size="18pt" >The Loch Ness Monster </fo:static content> Sivun sisältö, flow Sivun sisältö, block <fo:flow flow name="xsl region body"> padding top="3pt" text align="start" space after.optimum="10pt" space before.optimum="10pt" line height="20pt" font size="16pt" >Nessie protection plan drawn up text align="start" space after.optimum="3pt" line height="15pt" font size="12pt" >A government agency has drawn up a contingency plan to cope with the possibility of the Loch Ness Monster being caught. The Scottish Natural Heritage instructions form part of a code of practice for research projects on the Highland loch aimed at protecting all existing wildlife and the local environment. fo:block Lohkotasoiset elementit lohkot fo:external graphic kuvat (miten?) fo:leader viivat, pisteviivat, Lohkotasoiset elementit fo:block kappaleet, otsikot, jne. attribuutit text indent text align (left, center, right) tekstityylit, marginaalit, kehykset, padding, tavutus (!) (vrt CSS) esimerkit, ks. edellä Viivat, yms. <fo:leader leader pattern="rule" leader length="8cm" rule style="solid" rule thickness="2pt" /> <fo:inline> osajono Inline oliot <fo:inline font weight="bold">lihavoitu teksti</fo:inline> muut leader patternit: space, rule, dots, use content
Inline oliot, jatk. <fo:page number> sivun sivunumero voidaan liittää tekstiin <fo:page number font weight="bold"/> <fo:page number citation> viittaus sivunumeroon <fo:page number citation ref id="chap1"> id="chap1"> Listat <fo:list block provisional distance between starts="15mm" provisional label separation="5mm"> <fo:list item> <fo:list item label start indent="5mm" end indent="label end()"> >a. </fo:list item label> <fo:list item body start indent="body start()"> >List item 1. </fo:list item body> </fo:list item> Taulukot Sisäiset linkit <fo:table> <fo:table column column width="150pt"/> <fo:table column column width="150pt"/> <fo:table body font size="10pt" font family="sans serif"> <fo:table row> <fo:table cell> >text </fo:table cell> </fo:table row> </fo:table body> </fo:table> <fo:basic link color="blue" internal destination="chap1"> Chapter 1 </fo:basic link> Ulkoiset linkit <fo:basic link color="blue" external destination="example.pdf"> File </fo:basic link> FOP FOP is the world s first print formatter driven by XSL formatting objects Apache http://xml.apache.org/fop/ tekee esim. pdf:ää tai tekstiä XML dokumentista (joka sisältää muotoiluolioita) vain osa muotoiluolioista toteutettu! ks. http://xml.apache.org/fop/implemented.html Declaration and Pagination and Layout Formatting Objects root page sequence, page sequence master, single page master reference repeatable page master reference, repeatable page master alternatives, conditional page master reference layout master set, simple page master region body, region before, region after, region start, region end, flow, static content Block Formatting Objects block block container (limited)
Inline Formatting Objects character external graphic inline instream foreign object leader page number page number citation, see limitations Table Formatting Objects table table body table cell table column table footer table header table row List Formatting Objects list block list item Out of line Formatting Objects footnote footnote body list item body list item label Link and Multi Formatting Objects basic link (internal and external) Other Formatting Objects wrapper marker, retrieve marker border and padding shorthand properties Toteutetut muotoiluominaisuudet FOP:issa Paljon, ks. http://xml.apache.org/fop/implemented.html FOPin käyttö ks. http://www.cs.helsinki.fi/group/xmltools/