Magické slovo XML s důrazem na styly

S pojmem XML jste se na stránkách Computerworldu setkali již mnohokrát. Na jaře vyšlo obecněji pojaté Téma týdne, v ...


S pojmem XML jste se na stránkách Computerworldu setkali již mnohokrát. Na jaře
vyšlo obecněji pojaté Téma týdne, v několika předchozích číslech jste se v
Tajném zápisníku webového vývojáře seznámili i s vlastními základy jazyka XML a
s tím, jak v něm vytvářet dokumen-ty. Jazyk XML je výborný formát pro přenos
dat mezi různými systémy. V určitém okamžiku však vždy do procesu zpracování
dokumentů a dat vstupuje člověk. V této chvíli je potřeba dokument prezentovat
ve formě, která je pro něj nejsrozumitelnější. A právě zde je místo pro stylové
jazyky.
Jde o zobrazení
Jazyk XML definuje pouze strukturu dokumentů. Chcete-li však dokument přehledně
zobrazit, musíte nějakým způsobem definovat, jak se jednotlivé elementy zobrazí
jakou barvou, jakým písmem, jak budou zarovnané apod. Pro definici vzhledu
dokumentů se dnes používají tzv. stylové jazyky. Mezi tři nejznámější a
nejpoužívanější patří jazyky CSS, XSL a DSSSL.
Dnešní Téma týdne bude zaměřeno právě na tyto stylové jazyky. Naučíte se v něm,
jak vytvořit XML dokument a odpovídající styl tak, aby se dokument dal zobrazit
v prohlížečích, které podporují XML.
Malé historické ohlédnutí
Zpočátku se počítače používaly jen jako inteligentní psací stroje. S rozvojem
techniky se však stále zdokonalovaly i tiskárny. Stalo se tak, že počítačové
tiskárny začaly zvládat tisk několika variantami písma, posléze i různými
velikostmi písma a nyní pro ně díky práci v grafickém režimu není problém
vytisknout cokoliv.
Programy pro zpracování textových dokumentů se s možnostmi tiskáren
vypořádávaly různě. První z přístupů spočíval v tom, že do textového dokumentu
se přímo vkládaly řídicí kódy tiskárny, které ovlivňovaly použitý druh písma.
Toto řešení však nebylo pro autory dokumentů moc příjemné a navíc nebylo ani
praktické a elegantní. Nové typy tiskáren nebo tiskárny od jiných výrobců měly
odlišné řídicí kódy, a tudíž nebylo možné jeden dokument vytisknout na více
různých tiskárnách.
Tento problém odstranily až různé formátovací programy jako troff nebo TeX.
Formátování dokumentu se vyznačilo pomocí speciálních značek, které pak
formátovací program převedl do jazyka srozumitelného pro jednotlivé druhy
tiskáren.
Nejde jen o tiskárny
Nerozvíjely se však jen tiskárny, ale celá oblast výpočetní techniky. Díky
velkokapacitním záznamovým médiím a rychlejším počítačům bylo možné textové
dokumenty uchovávat, vyhledávat v nich informace, sdílet je se spolupracovníky,
modifikovat atd. Tištěný výstup už také nebyl jediným druhem výstupu, který
musel být kvalitní. Dokumenty se začaly prezentovat přímo na obrazovkách
počítačů, šlo je získávat i ze vzdálených míst pomocí počítačových sítí.
Ukázalo se, že použití formátovacích jazyků zaměřených na tištěný výstup není
ten správný formát.
Většina dokumentů jednoho druhu měla podobnou strukturu. Například kniha má
kapitoly, podkapitoly a odstavce. Vývoj tedy zákonitě vedl až k jazyku SGML,
který umožňoval vytvářet dokumenty a definovat jejich strukturu. Jednou z
nejznámějších aplikací SGML je jazyk HTML používaný pro tvorbu webových
stránek. Zjednodušením poměrně složitého SGML vzniklo také XML.
Stylové jazyky přicházejí
Použití jazyků jako SGML a XML vyřešilo problémy s výměnou dokumentů mezi
různými aplikacemi. Tyto jazyky však postihují pouze strukturu dokumentu,
nikoliv jeho vzhled. Chce-te-li SGML/XML dokument vytisknout nebo načíst do
nějaké aplikace, musíte nějak definovat, jak se mají jednotlivé elementy
zobrazit. Většina výrobců nástrojů pro práci se SGML/XML dokumenty měla vlastní
způsob, jak definovat vzhled jednotlivých elementů. Postupem času se však
ukázalo, že by bylo celkem praktické, kdyby i definice vzhledu dokumentu byla
nějak standardizována. Výsledkem této snahy bylo několik stylových jazyků.
Mezi nejstarší patří FOSI (Formatting Output Specification Instance), jehož
autorem je americké ministerstvo obrany. Styl FOSI je podporován mnoha SGML
aplikacemi. Výhodou je to, že FOSI styl je sám o sobě SGML dokumentem, takže
pro jeho editování lze využívat stávající nástroje. Jazyk je to však pouze
deklarativní, nelze v něm provádět nějaké výpočty nebo přeskupování dokumentu
pro potřeby výstupu.
Nástupcem FOSI byl jazyk DSSSL (Document Style Semantics and Specification
Language), který byl v roce 1995 přijat jako ISO/IEC norma s číslem 10 179.
Syntaxe DSSSL vychází z jazyků pro operaci se seznamy, jako je Lisp nebo
Schema. DSSSL je kompletní programovací ja-zyk. Kromě specifikování vzhledu
jednotlivých elementů tak můžete provádět různé úpravy dokumentu před jeho
výsledným zformátováním. Typickým příkladem je například generování obsahu
dokumentu nebo změna struktury a pořadí elementů před jejich vytištěním. FOSI a
DSSSL byly úzce spjaty s jazykem SGML. DSSSL lze bez problémů používat i s
jazykem XML.
Kaskády na scéně
Další ze stylových jazyků vznikl pro potřeby jazyka HTML. Ano, jsou to
samozřejmě kaskádové styly dokumentů CSS (Cascading StyleSheets). V polovině
90. let již zasáhl Web do komerční sféry a výrobci prohlížečů rozšiřovali HTML
o nestandardní prvky umožňující různé grafické efekty a lepší kontrolu layoutu.
Kaskádové styly měly být nástrojem, který umožní návrat k čistšímu HTML kódu,
jenž se nepodřizuje pouze požadavkům na grafický design. Bohužel, po dvou a půl
letech od shválení finální verze standardu CSS konsorciem W3C nezbývá než říci,
že kaskádové styly se zatím nevyužívají tak, jak by mohly. Vinu nesou zejména
výrobci browserů, kteří do webových prohlížečů přidávají podporu CSS pomalu a
poměrně nekvalitně. Uspokojivou podporu kaskádových stylů měl až Internet
Explorer 4.0. Netsacape Navigator na ni teprve čeká, Navigator 4.0 byl jen
hodně nedokonalým pokusem dobré implementace CSS.
V loňském roce byla schválena nová verze kaskádových stylů CSS2. Ta mimo jiné
obsahuje zlepšenou podporu jazyka XML styl lze nyní přiřadit i na základě
hodnot atributů. CSS jsou dnes asi nejpoužívanějším stylovým jazykem pro XML
dokumenty. Podporují je i Internet Explorer 5.0 a vývojová verze Netscape
Navigatoru 5.0. Pokud budete tedy dnes vytvářet XML dokumenty, které mají být
přístupné na Webu, použijete pro definici jejich vzhledu nejspíše CSS.
Kaskádové styly jsou sice velice jednoduchý jazyk, pro jednoduché dokumenty ale
postačují.
V mnoha aplikacích je však vhodné, pokud můžete před zobrazením (vytištěním)
dokument nějak modifikovat například vygenerovat obsah, přeorganizovat
informace apod. V tomto případě své uplatnění nalezne jazyk XSL (eXtensible
Stylesheet Language). Jazyk XSL, jak ostatně napovídá i jeho název, vznikl až
speciálně pro potřeby XML. Pro zápis stylu se využívá jazyk XML, takže lze
použít běžné XML editory. XSL umožňuje 2 základní věci:
transformovat jeden XML dokument do jiného
specifikovat formátovací vlastnosti jednotlivých částí dokumentu
Možnost transformovat jeden dokument do druhého se dnes využívá nejčastěji.
Jednotlivé XML elementy se mapují na fragmenty HTML kódu, který specifikuje
výsledné zobrazení. Tento způsob práce s XML již dnes podporuje Internet
Explorer 5.0 a existuje i ActiveX komponenta, která umožňuje použít XML+XSL v
IE 4.0. Nezbývá než doufat, že podpora XSL bude zahrnuta i v Netscape
Navigatoru 5.0.
Formátovací model XSL vychází z DSSSL a je poměrně komplexní. To je také asi
jeden z důvodů, proč dodnes neexistuje jeho pořádná implementace. Objevují se
sice první testovací implementace, ale dokud nepřijde s podporou Microsoft nebo
jiná velká softwarová firma, zůstane potenciál této části jazyka XSL zřejmě
nevyužit.
Pro úplnost nelze opomenout ani to, že na rozdíl od ostatních stylových jazyků
není XSL dosud standardizován. Zatím se jedná pouze o pracovní návrh konsorcia
W3C. Implementace od Microsoftu velké části návrhu vyhovuje a přináší i některá
rozšíření. Společně s XML využijete zejména CSS a XSL. CSS je plně postačující
pro jednoduché aplikace, pro složitější a náročnější formátování se bude
využívat XSL. Do té doby, než se rozšíří podpora XSL v aplikacích, bude
především pro kvalitní tištěný výstup používáno i DSSSL.

Pozor na češtinu
Budete-li s XML a styly experimentovat, je důležité dát si pozor na kódování
češtiny v dokumentech. XML za standardní kódování považuje UTF-8. V tomto
kódování jsou české znaky zapsány jako dvojice na první pohled nesrozumitelných
bajtů.
Bohužel ne všechny editory jsou schopné zapisovat soubory v kódování UTF-8. Já
sám vím pouze o nadstavbě do editoru Emacs a o WordPerfectu 9, který umí XML a
podporuje UTF-8 i UTF-16. XML dokumenty můžete samozřejmě vytvářet v libovolném
kódování např. CP1250 ve Windows a ISO 8859-2 v UNIXu. Kódování musíte určit
pomocí atributu encoding v XML deklaraci:
<?xml version="1.0" encoding="windows-1250"?>
V Internet Exploreru 5.0 nebudou s takovými dokumenty problémy. Ty nastanou až
v Gecku. Gecko totiž zatím nepodporuje různá vstupní kódování dokumentu. Musíte
proto použít buď UTF-8, nebo diakritiku oželet a použít ASCII. Pokud použijete
jiné kódování a české znaky, patrně vám při načítání dokumentu Gecko zhavaruje.

Kaskádové styly a jejich použití spolu s XML
Kaskádové styly (CSS) zná z jazyka HTML většina webových vývojářů a autorů
stránek. Pokud budou chtít použít styl s XML dokumentem, bude pro ně CSS tedy
zřejmě tou první volbou. Použití stylu pro XML dokument je nutné, protože na
rozdíl od HTML zde neexistuje žádný standard, jak se mají jednotlivé elementy
zobrazovat.
Na dvou ukázkách vidíte, jak to dopadne, když ukázkový dokument načtete do
nejrozšířenějších webových prohlížečů bez stylu.
Připojení stylu k dokumentu
Kaskádové styly mohly být zapisovány přímo do HTML dokumentu. V XML tato
možnost není, styl musí být definován v externím souboru. To má na druhé straně
obrovskou výhodu: jeden styl můžete aplikovat na větší množství dokumentů
stejného typu. Připojení stylu k dokumentu je nezávislé na použitém stylovém
jazyce a provádí se pomocí speciální instrukce pro zpracování xml-stylesheet.
Připojení stylu tak může vypadat například takto:
<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet href="styl.css" type="text/css"?>
<dokument> ...
</dokument>
Pomocí atributu href je určena URL adresa (může být i relativní, jako v našem
příkladě), na které je uložen soubor se stylem. Atribut type určuje MIME typ
použitého stylového jazyka. Pokud používáte XSL, použijete type="text/xsl".
Pro zopakování
Ačkoliv o existenci kaskádových stylů již jistě dobře víte, stojí za to
připomenout, jak CSS vlastně vypadají. Styl se vždy skládá z několika pravidel.
Každé pravidlo má dvě části selektor a deklaraci. Selektor určuje, pro které
elementy se použije deklarace. Deklarace pak obsahuje jednotlivé vlastnosti
(písmo, barva, zarovnání) a jejich konkrétní hodnoty.
S kaskádovými styly jste se mohli podrobně setkat v seriálu Vytváříme si
domovskou stránku, který vycházel v roce 1997. Pokud nemáte k dispozici starší
čísla Computerworldu, můžete si pasáže o CSS přečíst na adrese
http://www.kosek.cz/clanky/html/. Selektorem bývá nejčastěji název elementu,
pro který je deklarován vzhled. Máte možnost vytvářet i složitější selektory,
které se aplikují pouze na elementy v určitém kontextu nebo na elementy, které
obsahují určitý atribut.
Při vytváření stylu pro XML dokument je zapotřebí postupovat trochu odlišně
oproti stylům pro HTML stránky. Styl připojený k HTML stránce většinou pouze
upravuje vzhled některých elementů. V našem případě však začínáme na zelené
louce a musíme definovat vzhled všech elementů.
Obvykle začneme s definicí stylu pro kořenový element, který v sobě obsahuje
celý dokument. V HTML je kořenovým elementem html, v naší ukázce je to clanek.
U kořenového elementu deklaruje styl vlastnosti, které mají být společné pro
celý dokument např. barvu pozadí nebo použitý druh písma. Jak takový styl
vypadá, si můžete prohlédnout v naší další ukázce.
Rozlišení elementů
Dalším důležitým krokem při tvorbě stylu je rozlišení blokových a inline
elementů. Blokové elementy jsou ty, které způsobují zalomení řádky např.
odstavce textu, nadpisy, tabulka apod. Inline elementy jsou pak všechny
ostatní, které se obvykle projeví pouze změnou písma v odstavci. Implicitně
jsou prohlížečem všechny elementy považovány za elementy typu inline, takže je
celý dokument zobrazen jako jeden dlouhý nepřehledný odstavec (jak je vidět na
obrázku Netscape Navigatoru z první ukázky).
Další pravidla v ukázkovém stylu již jen drobně upravují výsledné zobrazení
tak, aby vyhovělo našim záměrům. Zajímavostí, jež není známa z HTML, jsou
atributové selektory. Ty umožňují vytvářet pravidla, která se aplikují pouze v
případě, že v počátečním tagu elementu je přítomen určitý atribut.
Nejjednodušší atributový selektor má tvar element[atribut], který je splněn v
případě, že u elementu je použit atribut. V praxi se však obvykle budou
aplikovat různá pravidla v závislosti na obsahu atributu. Potom můžete použít
selektor element [atribut="hodnota"], který je použit v případě, kdy má atribut
požadovanou hodnotu. Tento přístup je použit i v ukázkovém stylu, kde můžeme u
odstavce para měnit způsob zarovnání. Trošku škoda je, že tento standardní
mechanismus není v Internet Exploreru 5.0 implementován.
Co znamená CSS spolu s XML?
I z naší malé ukázky bylo patrné, že použití kaskádových stylů společně s XML
je velice jednoduché a pro mnoho účelů dostačující. Umožní vám zcela oddělit
strukturu dokumentu a význam uložených dat od jejich vizuální reprezentace.

Zobrazení XML dokumentu bez stylu
<?xml version="1.0" encoding="utf-8"?>
<clanek> <zahlavi> <rubrika>Téma týdne</rubrika> <nazev>XML a stylové
jazyky</nazev> <autor>Jiří Kosek</autor> </zahlavi> <perex>zde bychom opsali
úvodní text</perex> <!Po perexu začíná text článku. Tohle je jen komentář. ->
<para zarovnani="nastred"> Jazyk XML definuje pouze (zde by pokračoval náš
text, včetně odlišných definic zarovnání) </clanek>

Zobrazení XML dokumentu se stylem
Ukázkový styl styl.css byl k XML dokumentu připojen pomocí "magické" řádky:
<?xml-stylesheet href="styl.css" type="text/css"?>
Soubor se stylem styl.css vypadá následujícím způsobem
/* Celý dokument bude na bílém pozadí, fontem Arial */
clanek { background-color: white; font-family: Arial, Verdana, sans-serif }
/* Rozdělení elementů na blokové a inline */
zahlavi, nazev, autor, perex, para, rubrika {display: block}
em { display: inline }
/* Záhlaví článku */
zahlavi { text-align: center; padding: 10pt; margin: 20pt; background-color:
silver; border: 4pt outset silver }
/* Rubrika */
{ rubrika float: right; color: yellow; font-size: small; font-weight: bold }
/* Název článku */ nazev { font-size: 300%; text-transform: uppercase; color:
blue; margin: 5pt }
/* Autor článku */
autor { font-style: italic }
/* Mezera mezi odstavci */
para, perex { margin: 5pt 20pt }
/* Perex je zvýrazněným písmem a s odlišnou úpravou první řádky */ perex {
font-style: italic; font-weight: bold; }
perex:first-letter { font-size: 200% }
perex:first-line { text-trans form: uppercase }
/* Test na atributové selektory zarovnání odstavce */
para[zarovnani="nastred"]
{ text-align: center }
para[zarovnani="doleva"]
{ text-align: left }
para[zarovnani="doprava"]
{ text-align: right }
/* Zvýraznění textu */
em { font-weight: bold }

Další zdroje na Internetu k problematice XML
http://www.w3.org/Style/XSL/
stránka konsorcia W3C; specifikace XSL a XSLT a další zajímavé odkazy
http://www.w3.org/Style/CSS/
stránka konsorcia W3C; specifikace CSS1, CSS2 a další zajímavé odkazy
http://www.xml.com
server věnovaný XML; mimo jiného na něm naleznete mnoho zajímavých článků o XSL
a CSS
http://www.xml.org
nově vznikající server, který by měl v budoucnu sloužit především jako
repozitář standardních DTD a stylů http://zvon.vscht.cz/ZvonHTML/
Downloads/convert_en.html
program pro konverzi souboru mezi různými kódováními; mimo jiné zvládá i UTF-8
http://www.mozilla.org/
mozilla vývojová verze nového Netscape Navigatoru s podporou XML a CSS
http://www.emwac.cz/
z tohoto serveru si můžete stáhnout Internet Explorer 5.0 s podporou XML, CSS a
XSL.


XSL stylový jazyk pro náročné
Jazyk eXtensible Stylesheet Language (XSL) pracuje na zcela jiném principu než
kaskádové styly. Pomocí XSL vytvoříte pravidla pro transformaci jedné třídy XML
dokumentů na jiný XML dokument. Výsledný dokument, který vznikne aplikováním
transformačních pravidel, je použit pro zobrazení.
Dnes se nejčastěji XSL styl vytváří tak, aby výsledkem jeho aplikování byl HTML
dokument. To umožňuje využít současná jádra prohlížečů, která si se zobrazením
HTML poradí. Navíc lze XML dokumenty pomocí XSL transformovat do HTML ještě na
serveru, a tak zpřístupnit XML dokumenty libovolnému prohlížeči.
XSL je prozatím návrh standardu, který připravuje konsorcium W3C. XSL kromě
transformačního jazyka (který bývá někdy označován jako XSLT) obsahuje i
vlastní formátovací model, který můžete použít například místo výstupu do HTML.
Formátovací model vychází z jazyků CSS a DSSSL a jeho cílem je nabídnout
minimálně to co stylové jazyky (ze kterých tento model původně vychází).
Pokud si chcete XSL vyzkoušet v praxi, musíte se dnes v podstatě omezit na
jazyk XSLT. Ten je až na drobné výjimky ve shodě se standardem W3C
implementován v Internet Exploreru 5.0. Formátovací model XSL zatím zvládají (a
to pouze částečně) jen některé testovací implementace, které rozhodně nejsou
určeny pro rutinní nasazení.
Podívejme se tedy na základy transformačního jazyka XSL, které si můžete rovnou
vyzkoušet například ve spojení s IE 5.0. Gecko zatím bohužel XSL nepodporuje.
Až bude k dispozici i nějaká snadno dostupná implementace formátovacího modelu
XSL, určitě se s ní na stránkách našeho týdeníku budete moci seznámit.
Základy XSL
XSL styl je sám o sobě XML dokumentem. Měl by proto začínat odpovídající XML
deklarací:
<?xml version="1.0" encoding="utf-8"?>
Jelikož je výsledkem aplikování XSL stylu XML dokument, musíte ve stylu
používat elementy, které se vyskytnou ve výsledném XML dokumentu. Aby se
navzájem nepomíchaly elementy z cílového dokumentu a ze stylu, používají se
tzv. jmenné prostory (namespaces). Před názvy všech elementů stylu, které
souvisejí s XSL, se předřadí sekvence xsl:, aby se tyto elementy odlišily od
ostatních. Použití jmenného prostoru je potřeba deklarovat u kořenového
elementu stylu styles heet: <xsl:stylesheet xmlns:xsl="
http://www.w3.org/TR/WD-xsl">
Samotný styl se skládá převážně ze šablon. Pomocí šablony vyberete vždy určitý
element a určíte, co se má s jeho obsahem udělat. Definice šablony se provádí
pomocí elementu template a elementy, na které se použije, se určují pomocí
vzoru zapsaného do atributu match. Pokud byste např. chtěli, aby se element
para pomocí stylu přeměnil na HTML element p pro odstavec, použijete
následující šablonu:
<xsl:template match="para"> <p><xsl:apply-templates/></p>
</xsl:template>
Element apply-templates XSL procesoru říká, aby obsah elementu para postoupil
dalším šablonám ty zpracují samotný text odstavce, případně další elementy,
které mohou například měnit použitý styl písma. Tagy <p> a </p> se objeví ve
výsledném HTML dokumentu.
Pokud nechcete, aby byl zpracován celý obsah elementu, můžete u apply-templates
použít atribut select a pomocí vzoru určit, které části elementu se mají
zpracovat.
Použití atributu select je velmi silný nástroj. Jeho vhodným použitím můžete
části dokumentu vyřadit ze zobrazení nebo měnit pořadí elementů na výstupu.
Kdybyste například chtěli náš ukázkový XML dokument zobrazit tak, že nejprve
bude jméno autora, pak název článku a rubrika nebude vůbec zobrazena, použijete
ve stylu následující jednoduchou šablonu:
<xsl:template match="zahlavi"> <xsl:apply-templates select="autor"/>
<xsl:apply-templates select="nazev"/>
</xsl:template>
Důležitým nástrojem pro identifikaci jednotlivých částí dokumentu jsou vzory,
které jsme použili v atributech match a select. Vzorem nemusí být jen samotný
název elementu. Možnosti jsou mnohem širší, jak je vidět v tabulce.
Tvorba vlastních stylů
Chcete-li vytvářet vlastní styly v XSL, musíte znát princip, na kterém styl
pracuje. Na každý element dokumentu se aplikuje šablona, která má vyhovující
vzor. Pokud je element možno zpracovat pomocí více šablon, má přednost ta
poslední.
Podle specifikace XSL by měl mít každý XSL procesor zabudovány šablony, které
způsobí vypsání celého dokumentu. To usnadní psaní stylů, protože pak stačí
pomocí šablon ošetřit elementy, u kterých požadujete speciální formátování.
Internet Explorer bohužel tyto šablony nemá zabudované. Na začátku každého XSL
stylu, který chcete použít i v IE, byste proto měli uvést definici
následujících tří šablon:
<xsl:template match="/"> <xsl:apply-templates/>
</xsl:template>
<xsl:template match="*"> <xsl:apply-templates/>
</xsl:template>
<xsl:template match="text()"> <xsl:value-of select="."/>
</xsl:template>
První šablona zajistí zpracování kořenového elementu dokumentu. Druhá šablona
se postará o to, že budou zpracovány všechny elementy. Konečně poslední šablona
do výsledného dokumentu vypíše textový obsah všech elementů na nejnižší úrovni.
Díky tomu, že později uvedené šablony mají vyšší prioritu, neovlivní tyto tři
šablony nijak další zpracování dokumentu.
Na naší poslední ukázce vidíte příklad stylu, který lze použít pro zpracování
našeho ukázkového XML dokumentu. Výsledné zobrazení je téměř stejné jako při
použití CSS. Jako tvůrci jsme si však v tomto případě mohli dovolit provádět
různá "kouzla", na která kaskádové styly nestačí. Pomocí šikovného vzoru jsme
například získali název článku a umístili ho jako titulek stránky do popisu
okna prohlížeče.
Závěr
XSL podporuje i mnoho dalších konstrukcí. Není problém styl obohatit o
podmínky, cykly a další. K dispozici máte několik nástrojů na řazení elementů
podle téměř libovolných kritérií. Chcete-li některé elementy automaticky
číslovat, není to samozřejmě pro XSL problém. Podobně jako u CSS můžete v
jednom stylu načítat další a jejich kombinováním dosáhnout požadovaného
výsledku. Podrobnější informace o XSL naleznete např. v návrhu specifikace XSL
na stránkách konsorcia W3C.
9 1928 / pahn

XLS styl a jeho zobrazení
Nejprve je k dispozici následující XSL styl:
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl="http://www.w3.org/TR/WD-xsl"> <xsl:template
match="/"> <html> <head> <title> <xsl:apply-templates
select="clanek/zahlavi/nazev/text()"/> </title> </head> <body
style="background-color: white; font-family: Arial, Verdana, sans-serif">
<xsl:apply-templates/> </body> </html> </xsl:template> <xsl:template match="*">
<xsl:apply-templates/> </xsl:template> <xsl:template match="text()">
<xsl:value-of select="."/> </xsl:template> <xsl:template match="zahlavi"> <div
style="text-align: center; padding: 10pt; margin: 20pt; background-color:
silver; border: 4pt outset silver"> <xsl:apply-templates/> </div>
</xsl:template> <xsl:template match="rubrika"> <div style="float: right; color:
yellow; font-size: small; font-weight: bold"> <xsl:apply-templates/> </div>
</xsl:template> <xsl:template match="nazev"> <div style="font-size: 300%;
text-transform: uppercase; color: blue; margin: 5pt"> <xsl:apply-templates/>
</div> </xsl:template> <xsl:template match="autor"> <div style="font-style:
italic"> <xsl:apply-templates/> </div> </xsl:template> <xsl:template
match="perex"> <div style="margin: 5pt 20pt; font-style: italic; font-weight:
bold"> <xsl:apply-templates/> </div> </xsl:template> <xsl:template
match="para"> <div style="margin: 5pt 20pt"> <xsl:attribute name="align">
<xsl:choose> <xsl:when test="@zarovnani[.=nastred]">center</xsl:when>
<xsl:when test="@zarovnani[.=doprava]">right</xsl:when> <xsl:when
test="@zarovnani[.=doleva]">left</xsl:when>
<xsl:otherwise>left</xsl:otherwise> </xsl:choose> </xsl:attribute>
<xsl:apply-templates/> </div> </xsl:template> <xsl:template match="em">
<strong> <xsl:apply-templates/> </strong> </xsl:template>
</xsl:stylesheet>
Pomocí stylu zpracuje XSL procesor náš dokument a vznikne následující HTML
stránka:
<html> <head> <title> XML a stylové jazyky </title> </head> <body
style="background-color: white; font-family: Arial, Verdana, sans-serif"> <div
style="text-align: center; padding: 10pt; margin: 20pt; background-color:
silver; border: 4pt outset silver"> <div style="float: right; color: yellow;
font-size: small; font-weight: bold"> Téma týdne </div> <div style="font-size:
300%; text-transform: uppercase; color: blue; margin: 5pt" XML a stylové jazyky
</div> <div style="font-style: italic"> Jiří Kosek </div> </div> <div
style="margin: 5pt 20pt; font-style: italic; font-weight: bold">
Zde bude text našeho článku...
</div> <div style="margin: 5pt 20pt" align="center">
Další část textu, jiné zarovnání... </div> <div style="margin: 5pt 20pt"
align="right">
Další část textu, opět trochu odlišné formátování... </div> </body> </html>









Komentáře
K tomuto článku není připojena žádná diskuze, nebo byla zakázána.