1 / 28

Stylový jazyk XSL část 1

Stylový jazyk XSL část 1. Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov @pef.mendelu.cz. Proč vůbec používat styly?. XML umožňuje strukturovat data uložená v dokumentu, neříká nám však nic o jejich vzhledu princip oddělení obsahu dokumentu od jeho vzhledu

alden
Download Presentation

Stylový jazyk XSL část 1

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 XSLčást 1 Magdalena Raszková Ústav informatiky PEF MZLU v Brně xraszkov@pef.mendelu.cz

  2. Proč vůbec používat styly? • XML umožňuje strukturovat data uložená v dokumentu, neříká nám však nic o jejich vzhledu • princip oddělení obsahu dokumentu od jeho vzhledu • potřeba převodu XML dokumentu do formátu vhodného pro vlastní prezentaci • můžeme vytvořit vlastní program pro zpracování dat v XML ... • použít modul nějakého programovacího jazyka • využijeme technologii XSL ;-)

  3. Proč vůbec používat styly? • připojení různých stylů k jednomu XML dokumentu • Výhoda při aktualizaci • Přizpůsobení různým koncovým zařízením (monitor, tisk, PDA, mobil, …)

  4. Proč vůbec používat styly? • připojení jednoho stylu k různým XML dokumentům • Dosažení jednotného vzhledu • Změna vzhledu úpravou jednoho stylu

  5. 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

  6. Opakování – XPath Vyberte umělý kořen stromové reprezentace (neodpovídá žádnému elementu, jeho dítětem je vždy kořenový element dokumentu) / Vyberte všechny elementy knihovna, které jsou dětmi kořenové uzlu (jinak řečeno kořenový element) /knihovna Vyberte všechny elementy kniha, které jsou dětmi aktuálního uzlu kniha ./kniha Vyberte elementy nazev, které jsou dětmi elementu kniha kniha/nazev Vyberte všechny elementy nazev, které jsou potomky kořenového uzlu //nazev

  7. Opakování – XPath Vyberte všechny elementy, které jsou dětmi aktuálního uzlu * Vybere všechny elementy, které jsou dětmi elementu kniha kniha/* Vyberte aktuální element . Vyberte rodiče aktuálního uzlu (pohybujeme se vzhůru ve struktuře dokumentu) .. Vyberte všechny textové uzly v celém dokumentu //text() Vybere atribut kat_cislo aktuálního uzlu @kat_cislo

  8. Transformační část – XSLT • výkonný jazyk pro přímou manipulaci s obsahem dokumentů XML • pomocí XSLT lze jednoduchým způsobem transformovat vstupní XML dokument na rozličné výstupní formáty • umožňuje definovat transformaci XML dokumentu na jiný dokument XML s odlišnou strukturou a značkami • převod na další typy dokumentů: • HTML, XHTML • RTF • obyčejný textový soubor • kód v jazyku JavaScript • sekvence SQL příkazů • zdrojový kód pro TeX • dokumenty XSL-FO… • verze XSLT • XSLT 1.0 – doporučení (recommendation) • XSLT 2.0 – od 23. ledna 2007 také ve formě doporučení

  9. Editace XSL stylu • jde o čistě textový formát • jakýkoliv textový editor (Notepad, Emacs, …) • XML editory • XMetaL • Epic • XMLSpy • XMLwriter • XMLmind • Stylus Studio XML Enterprise Suite • Cooktop – budeme používat (umožňuje XSLT transformace, má zabudovaný procesor MSXML) • a další

  10. Elementy v XSLT stylu • specifikace definuje 35 elementů rozdělených do 3 kategorií: • kořenový element <xsl:stylesheet> • elementy nejvyšší úrovně (top-level elements) • mohou být přímými potomky elementu <xsl:stylesheet> • <xsl:attribute-set> • <xsl:template> • <xsl:variable> • <xsl:output> a další • instrukční elementy • stejně jako v XML dokumentu je možné v XSL stylu použít komentáře <!-- komentar -->

  11. Kořenový element XSLT stylu • stylový soubor je validní XML dokument, který obsahuje kořenový element <xsl:stylesheet> • v kořenovém elementu je určen jmenný prostor, všechny elementy XSL pak začínají prefixem xsl <?xml version="1.0" encoding="windows-1250"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> ... </xsl:stylesheet>

  12. Výstupní metody <xsl:output> • pomocí elementu <xsl:output> lze nastavit typ výstupního dokumentu • atributy elementu <xsl:output> určují nastavení hlavičky výstupního dokumentu • method: typ výstupního dokumentu • xml • text • html • encoding, version, standalone: hodnoty v hlavičce XML • doctype-public: veřejný identifikátor • doctype-public: systémový identifikátor • indent: formátovaný výstup, odsazené elementy • omit-xml-declaration: vložit či nevložit XML hlavičku • všechny atributy jsou nepovinné

  13. Výstupní metody <xsl:output> Zápis v XSL stylu: <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output indent="yes" method="xml" encoding= "windows-1250" doctype-system= "http://www.w3c.org/TR/xhtml1/DTD/xhtml11.dtd" doctype-public= "-//W3C//DTD XHTML 1.1//EN"/> Hlavička výstupního dokumentu pak vypadá následovně: <?xml version="1.0" encoding="windows-1250"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1//EN" "http://www.w3c.org/TR/xhtml1/DTD/xhtml11.dtd">

  14. Šablony <xsl:template>1/3 • základem každého XSL stylu jsou šablony (template) <xsl:templatematch="vzor"> tělo šablony </xsl:template> • hodnotou atributu match je výraz jazyka XPath (vzor), kterým vybíráme určitý uzel nebo skupinu uzlů ze zdrojového XML dokumentu • v těle šablony je pak určeno, jak bude vybraný uzel (skupina uzlů) zpracován • tělo šablony může obsahovat znaková data, instrukce jazyka XSLT či další elementy (pravidla)

  15. Šablony <xsl:template>2/3 • jakmile procesor XSLT nalezne ve zdrojovém XML dokumentu uzel, který odpovídá zadanému vzoru, stane se nalezený uzel kontextovým uzlem dané šablony • všechny operace uvnitř šablony jsou pak vykonávány vzhledem k tomuto uzlu • na aktuální uzel se lze odkazovat pomocí . <xsl:template match="nazev">     <b>    <xsl:value-of select="."/>    </b> </xsl:template>

  16. Šablony <xsl:template>3/3 Poznámka: • Pro vyvolávání šablon je důležité pořadí elementů v XML dokumentu a nikoliv pořadí šablon v XSL stylu. • Na uspořádání šablon v XSL stylu tedy ve většině případů nezáleží.

  17. Příklad šablony XML dokument <knihovna> <kniha>Jiskraživota</kniha> <kniha>Jericho</kniha> </knihovna> šablona v XSL stylu <xsl:template match="kniha"> Jméno knihy je <xsl:apply-templates/> <br/> </xsl:template> Výstupem bude dokument obsahující text Jméno knihy je Jiskra života<br/> Jméno knihy je Jericho<br/>

  18. Instrukce <xsl:apply-templates> • slouží pro zpracování vnořených uzlů (potomků) • zavoláním <xsl:apply-templates>se začnou hledat šablony pro všechny děti kontextového uzlu <xsl:template match="kniha">  <xsl:apply-templates/> </xsl:template> <xsl:template match="nazev"> <i><xsl:apply-templates/> </i> </xsl:template> <xsl:template match="autor"> <b><xsl:apply-templates/> </b> </xsl:template>

  19. Načítání hodnoty atributů • instrukce <xsl:apply-templates> automaticky nezpracuje dětské uzly, kterými jsou atributy nebo jmenné prostory • musíme je uvést jako hodnotu atributu select pomocí prefixu @ a příslušného názvu <xsl:template match="kniha"> Katalogové číslo: <xsl:value-of select="@kat_cislo"/>    </xsl:template>

  20. např. autor | nazev | cena Implicitní šablony • XSLT procesory mají v sobě zabudovaných několik tzv. implicitních šablon (default rule) • pokud po zavolání <xsl:apply-templates> pro nějaký uzel není nalezena uživatelem definovaná šablonu, použije se implicitní šablona • díky implicitní šabloně se na výstup zkopírují veškeré textové uzly, které nebyly zpracovány žádnou uživatelem definovanou šablonou • jak tomu zamezit (pokud se nám to nehodí): • prázdné šablony: <xsl:template match="autor"/> (filtrování) • <xsl:apply-templates select="výraz"/> Pozn.: IE verze 5.5 a dřívější implicitní pravidla nepodporuje

  21. Instrukce <xsl:value-of> • využijeme, pokud chceme v těle šablony použít jen textový obsah nějakého elementu či jeho podelementů, ale nechceme aplikovat další šablony • umožňuje přístup přímo k hodnotě uzlu (použití např. při vytváření tabulek) • většinou používáno v dokumentech, které nemají příliš složitoua variabilní strukturu • vybere pouze obsah textových uzlů, které jsou potomky elementu určeného pomocí výrazu • instrukce je vždy prázdná <xsl:template match="kniha"> <p>Knihu <xsl:value-of select="nazev"/> jsem ještě nečetla.</p> </xsl:template>

  22. Instrukce <xsl:for-each> • slouží pro cyklické zpracování všech elementů získané sady uzlů (použití při vytváření tabulek apod.) • uvnitř cyklu se mění aktuální uzel <xsl:template match="/">      <table> <xsl:for-each select="kniha">              <tr>                <td>                  <xsl:value-of select="nazev"/>                </td> <td>                  <xsl:value-of select="cena"/>                </td>             </tr>   </xsl:for-each>     </table> </xsl:template>

  23. Instrukce <xsl:text> • ze stylu jsou před zpracováním vypuštěny všechny textové uzly, které obsahují pouze bílé znaky • instrukce <xsl:text> slouží pro vkládání doslovného textu do výstupu (včetně bílých znaků) • instrukce může obsahovat pouze textový uzel • využívá se hlavně pro vkládání mezer <xsl:template match="kniha">     <p>       <xsl:value-of select="autor"/> <xsl:text>: </xsl:text> <xsl:value-of select="nazev"/>     </p> </xsl:template>

  24. Zápis znaků < > • znaky < a > se používají pro oddělení tagů od okolního textu • proto je uvnitř hodnoty elementu nemůžeme zapsat přímo, ale musíme použít tzv. znakové entity • Znak < znaková entita &lt; • Znak > znakováentita &gt; Pozn.: nezlomitelná mezera – entita &#160;

  25. Konflikt šablon • pokud pro jeden uzel dokumentu existuje několik šablon: • šablonám lze nastavit atribut priority – XSLT procesor pak použije šablonu s vyšší prioritou • Pokud priorita není nastavena ručně, odvodí je XSLT procesor pomocí určitých pravidel • pokud mají šablony stejnou prioritu • procesor zahlásí chybu nebo • použije poslední definovanou šablonu

  26. Realizace transformací • uvnitř klientského programu • transformace pomocí prohlížeče • Mozilla FireFox • Internet Explorer 6.0 • verze Internet Exploreru 5.x podporují pouze starší verzi návrhu standardu • styl se připojuje ke XML dokumentu pomocí instrukce <?xml-stylesheet?> uvedené za hlavičkou XML dokumentu <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="styl.xsl"?> <knihovna> ... </knihovna> Pozn.: Internet Explorer je schopen provést transformaci pouze pokud je jako typ uveden text/xslmísto text/xml, který by tam měl správně být. FF zvládá obojí.

  27. Realizace transformací • pomocí procesoru jazyka XSLT • samostatný program, která dovede aplikovat styly na základní XML dokument a provést jeho transformaci • XT, Saxon, Xalan, … • MSXML (zabudováno v editoru Cooktop) • příklad transformace pomocí procesoru XT java -cp xt.jar com.jclark.xsl.sax.Driver kurz.xml kurz.xsl kurz.html zdrojový XML dokument XSL styl název cílového dokumentu

  28. Zdroje • Stránky konsorcia W3C (specifikace XSL, XSLT, XSL-FO, XPath) http://www.w3.org/Style/XSL/ • Specifikace XSLT verze 1.0 http://www.w3.org/TR/xslt • Jiří Kosek – XSLT v příkladech http://www.kosek.cz/xml/xslt/index.html • XSLT Tutorial (anglicky) http://www.w3schools.com/xsl/ • XSLT Tutorial (anglicky) http://www.zvon.org/xxl/XSLTutorial/Output/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/ • Cooktop – freeware XML editor (vhodný i pro editaci XSL stylů) http://www.xmlcooktop.com/

More Related