Jazyk XSL
XPath
XPath
XML Jazyk XSL - rychlá transformace dokumentů
PhDr. Milan Novák, Ph.D. KIN PF JU České Budějovice
9. prosince 2010
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Osnova 1 Jazyk XSL
Úvod Princip zpracování XML pomocí stylů Formátování dokumentu pomocí XSL FO První styl
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Osnova 1 Jazyk XSL
Úvod Princip zpracování XML pomocí stylů Formátování dokumentu pomocí XSL FO První styl 2 XPath Stromová struktura
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Osnova 1 Jazyk XSL
Úvod Princip zpracování XML pomocí stylů Formátování dokumentu pomocí XSL FO První styl 2 XPath Stromová struktura 3 XPath
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Úvod
Příchod XSL . V mnoha případech možnosti kaskádových stylů nestačí, rozšíření přináší jazyk XSL (eXtensible Stylesheet Language). . Původně měl jazyk XSL umožňovat definovat vzhled jednotlivých elementů – způsob jejich zarovnání, velikost a styl písma, barvy apod. Kromě toho jej šlo použít i k takovým věcem, jako je automatické generování obsahu, číslování obrázků, kapitol apod. . Postupně se ukázalo, že XSL má sloužit ke dvěma poměrně odlišným věcem – k transformaci XML dokumentů a k definici vzhledu jejich formátování. . Během příprav standardu XSL z něj proto byla vyřazena jeho část sloužící k transformaci dokumentů, pro kterou se používá název XSLT (XSL Transformations). . Pomocí XSLT lze vytvářet styly, které definují, jak se XML dokumenty mají převádět do formátu HTML, do XML dokumentů s jinou strukturou nebo do obyčejných textových souborů. . XSL FO (formátovací objekty) pro přesný popis vzhledu dokumentu. . Standard XSLT byl přijat jako standard konsorcia W3C. . Pro práci s XSLT exisutje celá řada editorů - XT, Saxon a Xalan. PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Princip zpracování XML pomocí stylů
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Formátování dokumentu pomocí XSL FO
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
]>
Cizí vavříny nám nedají spát, na vlastních usínáme. ORIENTÁLNÍ PŘÍSLOVÍ Člověk musí často líbat ruce, které by nejraději uťal. DÁNSKÉ PŘÍSLOVÍ ...
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
. Soubor s XSLT stylem je sám o sobě XML dokument, protože používá syntaxi XML. . V dokumentu se používají dva druhy značek – řídící příkazy pro procesor a značky výsledného dokumentu (např. HTML tagy). . Pro možnost kombinovat dvě sady značek, se používají jmenné prostory, tzn., že před jména všech elementů, které má XSLT procesor zpracovávat, se píše speciální prefix xsl:. . Celý styl musí být uzavřen v elementu stylesheet. <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> definice stylu URL adresa http://www.w3.org/1999/XSL/Transform, identifikuje jmenný prostor. XSLT procesor podle ní pozná, že dokument obsahuje styl. Pokud toto URL nebude uvedeno nebo bude nepřesně napsáno, procesor nebude instrukce ve stylu zpracovávat. PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
. Samotný styl se skládá především z šablon, které definují, jak se jednotlivé části XML dokumentu budou převádět do tvaru výstupního dokumentu. . Při výběru částí dokumentu se používá jednoduchý dotazovací jazyk XPath. . Existuje několik přístupů k tvorbě stylů. Pro dokumenty se složitou hierarchickou strukturou se většinou používá přístup, kdy je ve stylu mnoho šablon, které jsou postupně volány pro odpovídající části vstupního dokumentu.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Formátování pomocí několika šablon
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="windows-1250"/> <xsl:template match="/">
Moudrá přísloví <xsl:apply-templates/>
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
<xsl:template match="citat"> <xsl:apply-templates/>
<xsl:template match="text">
<xsl:apply-templates/>
<xsl:template match="autor">
— <em><xsl:apply-templates/>
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Pro dozkoušení stylů, je několik možností. . použít procesor ovládaný z příkazové řádky: saxon -o výstup dokument.xml styl.xsl xsltproc -o výstup styl.xsl dokument.xml msxsl -o výstup dokument.xml styl.xsl nxslt -o výstup dokument.xml styl.xsl xalan -o výstup dokument.xml styl.xsl xt dokument.xml styl.xsl výstup . připojit styl přímo k dokumentu: Na začátek dokumentu (za XML deklaraci a před kořenový element) se umístí instrukce pro připojení stylu: Nyní lze XML dokument otevřít v prohlížeči s podporou XSLT. Další možností je použít XSLT procesor z příkazové řádky: saxon -a -o výstup dokument.xml xsltproc -o výstup dokument.xml msxsl -pi -o výstup dokument.xml nxslt -pi -o výstup dokument.xml xalan -o výstup dokument.xml
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Formátování pomocí několika šablon
. První se začne provádět šablona platná pro kořen dokumentu match=”/”. . Vygeneruje se kostra HTML stránky a pomocí příkazu <xsl:apply-templates/> umožní spuštění dalších šablon, které se aktivují pro jednotlivé části vstupního dokumentu. . Další šablony určují, jak se mají do HTML převést jednotlivé citáty, jejich text a autoři. . V tomto případě je vykonávání jednotlivých části XSLT stylu řízeno obsahem dokumentu – jednotlivé elementy dokumentu aktivují provádění jednotlivých šablon. . Lze použít i opačný přístup, kdy je ve stylu minimum šablon a uvnitř šablony se cíleně vybírají určité informace z dokumentu.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Formátování pomocí jedné šablony <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="windows-1250"/> <xsl:template match="/">
Moudrá přísloví <xsl:for-each select="/citaty/citat">
<xsl:value-of select="text"/>
— <em><xsl:value-of select="autor"/>
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Formátování pomocí jedné šablony
. Styl obsahuje jednu šablonu, která si sama pomocí příkazů <xsl:for-each> a <xsl:value-of> vybere potřebné části vstupního dokumentu. . Tento přístup se většinou používá pro dokumenty, které nemají příliš složitou a variabilní strukturu. . Pokud má styl jen jednu šablonu pro kořen dokumentu, lze použít zkrácenou syntaxi stylu, kdy jsou přímo do kostry výstupního dokumentu doplňovány potřebné instrukce pro XSLT procesor.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
První styl
Zjednodušená syntaxe pro styly s jednou šablonou
Moudrá přísloví <xsl:for-each select="/citaty/citat">
<xsl:value-of select="text"/>
— <em><xsl:value-of select="autor"/>
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
XPath
. XPath (XML Path Language) je samostatný standard W3C, který se používá v několika dalších jazycích včetně XSLT.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
XPath
. XPath (XML Path Language) je samostatný standard W3C, který se používá v několika dalších jazycích včetně XSLT. . V XPathu lze zapisovat jednoduché výrazy, které vybírají části XML dokumentu.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
XPath
. XPath (XML Path Language) je samostatný standard W3C, který se používá v několika dalších jazycích včetně XSLT. . V XPathu lze zapisovat jednoduché výrazy, které vybírají části XML dokumentu. . XML dokument je přitom chápán jako stromová struktura, kde jsou jednotlivé elementy, atributy a text chápány jako uzly.
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
Stromová struktura
PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice
Jazyk XSL
XPath
XPath
XPath . Výrazy v XPath jsou podobné zápisu cest ve struktuře adresářů. Příklad: /faktura/polozka. . Lomítko odděluje jednu úroveň ve stromu. . Tzn., že položka musí být dítětem faktury. . Pokud na hloubce vnoření nezáleží, použijí se dvě lomítka bezprostředně za sebou – hledají se pak všichni potomci v libovolné úrovni stromu. . Podobně jako v adresářové struktuře, se lze odvolávat na aktuální uzel stromu pomocí tečky a přejít na nadřazenou úroveň pomocí dvou teček. . Odkaz na atribut, lez napsat před jeho jméno @. Výraz //@měna vybere všechny atributy měna kdekoliv v dokumentu. . Za výraz lze do hranatých závorek zapisovat podmínku, která výběr zúží. . Pokud se jako podmínku zapíše číslo, vybere se element s daným pořadím. Například /faktura/polozka[1] vybere první položku faktury. . Poslední položka se vybrala s využitím speciální funkce last() – /faktura/polozka[last()]. . Vše lze navzájem kombinovat. PhDr. Milan Novák, Ph.D. XML
KIN PF JU České Budějovice