XSLT tutorial
Generování statických HTML stránek s navigací pomocí XSLT
Následující text Vám ukáže, jak vytvořit jednoduchý vícestránkový web s navigací pomocí XSLT. Výsledný web je zobrazen na následujícím obrázku:
| Obsah Úvod Strana dvě Strana tři |
Úvod Text text text text text text text text text text text text |
Dynamický nebo statický web?
Při tvorbě statického webu v HTML je nutno opakovat v každém HTML souboru společné prvky typu navigace, hlavička a další. Pokud v navigaci budeme zvýrazňovat aktivní stranu, znamená to nejen kopírování ale i ruční editaci. Při změně názvu jedné strany je pak nutno změnit obsah ve všech HTML souborech.
Typicky je tento problém řešen použitím dynamického webu (PHP, ASP, ...), kdy je obsah programově načítán z databáze a dynamicky zobrazován včetně generované navigace. Pro úpravu obsahu webu je třeba použít nějaké administrační rozhraní pro práci s texty v databázi. Pro jednoduchý web je toto poměrně náročná infrastruktura a změny v designu webu často vyžadují její úpravu.
XSLT pro generování webu
Pro efektivní tvorbu a správu menšího webu se hodí technologie XSLT. Umožňuje zabránit zmíněným komplikacím v podobě náročné údržby čistě statického webu a potřeby administračního rozhraní dynamického webu. Navíc poskytne značnou flexibilitu při úpravách rozvržení webu.
Při použití XSLT je vlastní obsah stran webu a strukturovanou informaci jako nadpisy a názvy výsledných HTML stran uložíme do XML souboru dle vlastního formátu. Generování jednotlivých stran včetně požadovaného rozvržení zajistí XSLT soubor, který dokáže naší strukturu XML souboru interpretovat a vytvoří navigaci na každou stranu. Tímto způsobem můžeme holý obsah editovat obyčejným textovým editorem v XML souboru a vzhledové vlastnosti nezávisle v XSLT souboru. XSLT soubor je obvykle podstatně jednodušší než dynamické např. PHP strany a XML soubor zase nahrazuje databázi.
Převod dvojice XML a XSLT na sadu výsledných HTML souborů zajistí vhodný XSLT procesor, například Saxon. HTML soubory pak již můžeme uploadnout na webserver a web je hotový.
Příklad
XML soubor web.xml
<site><page file="index.htm" title="Úvod">
Zde je úvodní <b>text</b> text text text text text text text text text text text text text text text text
</page>
<page file="druha.htm" title="Druhá strana">
Zde je druhý text text text text text text text text text text text text text text text text text
</page>
<page file="treti.htm" title="Třetí strana">
Zde je třetí text text text text text text text text text text text text text text text text text
</page>
</site>
XSLT soubor web.xslt
<?xml version="1.0" encoding="UTF-8"?><!-- hlavička XSLT a volba výstupu do HTML a podobně -->
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="2.0" xmlns:saxon="http://saxon.sf.net/" exclude-result-prefixes="saxon">
<xsl:output method="html" version="4.01" encoding="UTF-8" indent="yes" doctype-public="-//W3C//DTD HTML 4.01//EN"
doctype-system="http://www.w3.org/TR/html4/strict.dtd" saxon:character-representation="native;entity;decimal" />
<!-- XSLT bude operovat na elementech <page> zdrojového XML -->
<xsl:template match="page">
<!-- Pro ladící účely si vypíšeme právě zpracovávanou stranu -->
<xsl:message>Zpracovavam: <xsl:value-of select="@file"/></xsl:message>
<!-- Nastavíme výstupní dokument dle atributu file, odkazovaný xpath výraz musí být ve složených závorkách -->
<xsl:result-document href="{@file}">
<!-- Následuje běžné html obsahující xsl elementy pro vkládání obsahu ze zdrojového xsl -->
<html>
<head>
<title>
<!-- Určíme title strany, xsl element <value-of> očekává v atributu select vyraz xpath -->
<xsl:value-of select="@title"/>
</title>
</head>
<body>
<div style="float:left; margin-right:5ex">
Obsah
<ul>
<!-- na cely xml soubor necháme použít šablony v modu "obsah" -->
<xsl:apply-templates select="/" mode="obsah">
<!-- abychom mohli zvýraznit aktuálni stranu, předáme ji jako parametr -->
<xsl:with-param name="actpage">
<xsl:value-of select="@file"/>
</xsl:with-param>
</xsl:apply-templates>
</ul>
</div>
<h1>
<xsl:value-of select="@title"/>
</h1>
<!-- vlozime cely obsah aktuálního elementu <page> funkci node() -->
<xsl:copy-of select="node()"/>
</body>
</html>
</xsl:result-document>
</xsl:template>
<!-- šablona aktivní pouze v modu obsah -->
<xsl:template match="page" mode="obsah">
<!-- uvedeme přebíraný parametr -->
<xsl:param name="actpage"/>
<li>
<!-- rozlišení aktivní a neaktivní strany dle předaného parametru -->
<xsl:choose>
<xsl:when test="@file=$actpage">
<b>
<xsl:value-of select="@title"/>
</b>
</xsl:when>
<xsl:otherwise>
<a href="{@file}">
<xsl:value-of select="@title"/>
</a>
</xsl:otherwise>
</xsl:choose>
</li>
</xsl:template>
</xsl:stylesheet>
Kompilace
Nejprve je třeba stáhnout kompilační nástroj pro XSLT. Vhodný je například Saxon. Saxon vyžaduje nainstalovanou Javu. Kompilaci spustíme příkazemjava -jar saxon9.jar web.xml web.xsl
Po kompilaci vzniknou soubory index.htm, druha.htm, treti.htm, které obsahují navigaci a jsou vzájemně propojené. Prohlédnout si web můžete zde. Ke stažení jsou i zdrojové soubory web.xml a web.xsl.
Závěr
Tento článek ukázal možnost jednoduše generovat statický web. Pro mnoho případů je tato varianta výhodná, neboť nevyžaduje žádné programování dynamického webu a tvorbu databáze. Databáze je nahrazena XML souborem a program XSLT souborem. XSLT poskytuje obrovskou flexibilitu při úpravách rozložení a vzhledu výsledných HTML souborů.
vice radkovy
prispevek funguje.
http://sourceforge.net/projects/saxon/files/Saxon-B/9.0.0.8/saxonb9-0-0-8j.zip/download
Přidat příspěvek
