1 / 26

Stylový jazyk XSL 2. část

Stylový jazyk XSL 2. část. Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov @pef.mendelu.cz. Testík. Co znamená zkratka XSL? Extra Strong Language Extensible Stylesheet Language Extra Simple Language.

kayla
Download Presentation

Stylový jazyk XSL 2. část

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. Stylový jazyk XSL2. část Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov@pef.mendelu.cz

  2. Testík • Co znamená zkratka XSL? • Extra Strong Language • Extensible Stylesheet Language • Extra Simple Language • Která část jazyka se v současnosti nejvíce používá, např. pro převod XML na HTML? • XSLT • XSLFO • XSL-FO • Který prvek je kořenovým elementem dokumentu XSLT? • xsl:stylesheet • xsl:transform • lze použít obě varianty • Šablony jsou základem XSLT stylu. Který element se používá pro jejich tvorbu • xsl:template • xsl:templates • xsl:apply-templates

  3. Testík • Jaký je jmenný prostor elementů XSLT podle doporučení konsorcia W3C? • http://www.w3.org/1999/XSL/Transformation • http://www.w3.org/1999/XSL/Transform • http://www.w3c.org/1999/XSL/Transform • http://www.w3.org/1999/XSLT • Co umožňuje XSLT element xsl:value-of? • aplikovat určitou šablonu • vypsat přímo textový obsah elementu • vypsat textový obsah prvku, ať už se v jeho struktuře vyskytuje na libovolném místě • Jaký povinný atribut musíme uvést u elementu for-each? • name • select • test Zdroj: Lucie Grusová – XML pro úplné začátečníky ISBN 80-7226-697-7

  4. Instrukce <xsl:if> • slouží k jednoduchým testům (podmínkám) • neexistuje žádná část else, proto je v případě více variant nutno použít <xsl:choose> <xsl:template match="cislo">      <div>         <xsl:value-of select="."/>  <xsl:if test="number(.) mod 2=0"> je sudé </xsl:if>     </div> </xsl:template>

  5. Instrukce <xsl:choose> • slouží pro testování více možných podmínek • může obsahovat více instrukcí <xsl:when> • nepovinně element <xsl:otherwise> <xsl:template match="//kniha"> <xsl:choose> <xsl:when test="popis"><xsl:apply-templates/>         </xsl:when> <xsl:otherwise>       <b>Tato kniha nemá popis.</b> </xsl:otherwise> </xsl:choose> </xsl:template>

  6. Číslování <xsl:number> • slouží k přiřazení posloupnosti čísel jednotlivým uzlům ve výsledném dokumentu • atributy • count – určuje, jaké uzly budou číslovány (pokud atribut nepoužijeme, budou číslovány jen uzly stejného jména a typu jako aktuální uzel) • format – určuje výstupní formát číslování (1, 01, a, A, i, I) • a další <xsl:template match="/">    <xsl:for-each select="kniha">   <xsl:number format="1. "/><xsl:value-of select="nazev"/> <xsl:value-of select="cena"/>    </xsl:for-each> </xsl:template>

  7. Třídění <xsl:sort> 1/2 • určuje pořadí zpracování uzlů uvnitř instrukcí <xsl:apply-templates> a <xsl:for-each> • atributy (všechny nepovinné) • select – výraz jazyka XPath, který vrací sadu uzlů k setřídění • order – pořadí řazení (ascending nebo descending), defaultně ascending (vzestupné třídění) • data-type – podle jakého typu dat budou informace tříděny (number nebo text), defaultně text • case-order – zda budou mít při třídění přednost malá (lower-first) či velká (upper-first) písmena • pokud žádný atribut neuvedeme, jako klíč k setřídění bude sloužit aktuální prvek a řazení podle abecedy • lze řadit i podle více kritérii (vícero sort za sebou)

  8. Třídění <xsl:sort>2/2 <xsl:template match="knihovna">      <table border="1">      <xsl:for-each select="kniha"> <xsl:sort select="nazev"/>               <tr>                <td><xsl:value-of select="isbn"/></td> <td><xsl:value-of select="nazev"/></td>             </tr>      </xsl:for-each>      </table> </xsl:template>

  9. Proměnné <xsl:variable> 1/2 • proměnné slouží v XSLT k zapamatování údajů, které opakovaně používáme • obsah již definované proměnné nelze měnit (je to tedy spíše konstanta) • proměnnou lze nastavit buď globální pro celý styl, nebo jen pro určitou šablonu či její část • proměnná je platná pro všechny své následující sourozence a jejich potomky • proměnná může obsahovat libovolný XPath typ (seznam uzlů, řetězec, číslo, boolean)

  10. Proměnné <xsl:variable> 2/2 • proměnnou můžeme definovat jedním z následujících tří způsobů: • Přiřazení výsledku libovolného výrazu do proměnné <xsl:variable name="jmeno" select="výraz"/> • Přiřazení prázdného řetězce do proměnné <xsl:variable name="jmeno"/> • Přiřazení fragmentu výstupního dokumentu do proměnné <xsl:variable name="jmeno"> elementy, atributy apod. </xsl:variable> • na obsah proměnné se ve výrazech můžeme odvolávat pomocí zápisu $jmeno • vložení hodnoty proměnné do výstupního dokumentu <xsl:value-of select="$jmeno"/> Zdroj: http://www.kosek.cz/xml/xslt/parametry.html

  11. Parametry <xsl:param> • parametry mají stejné použití jako proměnné, pouze jim lze při volání stylu nebo šablony změnit hodnotu • šabloně, která má uvnitř sebe definované nějaké parametry, můžeme předat hodnotu těchto parametrů pomocí instrukce<xsl:with-param> Více se dozvíte zde: http://www.kosek.cz/xml/xslt/parametry.html

  12. Instrukce <xsl:attribute> • občas potřebujeme strukturu stávajícího XML dokumentu přeskupit či pozměnit • lze využít instrukce <xsl:attribute>, <xsl:copy>, <xsl:copy-of> • instrukce <xsl:attribute> vytvoří na výstupu nový atribut • atributy • name – jméno nového atributu (povinný) • obsahem elementu <xsl:attribute> je hodnota nového atributu na výstupu

  13. Instrukce <xsl:copy> a <xsl:copy-of> • instrukce <xsl:copy> vytvoří na výstupu kopii aktuálního elementu, ale bez jeho případného obsahu a atributů • instrukce <xsl:copy-of> vytvoří na výstupu přesnou kopii elementu určeného pomocí povinného atributu select, včetně jeho obsahua případných atributů

  14. Pojmenované šablony • pojmenované šablony plní podobnou funkci jakofunkce a procedury v klasických jazycích • často se opakující XSL instrukce můžeme uložit do zvláštní šablony, která se volá svým jménem • pojmenovaná šablona má atribut name, kterým určujeme název šablony • k vyvolání šablony slouží instrukce <xsl:call-template> <xsl:template name="pokus">tělo šablony </xsl:template> … <xsl:call-template name="pokus"/>

  15. Transformace XML do PDF • TeX • definujeme vlastní transformace na TeXovské příkazy v XSL stylu • PassiveTeX (procesor FO postavený nad TeXem) • TeXML • xmltex (parser XML v TeXu ) Základní přehled zde • XSL-FO • Formátovací objekty

  16. XSL (eXtensible Stylesheet Language) • stylový jazyk speciálně vyvinutý pro XML • specifikace XSL je dílem konsorcia W3C • původně jedna specifikace, která zajišťovala jak transformaci dokumentů, tak i jejich formátování • později vymezeny 2 samostatné části, které spolu ale úzce souvisí: • transformační část: XSLT (Transformation) • formátovací část: XSL-FO (Formatting Objects) • definuje vizuální vlastnosti objektů a dokumentu – formátování výstupu • transformace do formátu PDF, PS • tyto dvě části doplněny ještě o jazyk XPath – dohromady označováno jako XSL Family

  17. Formátovací část XSL-FO • eXtensible Stylesheet Language – Formatting Objects • část jazyka XSL, která se zabývá formátováním výstupu a přesným umístěním prvků na stránce • aplikace jazyka XML • nejčastěji se používá k transformaci XML dokumentů na dokumenty ve formátu PDF či PostScript • jazyk XSL-FO je mnohem obsáhlejší než jazyk XSLT • aktuální verze: • součást doporučení XSL verze 1.0 • pracovní návrh verze 1.1

  18. Formátovací objekty (FO) • jazyk je založen na speciálních formátovacích objektech (Formatting Objects – FO) • formátovací objekty definují vzhled vysázeného dokumentu podobně jako HTML popisuje zobrazení stránky v prohlížeči • elementy XSL-FO představují stránky, bloky či nejrůznější objekty (obrázek, tabulka, ...) • formátovací objekty se používají k určení toho, jak mají být data z dokumentů XML formátována a zobrazena (šířka okrajů, styly písma, zarovnání…)

  19. Formátovací objekty (FO) • dokumenty obsahující pouze formátovací objekty jsou poměrně málo používané (jen pro krátké dokumenty), spíše se kombinují s XSLT • můžeme tedy nejprve vytvořit styl XSLT, který použijeme k transformaci XML dokumentu tak, aby výsledný dokument obsahoval formátovací objekty <?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="knihovna"> <fo:block> <xsl:apply-templates/> </fo:block> </xsl:template> <xsl:template match="kniha"> <fo:block space-before="3pt" text-align="center" start-indent="10mm"> <xsl:value-of select="nazev"/> </fo:block> </xsl:template> </xsl:stylesheet>

  20. Realizace transformací FO • v současné době XSL-FO nepodporuje žádný běžně dostupný prohlížeč, jejich využití je vázáno na procesory jazyka XSL-FO • open-source/free implementace • FOP (převod na PDF, PCL, PS, SVG, Print, AWT, MIF, TXT) • PassiveTeX • TeXML (převod na TeX) • UFO, jfor • komerční implementace • XEP • Epic • XSL Formatter • žádná z implementací zatím nepokrývá úplný standard, ale zvláště komerční implementace jsou pro většinu aplikací zcela dostačující

  21. FOP (Formatting Object Processor) • nejrozšířenější procesor XSL-FO • založený na jazyku Java, spouští se z příkazové řádky • vyvinut Jamesem Tauberem v nadaci Apache Software Foundation • výstup do PDF je u FOPu velmi dobře propracovaný a umožňuje mimo jiné vkládání odkazů, bookmarků, grafiky a vlastních fontů do vytvářených dokumentů

  22. FOP (Formatting Object Processor) • FOPnepodporuje české kódování, což lze však vyřešit úpravou konfiguračního souboruuserconfig.xml (bližší popis je obsaženv dokumentaci programu) • příklad transformace pomocí procesoru FOP fop –c c:fop\conf\userconfig.xml -fo kurz.fo -pdf kurz.pdf fop –c c:fop\conf\userconfig.xml -xsl kurz.xsl -xml kurz.xml –pdf kurz.pdf dokument s formátovacími objekty název cílového dokumentu nebo XSL-FO styl zdrojový XML dokument název cílového dokumentu

  23. Proces transformace Soubor obsahující FO (kurz.fo) XML dokument (kurz.xml) XSLT procesor (XT, Saxon, Xalan, ...) XSL-FO procesor (FOP, XEP, ...) výsledný dokument ve formátu PDF, PS, ... (kurz.pdf, kurz.ps, ...) XSL-FO styl (kurz.xsl)

  24. Proces transformace(zjednodušený – procesor FOP, XEP, ...) XML dokument (kurz.xml) XSL-FO procesor (FOP, XEP, ...) výsledný dokument ve formátu PDF, PS, ... (kurz.pdf, kurz.ps, ...) XSL-FO styl (kurz.xsl)

  25. Zdroje • Stránky konsorcia W3C (specifikace XSL, XSLT, XSL-FO, XPath) http://www.w3.org/Style/XSL/ • Specifikace XSL verze 1.0 (součástí je specifikace XSL-FO 1.0) http://www.w3.org/TR/2001/REC-xsl-20011015/ • Jiří Kosek – XSLT v příkladech http://www.kosek.cz/xml/xslt/index.html • Procesor XT • oficiální stránky: http://www.blnz.com/xt • rozšířený o podporu českého kódování (autor Jiří Kosek): http://www.kosek.cz/xml/xt/ • Procesor FOP • http://xmlgraphics.apache.org/fop/ • Cooktop – freeware XML editor http://www.xmlcooktop.com/

  26. Dotazy? Děkuji za pozornost ;)

More Related