Programavimas

XML - pradedantiesiems

HTML ir internetas yra visur. Kaip pavyzdį jų visur, šiais metais Velykoms važiuoju į Centrinę Ameriką ir, jei norėsiu, galėsiu naršyti internete, skaityti savo el. Paštą ir netgi atlikti internetinę bankininkystę iš interneto kavinių Antigva Gvatemala ir Belizo miestas. (Vis dėlto neketinu, nes tai darydamas užtruktų nuo datos, kurią turiu su palme ir romu užpildytu kokosu.)

Nepaisant to, kad HTML yra visur ir populiarus, jo galimybės yra labai ribotos. Puikiai tinka platinant neoficialius dokumentus, tačiau HTML dabar naudojamas tam, kas niekada nebuvo sukurta. Bandymas iš HTML sukurti sudėtingas, lanksčias ir sąveikaujančias duomenų sistemas yra tas pats, kas bandyti sukurti lėktuvnešį su metaliniais pjūklais ir lituokliais: įrankiai (HTML ir HTTP) tiesiog neatitinka jūsų reikalo.

Geros naujienos yra tai, kad daugelis HTML apribojimų buvo įveikti XML - išplėstinio žymėjimo kalboje. XML yra lengvai suprantamas visiems, kurie supranta HTML, tačiau jis yra daug galingesnis. XML yra ne tik žymėjimo kalba, bet ir metakalba - kalba, naudojama apibrėžti naujas žymėjimo kalbas. Naudodami XML galite sukurti kalbą, sukurtą specialiai jūsų programai ar domenui.

XML papildys, o ne pakeis HTML. HTML naudojamas duomenų formatavimui ir rodymui, o XML rodo kontekstinę duomenų reikšmę.

Šiame straipsnyje bus pristatyta žymėjimo kalbų istorija ir XML atsiradimas. Peržiūrėsime HTML duomenų pavyzdžius ir palaipsniui pereisime į XML, parodydami, kodėl tai yra puikus būdas pateikti duomenis. Ištirsime priežastis, kurių gali prireikti norint sugalvoti pasirinktinę žymėjimo kalbą, ir išmokysiu, kaip tai padaryti. Aptarsime XML žymėjimo pagrindus ir tai, kaip XML pateikti dviem skirtingomis stiliaus kalbomis. Tada mes pasinersime į „Document Object Model“ - galingą įrankį, leidžiantį manipuliuoti dokumentais kaip objektais (arba manipuliuoti objektų struktūromis kaip dokumentais, atsižvelgiant į tai, kaip į tai žiūrite). Peržiūrėsime, kaip rašyti „Java“ programas, kurios išgauna informaciją iš XML dokumentų, su žymekliu į nemokamą programą, naudingą eksperimentuoti su šiomis naujomis koncepcijomis. Galiausiai apžvelgsime interneto bendrovę, kuri pagrindinę technologijų strategiją grindžia XML ir Java.

Ar XML skirtas jums?

Nors šis straipsnis yra parašytas visiems, besidomintiems XML, jis turi ypatingą ryšį su „JavaWorld“ serijos XML JavaBeans. (Žr. Šaltinius, kuriuose pateikiamos nuorodos į susijusius straipsnius.) Jei skaitėte tą seriją ir dar „nesuprantate“, šiame straipsnyje turėtų būti paaiškinta, kaip naudoti XML su pupelėmis. Jei tu yra Tai supranta, kad šis straipsnis yra puikus XML JavaBeans serijos papildomas kūrinys, nes jis apima jame nepaliestas temas. Ir jei esate vienas iš nedaugelio laimingųjų, kurie vis dar laukia XML „JavaBeans“ straipsnių, rekomenduoju pirmiausia perskaityti šį straipsnį kaip įvadinę medžiagą.

Pastaba apie „Java“

Kompiuterių pasaulyje yra tiek naujausios XML veiklos, kad net tokio ilgio straipsnis gali nugriebti tik paviršių. Vis dėlto šio straipsnio esmė yra suteikti jums kontekstą, kurio reikia norint naudoti XML kuriant „Java“ programas. Šiame straipsnyje taip pat aprašoma, kaip XML veikia su esama interneto technologija, nes daugelis „Java“ programuotojų dirba tokioje aplinkoje.

XML atveria interneto ir „Java“ programavimą nešiojamosioms, ne naršyklės funkcijoms. XML išlaisvina interneto turinį iš naršyklės panašiai kaip „Java“ išlaisvina programos elgesį iš platformos. XML suteikia interneto turiniui galimybę naudotis tikrosiomis programomis.

„Java“ yra puiki platforma, skirta naudoti XML, o „XML“ yra puikus duomenų pateikimas „Java“ programoms. Aš nurodysiu kai kurias „Java“ stipriąsias puses su XML, kai eisime kartu.

Pradėkime nuo istorijos pamokos.

Žymėjimo kalbų kilmė

HTML, kurį mes visi žinome ir mėgstame (gerai, kad ir taip žinome), iš pradžių sukūrė Tim Berners-Lee iš CERN (Le Conseil Européen pour la Recherche Nucléaire, arba Europos dalelių fizikos laboratorija) Ženevoje, kad fizikos vėplaiviai (ir net nesmulkintojai) galėtų bendrauti tarpusavyje. HTML buvo išleistas 1990 m. Gruodžio mėn. CERN ir tapo viešai prieinamas 1991 m. Vasarą mums visiems. CERN ir Berners-Lee perdavė HTML, HTTP ir URL specifikacijas pagal seną puikų interneto dalijimosi ir mėgautis tradiciją.

Bernersas-Lee apibrėžė HTML SGML, standartinėje apibendrintoje žymėjimo kalboje. SGML, kaip ir XML, yra metakalba - kalba, naudojama apibrėžiant kitas kalbas. Kiekviena taip apibrėžta kalba vadinama an taikymas SGML. HTML yra SGML programa.

SGML atsirado iš pirmųjų IBM atliktų tyrimų, susijusių su teksto dokumentų vaizdavimu 60-ųjų pabaigoje. IBM sukūrė GML („General Markup Language“), pirmtaką SGML, o 1978 m. Amerikos nacionalinis standartų institutas (ANSI) sukūrė savo pirmąją SGML versiją. Pirmasis standartas buvo išleistas 1983 m., O projekto projektas buvo išleistas 1985 m., O pirmasis standartas buvo paskelbtas 1986 m. Įdomu tai, kad pirmasis SGML standartas buvo paskelbtas naudojant SGML sistemą, kurią sukūrė Andersas Berglundas CERN, organizacijoje, kuri, kaip mes matėme, davėme HTML ir internetą.

SGML yra plačiai naudojamas didelėse pramonės šakose ir vyriausybėse, tokiose kaip didelėse aviacijos, automobilių ir telekomunikacijų įmonėse. SGML naudojamas kaip dokumentų standartas JAV Gynybos departamente ir Vidaus pajamų tarnyboje. (Ne JAV skaitytojams mokesčių mokėtojai yra IRS.)

Albertas Einšteinas sakė, kad viskas turėtų būti kuo paprasčiau, o ne paprasčiau. Priežastis, kodėl SGML nerandama daugiau vietų, yra ta, kad ji yra labai sudėtinga ir sudėtinga. HTML, kurį galite rasti visur, yra labai paprastas; daugeliui programų tai per daug paprasta.

HTML: visa forma ir be jokios esmės

HTML yra kalba, skirta „kalbėti“ apie dokumentus: antraštes, pavadinimus, antraštes, šriftus ir pan. Tai labai orientuota į dokumentų struktūrą ir pristatymą.

Tiesa, menininkai ir įsilaužėliai sugebėjo padaryti stebuklus naudodami gana nuobodų įrankį, vadinamą HTML. Tačiau HTML turi rimtų trūkumų, dėl kurių jis blogai tinka kurti lanksčias, galingas, evoliucines informacines sistemas. Keletas pagrindinių skundų:

  • HTML neišplečiamas

    Išplėstinė žymėjimo kalba leistų programų kūrėjams apibrėžti tinkintas žymas konkrečioms programoms. Negalite reikalauti, kad visi naršyklės gamintojai įdiegtų visas jūsų programai reikalingas žymėjimo žymas, nebent esate 600 svarų gorila (o gal net ir tada). Taigi, jūs esate įstrigę tuo, ką jums leis didieji naršyklių kūrėjai arba W3C („World Wide Web Consortium“). Mums reikalinga kalba, leidžianti susikurti savo žymėjimo žymas nereikalaujant skambinti naršyklės gamintojui.

  • HTML yra labai orientuotas į ekraną

    HTML yra puiki kalba rodymo tikslais, nebent jums reikia daug tikslaus formatavimo ar transformavimo valdymo (tokiu atveju jis dvokia). HTML žymi dokumento loginės struktūros (pavadinimų, pastraipų ir panašių elementų) ir pateikimo žymių (paryškintas, vaizdo sulyginimas ir kt.) Mišinį. Kadangi beveik visos HTML žymos yra susijusios su informacijos pateikimu naršyklėje, HTML nenaudingas kitoms įprastoms tinklo programoms, pvz., Duomenų replikavimui ar programų paslaugoms. Mums reikia būdų, kaip suvienodinti šias įprastas funkcijas pateikiant ekraną, todėl tas pats serveris, naudojamas duomenims naršyti, taip pat gali, pavyzdžiui, atlikti įmonės verslo funkcijas ir sąveikauti su senomis sistemomis.

  • HTML paprastai nėra tiesiogiai pakartotinai naudojamas

    Dokumentų kūrimas teksto apdorojimo programose ir eksportavimas kaip HTML yra šiek tiek automatizuotas, tačiau norint pasiekti priimtinus rezultatus, vis tiek reikia bent šiek tiek pakoreguoti išvestį. Jei keičiasi duomenys, iš kurių buvo sukurtas dokumentas, reikia perdaryti visą HTML vertimą. Internetinės svetainės, kuriose visą parą rodomi dabartiniai orai visame pasaulyje, paprastai labai gerai tvarko šį automatinį formatavimą. Dokumento turinys ir pateikimo stilius yra atskirti, nes sistemos dizaineriai supranta, kad keičiasi jų turinys (temperatūra, prognozės ir pan.) nuolat. Mums reikia būdas nurodyti duomenų pateikimą pagal struktūrą, kad atnaujinus duomenis būtų galima nuosekliai ir lengvai „vėl pritaikyti“ formatą.

  • HTML pateikia tik vieną duomenų „peržiūrą“

    Pagal vartotojo užklausas sunku parašyti HTML, kuriame tie patys duomenys būtų rodomi skirtingais būdais. Dinaminis HTML yra pradžia, tačiau tam reikia nepaprastai daug scenarijų ir nėra bendras šios problemos sprendimas. (Dinaminis HTML yra išsamiau aptariamas toliau.) Mums reikalingas būdas gauti visą informaciją, kurią galbūt norime naršyti vienu metu, ir įvairiai pažvelgti į ją kliente.

  • HTML turi mažai arba visai neturi semantinės struktūros

    Daugumai žiniatinklio programų būtų naudinga galimybė vaizduoti duomenis pagal reikšmę, o ne pagal išdėstymą. Pavyzdžiui, internete gali būti labai sunku rasti tai, ko ieškote, nes nėra duomenų apie HTML failus reikšmės (išskyrus META žymas, kurios paprastai yra klaidinančios). Tipas

    raudona

    į paieškos variklį ir gausite nuorodas į „Red Skelton“, raudoną silkę, raudoną snaperį, raudoną gąsdinimą, „Raudonojo laiško dieną“ ir tikriausiai puslapį ar du „Knygos, kurias aš turiu raudonas“. HTML neturi galimybės nurodyti, ką reiškia konkretus puslapio elementas. Naudingesnė žymėjimo kalba reikštų informaciją pagal jos reikšmę. Mums reikia kalbos, kuri mums sako ne kaip

    ekranas

    informacija, o tai, kas yra tam tikras informacijos blokas

    yra

    taigi mes žinome, ką su juo daryti.

SGML neturi nė vienos iš šių silpnybių, tačiau, norint būti bendra, ji yra plaukus draskanti (bent jau visa forma). SGML (jo „stiliaus kalba“) formatavimui naudojama kalba, vadinama DSSSL („Document Style Semantics and Specification Language“), yra labai galinga, tačiau ja sunku naudotis. Kaip gauti kalbą, kuri yra maždaug tokia pat paprasta kaip HTML, bet turi didžiausią SGML galią?

XML kilmė

Kai žiniatinklis išpopuliarėjo ir žmonės visame pasaulyje pradėjo mokytis apie HTML, jie gana greitai pradėjo susidurti su aukščiau aprašytais apribojimais. Sunkiųjų metalų SGML vilkai, kurie daug metų dirbo su SGML gana nežinomybėje, staiga pastebėjo, kad kasdieniai žmonės supranta žymėjimo (tai yra HTML) sąvoką. SGML ekspertai pradėjo svarstyti galimybę tiesiogiai naudoti SGML žiniatinklyje, užuot naudoję tik vieną jo programą (vėlgi, HTML). Tuo pačiu metu jie žinojo, kad SGML, nors ir galingas, daugumai žmonių yra tiesiog per daug sudėtingas naudoti.

1996 m. Vasarą Jonas Bosakas (šiuo metu internetinis „Sun Microsystems“ informacinių technologijų architektas) įtikino W3C leisti sudaryti komitetą dėl SGML naudojimo internete. Jis sukūrė galingą SGML pasaulio muckety-mucks komandą. Iki tų metų lapkričio šie žmonės sukūrė supaprastintos SGML formos pradžią, apimančią patikrintas SGML savybes, tačiau su tuo susijusiu sudėtingumu. Tai buvo ir yra XML.

1997 m. Kovo mėn. Bosakas išleido savo žinomą dokumentą „XML, Java ir interneto ateitis“ (žr. Šaltinius). Dabar, praėjus dvejiems metams (labai ilgam laiko tarpui žiniatinklyje), trumpas „Bosak“ dokumentas vis dar yra geras, jei datuotas, įvadas, kodėl XML naudojimas yra tokia puiki idėja.

SGML buvo sukurtas bendram dokumentų struktūrizavimui, o HTML buvo sukurtas kaip SGML programa žiniatinklio dokumentams. XML yra SGML supaprastinimas, skirtas bendram žiniatinklio naudojimui.

XML konceptualus pavyzdys

Visos šios kalbos apie „savo žymų sugalvojimą“ yra gana miglotos: kokias žymas kūrėjas norėtų sugalvoti ir kaip gautas XML būtų naudojamas? Šiame skyriuje apžvelgsime pavyzdį, kuriame palyginamas ir palyginamas informacijos pateikimas HTML ir XML. Vėlesniame skyriuje („XSL: man patinka jūsų stilius“) apžvelgsime XML vaizdą.

Pirmiausia paimsime recepto pavyzdį ir parodysime jį kaip vieną iš galimų HTML dokumentų. Tada mes perdarysime pavyzdį XML ir aptarsime, kas mus perka.

HTML pavyzdys

Pažvelkite į mažą HTML dalį 1 sąraše:

   „Lime Jello Marshmallow“ varškės sūrio siurprizas 

„Lime Jello Marshmallow“ varškės sūrio siurprizas

Mano močiutės numylėtinė (tegul ji ilsisi ramybėje).

Ingridientai

KiekisVienetaiPrekė
1dėžėkalkių želatina
500gįvairiaspalviai maži zefyrai
500mlvarškės
brūkšnysTabasko padažas (nebūtina)

Nurodymai

  1. Paruoškite kalkių želatiną pagal pakuotės instrukcijas ...

Sąrašas 1. Kai kurie HTML

(Spausdinamą šio sąrašo versiją galite rasti example.html.)

Pažvelgus į HTML sąrašą 1 sąraše, tikriausiai visiems yra aišku, kad tai yra kažko receptas (kažkas baisaus, bet vis dėlto receptas). Naršyklėje mūsų HTML sukuria maždaug taip:

„Lime Jello Marshmallow“ varškės sūris nustebina

Mano močiutės numylėtinė (tegul ji ilsisi ramybėje).

Ingridientai

KiekisVienetaiPrekė
1dėžėkalkių želatina
500gįvairiaspalviai maži zefyrai
500mlVarškė
 brūkšnysTabasko padažas (nebūtina)

Nurodymai

  1. Paruoškite kalkių želatiną pagal pakuotės instrukcijas ...

2 sąrašas. Kaip atrodo 1 sąraše esantis HTML naršyklėje

Dabar yra daug privalumų, pateikiant šį receptą HTML, taip:

  • Tai gana lengva skaityti. Antkainis gali būti šiek tiek paslaptingas, tačiau jei jis tinkamai išdėstytas, jį sekti yra gana lengva.

  • HTML gali būti rodomas beveik bet kurioje HTML naršyklėje, net ir be grafikos galimybės. Tai svarbus dalykas: ekranas nepriklauso nuo naršyklės. Jei būtų šio recepto paruošimo rezultatų nuotrauka (ir tikrai tikimasi, kad jų nėra), ji būtų rodoma grafinėje naršyklėje, bet ne teksto naršyklėje.

  • Galite naudoti pakopinį stiliaus lapą (CSS - mes šiek tiek pakalbėsime apie toliau pateiktus), kad galėtumėte valdyti formatavimą.

Tačiau yra viena pagrindinių HTML kaip duomenų formato problemų. prasmė visų dokumente esančių duomenų prarandama. Tikrai sunku priimti bendrą HTML ir išsiaiškinti, ką reiškia HTML duomenys. Tai, kad yra šio recepto su a (kiekis) 500 ml () apie varškės būtų labai sunku išgauti iš šio dokumento tokiu prasmingu būdu.

Dabar duomenų apie HTML dokumentą idėja ką nors reiškiantis gali būti šiek tiek sunku suvokti. Tinklalapiai tinka skaitytojui, tačiau, jei programa ketina apdoroti dokumentą, jam reikia vienareikšmių apibrėžimų, ką reiškia žymos. Pavyzdžiui, HTML dokumento žyma prideda dokumento pavadinimą. Štai ką reiškia žyma ir ji nereiškia nieko kito. Panašiai ir HTML žyma reiškia „lentelės eilutė“, tačiau tai mažai naudinga, jei jūsų programa bando skaityti receptus, kad, tarkime, sukurtų pirkinių sąrašą. Kaip programa galėtų rasti ingredientų sąrašą iš HTML puslapio suformatuoto tinklalapio?

Žinoma, galėtumėte parašyti programą, kuri iš dokumento paima antraštes, nuskaito lentelės stulpelių antraštes, išsiaiškina kiekvieno ingrediento kiekius ir vienetus ir pan. Problema ta, kad visi receptus formatuoja skirtingai. Ką daryti, jei bandote gauti šią informaciją, tarkime, iš „Julia Childs“ svetainės, ir ji vis klaidžioja su formatavimu? Jei Julija pakeis stulpelių tvarką arba nustos naudoti lenteles, ji sulaužys jūsų programą! (Nors reikia pasakyti: jei Julija pradeda skelbti tokius receptus, ji gali pagalvoti apie karjeros keitimą.)

Dabar įsivaizduokite, kad šis receptų puslapis atsirado iš duomenų bazės duomenų, ir jūs norėtumėte, kad šie duomenys būtų pateikti. Galbūt norėtumėte jį pridėti prie savo didžiulės receptų duomenų bazės namuose, kur galėsite ieškoti ir naudoti taip, kaip jums patinka. Deja, jūsų įvestis yra HTML, todėl jums reikės programos, kuri galėtų perskaityti šį HTML, išsiaiškinti, kas yra visi „Ingredientai“, „Instrukcijos“, „Vienetai“ ir pan., Tada juos importuoti į savo duomenų bazę. Tai daug darbo. Juolab, kad visa ta prasminė informacija - vėlgi, duomenų reikšmė - egzistavo toje pirminėje duomenų bazėje, tačiau buvo uždengta transformuojant į HTML.

Įsivaizduokite, kad receptų aprašymui galite sugalvoti savo kalbą. Užuot aprašę, kaip receptas turėjo būti rodomas, aprašykite informacijos struktūra recepte: kaip kiekviena informacija būtų susijusi su kitais gabalais.

XML pavyzdys

Tiesiog sukurkime receptų aprašymo kalbą ir perrašykime receptą ta kalba, kaip 3 sąraše.

  Kalkių Jello Marshmallow varškės sūris nustebina mano močiutės numylėtinį (tegul ji ilsisi ramybėje). 1 kalkių želatina 500 įvairiaspalvių mažyčių zefyrų 500 Varškės Tabasco padažas Paruoškite kalkių želatiną pagal pakuotės instrukcijas 

Sąrašas 3. Tinkinta receptų žymėjimo kalba

Jums, kaip įžvalgiam skaitytojui, teks nenuostabu, kad šis naujo formato receptas iš tikrųjų yra XML dokumentas. Gal tai, kad failas prasidėjo nelygine antrašte

atidavė; iš tikrųjų kiekvienas XML failas turėtų prasidėti šia antrašte. Mes tiesiog išrado žymėjimo žymas, turinčias tam tikrą reikšmę; pavyzdžiui: „An yra (kiekis nurodytais vienetais) vieno , kuris galbūt yra neprivaloma"Mūsų XML dokumente aprašoma recepto informacija receptai, vietoj to, kaip ekranas receptą (kaip HTML). Informacijos semantika arba prasmė išlaikoma XML, nes tam ir buvo sukurtas žymų rinkinys.

Pastabos dėl žymėjimo

Svarbu ištaisyti tam tikrą nomenklatūrą. 1 paveiksle matote a pradžios žyma, nuo kurio prasideda uždara teksto sritis, žinoma kaip Prekė, pagal žymos pavadinimas. Kaip ir HTML, XML žymose gali būti sąrašas atributus (susidedantis iš atributo pavadinimas ir an atributo vertė.) Prekė apibrėžta žymele baigiasi simboliu pabaigos žyma.

Ne kiekvienoje žymoje yra tekstas. HTML kalba

žymė reiškia „eilutės pertrauka“ ir joje nėra teksto. XML tokie elementai neleidžiami. Vietoj to, XML turi tuščios žymos, žymimas pasviruoju brūkšniu prieš paskutinį žymės stačiojo kampo skliaustą. 2 paveiksle parodyta tuščia žyma iš mūsų XML recepto. Atminkite, kad tuščiose žymose gali būti atributų. Šis tuščios žymos pavyzdys yra standartinis XML sutrumpinimas .

Be šių žymimų HTML skirtumų, XML struktūrinės taisyklės yra griežtesnės. Kiekvienas XML dokumentas turi būti gerai suformuotas. Ką tai reiškia? Skaityk!

Ooh-la-la! Gerai suformuotas XML

Gerai formuojamos sąvokos kilmė yra matematika: galima rašyti matematines išraiškas, kurios nieko nereiškia.Pavyzdžiui, išraiška

2 ( + + 5 (=) 9 > 7

atrodo (tarsi) matematika, bet tai nėra matematika, nes ji nesilaiko matematinės išraiškos žymėjimo ir struktūrinių taisyklių (bent jau ne šioje planetoje). Kitaip tariant, aukščiau esanti „išraiška“ nėra gerai suformuotas. Matematinės išraiškos turi būti gerai suformuotos, kad galėtumėte su jomis padaryti ką nors naudingo, nes nepakankamai suformuotos išraiškos yra beprasmės.

Gerai suformuotas XML dokumentas yra paprasčiausias, laikantis visų žymėjimo ir struktūrinių XML taisyklių. Programos, ketinančios apdoroti XML, turėtų atmesti bet kokį įvesties XML, kuris neatitinka gero formavimo taisyklių. Svarbiausios iš šių taisyklių yra šios:

  • Nėra neuždarytų žymų

    Galite išsisukti su visokiais wacko daiktais HTML. Pavyzdžiui, daugumoje HTML naršyklių galite „atidaryti“ sąrašo elementą naudodami

  • ir niekada jo „neuždaryk“ . Naršyklė tik išsiaiškina, kur būtų ir automatiškai įterptų jums. XML neleidžia tokio pobūdžio aplaidumo. Kiekvienoje pradžios žymoje turi būti atitinkama pabaigos žyma. Taip yra todėl, kad dalis informacijos, esančios XML faile, yra susijusi su tuo, kaip skirtingi informacijos elementai yra susiję vienas su kitu, ir jei struktūra yra dviprasmiška, tai yra ir informacija. Taigi, XML paprasčiausiai neleidžia dviprasmiškos struktūros. Ši nedviprasmiška struktūra taip pat leidžia XML dokumentus apdoroti kaip duomenų struktūras (medžius), kaip netrukus paaiškinsiu aptariant dokumento objekto modelį.

  • Nėra sutampančių žymų

    Žyma, atsidaranti kitos žymos viduje, turi būti uždaryta prieš uždarant žymą. Pavyzdžiui, seka

    Atšaukime visa tai

    nėra gerai suformuotas, nes atsidaro viduje bet neužsidaro viduje . Turi būti teisinga seka

    Atšaukime visa tai

    Kitaip tariant, dokumento struktūra turi būti griežtai hierarchinė.

  • Atributų reikšmės turi būti nurodytos kabutėse

    Skirtingai nuo HTML, XML neleidžia „nuogo“ atributo reikšmių (t. Y. Panašių HTML žymų

    , kur aplink atributo vertę nėra kabučių). Kiekvienoje atributo reikšmėje turi būti kabutės (
    ).

  • Teksto simbolius () ir (") visada turi vaizduoti„ simbolių objektai “

    Norėdami atvaizduoti šiuos tris simbolius (kairio kampo skliaustą, dešiniojo kampo skliaustą ir dvigubas kabutes) XML teksto dalyje (ne žymėjime), turite naudoti specialiųjų simbolių objektus (

    <

    ), (

    >

    ) ir (

    "

    ). Šie simboliai yra specialūs XML simboliai. XML failas, kuriame, tarkime, dvigubos citatos simbolis yra tekstas, įterptas į žymes XML faile, nėra gerai suformuotas, o teisingai suprojektuoti XML analizatoriai sukels tokio įvesties klaidą.

„Gerai suformuotas“ reiškia „palyginamasis“

Bendroji XML analizatorius yra programa ar klasė, kuri savo įvestyje gali skaityti bet kokį gerai suformuotą XML. Dabar daugelis pardavėjų siūlo „Java“ XML analizatorių nemokamai; (nuorodas į šiuos paketus rasite šaltiniuose šio straipsnio apačioje). XML analizatoriai atpažįsta gerai suformuotus dokumentus ir pateikia klaidų pranešimus (panašiai kaip sudarytojas), kai gauna netinkamai suformuotą įvestį. Kaip matysime, ši funkcija yra labai naudinga programuotojui: paprasčiausiai paskambinsite pasirinktam analizatoriui ir jis pasirūpins klaidų aptikimu ir pan. Nors visi XML analizatoriai tikrina, ar dokumentai yra gerai suformuoti (tai, kaip matėme, reiškia, kad visos žymos yra prasmingos, tinkamai įterptos ir pan.), patvirtinantis XML analizatoriai žengia dar vieną žingsnį. Patvirtinantys analizatoriai taip pat patvirtina, ar dokumentas yra galioja; tai yra, kad žymių struktūra ir skaičius turi prasmę.

Pvz., Daugumoje naršyklių bus rodomas dokumentas, kuriame (beprasmiškai) yra du elementai, bet kaip tai gali būti? Tik vienas pavadinimas arba be jo yra prasmė.

Kitas pavyzdys: įsivaizduokite, kad 3 sąraše „varškės“ ingredientas atrodė taip:

  500 9 Varškė 

Šis XML dokumentas tikrai yra gerai suformuotas, tačiau jis neturi prasmės. Tai nėra struktūriškai galioja. Nesąmonė a kad būtų <Kiekis>. Kas yra iš to ?

Problema ta, kad turime gerai suformuotą dokumentą, tačiau jis nėra labai naudingas, nes XML nėra prasmės. Mums reikia būdo nurodyti, dėl ko XML dokumentas galioja. Pavyzdžiui, kaip mes galime nurodyti, kad a žymoje gali būti tik tekstas (o ne kiti elementai) ir bet kokiu kitu atveju pranešti kaip apie klaidas?

Atsakymas į šį klausimą slypi tame, kas vadinama dokumento tipo apibrėžimas, kurį mes pažvelgsime toliau.