Vytvoření a použití jednoduchého stylu si nyní ukážeme na jednoduchém dokumentu, který obsahuje několik přísloví a jejich autory.
Příklad 1.1. Struktura dokumentu s příslovími – prislovi.xml
<?xml version="1.0" encoding="utf-8"?>
<citaty>
<citat>
<text>Cizí vavříny nám nedají spát, na vlastních usínáme.</text>
<autor>ORIENTÁLNÍ PŘÍSLOVÍ</autor>
</citat>
<citat>
<text>Člověk musí často líbat ruce, které by nejraději uťal.</text>
<autor>DÁNSKÉ PŘÍSLOVÍ</autor>
</citat>
<citat>
<text>Člověk nemyslí na to, co mu dají, ale na to, co mu nedopřejí.</text>
<autor>AFRICKÁ MOUDROST</autor>
</citat>
...
</citaty>
Dejme tomu, že z takového souboru budeme chtít vytvořit HTML stránku, která přehledně zformátuje jednotlivé citáty a autory (viz obrázek 1.4 – „Výsledné formátování přísloví“).
Soubor s XSLT stylem je sám o sobě XML dokument,
protože používá syntaxi XML. Pro jeho editování proto můžeme využít
běžné XML editory. V dokumentu se přitom míchají dva druhy značek
– řídící příkazy pro procesor a značky výsledného dokumentu
(např. HTML tagy). Aby šlo v jednom dokumentu kombinovat dvě sady
značek, používají se jmenné prostory. To znamená, že před jména všech
elementů, které má XSLT procesor zpracovávat, se píše speciální prefix
xsl:
. Celý styl přitom musí být
uzavřen v elementu stylesheet
.
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
version="1.0">
definice stylu
</xsl:stylesheet>
URL adresa http://www.w3.org/1999/XSL/Transform
, která
identifikuje jmenný prostor, je přitom velmi důležitá. XSLT procesor
podle ní pozná, že dokument opravdu obsahuje styl. Pokud toto URL
zapomeneme uvést nebo v něm uděláme překlep, procesor nebude
instrukce ve stylu vůbec zpracovávat.
Na tomto místě se sluší upozornit na jmenný prostor
http://www.w3.org/TR/WD-xsl
, na který můžete
narazit v některých starších materiálech a knihách. Používal ho
Microsoft ve své implementaci poměrně starého návrhu XSLT.
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, se kterým se podrobně seznámíme v další části školení.
Existuje několik přístupů ke 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. Tento přístup ilustruje následující styl umožňující formátovat přísloví.
Příklad 1.2. Formátování přísloví pomocí několika šablon – prislovi1.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <head> <title>Moudrá přísloví</title> </head> <body> <xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="citat"> <xsl:apply-templates/> <hr/> </xsl:template> <xsl:template match="text"> <p><xsl:apply-templates/></p> </xsl:template> <xsl:template match="autor"> <p align="right">— <em><xsl:apply-templates/></em></p> </xsl:template> </xsl:stylesheet>
Pokud si budeme chtít styl vyzkoušet, máme několik možností.
použít procesor ovládaný z příkazové řádky:
saxon -ovýstup
dokument.xml
styl.xsl
xsltproc -ovýstup
styl.xsl
dokument.xml
msxsl -ovýstup
dokument.xml
styl.xsl
nxslt -ovýstup
dokument.xml
styl.xsl
xalan -ovýstup
dokument.xml
styl.xsl
xtdokument.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) umístíme instrukci pro připojení stylu:
<?xml-stylesheet href="prislovi1.xsl" type="text/xsl"?>
Nyní můžeme přímo XML dokument otevřít v prohlížeči s podporou XSLT (např. IE6 nebo Mozilla).
Další z možností je použít XSLT procesor z příkazové řádky, a říci mu, aby použil styl z dokumentu:
saxon -a -ovýstup
dokument.xml
xsltproc -ovýstup
dokument.xml
msxsl -pi -ovýstup
dokument.xml
nxslt -pi -ovýstup
dokument.xml
xalan -ovýstup
dokument.xml
využít editor podporující XSLT – většina editorů pro práci s XML umožňuje pohodlné spuštění transformace přímo z prostředí editoru
První se začne provádět šablona platná pro kořen dokumentu
match="/"
. Ta vygeneruje kostru
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 si cíleně vybíráme určité informace z dokumentu. Tento přístup ilustruje následující styl, který je funkčně shodný s předchozí ukázkou.
Příklad 1.3. Formátování přísloví pomocí jedné šablony – prislovi2.xsl
<?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"> <xsl:output method="html" encoding="utf-8"/> <xsl:template match="/"> <html> <head> <title>Moudrá přísloví</title> </head> <body> <xsl:for-each select="/citaty/citat"> <p><xsl:value-of select="text"/></p> <p align="right">— <em><xsl:value-of select="autor"/></em></p> <hr/> </xsl:for-each> </body> </html> </xsl:template> </xsl:stylesheet>
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, můžeme 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.
Příklad 1.4. Zjednodušená syntaxe pro styly s jednou šablonou –
prislovi3.xsl
<?xml version="1.0" encoding="utf-8"?> <html xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xsl:version="1.0"> <head> <title>Moudrá přísloví</title> </head> <body> <xsl:for-each select="/citaty/citat"> <p><xsl:value-of select="text"/></p> <p align="right">— <em><xsl:value-of select="autor"/></em></p> <hr/> </xsl:for-each> </body> </html>
Základním předpokladem pro tvorbu stylů je dokonalé ovládnutí
jazyka XPath, kterým se vybírají části dokumentu ke zpracování (v
xsl:for-each
a xsl:value-of
) a testují šablony, které se
provedou (xsl:template
). V
následující části se proto velice podrobně podíváme na jazyk
XPath.