XML

(Rozdíly mezi verzemi)
Přejít na: navigace, hledání
(Založena nová stránka: * obecný jazyk SGML * jak vypadá XML dokument, využití v praxi * XML a layout, co to je eXtensible Stylesheet Language (XSLT styl) * co to je definice typu dokume...)
 
Řádka 3: Řádka 3:
 
* XML a layout, co to je eXtensible Stylesheet Language (XSLT styl)  
 
* XML a layout, co to je eXtensible Stylesheet Language (XSLT styl)  
 
* co to je definice typu dokumentu (DTD)
 
* co to je definice typu dokumentu (DTD)
 +
== Úvod do XML ==
 +
*pokud se chceme jako firma uplatnit na trhu, musíme umět rychle a levně získat informace
 +
konkurenci, o trhu a preferencích spotřebitelů.
 +
*jako spotřebitelé chceme bez námahy nalézt prodejce, který nám požadované zboží dodá
 +
nejrychleji a nejlevněji.
 +
*se svými zákazníky a dodavateli musíme rychle komunikovat, chceme, aby se objednávky a
 +
faktury vyřizovaly téměř okamžitě a ne s několikadenním prodlením.
 +
 +
Aby to vše bylo možné, potřebujeme mít k dispozici efektivní způsoby sdílení a vyhledávání informací.
 +
 +
Dosud se pro výměnu dat stále ještě používají proprietární formáty, se kterými dovedou pracovat jen
 +
úzké okruhy aplikací, výměna dat mezi informačními systémy jednotlivých firem je nákladná a
 +
zdaleka ne elegantní záležitost.
 +
 +
Ani jazyk HTML se nestal dostatečně schopným lepidlem, které by dokázalo celý svět informačně
 +
propojit. HTML již vyčerpalo svůj potenciál a současnosti už má poměrně omezené vyjadřovací
 +
schopnosti. Internet je dnes informacemi přehlcen a hledaná informace je často skryta ve velkém
 +
množství dalších pro nás nepotřebných informací.
 +
Podívejme se na to, jak může vypadat zdrojový kód části webové stránky, která obsahuje ceník:
 +
V prohlížeči pak na stránce uvidíme přehlednou tabulku s ceníkem.
 +
Dnešní, často na pohled skvělé webové stránky, jsou jen soubory obsahující mnohdy nepřehledný
 +
balast. O tom, že v takovýchto datech se těžko něco hledá, není potřeba nikoho přesvědčovat.
 +
Výše nastíněný problém se snaží odstranit nový jazyk XML (eXtensible Markup Language). Největší
 +
přínos XML spočívá v tom, že v dokumentech můžeme používat vlastní značky (tagy). Pokud tedy
 +
vytváříme například ceník, můžeme v něm přehledně označit, co je název výrobku, jeho popis a cena.
 +
Vše bude přehlednější a kratší:
 +
Na první pohled vidíme, že v takto strukturovaných datech se bude vyhledávat mnohem snáze.
 +
Inteligentní vyhledávací službě zadáme název výrobku a maximální cenu, za pár sekund se nám
 +
na monitoru objeví seznam prodejen, kde mají k dostání zboží, které sháníme.
 +
XML však není určeno jen pro webové stránky, uplatnění nalezne i v elektronickém publikování nebo
 +
při výměně dat mezi různými systémy.
 +
Něco málo z historie značkovacích jazyků
 +
S rozmachem Internetu a dalších médií (např. CD-ROM) vznikla potřeba jedny a tytéž informace
 +
prezentovat mnoha způsoby kvalitním tiskem na papíře, jako hypertextovou příručku na CD-ROMu či
 +
jako sadu provázaných webových stránek.
 +
Pro tyto účely je však potřeba znát logickou strukturu dokumentu. Musíme vědět, že tohle je nadpis a
 +
tohle zase popis obrázku. Konkrétní velikost písma a způsob formátování záleží až na tom,
 +
zda chceme produkovat tištěnou knihu nebo multimediální CD-ROM.
 +
Potřebujeme tedy jazyk, který umožní označit význam jednotlivých částí textu, a ne jejich vzhled.
 +
Takovýmto samopopisným jazykem je právě XML. Nejde však zdaleka o první jazyk svého druhu.
 +
Jazykům, které umožňují vyznačovat části textu, se říká značkovací jazyky (markup languages).
 +
Asi prvním známým značkovacím jazykem byl GML (Generalized Markup Language), který byl
 +
vytvořen při práci na systému pro uchovávání a následné využití právních textů pro IBM. Autoři se
 +
museli se tehdy vypořádat s nekompatibilitou jednotlivých systémů a programů a nejsnazší cesta
 +
vedla právě přes vytvoření nějakého obecného značkovacího jazyka.
 +
A tak byl vyvinut jazyk SGML (Standard Generalized Markup Language), který je definován v ISO
 +
normě 8879 z roku 1986. Jazyk SGML je skutečně hodně obecný a samozřejmě umožňuje definici
 +
vlastních značkovacích jazyků (sad značek a jejich vzájemných vztahů) pomocí tzv. definic typu
 +
dokumentu (DTD). Navíc má spoustu volitelných parametrů počínaje maximální délkou názvů značek
 +
a konče určením znaků použitelných jako oddělovače značek od textu. Komplexnost standardu SGML
 +
poněkud zbrzdila jeho praktické využití.
 +
Asi nejznámější aplikací SGML je jazyk HTML (Hypertext Markup Language), který se používá
 +
pro tvorbu webových stránek. Značky, které můžeme na stránkách používat, určuje příslušné DTD,
 +
které je pro každou verzi HTML trošku jiné.
 +
V polovině 90. let došlo k paradoxní situaci. Jazyk HTML si získal velkou oblibu díky své jednoduchosti,
 +
která byla v ostrém kontrastu s komplexností SGML. Ukázalo se však, že pevně daná skupina značek,
 +
které HTML používá, už nestačí. Pro účely vyhledávání a vůbec efektivnější výměny dat by bylo lepší
 +
mít možnost používat vlastní značky, které by přesně vymezily význam textu.
 +
Nový jazyk dostal jméno XML (eXtensible Markup Language). Jedná se o podmnožinu SGML, která si
 +
zachovává možnost definování vlastních DTD, a tedy i vlastních značek, pro jednotlivé skupiny
 +
dokumentů. Na rozdíl od SGML je mnoho parametrů předem určeno např. použité oddělovače a
 +
speciální znaky. XML už rovnou počítá s podporou všech možných jazyků, takže není tak úzce svázáno
 +
s angličtinou jako většina předchozích počítačových technologií. Navíc je syntaxe zápisu dokumentů
 +
v XML oproti SGML poměrně přísná, což umožní mnohem snazší a levnější vývoj aplikací, které
 +
umožňují s tímto jazykem pracovat.
 +
XML je standardní formát pro výměnu a sdílení informací
 +
Dnešní doba přeje komunikaci. Komunikace není nic jiného, než výměna informací. V dnešním
 +
globálním světě není možné pro výměnu dat používat nějaké proprietární formáty, které jsou svázány
 +
s konkrétním softwarem nebo hardwarem. Nesluší se posílat informace ve wordovém formátu DOC,
 +
protože někdo s unixovým počítačem si je těžko přečte.
 +
Je potřeba používat nějaký jednoduchý otevřený formát, který není úzce svázán s nějakou platformou
 +
nebo proprietární technologií.
 +
Takovým formátem je například XML. Otevřený formát je to proto, že jeho specifikace je každému
 +
zdarma k dispozici na serveru konsorcia W3C, které se stará i o mnoho dalších technologií
 +
souvisejících s webem. Každý tak může bez problémů do svých aplikací implementovat podporu XML.
 +
To představuje velký rozdíl oproti firemním formátům, k nimž není k dispozici žádná dokumentace a
 +
navíc se jedná v porovnání s XML o velice složité formáty, často binární.
 +
Práci s XML usnadňuje i to, že celý formát je založen na obyčejném textu. I když pro většinu lidí
 +
zůstane kód XML skryt a budou ho používat pouze aplikace pro vzájemnou komunikaci, není problém
 +
kdykoliv otevřít XML dokument v libovolném textovém editoru a pár potřebných úprav provést
 +
ručně. Použití textového formátu může někomu připadat jako zbytečné plýtvání místem. Dnes se
 +
však mnohem větší důraz klade na srozumitelnost a snadnou práci s daty jestli ušetříme pár kilobajtů
 +
paměti, již nikoho příliš netrápí.
 +
Mezinárodní podpora
 +
XML je asi vůbec první formát, který hned od samého počátku dbá na potřeby jiných jazyků než je
 +
angličtina. Jako znaková sada se používá ISO 10646. Pod tím si asi nepředstavíte nic konkrétního.
 +
ISO 10646 je 32bitová znaková sada (Unicode), která dokáže pojmout všechny znaky dnes
 +
používaných jazyků.
 +
V XML proto můžeme vytvářet dokumenty, které obsahují texty v mnoha jazycích, najednou
 +
můžeme míchat např. češtinu, angličtinu, ruštinu, arabštinu a korejštinu zcela dle libosti. Pokud by
 +
dokumenty obsahovaly pouze český text, znamenalo by ukládání přímo v ISO 10646 zbytečné
 +
plýtvání místem.
 +
XML dokument proto může být v libovolném kódování (např. windows-1250, ISO 8859-2). Kódování
 +
je však v každém dokumentu přesně určeno, takže odpadají problémy s konverzí z jednoho kódování
 +
do druhého. Každému je hned jasné, v jakém kódování je dokument.
 +
Vysoký informační obsah
 +
Pomocí XML značek vyznačujeme v dokumentu význam jednotlivých částí textu. Říkáme toto je název
 +
výrobku, tohle zase telefonní číslo a tohle je číslo našeho účtu. Dokumenty obsahují mnohem více
 +
informací, než kdyby se používalo prezentační značkovaní tohle je tučným písmem Arial o velikosti
 +
12 bodů zarovnané vlevo.
 +
XML dokumenty jsou informačně bohatší. To lze samozřejmě s výhodou využít v mnoha oblastech.
 +
Největší přínos to bude znamenat samozřejmě pro prohledávání. Dnešní internetové vyhledávací
 +
služby jako Google podporují fulltextové vyhledávání. Zadáme hledaná slova a doufáme, že se nám
 +
vrátí dokumenty, které chceme. Pokud bychom mohli určit, že např. hledané slovo nás zajímá jako
 +
název firmy, bylo by při použití XML a vhodném označkování hledání mnohem přesnější.
 +
Snadná konverze do dalších formátů
 +
V mnoha případech potřebujeme XML dokument zobrazit na nějakém běžném médiu na obrazovce,
 +
na papíře. V tomto případě už samozřejmě chceme přesně ovlivnit, jak se obsah jednotlivých značek
 +
zobrazí. XML samo o sobě žádné takové prostředky nenabízí. Existuje však naštěstí hned několik
 +
stylových jazyků, které umožňují definovat, jak se mají jednotlivé elementy zobrazit. Souboru pravidel
 +
nebo příkazů, které definují, jak se dokument převede do jiného formátu, se říká styl.
 +
Výhodou je, že jeden styl můžeme aplikovat na mnoho dokumentů stejného typu. Dosáhneme tak
 +
jednotného formátování. Zároveň můžeme na jeden dokument aplikovat několik různých stylů.
 +
Jedním stylem vygenerujeme postscriptový soubor pro naše DTP studio, druhým HTML kód
 +
pro zařazení na naše webové stránky a třetím třeba jen obsah dokumentu, který pošleme mailem
 +
šéfovi.
 +
Stylových jazyků existuje dnes několik. Mezi nejznámější patří asi kaskádové styly (CSS). Ty lze použít
 +
pouze pro jednoduché formátování, které dobře poslouží pro zobrazení dokumentu na obrazovce
 +
v XML editoru nebo v prohlížeči.
 +
Pro náročnější aplikace slouží jazyk XSL (eXtensible Stylesheet Language).
 +
Automatická kontrola struktury dokumentu
 +
XML nám umožňuje definovat vlastní sadu značek, které chceme v dokumentu používat.
 +
Tuto možnost samozřejmě využít nemusíme, můžeme používat libovolné značky. Pokud si však
 +
předem pomocí DTD definujeme, jaké značky může dokument obsahovat, bude náš další život
 +
mnohem lehčí. Zcela automaticky můžeme kontrolovat, zda dokument obsahuje pouze povolené
 +
značky.
 +
Programu, který kontroluje správnost XML dokumentů, se říká parser . Tento fakt má velký význam i
 +
při vývoji aplikací. Pro čtení dat můžeme použít parser, který za nás detekuje většinu chyb v datech.
 +
Obrovsky nám to ušetří práci. Kdo programuje, sám nejlépe ví, že většina kódu stejně ošetřuje různé
 +
chybové stavy a chyby ve vstupních datech.
 +
DTD není jediný jazyk, který umožňuje definovat značky použitelné v dokumentech. DTD se hodí
 +
pro popis formátů, které se používají především pro textové dokumenty. Neobsahuje však nástroje
 +
pro kontrolu různých typů dat jako čísla, měnové údaje, údaje o datu a čase. To je přitom velice
 +
důležité pro aplikace, které si pomocí XML posílají data spíše databázového charakteru. Pro tyto
 +
potřeby existuje několik dalších jazyků, umožňujících určit správné schéma dokumentu.
 +
Hypertext a odkazy
 +
XML samozřejmě umožňuje vytváření odkazů v rámci jednoho dokumentu i mezi dokumenty
 +
navzájem. Nabízí však mnoho možností nad rámec odkazů, které známe z HTML.
 +
Můžeme vytvářet i vícesměrné odkazy, které spojují několik dokumentů dohromady. Užitečná je i
 +
možnost uložení odkazů zcela mimo dokumenty, kterých se týkají. Tímto způsobem lze vytvářet
 +
různé anotace a komentáře k již existujícím stránkám.
 +
K čemu všemu můžeme XML použít
 +
· B2B‚ business-to-business aplikace (výměna informací mezi obchodními partnery
 +
v elektronickém formátu)
 +
· Inteligentní webové stránky (Možnost definice vlastních značek, které přesně vyznačí
 +
význam jednotlivých částí stránky, má pozitivní efekt na přesnost a rychlost vyhledávání
 +
informací. Obecný model umožňuje vývoj stránek pro mnoho zařízení s rozdílnými
 +
schopnostmi PC, mobilní telefony, WebTV nebo třeba herní konzole.)
 +
· Metadata (Pro vyhledávání, ale hlavně pro klasifikaci dokumentů, je užitečné o nich znát
 +
co nejvíce metadat.)
 +
· Elektronické publikování (Často potřebujeme jeden dokument v několika různých formátech
 +
jako tištěnou knihu, sadu provázaných webových stránek nebo hypertextovou příručku
 +
na CD-ROMu. Flexibilita stylových jazyků také umožňuje, aby se z jednoho zdroje generovalo
 +
několik druhů dokumentů s různým obsahem, některé údaje v technické dokumentaci jsou
 +
například tajné a vytisknou se pouze pro potřeby firmy, přičemž zákazníkům se ze stejného
 +
XML dokumentu vygeneruje okleštěná verze.)
 +
· Univerzální datový formát (Pro ukládání složitějších parametrů programu se nehodí
 +
jednoduché způsoby typu INI soubor. Navíc je poměrně komplikované psát program, který
 +
bude načítat jednotlivé parametry z konfiguračního souboru. Pokud by si program ukládal
 +
data v XML, mohl by je programátor velice snadno číst pomocí některé z knihoven pro práci
 +
s XML.)
 +
Syntaxe XML
 +
Na rozdíl od jazyka HTML, kde můžeme udělat spoustu chyb, se kterými si prohlížeče většinou poradí,
 +
je správný zápis XML dokumentů předpokladem pro jejich další zpracování.
 +
Každý XML dokument se skládá z elementů, které jsou do sebe navzájem vnořené. Elementy se
 +
v textu vyznačují pomocí tzv. tagů. Většině elementů odpovídají dva tagy - počáteční a ukončovací.
 +
<para>Toto je obsah elmentu para.</para>
 +
Ukázka obsahuje jeden element para. Jeho obsah je vyznačen pomocí tagů <para> (počáteční tag) a
 +
</para> (ukončovací tag).
 +
Názvy tagů se zapisují mezi znaky ‘<’ a ‘>’. Ukončovací tag má před svým názvem ještě znak ‘/’, aby se
 +
snadno odlišil od počátečního.
 +
Některé elementy nemusejí mít žádný obsah. Můžeme je samozřejmě zapisovat tak,
 +
že za počátečním tagem uvedeme hned ten ukončovací.
 +
<par>Toto je obsah elmentu par.<br></br>A tohle taky.</par>
 +
Není to však příliš pohodlné, a proto můžeme v XML použít ještě jednu variantu tagu, která říká,
 +
že element nemá žádný obsah. Za jméno elementu v počátečním tagu se uvede znak ‘/’. Ukončovací
 +
tag se pak už nepoužije.
 +
<par>Toto je obsah elmentu par.<br/>A tohle taky.</par>
 +
Elementy jsou základním stavebním kamenem každého dokumentu. U každého počátečního tagu
 +
můžeme použít ještě atributy. Atributy se obvykle používají k upřesnění významu elementu.
 +
<par zabezpeceni="důvěrné">Nějaká tajná informace.</par>
 +
Sekce CDATA
 +
Pokud potřebujeme do dokumentu vložit větší kus textu, kde se hojně používají znaky se speciálním
 +
významem jako ‘<’, ‘>’ a ‘&’, je nepohodlné je zapisovat pomocí znakových entit. Sekce CDATA
 +
oceníme zejména v případech, kdy je součástí XML dokumentu kód nějakého programu nebo HTML
 +
či XML kód.
 +
<script language="JavaScript">
 +
<![CDATA[
 +
for (i=0; i<10; i++) document.writeln("&lt;p&gt;Ahoj&lt;/p&gt;");
 +
]]>
 +
</script>
 +
Bez použití sekce CDATA by byl zápis přece jen krkolomný:
 +
<script language="JavaScript">
 +
<![CDATA[
 +
for (i=0; i<10; i++) document.writeln("<p>Ahoj</p>");
 +
]]>
 +
</script>
 +
Určení kódování použitého v dokumentu
 +
Pokud v dokumentu používáme jiné kódování než UTF-8 nebo UTF-16, musíme ho specifikovat
 +
pomocí XML deklarace, která musí představovat první řádku dokumentu.
 +
Nejjednodušší XML deklarace má následující tvar.
 +
<?xml version="1.0" encoding="windows-1250"?>
 +
<dokument>
 +
Dokument si vesele píši ve starém dobrém NotePadu.
 +
</dokument>
 +
Zápis znaku s libovolným kódem
 +
Může se stát, že náš editor nepodporuje všechny znaky, které potřebujeme použít. Proto můžeme
 +
do XML dokumentu vložit libovolný znak pomocí znakové entity. Znaková entita má tvar
 +
&#x«kód znaku»;, kde «kódznaku» je kód znaku ze znakové sady ISO 10646 (Unicode – UCS) zapsaný
 +
v šestnáctkové soustavě. Můžeme použít i tvar &#«kód znaku»;, kde je «kód znaku» zapsán
 +
v desítkové soustavě.
 +
Instrukce pro zpracování
 +
XML dokumenty mohou být zpracovávány různými programy. Někdy může být užitečné
 +
do dokumentu uložit řídící informace, které jsou určeny pouze pro některý program. Můžeme tak
 +
do dokumentu zařadit odkaz na styl definující zobrazení v prohlížeči, formátovacímu programu
 +
můžeme naznačit, kde má zalomit stránku. Moderní skriptovací jazyky pro generování dynamických
 +
webových stránek se také zapisují přímo do těla dokumentů. Pro všechny tyto účely má XML
 +
k dispozici standardní způsob pro zařazení nestandardních informací. Tyto instrukce XML parser
 +
ignoruje, předá je nadřazené aplikaci záleží na ní, zda je nějak využije.
 +
Syntaxe instrukcí je velice jednoduchá:
 +
<?«identifikátor» «data»?>
 +
Pomocí instrukcí pro zpracování lze do dokumentů zařadit například příkazy jazyka PHP:
 +
<dokument>
 +
<datum> Dnešní datum je <?php echo Date("d.m.Y")?></datum>
 +
<para>Nějaké další informace</para>
 +
</document>
 +
Pomocí instrukcí pro zpracování se k XML dokumentu připojují i styly, definující zobrazení prohlížeči:
 +
<?xml version="1.0" encoding="utf-8"?>
 +
<?xml-stylesheet tref="styl.css" type="text/css"?>
 +
<clanek>
 +
<zahlavi>
 +
<rubrika>Téma týdne</rubrika>
 +
<nazev>XML a kaskádové styly</nazev>
 +
<autor>Jiří Kosek</autor>
 +
</zahlavi>
 +
...
 +
</clanek>
 +
Definice typu dokumentu (DTD)
 +
Definice typu dokumentu (DTD) říká, které elementy a atributy můžeme v dokumentu použít. Navíc
 +
je zde definováno, v jakých vzájemných vztazích mohou být jednotlivé elementy použity. DTD je tedy
 +
užitečný nástroj, který nám umožní hlídat, zda mají naše dokumenty správnou strukturu. Ve světě se
 +
používá mnoho DTD, které vyhovují různým požadavkům. Mezi jedno z nejznámějších patří například
 +
DTD DocBook, které definuje elementy a atributy vhodné pro značkování technické dokumentace.
 +
Tím, že naše dokumenty založíme na určitém DTD, získáme hned dvě výhody. Jednak můžeme
 +
pomocí parseru kontrolovat, zda má náš dokument strukturu odpovídající danému DTD. Druhá
 +
výhoda je patrná při použití standardních DTD jako HTML nebo DocBook k dispozici budeme mít
 +
mnoho užitečných a jednoúčelových nástrojů navržených pro konkrétní DTD. Například není problém
 +
sehnat pro DocBook definici stylů vhodných pro formátování dokumentace či programy, které umí
 +
dokumenty DocBooku konvertovat do HTML a dalších formátů.
 +
Pokud chceme využít výhody DTD, musíme použité DTD určit pomocí deklarace typu dokumentu
 +
(DOCTYPE), která se umísťuje na samotný začátek dokumentu, ihned za XML deklaraci. Obvykle je
 +
DTD uloženo v samostatném souboru, aby mohlo být opakovaně využíváno mnoha dokumenty.
 +
V tomto případě má deklarace tvar:
 +
<!DOCTYPE «kořenový element» SYSTEM "«URL»">
 +
«URL» přitom udává adresu nebo jméno souboru, ve kterém je uloženo DTD. «Kořenový element» je
 +
jméno elementu, ve kterém bude obsažen celý document (instance DTD).
 +
<!DOCTYPE kniha SYSTEM "kniha.dtd">
 +
Jinou možností je umístit DTD přímo do dokumentu. Není to ale příliš častý způsob, protože ztrácíme
 +
možnost sdílení jednoho DTD mezi několika dokumenty.
 +
<!DOCTYPE kniha [
 +
« ... DTD ... »
 +
]>
 +
Když víme, jak připojit DTD k dokumentu, můžeme se podívat na to, jak samotné DTD vypadá.
 +
DTD obsahuje:
 +
· deklarace elementů
 +
· deklarace atributů
 +
· deklarace entit
 +
Deklarace elementů
 +
Nejjednodušší je prázdný element, který nemůže obsahovat žádné další elementy nebo text.
 +
Příkladem takového elementu mohou být například elementy br a hr, které známe z HTML.
 +
Jejich deklarace by vypadala následovně:
 +
<!ELEMENT br EMPTY>
 +
<!ELEMENT hr EMPTY>
 +
Pokud má tedy element html obsahovat záhlaví (head) a tělo (body), použijeme deklaraci:
 +
<!ELEMENT html (head, body)>
 +
Pokud naopak elementy oddělíme znakem ‘|’, může být v dokumentu uveden pouze jeden z nich:
 +
<!ELEMENT potomek (dcera | syn)>
 +
Pokud například článek obsahuje vždy název, ale autora obsahovat nemusí, můžeme použít
 +
následující deklaraci:
 +
<!ELEMENT clanek (nazev, autor?)>
 +
Další obvyklou situací je, že nějaký element se může opakovat, ale musí být přítomen alespoň jednou.
 +
Například kniha se skládá z několika kapitol a musí obsahovat alespoň jednu kapitolu:
 +
<!ELEMENT kniha (kapitola+)>
 +
Vraťme se k předchozímu příkladu a předpokládejme, že článek může mít více autorů, ale nemusí mít
 +
i autora žádného. V tomto případě s výhodou využijeme znak ‘*’, který indikuje libovolný počet
 +
opakování.
 +
<!ELEMENT clanek (nazev, autor*)>
 +
Speciální pozornost si zaslouží případ, kdy je obsahem elementu již samotný text. To vyjádříme
 +
pomocí slova #PCDATA. Pokud by například element em obsahoval již pouze text, a ne další
 +
elementy, použili bychom pro jeho deklaraci zápis:
 +
<!ELEMENT em (#PCDATA)>
 +
Deklarace atributů
 +
V XML může mít každý element libovolné množství atributů. Atributy se většinou používají
 +
pro připojení různých metainformací k elementům. Deklarace atributů pro element má poměrně
 +
jednoduchý tvar:
 +
<!ATTLIST «jméno elementu» «deklarace atributů»>
 +
Po deklaraci:
 +
<!ATTLIST kniha autor CDATA ...>
 +
Můžeme v dokumentu používat atribut následovně:
 +
<kniha autor="Čapek">
 +
Deklarace entit
 +
V XML můžeme předdefinovat libovolné množství entit. Každá bude mít vyhrazen svůj identifikátor.
 +
Např.: <!ENTITY quot "&#34;">
 +
<!ENTITY logo SYSTEM "/obr/logo.eps" NDATA "EPS">
 +
Takto definovanou entitu nemůžeme přímo vložit do textu dokumentu a ani by to nemělo smysl.
 +
Můžeme na ní však odkázat pomocí atributu, který má typ ENTITY nebo ENTITIES.
 +
Od roku 1999 má naše firma logo, které je na obrázku <picture
 +
name="logo"/>
 +
Kontrola dokumentu podle DTD
 +
Výhoda ukládání dokumentů v XML spočívá především v možnosti zachytit pomocí elementů
 +
strukturu dokumentu. Už víme, že základním nástrojem, který se při práci s XML dokumenty používá,
 +
je parser. Parser je program, který kontroluje, zda je dokument správně strukturovaný (well-formed).
 +
Lepší parsery zároveň kontrolují, zda dokument odpovídá danému DTD (samozřejmě jen pokud DTD
 +
pro dokument existuje). Vznikají i další způsoby, jak popsat pravidla pro určitou skupinu dokumentů
 +
(např. XML schémata). Pro ně samozřejmě také existují parsery.
 +
Specifikace XML definuje několik úrovní správnosti dokumentu. Pokud dokument splňuje základní
 +
syntaktická pravidla, jako párové tagy apod., je správně strukturovaný. Pokud dokument obsahuje
 +
DTD nebo je na něj odkaz v deklaraci typu dokumentu, parser kontroluje, zda dokument odpovídá
 +
DTD. Pokud ano, říkáme, že dokument je validní. Pokud dokument porušuje pravidla daná v DTD, je
 +
invalidní. To, že je dokument invalidní, se nevylučuje s tím, že je správně strukturovaný. Zároveň také
 +
platí, že validní dokument musí být správně strukturovaný.
 +
Parsery dnes existují ve dvou podobách. Tou první jsou knihovny pro různé programovací jazyky,
 +
které můžeme využívat v našich programech. Parser nám pak kromě detekce chyb v dokumentu
 +
umožní velmi snadné čtení dat z XML dokumentů.
 +
Druhá skupina jsou parsery v podobě jednoduchých programů, na jejichž vstup předáme XML
 +
dokument a na výstupu obdržíme případný přehled chyb v dokumentu. Můžeme také využít parser
 +
zabudovaný přímo v prohlížeči s podporou XML.
 +
Zdroj informací:
 +
1. XML pro úplné začátečníky, Lucie Grusová, COMPUTER PRESS
 +
2. XML pro každého, Jiří Kosek, Grada Publishing

Verze z 12. 4. 2012, 12:34

  • obecný jazyk SGML
  • jak vypadá XML dokument, využití v praxi
  • XML a layout, co to je eXtensible Stylesheet Language (XSLT styl)
  • co to je definice typu dokumentu (DTD)

Úvod do XML

  • pokud se chceme jako firma uplatnit na trhu, musíme umět rychle a levně získat informace

konkurenci, o trhu a preferencích spotřebitelů.

  • jako spotřebitelé chceme bez námahy nalézt prodejce, který nám požadované zboží dodá

nejrychleji a nejlevněji.

  • se svými zákazníky a dodavateli musíme rychle komunikovat, chceme, aby se objednávky a

faktury vyřizovaly téměř okamžitě a ne s několikadenním prodlením.

Aby to vše bylo možné, potřebujeme mít k dispozici efektivní způsoby sdílení a vyhledávání informací.

Dosud se pro výměnu dat stále ještě používají proprietární formáty, se kterými dovedou pracovat jen úzké okruhy aplikací, výměna dat mezi informačními systémy jednotlivých firem je nákladná a zdaleka ne elegantní záležitost.

Ani jazyk HTML se nestal dostatečně schopným lepidlem, které by dokázalo celý svět informačně propojit. HTML již vyčerpalo svůj potenciál a současnosti už má poměrně omezené vyjadřovací schopnosti. Internet je dnes informacemi přehlcen a hledaná informace je často skryta ve velkém množství dalších pro nás nepotřebných informací. Podívejme se na to, jak může vypadat zdrojový kód části webové stránky, která obsahuje ceník: V prohlížeči pak na stránce uvidíme přehlednou tabulku s ceníkem. Dnešní, často na pohled skvělé webové stránky, jsou jen soubory obsahující mnohdy nepřehledný balast. O tom, že v takovýchto datech se těžko něco hledá, není potřeba nikoho přesvědčovat. Výše nastíněný problém se snaží odstranit nový jazyk XML (eXtensible Markup Language). Největší přínos XML spočívá v tom, že v dokumentech můžeme používat vlastní značky (tagy). Pokud tedy vytváříme například ceník, můžeme v něm přehledně označit, co je název výrobku, jeho popis a cena. Vše bude přehlednější a kratší: Na první pohled vidíme, že v takto strukturovaných datech se bude vyhledávat mnohem snáze. Inteligentní vyhledávací službě zadáme název výrobku a maximální cenu, za pár sekund se nám na monitoru objeví seznam prodejen, kde mají k dostání zboží, které sháníme. XML však není určeno jen pro webové stránky, uplatnění nalezne i v elektronickém publikování nebo při výměně dat mezi různými systémy. Něco málo z historie značkovacích jazyků S rozmachem Internetu a dalších médií (např. CD-ROM) vznikla potřeba jedny a tytéž informace prezentovat mnoha způsoby kvalitním tiskem na papíře, jako hypertextovou příručku na CD-ROMu či jako sadu provázaných webových stránek. Pro tyto účely je však potřeba znát logickou strukturu dokumentu. Musíme vědět, že tohle je nadpis a tohle zase popis obrázku. Konkrétní velikost písma a způsob formátování záleží až na tom, zda chceme produkovat tištěnou knihu nebo multimediální CD-ROM. Potřebujeme tedy jazyk, který umožní označit význam jednotlivých částí textu, a ne jejich vzhled. Takovýmto samopopisným jazykem je právě XML. Nejde však zdaleka o první jazyk svého druhu. Jazykům, které umožňují vyznačovat části textu, se říká značkovací jazyky (markup languages). Asi prvním známým značkovacím jazykem byl GML (Generalized Markup Language), který byl vytvořen při práci na systému pro uchovávání a následné využití právních textů pro IBM. Autoři se museli se tehdy vypořádat s nekompatibilitou jednotlivých systémů a programů a nejsnazší cesta vedla právě přes vytvoření nějakého obecného značkovacího jazyka. A tak byl vyvinut jazyk SGML (Standard Generalized Markup Language), který je definován v ISO normě 8879 z roku 1986. Jazyk SGML je skutečně hodně obecný a samozřejmě umožňuje definici vlastních značkovacích jazyků (sad značek a jejich vzájemných vztahů) pomocí tzv. definic typu dokumentu (DTD). Navíc má spoustu volitelných parametrů počínaje maximální délkou názvů značek a konče určením znaků použitelných jako oddělovače značek od textu. Komplexnost standardu SGML poněkud zbrzdila jeho praktické využití. Asi nejznámější aplikací SGML je jazyk HTML (Hypertext Markup Language), který se používá pro tvorbu webových stránek. Značky, které můžeme na stránkách používat, určuje příslušné DTD, které je pro každou verzi HTML trošku jiné. V polovině 90. let došlo k paradoxní situaci. Jazyk HTML si získal velkou oblibu díky své jednoduchosti, která byla v ostrém kontrastu s komplexností SGML. Ukázalo se však, že pevně daná skupina značek, které HTML používá, už nestačí. Pro účely vyhledávání a vůbec efektivnější výměny dat by bylo lepší mít možnost používat vlastní značky, které by přesně vymezily význam textu. Nový jazyk dostal jméno XML (eXtensible Markup Language). Jedná se o podmnožinu SGML, která si zachovává možnost definování vlastních DTD, a tedy i vlastních značek, pro jednotlivé skupiny dokumentů. Na rozdíl od SGML je mnoho parametrů předem určeno např. použité oddělovače a speciální znaky. XML už rovnou počítá s podporou všech možných jazyků, takže není tak úzce svázáno s angličtinou jako většina předchozích počítačových technologií. Navíc je syntaxe zápisu dokumentů v XML oproti SGML poměrně přísná, což umožní mnohem snazší a levnější vývoj aplikací, které umožňují s tímto jazykem pracovat. XML je standardní formát pro výměnu a sdílení informací Dnešní doba přeje komunikaci. Komunikace není nic jiného, než výměna informací. V dnešním globálním světě není možné pro výměnu dat používat nějaké proprietární formáty, které jsou svázány s konkrétním softwarem nebo hardwarem. Nesluší se posílat informace ve wordovém formátu DOC, protože někdo s unixovým počítačem si je těžko přečte. Je potřeba používat nějaký jednoduchý otevřený formát, který není úzce svázán s nějakou platformou nebo proprietární technologií. Takovým formátem je například XML. Otevřený formát je to proto, že jeho specifikace je každému zdarma k dispozici na serveru konsorcia W3C, které se stará i o mnoho dalších technologií souvisejících s webem. Každý tak může bez problémů do svých aplikací implementovat podporu XML. To představuje velký rozdíl oproti firemním formátům, k nimž není k dispozici žádná dokumentace a navíc se jedná v porovnání s XML o velice složité formáty, často binární. Práci s XML usnadňuje i to, že celý formát je založen na obyčejném textu. I když pro většinu lidí zůstane kód XML skryt a budou ho používat pouze aplikace pro vzájemnou komunikaci, není problém kdykoliv otevřít XML dokument v libovolném textovém editoru a pár potřebných úprav provést ručně. Použití textového formátu může někomu připadat jako zbytečné plýtvání místem. Dnes se však mnohem větší důraz klade na srozumitelnost a snadnou práci s daty jestli ušetříme pár kilobajtů paměti, již nikoho příliš netrápí. Mezinárodní podpora XML je asi vůbec první formát, který hned od samého počátku dbá na potřeby jiných jazyků než je angličtina. Jako znaková sada se používá ISO 10646. Pod tím si asi nepředstavíte nic konkrétního. ISO 10646 je 32bitová znaková sada (Unicode), která dokáže pojmout všechny znaky dnes používaných jazyků. V XML proto můžeme vytvářet dokumenty, které obsahují texty v mnoha jazycích, najednou můžeme míchat např. češtinu, angličtinu, ruštinu, arabštinu a korejštinu zcela dle libosti. Pokud by dokumenty obsahovaly pouze český text, znamenalo by ukládání přímo v ISO 10646 zbytečné plýtvání místem. XML dokument proto může být v libovolném kódování (např. windows-1250, ISO 8859-2). Kódování je však v každém dokumentu přesně určeno, takže odpadají problémy s konverzí z jednoho kódování do druhého. Každému je hned jasné, v jakém kódování je dokument. Vysoký informační obsah Pomocí XML značek vyznačujeme v dokumentu význam jednotlivých částí textu. Říkáme toto je název výrobku, tohle zase telefonní číslo a tohle je číslo našeho účtu. Dokumenty obsahují mnohem více informací, než kdyby se používalo prezentační značkovaní tohle je tučným písmem Arial o velikosti 12 bodů zarovnané vlevo. XML dokumenty jsou informačně bohatší. To lze samozřejmě s výhodou využít v mnoha oblastech. Největší přínos to bude znamenat samozřejmě pro prohledávání. Dnešní internetové vyhledávací služby jako Google podporují fulltextové vyhledávání. Zadáme hledaná slova a doufáme, že se nám vrátí dokumenty, které chceme. Pokud bychom mohli určit, že např. hledané slovo nás zajímá jako název firmy, bylo by při použití XML a vhodném označkování hledání mnohem přesnější. Snadná konverze do dalších formátů V mnoha případech potřebujeme XML dokument zobrazit na nějakém běžném médiu na obrazovce, na papíře. V tomto případě už samozřejmě chceme přesně ovlivnit, jak se obsah jednotlivých značek zobrazí. XML samo o sobě žádné takové prostředky nenabízí. Existuje však naštěstí hned několik stylových jazyků, které umožňují definovat, jak se mají jednotlivé elementy zobrazit. Souboru pravidel nebo příkazů, které definují, jak se dokument převede do jiného formátu, se říká styl. Výhodou je, že jeden styl můžeme aplikovat na mnoho dokumentů stejného typu. Dosáhneme tak jednotného formátování. Zároveň můžeme na jeden dokument aplikovat několik různých stylů. Jedním stylem vygenerujeme postscriptový soubor pro naše DTP studio, druhým HTML kód pro zařazení na naše webové stránky a třetím třeba jen obsah dokumentu, který pošleme mailem šéfovi. Stylových jazyků existuje dnes několik. Mezi nejznámější patří asi kaskádové styly (CSS). Ty lze použít pouze pro jednoduché formátování, které dobře poslouží pro zobrazení dokumentu na obrazovce v XML editoru nebo v prohlížeči. Pro náročnější aplikace slouží jazyk XSL (eXtensible Stylesheet Language). Automatická kontrola struktury dokumentu XML nám umožňuje definovat vlastní sadu značek, které chceme v dokumentu používat. Tuto možnost samozřejmě využít nemusíme, můžeme používat libovolné značky. Pokud si však předem pomocí DTD definujeme, jaké značky může dokument obsahovat, bude náš další život mnohem lehčí. Zcela automaticky můžeme kontrolovat, zda dokument obsahuje pouze povolené značky. Programu, který kontroluje správnost XML dokumentů, se říká parser . Tento fakt má velký význam i při vývoji aplikací. Pro čtení dat můžeme použít parser, který za nás detekuje většinu chyb v datech. Obrovsky nám to ušetří práci. Kdo programuje, sám nejlépe ví, že většina kódu stejně ošetřuje různé chybové stavy a chyby ve vstupních datech. DTD není jediný jazyk, který umožňuje definovat značky použitelné v dokumentech. DTD se hodí pro popis formátů, které se používají především pro textové dokumenty. Neobsahuje však nástroje pro kontrolu různých typů dat jako čísla, měnové údaje, údaje o datu a čase. To je přitom velice důležité pro aplikace, které si pomocí XML posílají data spíše databázového charakteru. Pro tyto potřeby existuje několik dalších jazyků, umožňujících určit správné schéma dokumentu. Hypertext a odkazy XML samozřejmě umožňuje vytváření odkazů v rámci jednoho dokumentu i mezi dokumenty navzájem. Nabízí však mnoho možností nad rámec odkazů, které známe z HTML. Můžeme vytvářet i vícesměrné odkazy, které spojují několik dokumentů dohromady. Užitečná je i možnost uložení odkazů zcela mimo dokumenty, kterých se týkají. Tímto způsobem lze vytvářet různé anotace a komentáře k již existujícím stránkám. K čemu všemu můžeme XML použít · B2B‚ business-to-business aplikace (výměna informací mezi obchodními partnery v elektronickém formátu) · Inteligentní webové stránky (Možnost definice vlastních značek, které přesně vyznačí význam jednotlivých částí stránky, má pozitivní efekt na přesnost a rychlost vyhledávání informací. Obecný model umožňuje vývoj stránek pro mnoho zařízení s rozdílnými schopnostmi PC, mobilní telefony, WebTV nebo třeba herní konzole.) · Metadata (Pro vyhledávání, ale hlavně pro klasifikaci dokumentů, je užitečné o nich znát co nejvíce metadat.) · Elektronické publikování (Často potřebujeme jeden dokument v několika různých formátech jako tištěnou knihu, sadu provázaných webových stránek nebo hypertextovou příručku na CD-ROMu. Flexibilita stylových jazyků také umožňuje, aby se z jednoho zdroje generovalo několik druhů dokumentů s různým obsahem, některé údaje v technické dokumentaci jsou například tajné a vytisknou se pouze pro potřeby firmy, přičemž zákazníkům se ze stejného XML dokumentu vygeneruje okleštěná verze.) · Univerzální datový formát (Pro ukládání složitějších parametrů programu se nehodí jednoduché způsoby typu INI soubor. Navíc je poměrně komplikované psát program, který bude načítat jednotlivé parametry z konfiguračního souboru. Pokud by si program ukládal data v XML, mohl by je programátor velice snadno číst pomocí některé z knihoven pro práci s XML.) Syntaxe XML Na rozdíl od jazyka HTML, kde můžeme udělat spoustu chyb, se kterými si prohlížeče většinou poradí, je správný zápis XML dokumentů předpokladem pro jejich další zpracování. Každý XML dokument se skládá z elementů, které jsou do sebe navzájem vnořené. Elementy se v textu vyznačují pomocí tzv. tagů. Většině elementů odpovídají dva tagy - počáteční a ukončovací. <para>Toto je obsah elmentu para.</para> Ukázka obsahuje jeden element para. Jeho obsah je vyznačen pomocí tagů <para> (počáteční tag) a </para> (ukončovací tag). Názvy tagů se zapisují mezi znaky ‘<’ a ‘>’. Ukončovací tag má před svým názvem ještě znak ‘/’, aby se snadno odlišil od počátečního. Některé elementy nemusejí mít žádný obsah. Můžeme je samozřejmě zapisovat tak, že za počátečním tagem uvedeme hned ten ukončovací. <par>Toto je obsah elmentu par.
</br>A tohle taky.</par> Není to však příliš pohodlné, a proto můžeme v XML použít ještě jednu variantu tagu, která říká, že element nemá žádný obsah. Za jméno elementu v počátečním tagu se uvede znak ‘/’. Ukončovací tag se pak už nepoužije. <par>Toto je obsah elmentu par.
A tohle taky.</par> Elementy jsou základním stavebním kamenem každého dokumentu. U každého počátečního tagu můžeme použít ještě atributy. Atributy se obvykle používají k upřesnění významu elementu. <par zabezpeceni="důvěrné">Nějaká tajná informace.</par> Sekce CDATA Pokud potřebujeme do dokumentu vložit větší kus textu, kde se hojně používají znaky se speciálním významem jako ‘<’, ‘>’ a ‘&’, je nepohodlné je zapisovat pomocí znakových entit. Sekce CDATA oceníme zejména v případech, kdy je součástí XML dokumentu kód nějakého programu nebo HTML či XML kód. <script language="JavaScript"> <![CDATA[ for (i=0; i<10; i++) document.writeln("<p>Ahoj</p>"); ]]> </script> Bez použití sekce CDATA by byl zápis přece jen krkolomný: <script language="JavaScript"> <![CDATA[

for (i=0; i<10; i++) document.writeln("

Ahoj

");

]]> </script> Určení kódování použitého v dokumentu Pokud v dokumentu používáme jiné kódování než UTF-8 nebo UTF-16, musíme ho specifikovat pomocí XML deklarace, která musí představovat první řádku dokumentu. Nejjednodušší XML deklarace má následující tvar. <?xml version="1.0" encoding="windows-1250"?> <dokument> Dokument si vesele píši ve starém dobrém NotePadu. </dokument> Zápis znaku s libovolným kódem Může se stát, že náš editor nepodporuje všechny znaky, které potřebujeme použít. Proto můžeme do XML dokumentu vložit libovolný znak pomocí znakové entity. Znaková entita má tvar &#x«kód znaku»;, kde «kódznaku» je kód znaku ze znakové sady ISO 10646 (Unicode – UCS) zapsaný v šestnáctkové soustavě. Můžeme použít i tvar &#«kód znaku»;, kde je «kód znaku» zapsán v desítkové soustavě. Instrukce pro zpracování XML dokumenty mohou být zpracovávány různými programy. Někdy může být užitečné do dokumentu uložit řídící informace, které jsou určeny pouze pro některý program. Můžeme tak do dokumentu zařadit odkaz na styl definující zobrazení v prohlížeči, formátovacímu programu můžeme naznačit, kde má zalomit stránku. Moderní skriptovací jazyky pro generování dynamických webových stránek se také zapisují přímo do těla dokumentů. Pro všechny tyto účely má XML k dispozici standardní způsob pro zařazení nestandardních informací. Tyto instrukce XML parser ignoruje, předá je nadřazené aplikaci záleží na ní, zda je nějak využije. Syntaxe instrukcí je velice jednoduchá: <?«identifikátor» «data»?> Pomocí instrukcí pro zpracování lze do dokumentů zařadit například příkazy jazyka PHP: <dokument> <datum> Dnešní datum je <?php echo Date("d.m.Y")?></datum> <para>Nějaké další informace</para> </document> Pomocí instrukcí pro zpracování se k XML dokumentu připojují i styly, definující zobrazení prohlížeči: <?xml version="1.0" encoding="utf-8"?> <?xml-stylesheet tref="styl.css" type="text/css"?> <clanek> <zahlavi> <rubrika>Téma týdne</rubrika> <nazev>XML a kaskádové styly</nazev> <autor>Jiří Kosek</autor> </zahlavi> ... </clanek> Definice typu dokumentu (DTD) Definice typu dokumentu (DTD) říká, které elementy a atributy můžeme v dokumentu použít. Navíc je zde definováno, v jakých vzájemných vztazích mohou být jednotlivé elementy použity. DTD je tedy užitečný nástroj, který nám umožní hlídat, zda mají naše dokumenty správnou strukturu. Ve světě se používá mnoho DTD, které vyhovují různým požadavkům. Mezi jedno z nejznámějších patří například DTD DocBook, které definuje elementy a atributy vhodné pro značkování technické dokumentace. Tím, že naše dokumenty založíme na určitém DTD, získáme hned dvě výhody. Jednak můžeme pomocí parseru kontrolovat, zda má náš dokument strukturu odpovídající danému DTD. Druhá výhoda je patrná při použití standardních DTD jako HTML nebo DocBook k dispozici budeme mít mnoho užitečných a jednoúčelových nástrojů navržených pro konkrétní DTD. Například není problém sehnat pro DocBook definici stylů vhodných pro formátování dokumentace či programy, které umí dokumenty DocBooku konvertovat do HTML a dalších formátů. Pokud chceme využít výhody DTD, musíme použité DTD určit pomocí deklarace typu dokumentu (DOCTYPE), která se umísťuje na samotný začátek dokumentu, ihned za XML deklaraci. Obvykle je DTD uloženo v samostatném souboru, aby mohlo být opakovaně využíváno mnoha dokumenty. V tomto případě má deklarace tvar: <!DOCTYPE «kořenový element» SYSTEM "«URL»"> «URL» přitom udává adresu nebo jméno souboru, ve kterém je uloženo DTD. «Kořenový element» je jméno elementu, ve kterém bude obsažen celý document (instance DTD). <!DOCTYPE kniha SYSTEM "kniha.dtd"> Jinou možností je umístit DTD přímo do dokumentu. Není to ale příliš častý způsob, protože ztrácíme možnost sdílení jednoho DTD mezi několika dokumenty. <!DOCTYPE kniha [ « ... DTD ... » ]> Když víme, jak připojit DTD k dokumentu, můžeme se podívat na to, jak samotné DTD vypadá. DTD obsahuje: · deklarace elementů · deklarace atributů · deklarace entit Deklarace elementů Nejjednodušší je prázdný element, který nemůže obsahovat žádné další elementy nebo text. Příkladem takového elementu mohou být například elementy br a hr, které známe z HTML. Jejich deklarace by vypadala následovně: <!ELEMENT br EMPTY> <!ELEMENT hr EMPTY> Pokud má tedy element html obsahovat záhlaví (head) a tělo (body), použijeme deklaraci: <!ELEMENT html (head, body)> Pokud naopak elementy oddělíme znakem ‘|’, může být v dokumentu uveden pouze jeden z nich: <!ELEMENT potomek (dcera | syn)> Pokud například článek obsahuje vždy název, ale autora obsahovat nemusí, můžeme použít následující deklaraci: <!ELEMENT clanek (nazev, autor?)> Další obvyklou situací je, že nějaký element se může opakovat, ale musí být přítomen alespoň jednou. Například kniha se skládá z několika kapitol a musí obsahovat alespoň jednu kapitolu: <!ELEMENT kniha (kapitola+)> Vraťme se k předchozímu příkladu a předpokládejme, že článek může mít více autorů, ale nemusí mít i autora žádného. V tomto případě s výhodou využijeme znak ‘*’, který indikuje libovolný počet opakování. <!ELEMENT clanek (nazev, autor*)> Speciální pozornost si zaslouží případ, kdy je obsahem elementu již samotný text. To vyjádříme pomocí slova #PCDATA. Pokud by například element em obsahoval již pouze text, a ne další elementy, použili bychom pro jeho deklaraci zápis: <!ELEMENT em (#PCDATA)> Deklarace atributů V XML může mít každý element libovolné množství atributů. Atributy se většinou používají pro připojení různých metainformací k elementům. Deklarace atributů pro element má poměrně jednoduchý tvar: <!ATTLIST «jméno elementu» «deklarace atributů»> Po deklaraci: <!ATTLIST kniha autor CDATA ...> Můžeme v dokumentu používat atribut následovně: <kniha autor="Čapek"> Deklarace entit V XML můžeme předdefinovat libovolné množství entit. Každá bude mít vyhrazen svůj identifikátor. Např.: <!ENTITY quot """> <!ENTITY logo SYSTEM "/obr/logo.eps" NDATA "EPS"> Takto definovanou entitu nemůžeme přímo vložit do textu dokumentu a ani by to nemělo smysl. Můžeme na ní však odkázat pomocí atributu, který má typ ENTITY nebo ENTITIES. Od roku 1999 má naše firma logo, které je na obrázku <picture name="logo"/> Kontrola dokumentu podle DTD Výhoda ukládání dokumentů v XML spočívá především v možnosti zachytit pomocí elementů strukturu dokumentu. Už víme, že základním nástrojem, který se při práci s XML dokumenty používá, je parser. Parser je program, který kontroluje, zda je dokument správně strukturovaný (well-formed). Lepší parsery zároveň kontrolují, zda dokument odpovídá danému DTD (samozřejmě jen pokud DTD pro dokument existuje). Vznikají i další způsoby, jak popsat pravidla pro určitou skupinu dokumentů (např. XML schémata). Pro ně samozřejmě také existují parsery. Specifikace XML definuje několik úrovní správnosti dokumentu. Pokud dokument splňuje základní syntaktická pravidla, jako párové tagy apod., je správně strukturovaný. Pokud dokument obsahuje DTD nebo je na něj odkaz v deklaraci typu dokumentu, parser kontroluje, zda dokument odpovídá DTD. Pokud ano, říkáme, že dokument je validní. Pokud dokument porušuje pravidla daná v DTD, je invalidní. To, že je dokument invalidní, se nevylučuje s tím, že je správně strukturovaný. Zároveň také platí, že validní dokument musí být správně strukturovaný. Parsery dnes existují ve dvou podobách. Tou první jsou knihovny pro různé programovací jazyky, které můžeme využívat v našich programech. Parser nám pak kromě detekce chyb v dokumentu umožní velmi snadné čtení dat z XML dokumentů. Druhá skupina jsou parsery v podobě jednoduchých programů, na jejichž vstup předáme XML dokument a na výstupu obdržíme případný přehled chyb v dokumentu. Můžeme také využít parser zabudovaný přímo v prohlížeči s podporou XML. Zdroj informací: 1. XML pro úplné začátečníky, Lucie Grusová, COMPUTER PRESS 2. XML pro každého, Jiří Kosek, Grada Publishing

Osobní nástroje
Jmenné prostory
Varianty
Akce
Navigace
Nástroje