Dec
5
XML:n rakenne ja kielioppi
Filed Under Web standards
Jos (x)HTML on sinulle entuudestaan tuttua, XML:n opettelu ei varmasti tuota hankaluuksia. Jos XML on kuitenkin täysin uusi käsite, aloita lukemalla tämä artikkeli (XML).
Ennen kuin tutustumme tarkemmin itse syntaksiin, on hyvä tuntea XML:n perusteet, sen rooli ja miten XML:ää käytetään informaation varastointiin ja välitykseen.
XML- terminologian ymmärtäminen on tärkeää, mutta vähintään yhtä tärkeää on rakenteen huolellinen koostaminen. XML “yhdistää” dataa ja järjestelee sen hierarkiseksi kokonaisuudeksi, joten hierarkisesta ajattelutavasta on apua.
Sisältö
- Perusteet
- Määrittely (XML declaration)
- Elementit
- Juurielementti (root element)
- Alielementit (subelements)
- Hierarkia
- Tyhjät elementit
- Attribuutit
- CDATA
- Kommentointi
- Whitespace
Perusteet
Eli miten XML oikeastaan toimii? XML on siis tarkoitettu tiedon varastointiin. Se voi olla staattinen dokumentti, jonka luot kotikoneellasi ja siirrä siiten palvelimelle tai se voidaan luoda dynaamisesti serveripuolella käyttäjän “pyyntöihin” perustuen. Aivan kuten (x)HTML, myös XML käyttää tageja. Ero näiden merkinätkielien välille syntyy kuitenkin siitä, että HTML:ssä käytetään ennaltamääriteltyjä tageja. XML antaa sinulle vapauden luoda täysin oman merkintäkielen ja juuri tämä ominaisuus tekee XML:stä laajennettavan (extensible). Puhutaan myös metakielestä, koska XML ei vain varastoi tietoa, vaan se myös kuvaa sitä. Laatija on tietysti itse vastuussa tagien nimeämisestä ja hierarkian laatimisesta, joten monessa kohtaa voi mennä vikaan. “Huono” nimeäminen ei tarkoita sitä että XML-dokumentti olisi käyttökelvoton, näin vain yksinkertaisesti menetetään yksi XML:n hienoimmista ominaisuuksista. Seuraavassa esimerkki hyvästä ja huonosta nimeämisestä.
huono:
<elementti_0> <elementti_1>Guns and Roses</elementti_1> <elementti_2>Lies</elementti_2> </elementti_0>
hyvä:
<cd -kokoelma> <esittaja>Guns and Roses</esittaja> <albumi>Lies</albumi> </cd>
Mukautettujen tagien tarkoitus on siis kuvat nimenomaista datarakennetta. Jokaista tagiparia kutsutaan elementiksi.
Määrittely (XML declaration)
Ennenkuin tietoa järjestelemään XML-dokumenttiin, se pitää määritellä XML-dokumentiksi. Jos työstät XML-dokumenttia Flashia varten, tämä vaihe ei ole välttämätön. Dokumentin määrittelu on kuitenkin hyvä ottaa tavaksi, koska se on helppoa ja toisaalta usein (muut sovellukset) se on välttämätöntä.
XML Declaration
< ?xml version='1.0' encoding='UTF-8'?>
Ylläoleva siis määrittelee dokumentin XML versio 1.0:ksi (perustuu W3C:n spesifikaatioon) ja käytetyn merkistön enkoodauksen.
Elementit
Elementit sisältävät XML-dokumentissa olevan datan. Ne kuvaavat sekä sisältöä, että rakennetta, toisin kuten HTML:ssä käytetyt tagit, jotka vain kertovat selaimelle, miten elementin sisältämä data tulisi esittää visuaalisesti.
Jokainen XML-dokumentti sisältää vähintään yhden elementin, jota kutsutaa juurielementiksi (root element), sekä vaihtelevan lukumäärän mahdollisia alaelementtejä (subelement). Kaikki tieto sijoitetaan elementteihin. Elementtien käytöön ja nimeämiseen liittyy useita sääntöjä:
- Kaikki elementit tulee sulkea
- Elementin nimi tulee aloittaa jollakin aakkosella. Ensimmäisen kirjaimen jälkeen voidaan käyttää mitätahansa yhdistelmää muodostamalla merkkijono alfanumeerisia merkkejä, väli- ja alaviivoja sekä kaksoispisteitä käyttämällä. Välilyönnin käyttäminen elementin nimessä on kiellettyä.
- Jos haluat muodostaa elementin nimen useammasta kuin yhdestä sanasta, tulee välilyönnit korvata esimerkiksi väliviivalla tai alaviivalla.
- XML tekee eron isojen ja pienien kirjainten välillä (case-sensitive)
- Elementtien nimeämisessä kannattaa olla johdonmukainen. Jotta dokumentin lukeminen ja ylläpitäminen olisi tulevaisuudessa vaivatonta, tagit tulisi nimetä mahdollisimman hyvin sisältöä kuvaaviksi
- Vaikka aiemmin mainitsin, että elementin nimen voi aloittaa millä tahansa kirjaimella, huomaa, että et voi nimetä elementtiä aloittamalla merkkijonolla “xml” . Sääntö koskee kaikkia kirjainten “x”, “m” ja “l” eri yhdistelmiä. Tämä siksi, että W3C on varannut edellämainitut kirjaimet tulevaisuuden laajennuksia varten
Juurielementti (root element)
Jokainen XML-dokumentti vaatii juurielementin. Tämä elementti sisältää koko dokumentin, aivan kuten HTML:ssä <html>- tagi.
< ?xml version='1.0' encoding='UTF-8'?> <cd -kokoelma> </cd>
Tässä siis ensimmäinen häivähdys mainitsemastani laajennettavuudesta. Voit nimetä juurielementin haluamallasi tavalla sen sijaan, että käyttäisit HTML:stä tuttua <html>- tagia. Elementti kannattaa tietysti nimetä niin, että se kuvaa mahdollisimman hyvin koko sisältämäänsä datastruktuuria.
Alielementit (subelements)
Kun juurielementti on luotu voidaan luodan alielementtejä.
< ?xml version='1.0' encoding='UTF-8'?> <cd -kokoelma> <genre>rock</genre> <genre>punk</genre> </cd>
Juuri luodut <genre>- elementit ovat siis juurielementin (<cd-kokoelma>) alielementtejä. Nämä elementit on sijoitettu juurielementin sisälle (nested) ja ilmaisevat näin dokumentin hierarkiaa.
XML on tarkka elementtien sulkemisesta, joten tagien sijoittelussa tulee olla huolellinen. Seuraava olisi mahdollista HTML:ssä:
<b><i>väärin</i></b>
XML:ssä tageja ei voi kuitenkaan sulkea “ristiin”.
Hierarkia
XML on rakenteeltaan samankailtainen kuin sukupuu tai vaikkapa tietokoneesi tiedostojärjestelmä. Sisältö noudattaa isäntä-lapsi-suhdetta (parent-child). Toisinsanoen, alielementti on isäntäelementin (parent) lapsielementti (child).
< ?xml version='1.0' encoding='UTF-8'?> <cd -kokoelma> <genre>rock</genre> <genre>punk</genre> </cd>
Edellä mainitussa XML- dokumentin rakenteessa <cd-kokoelma> on isäntäelementti ja <genre>- elementit ovat sen lapsia. Monimutkaisemmassa dokumentissa, jokainen <genre>- elementti voisi sisältää edelleen alielementtejä, jolloin <genre> olisi näiden isäntä. Juuri tämä on XML:n luonne. Koko sisältö on järjestelty hierarkiseen muotoon.
Isäntä-lapsisuhteen lisäksi XML tuntee myös sisarus-suhteet. Edellä mainitussa XML-dokumentissa <genre>- elementit siis jakavat saman sisarsuhteen, ja ovat kaikki juurielementin (<cd-kokoelma>) lapsia.
Viimekädessä, sukupuu- vertaus kuvaa varsin hyvin sisäkkäin asetellun datan luonnetta. Luodessasi lapsielementtejä, määrittelet sisältöä pidemmälle. Isäntäelementit ovat luonteeltaan aina yleiluontoisempia.
Tyhjät elementit
Elemntit voivat olla myös tyhjiä. Tyhjä elementti on tarpeen esimerkiksi, kun dokumentti vaatii elementin, mutta sille ei ole parhaillaan sisältöä (tekstiä tai alielementtiä). Tyhjät elementit voivat sisältää tietoa, mutta palataan siihen jäljelmpänä. Tyhjän elementin syntaksi on seuraava:
<esittaja></esittaja>
Edellämainittu on varmasti tuttu, mutta siitä voidaan käyttää myös lyhennettyä versiota:
<esittaja />
Vielä muutama pääsääntä oikein muodostetusta XML:stä (well-formed):
- Kaikki tagit pitää sulkea
- Dokumentissa voi olla vain yksi juurielementti
- Tageja ei voi “asetella” limittäin
Attribuutit
XML:ssä käytetyt attribuutit ovat samanlaisin kuin HTML:säkin. Ne ovat pohjimmiltaan vain elementille osoitettuja ominaisuuksia. Otetaan esimerkiksi HTML:stä <a>- tagi.
<a href="http://www.domain.com">domain</a>
Eli attribuutti on “href“. Täsmälleen samaa muotoa käytetään XML:ssä.
<genre name="punk"></genre>
Attribuutin “koteloimiseen” voi käyttää joko heittomerkkiä (‘) tai lainausmerkkiä (“).
Edellä käytimme seuraavaa esimerkkiä:
< ?xml version='1.0' encoding='UTF-8'?> <cd -kokoelma> <genre>rock</genre> <genre>punk</genre> </cd>
Sama voitaisiin kirjoittaa käyttäen attribuutteja:
< ?xml version='1.0' encoding='UTF-8'?> <cd -kokoelma> <genre name="rock" /> <genre name="punk" /> </cd>
CDATA
CDATA tarkoittaa “character dataa“. Sen avulla voidaan elementtiin kirjoittaa merkkejä, jotka on varattu XML:n käyttöön (<, >, &, ‘, “). CDATA- osio sisältää datan, jota XML- sovellukset voivat käyttää sellaisenaan.
Hyvä esimerkki CDATA:n käytöstä on lisätä HTML:ää XML- dokumenttiin. Ilman CDATA:a, XML-jäsennin “näkisi” jokaisen HTML- tagin elementtinä, eikä sisältöä siis esitettäisikään niinkuin oli aluperin tarkoitus.
Kaikki CDATA- esiintymät alkavat seuraavasti:
< ![CDATA[
Sen jälkeen kirjoitetaan haluttu informaatio ja suljetaan CDATA:
]]>
Ja vielä koko esimerkki:
<linkki> < ![CDATA[<a href="http://www.domain.com">Domain]]> </linkki>
Kommentointi
Kommentointi tapahtuu XML:ssä täysin samalla tavalla kuin HTML:ssäkin:
<!-- Tähän kommentti -->
Whitespace
Whitespace on termi jolla kuvataan välilyöntejä (SPACE), rivinvaihtoja (CARRIAGE RETURN) ja sarkainmerkkejä (TAB). Whitespace tekee dokumentista luettavan ja siksi sitä kannatta käyttää hyväksi.
Comments
Leave a comment
