XML pro začátečníky - 2. část
 x   TIP: Přetáhni ikonu na hlavní panel pro připnutí webu

XML pro začátečníky - 2. částXML pro začátečníky - 2. část

 

XML pro začátečníky - 2. část

Google       Google       10. 7. 2007       38 050×

  • XML elementy
  • Atributy XML
  • Validace XML
  • XML a webové prohlížeče

V minulé části seriálu jsme probrali naprosté základy XML a nejdůležitější syntaktická pravidla a dnes se podíváme na zoubek XML elementům, atributům, validaci a jak si webové prohlížeče umí poradit s XML.

XML elementy

XML elementy jsou rozšiřitelné

Podívejte se na následující kousek kódu v XML.

<zprava>
  <pro>Tomáš</pro>
  <od>Jana</od>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>

Na chvíli si představte, že již umíte zobrazovat XML dokumenty a vytvořili jste aplikaci, která vybere prvky <pro>, <od> a <telo>. Výstup bude vypadat třeba takto:

ZPRÁVA

Pro: Tomáš
Od: Jana

Nezapomeň na mě tenhle víkend!

Co se stane, když autor XML dokumentu do něj přidá nějaké další informace?

<zprava>
  <datum>2002-08-01</datum>
  <pro>Tomáš</pro>
  <od>Jana</od>
  <predmet>Předmět</predmet>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>

Měla by se aplikace přerušit nebo zhroutit? Ne, protože program stále může najít prvky <pro>, <od> a <telo> a vyprodukovat ten samý výstup.

XML elementy mají mezi sebou vztahy

K porozumění terminologii XML musíte vědět, jak jsou vztahy mezi XML elementy pojmenovány a jak jsou popisovány hodnoty elementů. Představte si, že toto je obsah knihy:

Úvod do XML

  • Co je HTML
  • Co je XML

Syntaxe XML

  • Elementy musí mít ukončovací tag
  • Elementy musí být vhodně vloženy

A představte si, že tento XML dokument popisuje knihu:


<kniha> 
  <titul>Moje první XML</titul>
  <tisk id="33-657" medium="papír">
  <kapitola>Úvod do XML
    <část>Co je HTML</část>
    <část>Co je XML</část>
  </kapitola>
  <kapitola>Syntaxe XML
    <část>Elementy musí mít ukončovací tag</část>
    <část>Elementy musí být vhodně vložené</část>
  </kapitola>
</kniha>

<kniha> je hlavní element (root element). <titul>, <tisk> a <kapitola> jsou potomky elementu <kniha>. <kniha> je rodič prvků <titul>, <tisk> a <kapitola>. <titul>, <tisk> a <kapitola> jsou sourozenci (či sesterské elementy), protože mají stejného rodiče.

Hodnoty elementu

XML element je vše od počátečního tagu do ukončovacího tagu (včetně). A každý element může mít rozdílné typy hodnot. Hodnotou elementu může být:

  • element
  • smíšená hodnota
  • jednoduchá hodnota (text)
  • prázdná hodnota
  • element může mít atributy

V příkladu nahoře, <kniha> má jako hodnoty elementy. <kapitola> má smíšenou hodnotu, protože obsahuje jak text, tak další elementy. <část> má jednoduchou hodnotu (pouze text). lt;tisk> je prázdný element, protože nepřenáší uvnitř žádnou informaci.

V příkladu pouze element <tisk> má atributy. Atribut pojmenovaný id má hodnotu 33-657. Atribut medium má hodnotu papír.

Název elementu

Název XML elementu musí dodržovat tato pravidla:

  • Název může obsahovat písmena, čísla i ostatní znaky.
  • Název nesmí začínat číslem nebo interpunkčním znaménkem.
  • Název nesmí začínat písmeny xml (popř. XML, Xml, atd.).
  • Název nesmí obsahovat mezery.

Název může být při dodržení pravidel prakticky jakýkoliv. Ale je rozumné vytvářet názvy, které něco říkají o svém obsahu. Výborným pomocníkem je podtržítko.

<jmeno_uzivatele>
<prijmeni_uzivatele>

Vyvarujte se „-“ a „.“ v názvu. Pokud něco pojmenujete jmeno-uzivatele, může se stát, že váš software zkusí odečíst slovíčko uzivatele od jmeno. Pokud byste použili název jmeno.uzivatele, může si váš software myslet, že uzivatele je vlastnost objektu jmeno.

Název elementu může být libovolně dlouhý, ale nic se nemá přehánět. V zájmu přehlednosti by měl být název krátký a hlavně výstižný. Např. <titulek_knihy> se mi zdá vhodnější než <titulek_na_uvodni_strance_knihy>.

XML dokumenty se často používají jako zdrojová data do databáze. Je proto dobré dodržovat pravidla pojmenování, které podporuje vaše databáze (z tohoto důvodu doporučuji nepoužívat diakritiku).

Neanglická písmena jako é, ò, á jsou v XML povolena, ale dávejte si pozor, zda jsou tyto znaky povolené i v softwaru, který bude využívat vašeho dokumentu (např. databáze).

Dvojtečka „:“ by se neměla vyskytovat v názvu elementu, protože je rezervována pro jmenné prostory (anglicky namespaces), kterým se budu věnovat déle.

Atributy v XML

Určitě si z HTML vzpomenete na: <IMG SRC="computer.gif">. Atribut SRC přenáší další informace o elementu IMG (jaký obrázek má být zobrazen).

 V HTML i XML poskytují atributy doplňující informace k elementu.

<img src="computer.gif">
<a href="demo.asp"></a>

Atributy často přenášejí informace, které nejsou částí dat. V příkladu dole, typ souboru je vzhledem k datům bezvýznamný, ale mohl by být důležitý pro software, který s elementem manipuluje.

<soubor typ="gif">computer.gif</soubor>

"atribut" nebo 'atribut'

Hodnoty atributů musí být vždy uzavřeny buď v jednoduchých nebo v dvojitých uvozovkách. Pro pohlaví člověka může tag <clovek> vypadat takto:

<člověk pohlavi="žena">

nebo takto:

<člověk pohlavi='žena'>

Pokud má hodnota atributu v obsahu dvojité uvozovky, je nezbytné použít jednoduché uvozovky:

<gangster jmeno='George "Shotgun" Ziegler'>

A naopak, pokud hodnota atributu obsahuje jednoduché uvozovky, je nezbytné použít dvojité uvozovky:

<gangster jmeno="George 'Shotgun' Ziegler">

Elementy vs. atributy

Data můžeme uložit jako atribut, nebo jako element. Nyní se podívejte na dva jednoduché příklady:

<osoba pohlavi="žena">
  <jmeno>Anna</jmeno>
  <prijmeni>Smith</prijmeni>
</osoba>
<osoba>
  <pohlavi>žena</pohlavi>
  <jmeno>Anna</jmeno>
  <prijmeni>Smith</prijmeni>
</osoba>

V prvním příkladu je pohlavi atributem. V druhém je pohlavi potomkem elementu. Ale přesto obě varianty poskytují stejnou informaci.

Neexistují žádná pravidla, kdy použít atribut a kdy element. Z mé zkušenosti vyplývá, že atribut je užitečný (vlastně nutný) v HTML, ale v XML se jim zkouším vyvarovat. Důvod se vám budu snažit vysvětlit v následujících odstavcích.

Nejradši ukládám data jako podelementy. Následující tři XML dokumenty obsahují ty samé informace. V prvním příkladě je datum atributem, v druhém elementem a v třetím je datum rozděleno na jednotlivé elementy (<den>, <mesic>, <rok>). Poslední ze zobrazených způsobů pokládám za nejlepší.

<zprava datum="12/11/2002">
  <pro>Tomáš</pro>
  <od>Jana</od>
  <zahlavi>Připomínka</zahlavi>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>
<zprava>
  <datum>12/11/2002</datum>
  <pro>Tomáš</pro>
  <od>Jana</od>
  <zahlavi>Připomínka</zahlavi>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>
<zprava>
  <datum>
    <den>12</den>
    <mesic>11</mesic>
    <rok>2002</rok>
  </datum>
  <pro>tomáš</pro>
  <od>Jana</od>
  <zahlavi>Přípomínka</zahlavi>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>

Nepoužívat atributy?

Některé problémy s používáním atributů jsou:

  • Atributy nemohou obsahovat složené hodnoty (potomci ano).
  • Atributy nejsou jednoduše rozšiřitelné pro budoucí změny.
  • Atributy nemohou popisovat struktury (potomci ano).
  • Atributy jsou těžkopádnější při editaci či při čtení programovým kódem.
  • Je složité testovat správnost atributu pomocí DTD.

Používáte-li atributy jako úložiště pro data, dříve nebo později zjistíte, že čtení, editace a údržba XML dokumentu je mnohem těžší než kdyby byly informace ve formě elementu. Zkuste používat XML elementy k popisu dat a atributy pouze k popisu informací, které se netýkají dat.

Zde je praktická ukázka toho, jak by nemělo být s XML nakládáno:

<zprava den="12" mesic="11" rok="2002" od="Tomáš" pro="Jana" zahlavi="Upomínka" telo="Nezapomeň na mě tento víkend!">
<zprava>

Výjimka potvrzuje pravidlo

Přestože se striktně držím pravidla používat atributy v XML co nejméně, tak přece jenom mám jednu výjimku. Občas přiřazuji ID reference k elementu. ID se většinou používá k přístupu k XML elementu (stejně jako v databázích apod.). Zde je příklad:

<zpravy>
  <zprava id="p501">
  <pro>Tomáš</pro>
  <predmet<Připomínka</predmet>
  <od>Jana</od>
  <telo>Nezapomeň na mě tenhle víkend!</telo>
</zprava>

<zprava id="p502">
  <pro>Jana</pro>
  <od>Tomáš</od>
  <predmet<Re: Připomínka</predmet>
  <telo>Nezapomenu!</telo>
  </zprava>
</zpravy>

ID je zde pouze čítačem či jedinečným identifikátorem k rozpoznání zpráv v XML souboru, ale není částí dat ve zprávě.

Teď se snažím říci, že metadata (data o datech) by měla být uložena jako atribut a že samotná data mají být uložena jako XML elementy.

Validace XML

Správný XML dokument je takový, který je vytvořen podle pravidel syntaxe v předchozí kapitole, tj.:

  • XML dokumenty musí mít rodičovský element.
  • Brát zřetel na citlivost velkých a malých písmen v XML.
  • XML tagy musí být vhodně vloženy.
  • Hodnoty atributů musí být vždy v uvozovkách.
<?xml version="1.0" encoding="ISO-8859-1"?>
  <zprava>
    <datum>12/11/2002</datum>
    <pro>Tomáš</pro>
    <od>Jana</od>
    <zahlavi>Připomínka</zahlavi>
    <telo>Nezapomeň na mě tenhle víkend!</telo>
  </zprava>

XML DTD

Validní (správně vytvořený) XML dokument musí dodržovat zásady uvedené v DTD, které definuje správný XML element.

<?xml version="1.0" encoding="ISO-8859-1"?>
<!DOCTYPE zprava SYSTEM "internalNote.dtd">
  <zprava>
    <pro>Tomáš</pro>
    <od>Jana</od>
    <zahlavi>Připomínka</zahlavi>
    <telo>Nezapomeň na mě tenhle víkend!</telo>
  </zprava>

Účelem DTD je definovat správně vytvořené bloky XML dokumentu. Popisuje strukturu dokumentu se seznamem povolených elementů. Můžete si přečíst více o DTD a jak validovat své XML dokumenty v tutoriálu XML DTD na w3schools.com.

XML Schéma

W3C podporuje i alternativu k DTD –XML Schéma, založené na XML. Více se dozvíte v tutoriálu na w3schools.com.

Obecný XML validátor

Chcete-li si zkontrolovat správnost syntaxe jakéhokoli XML dokumentu, pomůže vám XML validátor.

Chyby v XML vás zastaví!

W3C specifikace XML dokumentu zajišťuje, že program by neměl pokračovat v procesu XML dokumentu, nalezne-li chybu. Důvodem je, že XML software by měl být skvěle čitelný a všechny XML dokumenty by měly být kompatibilní.

S HTML je možné vytvořit dokument se skrytými chybami (např. zapomenete uzavírací tag). Jedním z hlavních důvodů, proč jsou HTML prohlížeče tak velké a nekompatibilní, je, že mají odlišné způsoby k vyřešení vzhledu dokumentu na výstupu, pokud narazí na chybu. S XML se toto stát nemůže.

XML a webové prohlížeče

Téměř všechny hlavní prohlížeče mají podporu XML a XSLT.

Mozilla Firefox – Firefox podporuje XML a XSLT (a CSS).

Mozilla – Mozilla zahrnuje rozšíření pro XML parsing (parsing = větný rozbor), podporuje XML + CSS, má slabší podporu pro jmenné prostory (namespaces). Je také dostupná s XSLT implementací.

Netscape – Poněvadž používá stejný engine jako Mozilla, má s ní také téměř stejné vlastnosti v práci s XML.

Opera – Opera podporuje XML a XSLT (a CSS). Od verze 8 také XML + CSS.

Internet Explorer – Verze 6 podporuje XML, jmenné prostory, CSS, XSLT a XPath.
Pozn.: Internet Explorer 5 také podporuje XML, ale XSLT část není plně kompatibilní s oficiálním standardem W3C!


Jsme na konci druhé části seriálu o XML, překládaného z www.w3schools.com. Příště se naučíme efektivně zobrazovat XML dokumenty na monitor.

Zdroj: www.w3schools.com

×Odeslání článku na tvůj Kindle

Zadej svůj Kindle e-mail a my ti pošleme článek na tvůj Kindle.
Musíš mít povolený příjem obsahu do svého Kindle z naší e-mailové adresy kindle@programujte.com.

E-mailová adresa (např. novak@kindle.com):

TIP: Pokud chceš dostávat naše články každé ráno do svého Kindle, koukni do sekce Články do Kindle.

Hlasování bylo ukončeno    
0 hlasů
Google
Autor se zabývá webovými programovacími jazyky a Assemblerem. Rád pracuje v Příkazovém řádku a experimentuje s operačními systémy.
Web    

Nové články

Obrázek ke článku Stavebnice umělé inteligence 1

Stavebnice umělé inteligence 1

Článek popisuje první část stavebnice umělé inteligence. Obsahuje lineární a plošnou optimalizaci.  Demo verzi je možné použít pro výuku i zájmovou činnost. Profesionální verze je určena pro vývojáře, kteří chtějí integrovat popsané moduly do svých systémů.

Obrázek ke článku Hybridní inteligentní systémy 2

Hybridní inteligentní systémy 2

V technické praxi využíváme často kombinaci různých disciplín umělé inteligence a klasických výpočtů. Takovým systémům říkáme hybridní systémy. V tomto článku se zmíním o určitém typu hybridního systému, který je užitečný ve velmi složitých výrobních procesech.

Obrázek ke článku Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Jak vést kvalitně tým v IT oboru: Naprogramujte si ty správné manažerské kvality

Vedení týmu v oboru informačních technologií se nijak zvlášť neliší od jiných oborů. Přesto však IT manažeři čelí výzvě v podobě velmi rychlého rozvoje a tím i rostoucími nároky na své lidi. Udržet pozornost, motivaci a efektivitu týmu vyžaduje opravdu pevné manažerské základy a zároveň otevřenost a flexibilitu pro stále nové výzvy.

Obrázek ke článku Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Síla týmů se na home office může vytrácet. Odborníci radí, jak z pracovních omezení vytěžit maximum

Za poslední rok se podoba práce zaměstnanců změnila k nepoznání. Především plošné zavedení home office, které mělo být zpočátku jen dočasným opatřením, je pro mnohé už více než rok každodenní realitou. Co ale dělat, když se při práci z domova ztrácí motivace, zaměstnanci přestávají komunikovat a dříve fungující tým se rozpadá na skupinu solitérů? Odborníci na personalistiku dali dohromady několik rad, jak udržet tým v chodu, i když pracovní podmínky nejsou ideální.

Hostujeme u Českého hostingu       ISSN 1801-1586       ⇡ Nahoru Webtea.cz logo © 20032024 Programujte.com
Zasadilo a pěstuje Webtea.cz, šéfredaktor Lukáš Churý