Programovanie

XML pre úplného začiatočníka

HTML a World Wide Web sú všade. Ako príklad ich všadeprítomnosti sa tento rok chystám na Veľkú noc do Strednej Ameriky, a ak budem chcieť, budem môcť surfovať po webe, čítať svoje e-maily a dokonca robiť online bankovníctvo z internetových kaviarní v Antigua Guatemala a Belize City. (Nemám to však v úmysle, pretože by to trvalo dlhšie, než by som randil s palmou a kokosom naplneným rumom.)

Napriek tomu je všadeprítomnosť a popularita HTML značne obmedzená v tom, čo dokáže. Na šírenie neformálnych dokumentov je to v poriadku, ale HTML sa teraz používa na vykonávanie vecí, pre ktoré nikdy nebol navrhnutý. Pokúsiť sa navrhnúť náročné, flexibilné a interoperabilné dátové systémy z HTML je ako skúsiť postaviť lietadlovú loď s pílkami na kov a spájkovačkami: nástroje (HTML a HTTP) jednoducho nestačia.

Dobrou správou je, že mnohé z obmedzení HTML boli prekonané v XML, Extensible Markup Language. XML je ľahko pochopiteľný pre každého, kto rozumie HTML, ale je oveľa výkonnejší. Viac než len značkovací jazyk, XML je metajazyk - jazyk používaný na definovanie nových značkovacích jazykov. Pomocou XML môžete vytvoriť jazyk vytvorený špeciálne pre vašu aplikáciu alebo doménu.

XML skôr doplní, ako nahradí HTML. Zatiaľ čo HTML sa používa na formátovanie a zobrazovanie údajov, XML predstavuje kontextový význam údajov.

Tento článok predstaví históriu značkovacích jazykov a informácie o tom, ako k XML došlo. Pozrime sa na vzorové údaje v HTML a postupne sa presunieme do XML, čím ukážeme, prečo poskytuje vynikajúci spôsob reprezentácie údajov. Preskúmame dôvody, ktoré budete pravdepodobne potrebovať pri vymýšľaní vlastného značkovacieho jazyka, a naučím vás, ako na to. Preberieme si základné informácie o XML notácii a o tom, ako zobraziť XML v dvoch rôznych druhoch štýlových jazykov. Potom sa ponoríme do modelu Object Object Model, účinného nástroja na manipuláciu s dokumentmi ako s objektmi (alebo so štruktúrami objektov ako dokumentmi, v závislosti od toho, ako sa na to pozeráte). Prejdeme si, ako písať programy Java, ktoré extrahujú informácie z dokumentov XML, s ukazovateľom na bezplatný program užitočný na experimentovanie s týmito novými konceptmi. Na záver sa pozrieme na internetovú spoločnosť, ktorá zakladá svoju základnú technologickú stratégiu na XML a Jave.

Je XML pre vás?

Aj keď je tento článok určený pre všetkých, ktorí sa zaujímajú o XML, má k nemu osobitný vzťah JavaWorld série na XML JavaBeans. (Odkazy na súvisiace články nájdete v Zdrojoch.) Ak ste čítali túto sériu a celkom „ju nedostávate“, tento článok by mal objasniť, ako používať XML s fazuľami. Ak ty Po jeho získaní tento článok slúži ako dokonalý doplnok k sérii XML JavaBeans, pretože pokrýva témy, ktoré tam nie sú dotknuté. A pokiaľ ste jedným z mála šťastlivcov, ktorí majú ešte články XML JavaBeans, na ktoré sa môžete tešiť, odporúčam prečítať si najskôr tento článok ako úvodný materiál.

Poznámka o Jave

V počítačovom svete existuje toľko nedávnych aktivít vo formáte XML, že dokonca aj článok tejto dĺžky dokáže iba kĺzať po povrchu. Cieľom tohto článku je poskytnúť vám kontext, ktorý potrebujete na použitie XML vo svojich návrhoch programov Java. Tento článok sa venuje aj tomu, ako funguje XML s existujúcou webovou technológiou, pretože veľa programátorov Java pracuje v takomto prostredí.

XML otvára programovanie na internete a v jazyku Java prenosným funkciám, ktoré nie sú v prehliadači. XML oslobodzuje internetový obsah z prehľadávača rovnakým spôsobom, akým Java oslobodzuje správanie programu od platformy. Vďaka XML je internetový obsah dostupný pre skutočné aplikácie.

Java je vynikajúca platforma na používanie XML a XML je vynikajúca reprezentácia údajov pre aplikácie Java. Postupne poukážem na niektoré silné stránky Javy s XML.

Začnime lekciou histórie.

Počiatky značkovacích jazykov

HTML, ktoré všetci poznáme a milujeme (teda aj tak vieme), pôvodne navrhol Tim Berners-Lee v CERNe (le Conseil Européen pour la Recherche Nucléaire, alebo Európske laboratórium pre časticovú fyziku) v Ženeve, aby umožnili fyzikálnym nerdom (a dokonca aj nerdom) vzájomnú komunikáciu. HTML bol vydaný v decembri 1990 v CERN-e a pre nás ostatných sa stal verejne dostupným v lete 1991. CERN a Berners-Lee rozdali špecifikácie pre HTML, HTTP a URL v starej peknej tradícii zdieľania a užívania si internetu.

Berners-Lee definoval HTML v SGML, štandardnom zovšeobecnenom značkovacom jazyku. SGML, podobne ako XML, je metajazyk - jazyk používaný na definovanie iných jazykov. Každý takto definovaný jazyk sa nazýva žiadosť SGML. HTML je aplikácia SGML.

SGML vyplynul z výskumu uskutočňovaného predovšetkým v IBM na reprezentáciu textových dokumentov na konci 60. rokov. IBM vytvorila GML („General Markup Language“), predchodcovský jazyk pre SGML, a v roku 1978 Americký národný štandardný inštitút (ANSI) vytvoril svoju prvú verziu SGML. Prvý štandard bol vydaný v roku 1983, návrh normy bol vydaný v roku 1985 a prvý štandard bol publikovaný v roku 1986. Je zaujímavé, že prvý štandard SGML bol publikovaný pomocou systému SGML vyvinutého Andersom Berglundom z CERN-u, organizácie, ktorá ako videli sme, dali nám HTML a web.

SGML je široko používaný vo veľkých priemyselných odvetviach a vládach, ako napríklad vo veľkých leteckých, automobilových a telekomunikačných spoločnostiach. SGML sa používa ako dokumentový štandard na ministerstve obrany USA a na Internal Revenue Service. (Pre čitateľov mimo USA sú daňoví poplatníci IRS.)

Albert Einstein uviedol, že všetko by malo byť urobené čo najjednoduchšie, a nie jednoduchšie. Dôvod, prečo sa SGML nenachádza na viacerých miestach, je ten, že je mimoriadne prepracovaný a zložitý. A HTML, ktoré nájdete všade, je veľmi jednoduché; pre veľa aplikácií je to príliš jednoduché.

HTML: Celá forma a žiadna podstata

HTML je jazyk navrhnutý tak, aby „hovoril“ o dokumentoch: nadpisoch, názvoch, titulkoch, písmach, atď. Je silne zameraný na štruktúru dokumentu a prezentáciu.

Je pravda, že umelci a hackeri dokázali zázraky pomocou pomerne nudného nástroja s názvom HTML. Ale HTML má vážne nevýhody, ktoré ho zle umožňujú navrhovať flexibilné, výkonné a evolučné informačné systémy. Tu uvádzame niekoľko hlavných sťažností:

  • HTML nie je rozšíriteľný

    Rozšíriteľný značkovací jazyk by vývojárom aplikácií umožnil definovať vlastné značky pre situácie špecifické pre aplikáciu. Pokiaľ nie ste gorila 600 libier (a možno ani vtedy), nemôžete vyžadovať od všetkých výrobcov prehľadávačov, aby implementovali všetky značkovacie značky potrebné pre vašu aplikáciu. Takže ste uviazli na tom, čo vám umožnia veľkí tvorcovia prehľadávačov, alebo W3C (World Wide Web Consortium). Potrebujeme jazyk, ktorý nám umožní vytvoriť si vlastné značkovacie značky bez toho, aby sme museli volať výrobcu prehliadača.

  • HTML je veľmi zamerané na displej

    HTML je vynikajúci jazyk na účely zobrazenia, pokiaľ nevyžadujete veľa presného riadenia formátovania alebo transformácie (v takom prípade to páchne). HTML predstavuje zmes logickej štruktúry dokumentu (nadpisy, odseky a podobne) s prezentačnými značkami (tučné písmo, zarovnanie obrázka atď.). Pretože takmer všetky značky HTML súvisia s tým, ako zobraziť informácie v prehľadávači, je HTML pre ďalšie bežné sieťové aplikácie, ako je replikácia údajov alebo aplikačné služby, zbytočné. Potrebujeme spôsob, ako zjednotiť tieto bežné funkcie s displejom, aby rovnaký server, ktorý sa používa na prehľadávanie údajov, mohol napríklad tiež vykonávať podnikové obchodné funkcie a spolupracovať so staršími systémami.

  • HTML nie je zvyčajne priamo opakovane použiteľný

    Vytváranie dokumentov v textových procesoroch a ich následná exportácia vo formáte HTML je do istej miery automatizovaná, vyžaduje si však prinajmenšom určité doladenie výstupu, aby sa dosiahli prijateľné výsledky. Ak sa zmenia údaje, z ktorých bol dokument vyprodukovaný, je potrebné zopakovať celý preklad HTML. Webové stránky, ktoré zobrazujú aktuálne počasie po celom svete nepretržite, zvyčajne pracujú s týmto automatickým preformátovaním veľmi dobre. Obsah a štýl prezentácie dokumentu sú oddelené, pretože návrhári systému chápu, že sa ich obsah (teploty, predpovede atď.) Mení neustále. Potrebujeme spôsob, ako špecifikovať prezentáciu údajov z hľadiska štruktúry, aby bolo možné pri aktualizácii údajov konzistentne a ľahko „znova použiť“ formátovanie.

  • HTML poskytuje iba jedno „zobrazenie“ údajov

    Je ťažké napísať HTML, ktoré zobrazuje rovnaké údaje rôznymi spôsobmi na základe požiadaviek používateľov. Dynamické HTML je začiatok, vyžaduje však obrovské množstvo skriptovania a nie je všeobecným riešením tohto problému. (Dynamickému HTML sa podrobnejšie venujeme nižšie.) Potrebujeme spôsob, ako naraz získať všetky informácie, ktoré by sme mohli chcieť prehliadať, a pozrieť sa na nich rôznymi spôsobmi na klientovi.

  • HTML má malú alebo žiadnu sémantickú štruktúru

    Väčšina webových aplikácií by profitovala zo schopnosti reprezentovať údaje skôr zmyslom ako rozložením. Napríklad môže byť veľmi ťažké nájsť na internete to, čo hľadáte, pretože v údajoch v súboroch HTML nie je žiadny údaj o význame údajov (okrem značiek META, ktoré sú zvyčajne zavádzajúce). Typ

    červená

    do vyhľadávača a získate odkazy na Red Skeltona, červeného sleďa, červeného chňapala, červené strašenie, Red Letter Day a pravdepodobne aj stránku alebo dve knihy „Books I Red“. HTML nemá žiadny spôsob, ako určiť, čo konkrétna položka stránky znamená. Užitočnejší značkovací jazyk by predstavoval informácie z hľadiska ich významu. Potrebujeme jazyk, ktorý nám hovorí, ako nie

    displej

    informácie, ale skôr to, čo daný blok informácií

    je

    aby sme vedeli, čo s tým.

SGML nemá žiadnu z týchto slabostí, ale aby som bol všeobecný, je to vlasy trhajúce komplex (aspoň v jeho úplnej podobe). Jazyk používaný na formátovanie SGML (jeho „štýl jazyka“), nazývaný DSSSL (jazyk sémantiky a špecifikácie štýlov dokumentov), ​​je mimoriadne výkonný, ale ťažko použiteľný. Ako dosiahneme jazyk, ktorý sa zhruba rovnako ľahko používa ako HTML, ale má väčšinu možností SGML?

Počiatky XML

Keď popularita webu prudko vzrástla a ľudia na celom svete sa začali učiť o HTML, pomerne rýchlo začali narážať na obmedzenia uvedené vyššie. Heavy-metal SGML winks, ktorí s SGML roky pracovali v relatívnom temnote, zrazu zistili, že svetskí ľudia trochu rozumeli konceptu označovania (teda HTML). Odborníci na SGML začali uvažovať o možnosti priameho použitia SGML na webe namiesto toho, aby používali iba jednu jeho aplikáciu (opäť HTML). Zároveň vedeli, že SGML, hoci je silný, je pre väčšinu ľudí jednoducho príliš zložitý.

V lete 1996 presvedčil Jon Bosak (v súčasnosti online architekt informačných technológií v spoločnosti Sun Microsystems) W3C, aby ho nechal vytvoriť výbor pre používanie SGML na webe. Vytvoril vysoko výkonný tím muckletiek zo sveta SGML. Do novembra toho roku títo ľudia vytvorili počiatky zjednodušenej formy SGML, ktorá obsahovala osvedčené funkcie SGML, ale so zníženou zložitosťou. Toto bol a je XML.

V marci 1997 vydal Bosak svoj medzník „XML, Java a budúcnosť webu“ (pozri Zdroje). Aj o dva roky neskôr (veľmi dlhá doba v živote webu) je Bosakov krátky príspevok stále dobrý, ak je datovaný, úvod, prečo je použitie XML, taký vynikajúci nápad.

SGML bol vytvorený pre všeobecné štruktúrovanie dokumentov a HTML bol vytvorený ako aplikácia SGML pre webové dokumenty. XML je zjednodušenie SGML pre všeobecné použitie na webe.

Konceptuálny príklad XML

Celá táto reč o „vymýšľaní vlastných značiek“ je dosť hmlistá: Aké značky by chcel vývojár vymyslieť a ako by sa dal použiť výsledný XML? V tejto časti si ukážeme príklad, ktorý porovnáva a kontrastuje zastúpenie informácií v HTML a XML. V ďalšej časti („XSL: Páči sa mi váš štýl“) prejdeme k zobrazeniu XML.

Najskôr si vezmeme príklad receptu a zobrazíme ho ako jeden možný dokument HTML. Potom zopakujeme príklad v XML a prediskutujeme, čo nás to kúpi.

Príklad HTML

Zoznámte sa s malou časťou kódu HTML v zozname 1:

   Prekvapenie tvarohového syra Lime Jello Marshmallow 

Prekvapenie tvarohového syra Lime Jello Marshmallow

Obľúbená moja babka (nech odpočíva v pokoji).

Zloženie

MnožstvoJednotkyPoložka
1boxvápenná želatína
500gviacfarebné malé marshmallows
500mltvaroh
pomlčkaOmáčka tabasco (voliteľné)

Inštrukcie

  1. Pripravte si vápennú želatínu podľa návodu na balenie ...

Zoznam 1. Niektoré HTML

(Verziu tohto záznamu, ktorú je možné vytlačiť, nájdete na stránke example.html.)

Pri pohľade na HTML kód v zozname 1 je asi každému jasné, že toto je recept na niečo (niečo hrozné, ale napriek tomu recept). V prehliadači naše HTML vytvára niečo také:

Prekvapenie tvarohového syra Lime Jello Marshmallow

Obľúbená moja babka (nech odpočíva v pokoji).

Zloženie

MnožstvoJednotkyPoložka
1boxvápenná želatína
500gviacfarebné malé marshmallows
500mlTvaroh
 pomlčkaOmáčka tabasco (voliteľné)

Inštrukcie

  1. Pripravte si vápennú želatínu podľa návodu na balenie ...

Zoznam 2. Ako vyzerá HTML v zozname 1 v prehliadači

Reprezentácia tohto receptu v HTML má teraz niekoľko výhod:

  • Je to dosť dobre čitateľné. Značka môže byť trochu tajomná, ale ak je správne rozmiestnená, dá sa ľahko sledovať.

  • HTML je možné zobraziť v takmer akomkoľvek prehliadači HTML, dokonca aj v takom, ktorý nemá grafické možnosti. To je dôležitý bod: Displej nezávisí od prehliadača. Keby tam bola fotografia výsledkov prípravy tohto receptu (a jeden by určite dúfal, že nebude), zobrazila by sa v grafickom prehliadači, ale nie v textovom.

  • Pre všeobecnú kontrolu nad formátovaním by ste mohli použiť kaskádový štýl (CSS - o tých si ešte povieme nižšie).

Existuje však jeden zásadný problém s formátom údajov HTML. The význam sa stratia rôzne časti údajov v dokumente. Je skutočne ťažké prevziať všeobecné HTML a zistiť, čo znamenajú údaje v HTML. Skutočnosť, že existuje tohto receptu s a (množstvo) 500 ml () z tvaroh by bolo ťažké z tohto dokumentu vyťažiť spôsobom, ktorý je všeobecne zmysluplný.

Teraz myšlienka dát v dokumente HTML niečo znamená môže byť trochu ťažké pochopiť. Webové stránky sú pre ľudského čitateľa v poriadku, ale ak má program spracovávať dokument, vyžaduje si jednoznačné definície toho, čo značky znamenajú. Napríklad značka v dokumente HTML uzatvára nadpis dokumentu. To znamená značka a neznamená to nič iné. Podobne HTML značka znamená „riadok tabuľky“, ale to má malý význam, ak sa váš program pokúša čítať recepty, aby napríklad mohol vytvoriť nákupný zoznam. Ako môže program nájsť zoznam prísad z webovej stránky vo formáte HTML?

Iste, môžete napísať program, ktorý stiahne hlavičky z dokumentu, prečíta hlavičky stĺpcov tabuľky, zistí množstvá a jednotky každej zložky atď. Problém je v tom, že každý formátuje recepty inak. Čo ak sa tieto informácie snažíte získať napríklad z webu Julia Childsovej a ona sa stále trápi s formátovaním? Ak Julia zmení poradie stĺpcov alebo prestane používať tabuľky, rozbije váš program! (Aj keď je potrebné povedať: Ak Julia začne vydávať takéto recepty, možno bude chcieť uvažovať o zmene kariéry.)

Teraz si predstavte, že táto stránka s receptami pochádzala z údajov v databáze a vy by ste chceli mať možnosť tieto údaje odosielať. Možno by ste ho chceli pridať do svojej obrovskej databázy receptov doma, kde ho môžete vyhľadávať a používať, ako sa vám páči. Váš vstup je bohužiaľ HTML, takže budete potrebovať program, ktorý dokáže tento HTML prečítať, zistiť, čo sú všetky položky „Ingredience“, „Pokyny“, „Jednotky“ atď., A potom ich importovať do svojej databázy. To je veľa práce. Najmä preto, že všetky tieto sémantické informácie - opäť význam údajov - existovali v pôvodnej databáze, ale v procese transformácie do formátu HTML boli zakryté.

Teraz si predstavte, že by ste mohli navrhnúť svoj vlastný jazyk na opis receptov. Namiesto toho, ako by ste mali zobraziť recept, by ste opísali aj informačná štruktúra v recepte: ako by jednotlivé informácie súviseli s ostatnými.

Príklad XML

Vytvorme značkovací jazyk na opis receptov a prepíšme náš recept v tomto jazyku, ako je to v zozname 3.

  Vápno Jello Marshmallow Cottage Cheese Surprise Prekvapenie mojej babičky (nech odpočíva v pokoji). 1 limetková želatína 500 rôznofarebných drobných marshmallows 500 tvaroh omáčka tabasco omáčka Pripravte limetkovú želatínu podľa pokynov na obale 

Zoznam 3. Vlastný značkovací jazyk pre recepty

Bude to pre vás malé prekvapenie, keďže ste šikovným čitateľom, že tento recept v novom formáte je vlastne dokumentom XML. Možno skutočnosť, že súbor začínal nepárnou hlavičkou

dal to preč; v skutočnosti by každý súbor XML mal začínať touto hlavičkou. Jednoducho sme vymysleli značkovacie značky, ktoré majú konkrétny význam; napríklad „An je a (množstvo v určených jednotkách) jednotlivca , čo je príp voliteľné"Náš dokument XML popisuje informácie v recepte z hľadiska recepty, namiesto z hľadiska ako displej recept (ako v HTML). Sémantika alebo význam informácií sa zachováva v XML, pretože na to bola navrhnutá sada značiek.

Poznámky k notácii

Je dôležité urobiť si istú nomenklatúru rovno. Na obrázku 1 vidíte a začiatočná značka, ktorá začína uzavretou oblasťou textu známou ako Položka, podľa názov značky. Rovnako ako v HTML môžu tagy XML obsahovať zoznam atribúty (pozostávajúci z názov atribútu a an hodnota atribútu.) The Položka definované značkou končí znakom koncová značka.

Nie každá značka obsahuje text. V jazyku HTML sa

značka znamená „koniec riadku“ a neobsahuje žiadny text. V XML nie sú takéto prvky povolené. Namiesto toho má XML prázdne značky, označené lomkou pred poslednou pravouhlou zátvorkou v značke. Obrázok 2 zobrazuje prázdnu značku z nášho receptu XML. Upozorňujeme, že prázdne značky môžu mať atribúty. Tento príklad prázdnej značky je štandardný skratka XML pre .

Okrem týchto značných rozdielov od HTML sú štrukturálne pravidlá XML prísnejšie. Každý dokument XML musí byť dobre formovaný. Čo to znamená? Pokračuj v čítaní!

Ooh-la-la! Dobre tvarovaný XML

Koncept dobre tvarovanej formy pochádza z matematiky: Je možné písať matematické výrazy, ktoré nič neznamenajú.Napríklad výraz

2 ( + + 5 (=) 9 > 7

vyzerá (trochu) ako matematika, ale nie je to matematika, pretože nedodržiava notačné a štrukturálne pravidlá matematického vyjadrenia (aspoň na tejto planéte). Inými slovami, vyššie uvedený výraz nie je dobre formovaný. Matematické výrazy musia byť správne tvarované, aby ste s nimi mohli urobiť čokoľvek užitočné, pretože výrazy, ktoré nie sú správne tvarované, sú nezmyselné.

Dobre zostavený dokument XML je jednoducho dokument, ktorý dodržiava všetky notačné a štrukturálne pravidlá pre XML. Programy, ktoré majú v úmysle spracovať XML, by mali odmietnuť všetky vstupné XML, ktoré nedodržiavajú pravidlá dobrej formy. Najdôležitejšie z týchto pravidiel sú tieto:

  • Žiadne neuzavreté značky

    V HTML sa dá dostať zo všetkých druhov nezvyklých vecí. Napríklad vo väčšine prehliadačov HTML môžete „otvoriť“ položku zoznamu pomocou

  • a nikdy to „nezatvárajte“ pomocou . Prehliadač iba zisťuje, kde by bol a automaticky ho vloží za vás. XML neumožňuje tento druh nedbanlivosti. Každá začiatočná značka musí mať zodpovedajúcu koncovú značku. Je to tak preto, lebo časť informácií v súbore XML súvisí s tým, ako navzájom súvisia rôzne prvky informácií, a ak je štruktúra nejednoznačná, tak aj tieto informácie. XML teda jednoducho neumožňuje nejasnú štruktúru. Táto nejednoznačná štruktúra umožňuje tiež spracovanie dokumentov XML ako dátových štruktúr (stromov), ako to v krátkosti vysvetlím v diskusii o modeli objektu dokumentu.

  • Žiadne prekrývajúce sa značky

    Značka, ktorá sa otvára vo vnútri inej značky, sa musí pred zatvorením obsahujúcej značky zavrieť. Napríklad postupnosť

    Odvolajme to celé

    nie je dobre sformovaný, pretože sa otvára vo vnútri ale nezatvára sa vo vnútri . Správna postupnosť musí byť

    Odvolajme to celé

    Inými slovami, štruktúra dokumentu musí byť striktne hierarchická.

  • Hodnoty atribútov musia byť uvedené v úvodzovkách

    Na rozdiel od HTML, XML neumožňuje „nahé“ hodnoty atribútov (t. J. Značky HTML ako

    , kde okolo hodnoty atribútu nie sú úvodzovky). Každá hodnota atribútu musí mať úvodzovky (
    ).

  • Znaky textu () a (") musia byť vždy predstavované 'znakovými entitami'

    Ak chcete tieto tri znaky (zátvorka v ľavom uhle, zátvorka v pravom uhle a dvojité úvodzovky) reprezentovať v textovej časti XML (nie v značke), musíte použiť entity špeciálneho znaku (

    <

    ), (

    >

    ) a (

    "

    ), v uvedenom poradí. Tieto znaky sú špeciálne znaky pre XML. Súbor XML používajúci povedzme znak dvojitej úvodzovky v texte uzavretom v značkách v súbore XML nie je dobre tvarovaný a správne navrhnuté analyzátory XML spôsobia pri takomto zadaní chybu.

„Dobre tvarovaný“ znamená „porovnateľný“.

Všeobecný XML parser je program alebo trieda, ktorá dokáže na svojom vstupe prečítať akýkoľvek dobre tvarovaný súbor XML. Mnoho dodávateľov teraz ponúka analyzátory XML v Jave zadarmo; (Odkazy na tieto balíčky nájdete v časti Zdroje v dolnej časti tohto článku). Analyzátory XML rozpoznávajú dobre tvarované dokumenty a vytvárajú chybové správy (podobne ako kompilátor), keď dostanú vstup, ktorý nie je správne tvarovaný. Ako uvidíme, táto funkcia je pre programátora veľmi užitočná: Stačí zavolať analyzátor, ktorý ste vybrali, a ten sa postará o detekciu chýb atď. Zatiaľ čo všetky analyzátory XML kontrolujú správne formovanie dokumentov (čo znamená, ako sme videli, že všetky značky majú zmysel, sú správne vnorené atď.), potvrdzuje sa Analyzátory XML idú o krok ďalej. Validujúce analyzátory tiež potvrdzujú, či ide o dokument platný; to znamená, že štruktúra a počet značiek majú zmysel.

Napríklad väčšina prehľadávačov zobrazí dokument, ktorý (nezmyselne) obsahuje dva prvky, ale ako to môže byť? Iba jeden alebo žiadny názov nemá zmysel.

Pre ďalší príklad si predstavte, že v zozname 3 vyzerala zložka „tvaroh“ takto:

  500 9 Tvaroh 

Tento dokument XML je určite dobre formovaný, ale nemá to zmysel. Nie je štrukturálne platný. Je to nezmysel pre a obsahovať <Množstvo>. Čo je z toho ?

Problém je v tom, že máme dokument, ktorý je dobre tvarovaný, ale nie je to veľmi užitočné, pretože XML nedáva zmysel. Potrebujeme spôsob, ako určiť, čo robí dokument XML platným. Napríklad, ako môžeme určiť, že a značka môže obsahovať iba text (a nie iné prvky) a hlásiť ako chyby akýkoľvek iný prípad?

Odpoveď na túto otázku spočíva v niečom, čo sa nazýva definícia typu dokumentu, na ktoré sa pozrieme ďalej.

$config[zx-auto] not found$config[zx-overlay] not found