Programiranje

XML za absolutnega začetnika

HTML in svetovni splet sta povsod. Kot primer njihove vseprisotnosti grem letos za veliko noč v Srednjo Ameriko in če hočem, bom lahko brskal po spletu, bral e-pošto in celo spletno bančništvo iz internetnih kavarn v Antigva Gvatemala in mesto Belize. (Ne nameravam pa, ker bi mi to vzelo čas od datuma, ki ga imam s palmo in kokosom, polnjenim z rumom.)

Pa vendar je kljub vseprisotnosti in priljubljenosti HTML-ja močno omejen pri svojih zmožnostih. Odlično je za razširjanje neformalnih dokumentov, toda HTML se zdaj uporablja za stvari, za katere ni bil nikoli zasnovan. Poskus oblikovanja težkih, prilagodljivih, interoperabilnih podatkovnih sistemov iz HTML-ja je podoben poskusu izdelave letalonosilke z žagami in spajkalniki: orodja (HTML in HTTP) preprosto niso kos temu.

Dobra novica je, da so številne omejitve HTML premagane v XML, razširljivem označevalnem jeziku. XML je razumljiv vsem, ki razumejo HTML, vendar je veliko zmogljivejši. XML je več kot le označevalni jezik metajezik - jezik, ki se uporablja za določanje novih označevalnih jezikov. Z XML lahko ustvarite jezik, izdelan posebej za vašo aplikacijo ali domeno.

XML bo dopolnil HTML in ga ne nadomestil. Medtem ko se HTML uporablja za oblikovanje in prikaz podatkov, XML predstavlja kontekstualni pomen podatkov.

Ta članek bo predstavil zgodovino označevalnih jezikov in kako je nastal XML. Ogledali si bomo vzorčne podatke v HTML-ju in se postopoma premaknili v XML ter pokazali, zakaj zagotavljajo vrhunski način za predstavitev podatkov. Preučili bomo razloge, zaradi katerih boste morda morali izumiti označevalni jezik po meri, in naučil vas bom, kako to storiti. Zajeli bomo osnove zapisov XML in kako prikazati XML z dvema različnima vrstama slogovnih jezikov. Nato se bomo poglobili v Document Object Model, močno orodje za obdelavo dokumentov kot predmetov (ali manipuliranje z objektnimi strukturami kot dokumenti, odvisno od tega, kako ga gledate). Preučili bomo, kako napisati programe Java, ki izvlečejo informacije iz dokumentov XML, s kazalcem na brezplačen program, uporaben za eksperimentiranje s temi novimi koncepti. Na koncu si bomo ogledali še internetno podjetje, ki svojo osnovno tehnološko strategijo temelji na XML in Javi.

Je XML za vas?

Čeprav je ta članek napisan za vse, ki jih zanima XML, ima poseben odnos do JavaWorld serije o XML JavaBeans. (Glejte Vire za povezave do sorodnih člankov.) Če ste brali to serijo in tega ne razumete, mora ta članek pojasniti, kako uporabljati XML s fižolom. Če ti so ta članek služi kot popoln spremljevalec k seriji XML JavaBeans, saj zajema teme, ki v njih niso dotaknjene. Če ste eden redkih srečnežev, ki še vedno čaka na članke XML JavaBeans, vam priporočam, da ta članek najprej preberete kot uvodno gradivo.

Opomba o Javi

V računalniškem svetu je toliko nedavnih dejavnosti XML, da lahko celo izdelek s tako dolžino le preplavi površino. Kljub temu je bistvo tega članka, da vam poda kontekst, ki ga potrebujete za uporabo XML pri načrtovanju programov Java. Ta članek zajema tudi, kako XML deluje z obstoječo spletno tehnologijo, saj veliko programerjev Java deluje v takem okolju.

XML odpira programsko opremo za internet in Javo za prenosne funkcije brez brskalnikov. XML sprosti internetne vsebine iz brskalnika na približno enak način, kot Java osvobodi vedenja programov s platforme. XML omogoča internetno vsebino na voljo resničnim aplikacijam.

Java je odlična platforma za uporabo XML, XML pa izjemna predstavitev podatkov za programe Java. Med nadaljevanjem bom izpostavil nekaj prednosti Jave pri XML.

Začnimo z lekcijo zgodovine.

Izvor označevalnih jezikov

HTML, ki ga vsi poznamo in ga imamo radi (no, pa vseeno vemo), je prvotno oblikoval Tim Berners-Lee iz CERN-a (le Conseil Européen pour la Recherche Nucléaire, ali Evropski laboratorij za fiziko delcev) v Ženevi, da bo fizičnim fizikom (in celo ne-nerdistom) omogočil medsebojno komunikacijo. HTML je bil izdan decembra 1990 v okviru CERN-a in je bil vsem ostalim javno dostopen poleti 1991. CERN in Berners-Lee sta podarila specifikacije za HTML, HTTP in URL-je, v stari stari tradiciji interneta, daj v skupno rabo in uživaj.

Berners-Lee je definiral HTML v SGML, standardnem splošnem označevalnem jeziku. SGML je tako kot XML metajezik - jezik, ki se uporablja za določanje drugih jezikov. Vsak tako definiran jezik se imenuje aplikacijo SGML. HTML je aplikacija SGML.

SGML je nastal iz raziskav, ki so jih v poznih 60-ih letih zastopali predvsem predstavniki besedilnih dokumentov pri IBM-u. IBM je ustvaril GML ("General Markup Language"), jezik predhodnika SGML, leta 1978 pa je Ameriški nacionalni inštitut za standarde (ANSI) ustvaril svojo prvo različico SGML. Prvi standard je bil izdan leta 1983, osnutek standarda pa 1985, prvi standard pa je bil objavljen leta 1986. Zanimivo je, da je bil prvi standard SGML objavljen s sistemom SGML, ki ga je razvil Anders Berglund iz organizacije CERN, ki kot smo videli, nam dali HTML in splet.

SGML se pogosto uporablja v velikih industrijah in vladah, na primer v velikih letalskih, avtomobilskih in telekomunikacijskih podjetjih. SGML se uporablja kot standard dokumentov pri Ministrstvu za obrambo Združenih držav in Upravi za notranje davke. (Za bralce zunaj ZDA je davčna uprava davčna uprava.)

Albert Einstein je dejal, da je treba vse narediti čim bolj preprosto in nič bolj preprosto. Razlog, da SGML ne najdemo na več mestih, je ta, da je izjemno dovršen in zapleten. In HTML, ki ga najdete povsod, je zelo preprost; za veliko aplikacij je preveč preprosto.

HTML: Vsa oblika in nobena snov

HTML je jezik, namenjen "pogovarjanju" o dokumentih: naslovi, naslovi, napisi, pisave itd. Je močno usmerjen v strukturo dokumentov in predstavitev.

Resda so umetniki in hekerji lahko delali čudeže z razmeroma dolgočasnim orodjem, imenovanim HTML. Toda HTML ima resne pomanjkljivosti, zaradi katerih je slabo primeren za oblikovanje prožnih, zmogljivih, evolucijskih informacijskih sistemov. Tu je nekaj glavnih pritožb:

  • HTML ni razširljiv

    Razširljiv označevalni jezik bi razvijalcem aplikacij omogočil, da določijo oznake po meri za situacije, specifične za aplikacijo. Če niste gorila, ki tehta 600 kilogramov (in morda niti takrat), ne morete zahtevati, da vsi proizvajalci brskalnikov izvajajo vse označevalne oznake, potrebne za vašo aplikacijo. Torej ste zaljubljeni v to, kaj vam bodo omogočili veliki izdelovalci brskalnikov ali W3C (konzorcij za svetovni splet). Potrebujemo jezik, ki nam omogoča, da si sestavimo lastne označevalne oznake, ne da bi morali poklicati proizvajalca brskalnika.

  • HTML je zelo osredotočen na prikaz

    HTML je lep jezik za prikaz, razen če potrebujete veliko natančnega nadzora oblikovanja ali preoblikovanja (v tem primeru je smrdeč). HTML predstavlja mešanico logične strukture dokumenta (naslovi, odstavki in podobno) s predstavitvenimi oznakami (krepko, poravnava slike itd.). Ker so skoraj vse oznake HTML povezane s tem, kako prikazati informacije v brskalniku, je HTML neuporaben za druge običajne omrežne aplikacije, na primer za kopiranje podatkov ali aplikacijske storitve. Potrebujemo način, kako te običajne funkcije poenotiti z zaslonom, tako da lahko isti strežnik, ki se uporablja za brskanje po podatkih, na primer izvaja poslovne funkcije podjetja in deluje s starejšimi sistemi.

  • HTML običajno ni mogoče ponovno uporabiti

    Ustvarjanje dokumentov v urejevalnikih besedil in nato njihov izvoz v obliki HTML je sicer nekoliko avtomatizirano, vendar vseeno zahteva vsaj nekaj prilagajanja izhoda, da dosežemo sprejemljive rezultate. Če se spremenijo podatki, iz katerih je bil dokument izdelan, je treba spremeniti celoten prevod HTML. Spletna mesta, ki prikazujejo trenutno vreme po vsem svetu, okrog ure, ponavadi zelo dobro obvladajo to samodejno preoblikovanje. Vsebina in slog predstavitve dokumenta sta ločena, ker sistemski oblikovalci razumejo, da se njihova vsebina (temperature, napovedi itd.) Spreminja nenehno. Kar potrebujemo, je način, kako predstaviti podatke glede na strukturo, tako da je mogoče ob posodobitvi podatkov dosledno in enostavno oblikovanje "ponovno uporabiti".

  • HTML ponuja samo en "pogled" podatkov

    Težko je napisati HTML, ki prikazuje iste podatke na različne načine glede na uporabniške zahteve. Dinamični HTML je začetek, vendar zahteva ogromno skript in ni splošna rešitev te težave. (Dinamični HTML je podrobneje obravnavan spodaj.) Potrebujemo način, kako naenkrat pridobiti vse informacije, ki jih morda želimo brskati, in si jih na različne načine ogledati na odjemalcu.

  • HTML ima malo ali nič semantične strukture

    Večina spletnih aplikacij bi imela koristi od predstavitve podatkov po pomenu in ne po postavitvi. Na primer, v internetu je lahko zelo težko najti tisto, kar iščete, ker v datotekah HTML ni nobenega znaka pomena podatkov (poleg oznak META, ki so običajno zavajajoče). Tip

    rdeča

    v iskalnik in dobili boste povezave do Red Skeltona, rdečega sleda, rdečega snapperja, rdečega strašila, Red Letter Day in verjetno stran ali dve knjige "Books I Red". HTML ne more določiti, kaj določena postavka strani pomeni. Uporabnejši označevalni jezik bi predstavljal informacije glede na njihov pomen. Potrebujemo jezik, ki nam ne pove, kako naj

    zaslon

    informacije, ampak kakšen dani blok informacij

    je

    tako da vemo, kaj storiti s tem.

SGML nima nobene od teh pomanjkljivosti, vendar je splošen, da je zelo zapleten (vsaj v popolni obliki). Jezik, ki se uporablja za formatiranje SGML (njegov "slog jezik"), imenovan DSSSL (semantika dokumentov in jezik specifikacij), je izjemno zmogljiv, a težko uporabljiv. Kako naj dobimo jezik, ki je približno tako enostaven za uporabo kot HTML, vendar ima večino moči SGML?

Izvor XML

Ko je splet eksplodiral v priljubljenosti in so se ljudje po vsem svetu začeli učiti o HTML-ju, so dokaj hitro začeli naleteti na zgoraj opisane omejitve. Namigi težkih kovin SGML, ki so že leta delali z SGML v relativni nejasnosti, so nenadoma ugotovili, da vsakdanji ljudje nekaj razumejo koncept označevanja (to je HTML). Strokovnjaki SGML so začeli razmišljati o možnosti neposredne uporabe SGML v spletu, namesto da bi uporabili samo eno aplikacijo (spet HTML). Hkrati so vedeli, da je SGML, čeprav je močan, preprosto preveč zapleten, da bi ga večina ljudi lahko uporabljala.

Poleti 1996 je Jon Bosak (trenutno spletni arhitekt informacijske tehnologije pri Sun Microsystems) prepričal W3C, da mu je omogočil, da ustanovi odbor za uporabo SGML na spletu. Ustvaril je močno ekipo nagajivih mukov iz sveta SGML. Do novembra istega leta so ti ljudje ustvarili začetke poenostavljene oblike SGML, ki je vseboval preizkušene lastnosti SGML, vendar z manjšo zapletenostjo. To je bil in je XML.

Marca 1997 je Bosak izdal svoj mejnik "XML, Java in prihodnost spleta" (glej Vire). Zdaj, dve leti kasneje (zelo dolgo v življenju spleta), je Bosakov kratek članek še vedno dober uvod v uvod, zakaj je uporaba XML tako dobra ideja.

SGML je bil ustvarjen za splošno strukturiranje dokumentov, HTML pa kot aplikacija SGML za spletne dokumente. XML je poenostavitev SGML za splošno uporabo v spletu.

Konceptualni primer XML

Ves ta govor o "izumljanju lastnih oznak" je precej meglen: kakšne oznake bi si razvijalci želeli izmisliti in kako bi uporabili nastali XML? V tem poglavju bomo preučili primer, ki primerja in nasprotuje predstavitvi informacij v HTML in XML. V naslednjem razdelku ("XSL: Všeč mi je tvoj slog") bomo pregledali prikaz XML.

Najprej bomo vzeli primer recepta in ga prikazali kot enega od možnih dokumentov HTML. Nato bomo ponovili primer v XML in razpravljali o tem, kaj nas to kupi.

Primer HTML

Oglejte si majhen del HTML-ja v seznamu 1:

   Lime Jello Marshmallow presenečenje iz skute 

Lime Jello Marshmallow presenečenje iz skute

Najljubša moja babica (naj počiva v miru).

Sestavine

KoličinaEnotePostavka
1škatlaapnena želatina
500graznobarvni drobni marshmallowi
500mlskuta
pomišljajTabasco omaka (neobvezno)

Navodila

  1. Pripravite apneno želatino v skladu z navodili za pakiranje ...

Seznam 1. Nekaj ​​HTML-ja

(Različico tega seznama za tiskanje najdete na example.html.)

Če pogledamo kodo HTML v seznamu 1, je verjetno skoraj vsakomur jasno, da gre za recept za nekaj (nekaj groznega, a vseeno recept). V brskalniku naš HTML ustvari nekaj takega:

Lime Jello Marshmallow presenečenje iz skute

Najljubša moja babica (naj počiva v miru).

Sestavine

KoličinaEnotePostavka
1škatlaapnena želatina
500graznobarvni drobni marshmallowi
500mlSkuta
 pomišljajTabasco omaka (neobvezno)

Navodila

  1. Pripravite apneno želatino v skladu z navodili za pakiranje ...

Seznam 2. Kako izgleda HTML v seznamu 1 v brskalniku

Predstavljanje tega recepta v HTML-ju ima številne prednosti, kot sledi:

  • Je dokaj berljivo. Oznaka je sicer lahko nekoliko skrivnostna, a če je pravilno postavljena, ji je dokaj enostavno slediti.

  • HTML lahko prikaže skoraj vsak brskalnik HTML, tudi tisti brez grafične zmogljivosti. To je pomembno: zaslon je neodvisen od brskalnika. Če bi bila fotografija rezultatov priprave tega recepta (in človek vsekakor upa, da ni), bi se prikazala v grafičnem brskalniku, ne pa tudi v besedilnem brskalniku.

  • Za splošen nadzor nad formatiranjem lahko uporabite kaskadni slog (CSS - o teh bomo govorili spodaj).

Vendar pa obstaja ena glavnih težav s HTML kot podatkovno obliko. The pomen podatkov v dokumentu izgubljeno. Resnično je težko vzeti splošni HTML in ugotoviti, kaj pomenijo podatki v HTML-ju. Dejstvo, da obstaja tega recepta z a (količina) 500 ml () od skuto bi bilo zelo težko izvleči iz tega dokumenta na način, ki je na splošno smiseln.

Zdaj ideja o podatkih v dokumentu HTML nekaj pomeni morda nekoliko težko dojeti. Spletne strani so sicer primerne za bralca, če pa bo program obdelal dokument, zahteva nedvoumne opredelitve pomena oznak. Na primer tag v dokumentu HTML zajema naslov dokumenta. To pomeni oznaka in ne pomeni nič drugega. Podobno tudi HTML tag pomeni »vrstica tabele«, vendar je to malo koristno, če vaš program poskuša brati recepte, da bi recimo ustvaril nakupovalni seznam. Kako lahko program najde seznam sestavin s spletne strani, oblikovane v HTML?

Seveda lahko napišete program, ki zajema glave iz dokumenta, bere glave stolpcev tabele, ugotavlja količine in enote posamezne sestavine itd. Težava je v tem, da vsi recepte oblikujejo drugače. Kaj če poskušate dobiti te podatke, recimo s spletnega mesta Julia Childs, in se še naprej zafrkava s formatiranjem? Če Julia spremeni vrstni red stolpcev ali neha uporabljati tabele, bo prekinila vaš program! (Čeprav je treba reči: Če Julia začne objavljati takšne recepte, bo morda želela razmisliti o zamenjavi kariere.)

Zdaj pa si predstavljajte, da je ta stran z recepti prišla iz podatkov v zbirki podatkov in bi želeli, da bi lahko te podatke pošiljali naokoli. Morda bi ga radi dodali v svojo ogromno bazo receptov doma, kjer lahko iščete in uporabljate, kakor želite. Na žalost je vaš vnos HTML, zato boste potrebovali program, ki lahko prebere ta HTML, ugotovi, kaj so vse "Sestavine", "Navodila", "Enote" itd., In jih nato uvozite v svojo bazo podatkov. To je veliko dela. Še posebej, ker so vse te semantične informacije - spet pomen podatkov - obstajale v tej izvirni bazi podatkov, vendar so bile v procesu pretvorbe v HTML zakrite.

Zdaj pa si predstavljajte, da bi si lahko izmislili svoj jezik po meri za opisovanje receptov. Namesto da bi opisali, kako naj bo recept prikazan, bi opisali informacijska struktura v receptu: kako bi se vsak podatek povezal z ostalimi deli.

Primer XML

Izdelajmo samo označevalni jezik za opisovanje receptov in svoj recept napišimo v tem jeziku, kot je na seznamu 3.

  Lime Jello Marshmallow Surprise Surface Surprise Moja babica (naj počiva v miru). 1 apna želatina 500 raznobarvni drobni marshmallowi 500 skuta Tabasco omaka Pripravite apno želatino v skladu z navodili za pakiranje 

Seznam 3. Označevalni jezik po meri za recepte

Prav malo presenetilo vas bo, ker ste bistroumen bralec, da je ta recept v novi obliki pravzaprav dokument XML. Mogoče dejstvo, da se je datoteka začela z nenavadno glavo

podaril; pravzaprav bi se morala vsaka datoteka XML začeti s to glavo. Preprosto smo izumili označevalne oznake, ki imajo določen pomen; na primer "An je (količina v določenih enotah) posameznega , kar je mogoče neobvezno"V našem dokumentu XML so informacije v receptu opisane v obliki recepti, namesto v smislu, kako zaslon recept (kot v HTML). Semantika ali pomen informacij se ohranja v XML-ju, ker je bil za to zasnovan nabor oznak.

Opombe o zapisu

Pomembno je, da določite neko nomenklaturo. Na sliki 1 vidite a začetna oznaka, ki začne zaprto območje besedila, znano kot Postavka, v skladu s ime oznake. Kot v HTML-ju lahko tudi XML oznake vsebujejo seznam lastnosti (sestavljen iz ime atributa in an vrednost atributa.) The Postavka definirano z oznako konča z končna oznaka.

Vsaka oznaka ne zajema besedila. V HTML je

tag pomeni "prelom vrstice" in ne vsebuje besedila. V XML takšni elementi niso dovoljeni. Namesto tega ima XML prazne oznake, označena s poševnico pred zadnjim pravokotnim oklepajem v oznaki. Slika 2 prikazuje prazno oznako iz našega recepta XML. Upoštevajte, da imajo lahko prazne oznake atribute. Ta primer prazne oznake je standardna kratica XML za .

Poleg teh notacijskih razlik od HTML so strukturna pravila XML strožja. Vsak dokument XML mora biti dobro oblikovan. Kaj to pomeni? Beri naprej!

Ooh-la-la! Dobro oblikovan XML

Koncept dobro oblikovanosti izhaja iz matematike: možno je pisati matematične izraze, ki ne pomenijo ničesar.Na primer izraz

2 ( + + 5 (=) 9 > 7

izgleda (nekako) kot matematika, vendar ni matematika, ker ne upošteva notacijskih in strukturnih pravil za matematični izraz (vsaj ne na tem planetu). Z drugimi besedami, zgornji "izraz" ni dobro oblikovan. Matematični izrazi morajo biti dobro oblikovani, preden lahko z njimi naredite karkoli koristnega, ker so izrazi, ki niso dobro oblikovani, nesmiselni.

Dobro oblikovan dokument XML je preprosto tisti, ki sledi vsem notacijskim in strukturnim pravilom za XML. Programi, ki nameravajo obdelati XML, bi morali zavrniti vse vhodne XML, ki ne upoštevajo pravil za dobro oblikovanje. Najpomembnejša od teh pravil so naslednja:

  • Brez nezaprtih oznak

    V HTML se lahko izognete vsem vrstam wacko stvari. Na primer, v večini brskalnikov HTML lahko element seznama "odprete" z

  • in ga nikoli ne "zaprite" . Brskalnik samo ugotovi, kje je bi bil samodejno vstavljen za vas. XML ne dopušča tovrstne površnosti. Vsaka začetna oznaka mora imeti ustrezno končno oznako. Razlog za to je, da je del informacij v datoteki XML povezan s tem, kako so različni elementi informacij povezani med seboj, in če je struktura dvoumna, tudi informacije. Torej, XML preprosto ne dovoljuje dvoumne strukture. Ta nedvoumna struktura omogoča tudi obdelavo dokumentov XML kot podatkovne strukture (drevesa), kot bom kmalu pojasnil v razpravi o objektnem modelu dokumentov.

  • Brez prekrivajočih se oznak

    Oznaka, ki se odpre v drugi oznaki, se mora zapreti, preden se ta vsebuje. Na primer zaporedje

    Naj vse odpovedamo

    ni dobro oblikovan, ker odpre se znotraj vendar se ne zapre znotraj . Pravilno zaporedje mora biti

    Naj vse odpovedamo

    Z drugimi besedami, struktura dokumenta mora biti strogo hierarhična.

  • Vrednosti atributov morajo biti v narekovajih

    V nasprotju s HTML-jem XML ne dovoljuje "golih" vrednosti atributov (tj. Oznak HTML, kot je

    , kjer okoli vrednosti atributa ni narekovajev). Vsaka vrednost atributa mora imeti narekovaje (
    ).

  • Besedilna znaka () in (") morata vedno predstavljati 'znakovna entiteta'

    Če želite predstaviti te tri znake (levi kotni oklepaj, pravokotni oklepaj in dvojni narekovaji) v besedilnem delu XML (ne v označevanju), morate uporabiti entitete posebnih znakov (

    <

    ), (

    >

    ) in (

    "

    ). Ti znaki so posebni znaki za XML. Datoteka XML, ki uporablja recimo znak z dvojnimi narekovaji v besedilu, ki je priloženo oznakam v datoteki XML, ni dobro oblikovana in pravilno oblikovani razčlenjevalniki XML bodo povzročili napako za tak vnos.

„Dobro oblikovan“ pomeni „razumljiv“

Splošni XML razčlenjevalnik je program ali razred, ki lahko na vhodu prebere kateri koli dobro oblikovan XML. Številni prodajalci zdaj ponujajo razčlenjevalnike XML v Javi zastonj; (povezave do teh paketov najdete v virih na dnu tega članka). Razčlenjevalniki XML prepoznajo dobro oblikovane dokumente in ustvarijo sporočila o napakah (podobno kot prevajalnik), ko prejmejo vhod, ki ni dobro oblikovan. Kot bomo videli, je ta funkcionalnost zelo priročna za programerja: preprosto pokličete razčlenjevalnik, ki ste ga izbrali, in poskrbi za odkrivanje napak itd. Medtem ko vsi razčlenjevalniki XML preverjajo dobro oblikovanost dokumentov (kar pomeni, kot smo videli, da so vse oznake smiselne, pravilno vgnezdene itd.), preverjanje veljavnosti Razčlenjevalniki XML gredo še korak dlje. Preverjanje razčlenjevalcev tudi potrdi, ali je dokument veljaven; to pomeni, da sta struktura in število oznak smiselna.

Na primer, večina brskalnikov bo prikazala dokument, ki ima (nesmiselno) dva elementi, ampak kako je to lahko? Samo en naslov ali noben naslov ni smiseln.

Za drug primer si predstavljamo, da je bila v seznamu 3 sestavina "skuta" videti tako:

  500 9 Skuta 

Ta dokument XML je zagotovo dobro oblikovan, vendar nima smisla. Saj ni strukturno veljaven. Nesmisel za a vsebovati <Količina>. Kaj je tega ?

Težava je v tem, da imamo dokument, ki je dobro oblikovan, vendar ni zelo uporaben, ker XML nima smisla. Potrebujemo način, kako določiti, zaradi česar je dokument XML veljaven. Na primer, kako lahko določimo, da a oznaka lahko vsebuje samo besedilo (in nobenih drugih elementov) in kot morebitne druge primere prijavi kot napake?

Odgovor na to vprašanje je nekaj, kar se imenuje opredelitev vrste dokumenta, ki jih bomo pogledali naprej.

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