150 likes | 315 Views
Technol ógie XML Prednáška č. 10-11. XSL. e X tensible S tylesheet L anguage. Univerzálny jazyk na zápis štýlov, Vznikol aby odstránil nevýhody existujúcich štýlov (hlavne CSS) a pridal nové možnosti. XSL sa delí na dve časti: XSLT: obsahuje nástroje pre transformáciu XML dokumentov,
E N D
eXtensibleStylesheetLanguage • Univerzálny jazyk na zápis štýlov, • Vznikol aby odstránil nevýhody existujúcich štýlov (hlavne CSS) a pridal nové možnosti. • XSL sa delí na dve časti: • XSLT: obsahuje nástroje pre transformáciu XML dokumentov, • FO: formátovacie objekty slúžia na popis vzhľadu stránky a jej častí. • Transformovať je možne do viacerých formátov ako napríklad XML; HTML; PDF; ...
XSLT • <?xml version="1.0“?> <xsl:stylesheet version="1.0“ xmlns:xsl= "http://www.w3.org/1999/XSL/Transform"> • Prvé riadky xsl súboru. • V XML musíme definovať, ktorý štýl má byť aplikovaný: <?xml-stylesheettype="text/xsl" href=„styl.xsl"?> • Všetky hlavné prehliadače (Opera, Firefox, Safari, IE) dokážu takýto dokument správne zobraziť.
Základné stavebné prvky XSLT <xsl:template match=“ <<vyraz>> ”> <<vystup>> </xsl:template> výraz v šablóne určuje, na ktoré elementy sa štýl bude aplikovať. Ide o výraz XPath výstup definuje finálny, výsledný vzhľad <xsl:template match=“meno”> <H1> <xsl:apply-templates/> </H1> </xsl:template>
Základné stavebné prvky XSLT • Predchádzajúci príklad je možné použiť ak element meno obsahuje text. <subor> <meno>J.</meno> <priezvisko>Vrana</priezvisko> </subor> <xsl:template match=“/”> <h1> <xsl:value-of-select=“//meno”></h1> <h2> <xsl:value-of-select=“//priezvisko”></h2> </xsl:template>
XSLT • <xsl:apply-templates> • Aplikuješablónu na aktuálny uzol alebo na jeho priamych potomkov. • Tento prístup nám umožňuje spracovať elementy v nami určenom poradí. <xsl:apply-templates select="title"/> <xsl:template match="title"> Title: <b><xsl:value-of select="."/></b> </xsl:template>
XSLT • Čo v prípade XML databázy? • V predchádzjúcom príklade existuje len jeden element meno a priezvisko. Čo ak by ich bolo viacero? • Ako to vyriešiť? <xsl:for-each select=“osoba”> <b><xsl:value-of select=“meno”></b> </xsl:for-each> Alebo je možné uskutočniť výber: <xsl:for-each select=“osoba[meno=“Peter”]”>
XSLT • Ponúka pri tvorbe šablón ďalšie možnosti: • Podmienky • Cykly • Funkcie (triedenie,....) • Premenné • Na začiatku je možné určiť typ výstupu: • <xsl:outputmethod="xml"/> • Takto vieme meniť výstup na XML, HTML alebo text. • XSLT zachováva výhody CSS, ale: • Je to XML, • Väčšie možnosti transformácie do viacerých typov súborov.
Viac informácií o XSLT • http://www.zvon.org/xxl/XSLTutorial/Output/index.html • Tutorial na www.zvon.org • http://www.zvon.org/xxl/XSLTutorial/Output/index.html • Referenčná príručka k XSLT • http://www.kosek.cz/xml/xslt/ • Stránky o XML (JiříKosek)
FormatovacieObjekty • XSLT dobre zvláda transformáciu do webovej stránky, • XML by však nemalo byť obmedzené prostredím internetu. • FO má význam použiť ak chceme dáta napr. vytlačiť. • FO a XSLT sa kombinujú a preto potrebujeme zadefinovať namespace pre oba. • Rozdiel oproti XSLT je že obsahuje funkcie pre prácu s textovými výstupmi typu: záhlavie, päta, číslovanie strán, ...
Štruktúra FO • Prvý riadok tradične ako všetky XML, • ďalej je <fo:root> element na ktorom je definovaný aj namespace, • nasledujú šablóny pre stranu <fo:layout-master-set>, • <fo:simple-page-master master-name="A4"> • Šablóna s menom a identifikátorom • <fo:page-sequence> jeden alebo viac elementov tohto typu. • Popisuje obsah strany.
Formátovacie objekty • Vo FO sú definované štvorcové priestory, v ktorých je možný zobrazovaný výstup. • Pages • Regions • Block areas • Line areas • Inline areas
Zvyčajný FO dokument <fo:page-sequence> <fo:flow flow-name="xsl-region-body"> <fo:block> <!– Výstup pôjde zvyčajne sem --> </fo:block> </fo:flow> </fo:page-sequence>
Domáca úloha • http://www.w3schools.com/xslfo/xslfo_intro.asp • Tutorial o XSL:FO • Viac príkladov z oboch tém bude na cvičení.