Seminár z programovania v sieťach
Zobrazovanie XML dokumentov

1 XML

1.1 Úvod

V dnešnej dobe IT technológii sa čoraz viacej kladie dôraz na komunikáciu a to nielen medzi ľudmi ale samozrejme aj medzi strojmi. Z toho vyplýva potreba uchovávat informácie. Od počiatku IT technológii sa rieši problém optimálneho uchovávania informácii tak, aby ich bolo možné jednoducho triediť, katalogizovať, vyhladávať v nich informácie a rýchlo k nim pristupovat. Prvé počítačové spracovanie údajov sa datuje do 50. rokov. Za tento čas vzniklo niekoľko databázových modelov pre prístup k údajom v rôznych formách. Cez súborové databázové modely, modely hierarchické, a sietové prišiel vývoj aj k databázam relačným a databázam objektovým. No na to, aby sa počítače či iné stroje medzi sebou dokázali dohovoriť, potrebujú, tak ako ľudia, poznať spoločný jazyk. A presne preto v rokoch 1996 - 1981 vznikol jazyk XML.

Jazyk XML - eXtensible Markup Language (rozšíritelný značkovací jazyk), bol definovaný pracovnou skupinou W3C2. Táto skupina popísala jazyk takto:

„XML je podmnožina jazyka SGML (Standard Generalized Markup Language). Jeho cieľom je umožnit použitie SGML na posielanie, prijímanie a spracovávanie dát na webe, práve tak ako to je u jazyka HTML. XML ja navrhnutý pre ľahkú implementáciu a spoluprácu s SGML a HTML."

Už z definície jazyka XML vyplýva, že je určený na štruktúrovanie dát. XML nie je jazyk programovací, ale značkovací. XML je vlastne sada pravidiel pre vytvorenie textového formátu, ktorý umožnuje uchovávanie dát v štruktúrovanej forme. Typickým príkladom štrukturovaných dát sú tabuľky. A preto bolo XML napríklad využité ako stavebný prvok webovej databázy Flying Squirrel. :-)


1.2 Použitie

Sila XML je najmä v jeho hierarchickej štruktúre a pomerne jednoduchom spôsobe kódovania. Umožňuje popisovať - označovať ľubovoľné dáta a prenášať ich medzi rôznymi aplikáciami a platformami. Hlavnou ideou XML je oddelenie obsahu a dizajnu dát. ( Spojovacím mostom je XSL, ktorý umožňuje vytvárať množstvo výstupných formátov. )

XML je formát súboru obsahujúci dáta. Zvláštnym ho robí to, že je široko prijímaný ako štandard so schopnosťou existencie na akejkoľvek platforme a používaný masívnym, stále rastúcim počtom aplikácií a programovacích jazykov.

Jazyk XML nám dovoľuje vytvárať štruktúrované dokumenty veľmi flexibilným spôsobom. Dá sa použiť k vytváraniu dokumentov, ktoré sa zdanlivo podobaju dokumentom HTML; jazyk XML sa však od HTML líši a používa sa k zásadne iným účelom. Táto podobnosť pochádza od rovnakých rodičov – obidva jazyky sú odvodené od štandardu definície jazyka SGML. Ten sám o sebe nie je žiadny jazyk, lae iba spôsob definovania jazykov vyvinutých podľa jeho obecných princípov. Existuje tu však dôležitý rozdiel v tom, akým spôsobom sú jazyky XML a HTML odvodené od SGML. XML je podmnožina SGML – ľahšia verzia, ktorá bola oproti SGML zjednodušená, aby umožňovala použitie na sieti WWW, ale aj ako formát výmeny dát. Toto zjednodušenie robí zápis dokumentov vychádzajúcich z XML jednoduchším. Oproti tomu jazyk HTML je aplikáciou SGML – je to teda konkrétny jazyk, ktorý dodržuje štandard SGML.

XML a HTML v skutočnosti slúžia veľmi odlišným účelom. Dokument HTML obsahuje značky indikujúce, ako má byť dokument naformátovaný, neobsahuje však žiadne informácie o vlastnom obsahu. Inými slovami HTML obsahuje iba informácie o zobrazení dát a neobsahuje žiadne údaje o tom, o aké dáta sa jedná. XML sa pokúša oddeliť obsah a jeho reprezentáciu. Dokumenty XML obsahujú informácie v štrukturovanej forme, ktorá sa zdanlivo veľmi podobá HTML. Dôležitým rozdielom je fakt, že môžeme definovať svoje vlastné značky, ktoré určujú štruktúru dát.

 

1.3 XML dokument

Každý dokument XML sa skladá z kombinácie dát značiek a znakov. Značky dávajú dokumentu XML štruktúru, zatiaľ čo znaky predstavujú iba vlastný obsah. Všetky dokumenty XML spĺňajúce špecifikáciu XML musia dodržiavať isté pravidlá – potom sú považované za správne štruktúrované.

Ak dokument XML spĺňa tieto pravidlá , potom je správne štruktúrovaný.

 

1.4 Výhody XML

 

1.5 Nevýhody XML

 

2 Zobrazenie XML pomocou CSS

2.1 Úvod

Pretože si v XML vymýšľame vlastné elementy, prehliadač nevie ako má tieto elementy zobraziť. XML dokumenty je možné zobrazovať napríklad pomocou dokumentov štýlov CSS. Vytvorením a pridaním dokumentu CSS poskytneme prehliadaču informácie o zobrazení XML dokumentu. Výhodne sme tak oddelili dáta od formátu (zobrazenia).

Internet Explorer nerozlišuje v CSS štýloch malé a veľké písmená, resp. ich ignoruje. Nakoľko ale je možné v XML dokumentoch rozlišovať pomocou veľkosti písmen jednotlivé elementy, nastáva problém pri zobrazovaní takéhoto XML dokumentu. ( <book> je v XML považovaný za iný element ako <Book> alebo <BOOK> )

Taktiež je možné použitie viacnásobného selektora v CSS ako pri klasickom HTML dokumente, alebo selektovanie pomocou kontextových (úrovňových) selektorov.

 

2.2 Použitie

Pre zobrazenie XML dokumentu pomocou CSS dokumentu je v XML nutné zadefinovať špeciálnu definíciu xml-stylesheet, ktorá priradí XML dokumentu konkrétnu šablónu CSS.

Príklad XML dokumentu:

<INVENTORY>
   <BOOK>
      <TITLE>The Adventures of Huckleberry Finn</TITLE>
      <AUTHOR>Mark Twain</AUTHOR>
      <BINDING>mass market paperback</BINDING>
      <PAGES>298</PAGES>
      <PRICE>$5.49</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>Leaves of Grass</TITLE>
      <AUTHOR>Walt Whitman</AUTHOR>
      <BINDING>hardcover</BINDING>
      <PAGES>462</PAGES>
      <PRICE>$7.75</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>The Legend of Sleepy Hollow</TITLE>
      <AUTHOR>Washington Irving</AUTHOR>
      <BINDING>mass market paperback</BINDING>
      <PAGES>98</PAGES>
      <PRICE>$2.95</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>The Marble Faun</TITLE>
      <AUTHOR>Nathaniel Hawthorne</AUTHOR>
      <BINDING>trade paperback</BINDING>
      <PAGES>473</PAGES>
      <PRICE>$10.95</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>Moby-Dick</TITLE>
      <AUTHOR>Herman Melville</AUTHOR>
      <BINDING>hardcover</BINDING>
      <PAGES>724</PAGES>
      <PRICE>$9.95</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>The Portrait of a Lady</TITLE>
      <AUTHOR>Henry James</AUTHOR>
      <BINDING>mass market paperback</BINDING>
      <PAGES>256</PAGES>
      <PRICE>$4.95</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>The Scarlet Letter</TITLE>
      <AUTHOR>Nathaniel Hawthorne</AUTHOR>
      <BINDING>trade paperback</BINDING>
      <PAGES>253</PAGES>
      <PRICE>$4.25</PRICE>
   </BOOK>
   <BOOK>
      <TITLE>The Turn of the Screw</TITLE>
      <AUTHOR>Henry James</AUTHOR>
      <BINDING>trade paperback</BINDING>
      <PAGES>384</PAGES>
      <PRICE>$3.35</PRICE>
   </BOOK>
</INVENTORY>
Parsovanie kompletne

Ukážka dokumentu spracovaného CSS súborom.

3 XSL a XSLT

3.1 Úvod

Pre zobrazenie XML dokumentu je XSLT omnoho silnejšie a flexibilnejšie ako CSS, nakoľko CSS iba riadok po riadku prepisuje XML a zobrazuje ho, XSLT ale ponúka plnú kontrolu nad výstupom. Extensible Stylesheet Language Transformations (XSLT) je XML-orientovaný jazyk určený na prevádzanie XML dokumentov na ľudsky čítateľné dokumenty. Pôvodný dokument sa nezmení, pri transformácii sa vytvorí nový na základe pôvodného. Výstupom môže byť iný formát, napr. HTML, alebo čistý text. XSLT sa najčastejšie používa na konvertovanie XML dokumentov na HTML dokumenty alebo xHTML pre webové stránky (viď Krajči :) ), alebo zložitejšie XML dokumenty aj na generovanie PDF dokumentov.

Ako jazyk môžeme XSLT zaradiť medzi deklaratívne jazyky, syntakticky je blízky jazyku SNOBOL alebo AWK. XSLT je Turingovsky kompletný.

 

XSLT

Diagram transformácie XML dokumentu

 

XSLT processor môže byť realizovaný dvoma spôsobmi: server-side (vykonávajúci sa na serveri), client-side (vykonávajúci sa u klienta). XSLT procesory môžu byť dostupné samostatne, alebo ako súčasť iného softwaru, ako napríklad webové prehliadače, frameworky ako napr. Java a .NET, alebo ako súčasť operačných systémov ( Windows XP má knižnicu MSXML, ktorá zahŕňa XSLT procesor).

 

3.2 XSL

XSL je jazyk používaný na transformáciu XML dokumentov pomocou XSLT procesora. Dokument XML môže byť transformovaný do iného XML dokumentu, alebo iného štruktúrovaného formátu, napr. HTML alebo PDF. V rodine jazykov XSL existujú tri formy:

XML Family

Rodinka XML a vzťahy

 

Tieto tri špecifikácie sú dostupné ako W3C Recommendations.

 

 

3.3 Použitie

Namiesto toho aby štýl XSLT obsahoval pravidla ako v CSS, obsahuje jednu alebo viacej šablón. Šablona hovorí prehliadaču, ako zobraziť dokument XML pomocou inštrukcií pre konkrétnu transformáciu elementu, atribútu a dalších komponentov dokumentu XML.

Príklad XML dokumentu:

<BOOK>
   <TITLE>Moby-Dick</TITLE>
   <AUTHOR>
      <FIRSTNAME>Herman</FIRSTNAME>
      <LASTNAME>Melville</LASTNAME>
   </AUTHOR>
   <BINDING>hardcover</BINDING>
   <PAGES>724</PAGES>
   <PRICE>$9.95</PRICE>
</BOOK>
Parsovanie kompletne

Ukážka dokumentu spracovaného pomocou XSLT šablóny.

Ukážkový XML dokument obsahuje iba jeden element BOOK. Keby ale dokument XML obsahoval viac elementov BOOK, touto technikou by sa zobrazil iba prvý z nich. Nasledujúci XML dokument už obsahuje elementov BOOK viacero. Upravíme XSLT preto tak, aby zobrazilo všetky elementy book.

Ďalším spôsobom, ako zobraziť opakujúce sa elementy je vytvorenie samostatnej šablóny, ktorá zodpovedá danému elementu a aplikovať túto šablónu pomocou elementu xsl:apply-templates.

Element xsl:apply-templates hovorí prehliadaču, že má aplikovať šablonu pre každý element, ktorý sa zhoduje so selektorom. Ďalej je možné použiť element select, kde pomocou jazyku XPath môžete definovať zložitejší dopyt, ako aj pristupovať k atribútom XML.

Normálne su elementu XML dokumenu spracovávané v takom poradí, v akom sú v XML dokumente zapísané. Čo ale ak chceme jednotlivé výstupy zotriediť. Pomocou XSLT je možné výstup triediť funkciou sort.

Príklad:

 <xsl:for-each select="INVENTORY/BOOK">
<xsl:sort
select="AUTHOR/LASTNAME"
data-type="text"
order="ascending" />
<xsl:sort
select="AUTHOR/FIRSTNAME"
data-type="text"
order="ascending"/>
<xsl:sort
select="PAGES"
data-type="number"
order="descending"/>

Výrazová sila XSLT je poháňaná dopytovacím jazykom XPath, a tak ponúka aj možnosť dopytovať atribúty. Technicky není atribut považovaný za potomka elementu, v ktorom sa nachádza, skôr nesie dodatkovú informáciu o danom elemente. Nasledujúci príklad ukazuje na XML dokument, kde do každého elementu BOOK bol pridaný atribút InStock a každý element AUTHOR má pridaný atribút Born.

Taktiež je možné v XSLT definovať podmienky nasledujúcim spôsobom :

Príklad:

<xsl:if test="@InStock = 'no'">Out of Stock!</xsl:if>



<xsl:choose>
<xsl:when test="PAGES <=300">*</xsl:when> <xsl:otherwise>***</xsl:otherwise> </xsl:choose>

 

4 Úlohy

Vytvorte menu z minulého cvičenia ale použitím nasledujúcich technológii:

Pripravený pracovný XML dokument: menu.xml
Dokument HTML s tabuľkou: tabulka.html
Obrázok menu: menu.jpg
Použité farby: #003466, #669ACC

 







XML
XML
XML