Práce s XML a XSL
XML & XSLT je nezávislé na platformě a slouží pro výměnu dat mezi platformami
Úvod
XML jako značkovací jazyk je již poměrně dobře zažitým pojmem a není třeba jej nijak představovat. S tímto značkovacím jazykem úzce souvisí transformační jazyk XSLT. Transformační jazyk eXtensible Stylesheet Language Transformations slouží k převodům zdrojových dat ve formátu XML do libovolného požadovaného výstupu.
XML
syntaxe:
<?xml version="1.0" encoding="utf-8" ?>
<?xml-stylesheet type="text/xsl" href="xsl.xsl" media="screen"?>
<stanice>
<opravyupravyhw>
<polozka>
<OriginalModTime>25.06.2007 15:36:25</OriginalModTime>
<Form>hwentry</Form>
<idstanice>50C7233BDAC4458CC12572FF0048582C</idstanice>
<datum>25.06.2007</datum>
<typzmeny>oprava</typzmeny>
<popis>Výměna zdroje</popis>
<priloha />
</polozka>
</opravyupravyhw>
</stanice>
<?xml-stylesheet type="text/xsl" href="xsl.xsl" media="screen"?>
zde je deklarace, jak se má dané xml zobrazit. V tomto případě se zobrazí pomocí šablony xsl.xsl. To znamená, že transformace bude probíhat na straně klienta. Pomocí jednoduchých funkcí lze zajistit, aby parser probíhal na straně serveru.
XSLT
- slouží k převodům zdrojových dat ve formátu XML do libovolného požadovaného výstupu
<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet xmlns:xsl='http://www.w3.org/1999/XSL/Transform' version='1.0'>
<xsl:output method="xml" indent="yes" doctype-system="
http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd" doctype-public="-//W3C//DTD XHTML
1.0 Strict//EN" />
<xsl:template match="/stanice">
<html xmlns="http://www.w3.org/1999/xhtml" xml:lang="cs" lang="cs">
<head>
<meta http-equiv="content-Type" content="text/html; charset=utf-8" />
<title>Karta stanice</title>
</head>
<table>
<tr>
<td colspan="3">Úpravy a opravy počítače:
</td>
</tr>
<tr>
<td>Druh:
</td>
<td>Datum:
</td>
<td>Popis:
</td>
</tr>
<xsl:for-each select="/stanice/opravyupravyhw/polozka">
<tr>
<td><xsl:value-of select="typzmeny" />
</td>
<td><xsl:value-of select="datum" />
</td>
<td><xsl:value-of select="popis" />
</td>
</tr>
</xsl:for-each>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
<xsl:template match="/stanice">
je defaultní nastavení root adresáře
<xsl:for-each select="/stanice/opravyupravyhw/polozka">
je pro výběr každé položky / provede se tolikrát, kolikrát je zde obsažena daná položka, ukončuje se pomocí
</xsl:for-each>
<xsl:value-of select="popis" />
výběr jednotlivé položky
Zpracování XML souborů - rychlost čtení SAX versus DOM
V moderních programovacích jazycích známe dva základní typy přístupů ke XML souborům:
1. SAX, jednosměrný mechanizmus čtení dat, která lze dále zpracovat. V .NET pracuje pod třídou XmlReader
.
2. DOM, kde je k dispozici flexibilní navigace, včetně možností zápisu. Tyto rozšířené možnosti jsou vykoupené (možná) významně vyššími nároky na paměť. V .NET pracuje pod třídou XmlDocument
.
Čtení dat pomocí DOM (XmlDocument
) je v .NET zhruba 2-3x (u velkého souboru na lokálním disku 5x) pomalejší proti čtení pomocí SAX (XmlReader
).
Parser
Parser je program, který analyzuje předložená data (obvykle textový soubor) a vyhledává v něm prvky odpovídající definici určitého jazyka. Obvykle provádí syntaktický rozbor zdrojových kódů napsaných v daném programovacím jazyce.
rozklad parseru: 1 + 2 * 3
XML
- v případě XML je parser program, který kontroluje správnost XML dokumentů.
DOM parser (DOM = Document Object Model) vezme XML soubor a vyrobí z něho obraz v paměti
SAX parser (SAX = Simple API for XML) postupně prochází XML soubor a zobrazuje události. Je na programátorovi, aby tyto události zpracoval.
zdroj: encyklopedie.seznam.cz, neo.cz