XML sintaksa je zelo preprosta in zelo natančna.
Ker ne dopušča nobenih odstopanj, je tudi razvoj programske opreme, ki ga uporablja, preprost!
Vzemimo zopet prejšnji primer, ki pa ga samo malce popravimo, tako da popolnoma ustreza specifikaciji.
| XML Pismo |
<?xml version="1.0"?>
<pismo>
<prejemnik>Matej</prejemnik>
<posiljatelj>Matjaž</posiljatelj>
<vsebina>Zdravo, to je šola XML!</vsebina>
</pismo>
|
Kot vidite, smo dodali prvo vrstico, ki je obvezna in določa verzijo (specifikacijo), ki ji pripada preostali del dokumenta. V našem primeru dokument ustreza specifikaciji 1.0.
Naslednja vrstica določa korensko oznako dokumenta
| Korenska oznaka |
<pismo>
|
in s tem daje bralcu vedeti, da dokument vsebuje pismo.
Preostale vrstice opisujejo podoznake korenske oznake in določajo prejemnika, pošiljatelja in vsebino:
| Preostale oznake XML pisma |
<prejemnik>Matej</prejemnik>
<posiljatelj>Matjaž</posiljatelj>
<vsebina>Zdravo, to je šola XML!</vsebina>
|
zadnja vrstica
| Zaključek korena |
</pismo>
|
pa seveda zaključuje korensko oznako.
Vsi, ki bolje poznate HTML, veste, da tam ni potrebno zaključiti vseh oznak. Brkljalniki sami ugotovijo, kdaj se mora določena oznaka končati (zato pa so tako veliki in zato dokumenti niso povsem enaki na različnih brkljalnikih).
| izsek NEPRAVILNEGA XML dokumenta - manjka zaključna oznaka |
<prejemnik>Matej
<posiljatelj>Matjaž</posiljatelj>
|
V kolikor XML dokument pišete v urejevalniku, pišite tako, da najprej naredite obe oznaki (začetno in končno), nato pa mednju vpišite tekst. |
Saj že slutite primerjavo s HTML, zato kar dajmo! V HTML-ju sta oznaki <center> in
<CeNTer> popolnoma enaki, v XML-u pa ne!
| izsek NEPRAVILNEGA XML dokumenta - zaključna oznaka nima pravilne velikosti črk |
<prejemnik>Matej</Prejemnik>
<posiljatelj>Matjaž</posiljatelj>
|
Glejte gornjo opombo. |
Hm, tole je že bolj zapleten naslov, zato bi kar preskočil na primer, saj mislim, da bo tako lažje razumljivo. V HTML-ju je sledeča sintaksa popolnoma pravilna:
| Nepravilno gnezdeni oznaki |
<b><I>pozdravljeni</b></I>
|
ali pa še malce bolj zvita:
| Nepravilno gnezdeni oznaki |
<b><I>pozdravljeni</b> v naši hiši</I>
|
To je v XML-ju nepravilno! V XML-u se mora vedno najprej končati zadnja uporabljena oznaka:
| Pravilno gnezdeni oznaki |
<b><I>pozdravljeni</I></b>
|
Še besedico o gnezdenju...
Zakaj gnezdenje? Hm, vsak XML dokument si lahko predstavljamo kot drevo:
| Gnezdenje |
<prvaOznaka>
<drugaOznaka>
<tretjaOznaka>
</tretjaOznaka>
</drugaOznaka>
</prvaOznaka>
|
Aha, od tod izraz gnezdenje!
Če imate možnost, pišite XML dokument tako, da so podrejene oznake zamaknjene v desno (kot v primeru), saj je takšen dokument precej lažje brati, ker je že oblikovno vidno, kaj spada skupaj. |
Prva oznaka XML dokumenta se imenuje korenska oznaka in vse ostale oznake morajo biti gnezdene pod to oznako.
Zelo pomembno: XML dokument lahko vsebuje samo eno korensko oznako:
| okostje XML dokumenta |
<?xml version="1.0"?>
<oznaka>
… ves ostali XML dokument ….
</oznaka> <!-- konec dokumenta -->
|
Tole je recimo napačen XML dokument:
| Nepravilen XML dokument - nima korenske oznake |
<?xml version="1.0"?>
<pismo>
<prejemnik>Matej</prejemnik>
<posiljatelj>Matjaž</posiljatelj>
<vsebina>Zdravo, to je šola XML!</vsebina>
</pismo>
<pismo>
<prejemnik>Miha</prejemnik>
<posiljatelj>Janez</posiljatelj>
<vsebina>Pozdravljen, pišem ti iz http:\\www.matjazev.net</vsebina>
</pismo>
|
Ta dokument bi vseboval dve korenski oznaki (dve pismi) - njep, to ne gre! V tem primeru si morate izmisliti novo korensko oznako in ostala ugnezditi vanjo:
| Pravilni XML dokument ima eno in samo eno korensko oznako |
<?xml version="1.0"?>
<pisma>
<pismo>
<prejemnik>Matej</prejemnik>
<posiljatelj>Matjaž</posiljatelj>
<vsebina>Zdravo, to je šola XML!</vsebina>
</pismo>
<pismo>
<prejemnik>Miha</prejemnik>
<posiljatelj>Janez</posiljatelj>
<vsebina>Pozdravljen, pišem ti iz http:\\www.matjazev.net</vsebina>
</pismo>
</pisma>
|
To pa je pravilno, saj dokument vsebuje samo eno korensko oznako (<pisma>)!
Tak dokument ima recimo tri nivoje. Prvi nivo je vedno korenska oznaka in to je oznaka <pisma>.
Drugi nivo je v našem primeru oznaka <pismo>, saj je znotraj oznake
<pisma> lahko več <pisem>. Tretji nivo pa
seveda predstavljajo oznake (<prejemnik>, <posiljatelj> in
<vsebina>, ki podrobneje določajo konkretno pismo).
O atributih še nismo spregovorili, zato samo na hitro. Vsaka oznaka lahko ima enega ali več atributov, ki jo podrobneje določajo.
Najlažji primer je HTML oznaka <font>,
ki določa nabor znakov. Toda oznaka <font> še ne pove ničesar, saj samo pravi, da bo
definirala nabor znakov. Kateri nabor? Saj že slutite… to določi z atributom. Recimo:
| Atribut oznake font (atribute brez dvojnih narekovajev HTML prebavi, XML pa ne!) |
<font face=Times New Roman color=red>
|
Kot si predstavljate, ta oznaka določi nabor znakov Times New Roman z rdečo barvo.
Dobro, vsaka XML oznaka lahko ima poljubne atribute, le njihova vrednost mora biti zapisana med dvema navednicama. V gornjem primeru bi to pomenilo:
| Pravilno zapisani atributi (v dvojnih navednicah) |
<font face="Times New Roman" color="red">
|
Aha, poglejmo si naš primer in pismu določimo datum:
| Datum pisma določen kot atribut |
<?xml version="1.0"?>
<pismo datum="01.10.2000">
<prejemnik>Matej</prejemnik>
<posiljatelj>Matjaž</posiljatelj>
<vsebina>Zdravo, to je šola XML!</vsebina>
</pismo>
|
Nepravilno pa bi seveda bilo sledeče:
| Nepravilno zapisan atribut |
<pismo datum=01.10.2000>
|
Hm, kaj pa se zgodi, ko želimo v XML dokumentu uporabiti znak ' < '? XML bi ga spoznal kot začetek oznake, kar pa ni pravilno!
Za takšne in podobne primere XML definira par posebnih 'besed', ki v končni fazi pomenijo znake, ki jih iščemo:
| Posebni znaki XML-a |
Iskani | Njegova | Kako si ga zapomniti?
znak | XML oblika | (beremo ga angleško!)
-------|------------|-------------------------
< | < | < == less than == lt
& | & | & == ampersand == amp
> | > | > == greater == gt
" | " | " == quotation == quot
' | ' | ' == apostrophe == apos
Če želite v XML-u zapisati matematični izraz a < b,
boste torej morali napisati:
<izraz>a < b</izraz>
|
Če uporabite kakšen XML urejevalnik, bo on poskrbel za tele znakce! |
Če ne poznate HTML-ja, vam to ne bo dosti pomenilo, zato malce razlage. Če v HTML datoteki zapišete med besede poljubno število presledkov, se to na izgledu ne bo poznalo:
| XML ohranja presledke! |
<html>
<body>
Pozdravljen svet!
</body>
</html>
|
Poglejte si izgled cetrta.html. Kot vidite, je med besedicama samo en presledek!
No, XML pa presledke ohranja, kar je zelo zelo pomembno, saj to pomeni, da bo prejemnik dobil natančno takšne podatke, kot ste mu jih poslali!
No, tole pa je smiselno samo programerjem in oni bodo razumeli, ostalih pa ne želim obremenjevati, ker bi razlaga zahtevala preveč.
No, morda čisto na kratko: Če v urejevalniku teksta pritisnete tipko ENTER, vam kazalec skoči v novo vrstico. To se mora v datoteko nekako zapisati; in res se! Na PC računalnikih se tja vrineta dva nevidna znaka (CR in LF). Na nekaterih sistemih (predvsem Unix) pa se tja vrine samo nevidni znak LF. No, XML pa vsako kombinacijo CR/LF zamenja z LF. Če razumete, super, sicer pa tudi ne boste zamudili ničesar pomembnega!