Potřebujete pomoci s XSLT?
Nabízím školení, konzultace, vývoj XSLT kódu na zakázku. Nevájte a kontaktujte mne.

Podpořte provoz stránek
Platba probíhá pomocí služby PayPal a je možné platit kartou nebo převodem z vašeho PayPal účtu.

1.5 První styl

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í“).

Obrázek 1.4. Výsledné formátování přísloví

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.

Poznámka

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">&#x2014; <em><xsl:apply-templates/></em></p>
</xsl:template>

</xsl:stylesheet>

Pokud si budeme chtít styl vyzkoušet, máme několik možností.

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">&#x2014; 
           <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">&#x2014; <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.

© Jiří Kosek 2014

Tento dokument je určen výhradně pro osobní potřebu seznámení s jazykem XSLT. Jakékoliv jiné použití, včetně dalšího šíření, pořizování kopií, použití při školeních a výuce apod. je výslovně zakázáno a bude považováno za porušení autorských práv.


Copyright © 2000-2014 Jiří Kosek