Úvod - Niečo málo o XSL a XSLT

Extensible style Language (XSL) zahrnuje transformačný i formátovací jazyk

XSLT-eXtended Stylesheet Language - Transformations (XSLT)
- transformácia XML do dokumentov na XML, poprípade iný formát (xhtml,pdf) - filtrovanie elementov, vkladanie nových elementov preusporiadanie, výber dát

XSL-FO (Formatting Objects)
-definovanie layoutu zobrazeného v rôzných médiách (html,pdf...)

-oba jazyky dokážu fungovať nezávisle. Príklad: Pomocou XSLT vieme transformovať XML na html a upraviť štruktúru dát.


Ako to funguje
XSLT procesor číta vstupny XML dokument. Pri každom uzle prechádza dokumentom xsl (XSLT štýl), v ktorom je zadefinovaná šablóna pre zobrazenie dát zo XML. Ak pre momentálne spracovávaný uzol nájde v šablóne vzor, tak podla neho upraví výstupné dáta.



XML

<?xml version="1.0" encoding="UTF-8"?>
<?xml-stylesheet type="text/xsl" href="sablona.xsl"?>
<zoznam>
   < karta cislo="54">
     <meno>Jana</meno>
     <priezvisko>Nová<priezvisko>
   </karta>
   <karta cislo="35">
     <meno>Igor</meno>
     <priezvisko>Malý<priezvisko>
   </karta>
</zoznam>

***-povinný tag, verzia xml a kodovanie
***-odkaz na spracuvajúce inštrukcie
***-element
***-atribut



XSL

Procesor prechádza xml dokumentom, pričom testuje,či v šablóne existuje template pre daný uzol. znamená korenový uzol.
<?xml version="1.0" encoding="windows-1250"?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:template match="/">
 <html>
  <xsl:apply-templates/>
 </html>
</xsl:template>
<xsl:template match="karta">
 <P>
  <xsl:apply-templates/>
 </P>
</xsl:template>
</xsl:stylesheet>

Dôležité tagy a funkcie:

• xsl:stylesheet- povinny prvok najvyššie v hierarchii
• xsl:template match="meno elementu"-pravidlo, ktoré vo svojom tele obsahuje inštrukcie pre spracovanie daného elementu a jeho potomkov
• xsl:apply-imports- importovanie štýlov ""
• xsl:apply-templates- spracúvava podriadený prvok v prave aktualnom uzli.Možme kombinovať so selectom " "
• xsl:attribute- pridávanie atribútov k prvkom, existujuce atributy nahradí
• xsl:call-template- z aktualne spracuvanoho elemtnu vola šablonu
• xsl:choose
-služi ako zjednotenie if alebo
• xsl:comment
• xsl:copy - vytvorí kópiu aktuálneho uzla
• xsl:copy-of
• xsl:element-vytvori prvok vo vytupnom dokumente
• xsl:fallback-určuje alternatívne spustenie kódu v prípade, že procesor XSL nepodporuje element XSL
• xsl:for-each
• xsl:if
• xsl:message
• xsl:number-používa na určenie celočíselnej pozície aktuálneho uzla v zdroji alebo formátovanie čísla
• xsl:processing instruction- href="style.css" type="text/css" ==>
• xsl:text- generuje textový výstup
• xsl:value-of- prvok extrahuje z uzla jeho priameho potomka " " msxsl:script-vieme vkladať skripty, napr. JavaScript


format-number() - formátovanie z reťazcov na čísla: ==> 500100.00
position() - pozicia uzla zo vstupného dokumentu
concat()- concat('nazdar',' ','svet') ==> nazdar svet
contains()-contains('XML','ML')==>true
starts-with()-starts-with('nazdar','n')==>true
string-lenght('nazdar světe');
substring('Beatles',1,4)
last()-poradie posledného prvka

Príklad na choose: when a oterwise:
<xsl:template match="MOTOCYKL">
 <xsl:choose>
  <xsl:when test="@DRUH='cross'">
   <P style="color:green">
    <xsl:value-of select="."/>
   </P>
  </xsl:when>
  <xsl:when test="@DRUH='enduro '">
   <P style="color:brown">
    <xsl:value-of select="."/>
   </P>
  </xsl:when>
  <xsl:when test="@DRUH='street'">
   <P style="color:blue">
    <xsl:value-of select="."/>
   </P>
  </xsl:when>
  <xsl:otherwise>
   <P style="color:yellow">
    <xsl:value-of select="."/>
   </P>
  </xsl:otherwise>
 </xsl:choose>
</xsl:template>



Príklad na for each:
<xsl:for-each select="catalog/cd">
   <xsl:value-of select="title"/>
   <xsl:value-of select="artist"/>
</xsl:for-each>



Transformácia XML súborov

XML dokument môžme transformovať 3. spôsobmi:
  1. Pomocou webového prehliadača. XML dokument a XSLT sú poslané klientskému prehliadaču, ktorý vykoná transformáciu.V súčasnej dobe takmer všetky prehliadače podporujú transformáciu pomocou xslt do xhtml, napriek tomu nieje vylúčené, že xslt procesorom je vybavený každy klient. Podporované prehliadače sú zverejnené na stránkach w3c.
  2. Ručná transformácia pomocou samostatných XSLT procesorov. Príkladmi takýchto programov sú 4XSLT, Saxon, Xalan... V tomto prípade sa vygenerovaný dokument umiestnuje na server. Pri tomto prístupe sa stráca interaktivita medzi klientom a serverom.
  3. Za pomoci VBScriptu. Podporu pre transformaciu obsahuje aj JavaScript.(realizuje prehliadac) Príklad uvedený tu.