SISÄLLYS. Johdanto 1. 1. JOHDATUS XML:n PARIIN 1.1 Extensible Markup Languge 2 1.2 XML:n edut 2 1.3 Mitä XML:llä tehdään? 3



Samankaltaiset tiedostot
XML kielioppi. Elementtien ja attribuuttien määrittely. Ctl230: Luentokalvot Miro Lehtonen

Sisältö. XML, XHTML ja CSS XML XML. XML:n ja HTML:n ero. XML kieliä XML XHTML CSS XSL. T Hypermediadokumentin laatiminen 2002

HTML & CSS. HTML (HyperText Markup Language) Antti Koivisto. ! HTML on sivujen kuvauskieli.

XML-merkkaus. Merkkidata, prosessointikomennot, kommentit

M. Merikanto 2012 XML. Merkkauskieli, osa 2

XML johdatus: DTD. Jaana Holvikivi

XML prosessori. XML prosessointi. XML:n kirjoittaminen. Validoiva jäsennin. Tapahtumaohjattu käsittely. Tapahtumaohjattu käsittely.

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

XML, XHTML ja CSS. T Hypermediadokumentin laatiminen. Mikko Pohja

Kotisivuohjeet. Eteläpohjalaiset Kylät ry. Sivupohjien rakenne

Tutkitaan sitten HTML-dokumenttien anatomiaa, jotta päästään käsiksi rakenteisten dokumenttien käsitteistöön esimerkkien kautta.

WWW-ohjelmoinnin kokonaisuus. WWW-OHJELMOINTI 1 Merkkauskielet. Merkkauskielten idea. Merkkauskielet (markup languages) Merkkauskielten merkitys

XML / DTD / FOP -opas Internal

Vaasan yliopiston toimintaa tukevat informaatiopalvelut ovat käytettävissä WWW:n kautta.

Entiteetit erotetaan muusta tekstistä & ja puolipiste. esim. copyright-merkki näkyy sivulla

XML Technologies and Applications - harjoitustyö -

Ctl160 Tekstikorpusten tietojenkäsittely p.1/15

MITÄ JAVASCRIPT ON?...3

Code Camp for Girls. Sanna Nygård. Lokakuussa

TIEDEJUTTUKURSSI FM VILLE SALMINEN

ELM GROUP 04. Teemu Laakso Henrik Talarmo

6 DTD ja dokumentin tyyppimääritys

6 XML-työkalut 1. 6 XML-työkalut

P e d a c o d e ohjelmointikoulutus verkossa

HAKUKONEMARKKINOINTI KOTISIVUJEN PÄIVITYSOHJE

Poikkeusinfo XML-rajapinnan kuvaus, rajapinnan versio 2 Seasam Group

3 Verkkosaavutettavuuden tekniset perusteet

Extensible Stylesheet Language (XSL)

Verkkosivut perinteisesti. Tanja Välisalo

valitsin on useimmiten html-elementti, jolle tyyli halutaan luoda

H T M L eli kuinka laadin itselleni päheät kotisivut. Janne Käki

Verkkojulkaiseminen Minna Väisänen. HTML5-tehtävä

Helsingin yliopisto Tietojenkäsittelytieteen laitos XML-metakieli (2011) Harri Laine 1. Jäsennys ja sarjallistaminen

Toinen harjoitustyö. ASCII-grafiikkaa

Rekursiolause. Laskennan teorian opintopiiri. Sebastian Björkqvist. 23. helmikuuta Tiivistelmä

6 DTD ja dokumentin tyyppimääritys

XHTML - harjoitus. Tehtävä1: Tee xhtml tiedosto käyttäen notepad (muistio) ohjelmaa. Tiedoston tallennus notepad (muistio) ohjelmassa:

Tee html-sivu, jossa on yllä olevat kaksi taulukkoa.

Johdatus rakenteisiin dokumentteihin

6 DTD ja dokumentin tyyppimääritys

11.4. Context-free kielet 1 / 17

Suvi Junes/Pauliina Munter Tietohallinto/Opetusteknologiapalvelut 2014

HTML ja CSS. Tästä se lähtee: portfolio-sivusto. Sivuston pääkansio, jonka sisällä on kaikki sivustoon kuuluvat alikansiot ja tiedostot.

Sangen lyhyt L A T E X-johdatus

Luento 2: XML:n syntaksi

SeaMonkey pikaopas - 1

Taulukot. Jukka Harju, Jukka Juslin

Maastotietokannan torrent-jakelun shapefile-tiedostojen purkaminen zip-arkistoista Windows-komentojonoilla

VERKKOSOVELLUSTEN OHJELMOINTI, JOHDATUS PHP:HEN

Tietokannan luominen:

Digitaalisen median tekniikat. JSP ja XML Harri Laine 1

Kiipulan ammattiopisto. Liiketalous ja tietojenkäsittely. Erja Saarinen

ARVO - verkkomateriaalien arviointiin

Tentti erilaiset kysymystyypit

XML-saatavuuskysely. XML-tiedoston kuvaus. versio

9 XML perusteet

Uutiskirjesovelluksen käyttöohje

Sangen lyhyt L A T E X-johdatus

XML - perusteet. Ctl230: Luentokalvot Miro Lehtonen

Digitaalisen median tekniikat css tyylimääritykset

Pauliina Munter/Suvi Junes Tampereen yliopisto / Tietohallinto Valitse muokkaustila päälle kurssialueen etusivun oikean yläkulman painikkeesta.

ARVI-järjestelmän ohje arvioinnin syöttäjälle

tään painetussa ja käsin kirjoitetussa materiaalissa usein pienillä kreikkalaisilla

Digitaalisen median tekniikat. JSP ja XML

MOBISITE-TYÖKALUN SISÄLTÄMÄT TOIMINNOT

Digitaalisen median tekniikat css tyylimääritykset Harri Laine 1

Ohje tutkielman tekemiseen

Elementtien tyyppideklaraatiot

OPPITUNTI 3 Ensimmäinen skripti

Microsoft Visual Studio 2005

S Havaitseminen ja toiminta

XML rakenteen suunnittelu. Jaana Holvikivi

Tentti erilaiset kysymystyypit

Ohjelmoinnin perusteet Y Python

Purot.net Wiki. Tutkielma. Paavo Räisänen. Centria Ammattikorkeakoulu

Johdatus XML teknologioihin

Sivupohjien täyttö suppeat sivupohjat

ARVO - verkkomateriaalien arviointiin

Monikielinen verkkokauppa

815338A Ohjelmointikielten periaatteet Harjoitus 2 vastaukset

ETAPPI ry JOOMLA 2.5 Mediapaja. Artikkeleiden hallinta ja julkaisu

5. HelloWorld-ohjelma 5.1

IDL - proseduurit. ATK tähtitieteessä. IDL - proseduurit

Toinen harjoitustyö. ASCII-grafiikkaa 2017

ARVO - verkkomateriaalien arviointiin

ATK tähtitieteessä. Osa 3 - IDL proseduurit ja rakenteet. 18. syyskuuta 2014

Artikkelien muokkaaminen sekä sisältöeditorin peruskäyttö

Suvi Junes Tietohallinto / Opetusteknologiapalvelut 2012

ICT1TN004 Hakukoneoptimoin p ti Heikki Hiet Hie ala t

Valintanauhan komennot Valintanauhan kussakin välilehdessä on ryhmiä ja kussakin ryhmässä on toisiinsa liittyviä komentoja.

Kirjoita oma versio funktioista strcpy ja strcat, jotka saavat parametrinaan kaksi merkkiosoitinta.

Visma Fivaldi -käsikirja Tehtävienhallinta- ohje käyttäjälle

1. Lähteet 2 2. Linkkejä 2 3. Tuntitehtävä Esipuhe Mikä ihmeen XML? Historiaa Välineet Hello World! 6 9.

Ohjeistus yhdistysten internetpäivittäjille

Mainonnanhallinta Käyttöopastus. Tekniikka. Olli Erjanti Mediareaktori

Olet tehnyt hyvän valinnan hankkiessasi kotimaisen StorageIT varmuuskopiointipalvelun.

VeRan laboratoriotietojen siirtoformaatti

Graafiset käyttöliittymät Sivunparantelu

Hyvän salasanan tunnusmerkit Hyökkääjästä salasanan pitää näyttää satunnaiselta merkkijonolta. Hyvän salasanan luominen: Luo mahdollisimman pitkä

Transkriptio:

Henri Haapakanni 3.5.2004

SISÄLLYS Johdanto 1 1. JOHDATUS XML:n PARIIN 1.1 Extensible Markup Languge 2 1.2 XML:n edut 2 1.3 Mitä XML:llä tehdään? 3 2. YKSINKERTAISEN XML-DOKUMENTIN RAKENNE 2.1 XML-määritelmä 4 2.2 Juurielementti 5 2.3 Lapsielementit 5 2.4 Attribuutit 6 2.5 Kommentit 8 2.6 CDATA-osuudet 9 2.7 Prosessointiohjeet 9 2.8 XML-dokumentin varsinainen informaatiosisältö 9 3. MERKKAUS 3.1 Oikeamuotoisuus 3.1.1 Nimeämisen osalta 10 3.1.2 Elementtien osalta 11 3.1.3 Attribuuttien osalta 11 3.1.4 Yleiset säännöt 12 3.2 Suomeksi, englanniksi, hindiksi vai japaniksi? 12 4. VALIDOITU XML-DOKUMENTTI 4.1 DTD dokumenttityyppimäärittely 13 4.2 Elementit DTD:ssä 14 4.3 Attribuutit ja DTD 17 5. KEHITTYNEET XML-DOKUMENTIT 5.1 Entiteettien hyväksikäyttö 5.1.1 Entiteeteistä yleistä 19 5.1.2 Sisäiset entiteetit 20 5.1.3 Ulkoiset entiteetit 21 5.2 Notaatiot ja jäsentämättömät entiteetit 27 6. LINKITYS XML:LLÄ 6.1 XML:n kehittynyt linkitysmekanismi 28 7. XML-SOVELLUKSENI MUOTOILU WEBBIÄ VARTEN 7.1 XSL 29 7.2 CSS 35 8. XML:N TUOMAT MAHDOLLISUUDET INTERNETIIN 38

JOHDANTO Tämä opinnäytetyöni käsittelee XML-dokumentin luomista www-käyttöön. Tämä ei suinkaan tarkoita etteikö tästä irtoaisi yleisestikin XML-perusteista, päinvastoin! XML:n ammattilainen ei valitettavasti tästä oppaan kaltaisesta työstäni juurikaan hyödy, sillä käsiteltävät asiat ovat sangen perustavaa laatua. Jos suuret lupaukset ja yleinen tieto XML:stä ja sen taustasta eivät kiinnosta vaan haluat päästä saman tien konkreettiseen tekemiseen, hyppää ensimmäinen luku ylitse. Suosittelen kuitenkin XML:n ymmärtämisen kannalta tutustumista myös siihen. Itse aloin perehtyä XML:ään juuri sen mahtipontisten ominaisuuksien tähden webin suhteen, sillä havaitsin itsessäni sangen suurta kiinnostusta internetsivujen tuottamista ja suunnittelua, sekä kehittämistä kohtaan joitakin vuosia taaksepäin ja mm. näitä ominaisuuksia käsitellään ensimmäisessä luvussa. Nautinnollista oppimiseniloa ohjeeni parissa, Henri Haapakanni andree@haapakanni.com

1. JOHDATUS XML:n PARIIN 1.1 Extensible Markup Language XML:ää on kuvailtu webin tärkeimmäksi uudistuksena pitkään aikaan, mutta ensin hieman pohjaksi xml:n taustatietoa. SGML (Standard Generalized Markup Language) on metakieli, joka syntyi niin ohjelmista kuin niiden tekijöistä ja myyjistä riippumattoman datan varastoimisen tarpeesta. SGML:llä kuvataan useita merkkauskieliä, kuten HTML:ää (Hyper Text Markup Language) ja XML:ää + lukuisia muita. SGML määrittely erittelee datan ja merkkauksen. Niin tekee myös XML, jota kutsutaankin SGML:n alijoukoksi, vaikka oikeastaan se on SGML:n sovellus. SGML ja XML ovat kieliä, joilla määritellään merkkauskieliä, joten oikeastaan ei ole olemassakaan XML-dokumenttia, vain XML:llä luotuja merkkauskieliä ja niillä luotuja dokumentteja. Miksi se sitten on luotu, kun olemassa on jo SGML? Koska SGML on liian monimutkainen. No, eikö HTML kävisi? Ei, HTML riittämätön ja valmis merkkauskieli! XML on hyvin joustavaa ja helposti kehitettävää. Merkintäkoodeja voidaan luoda oman tarpeen mukaan tietyillä yleisperiaatteilla, mistä xml on nimensä saanutkin: Extensible Markup Language, laajennettava merkintäkieli. XML:n tehtävä on kuvata merkintäkoodeilla dokumentin rakenne ja merkitys, sekä mitä dokumentissa on eli sisältö. Se ei siis koskaan kuvaa dokumentin muotoilua. Muotoilut voidaan lisätä xml-dokumenttiin tyylipohjien avulla kun taas xml:n kaukainen sukulainen html ilmaisee merkintäkoodeillaan paljon muotoseikkoja ja hädin tuskin ollenkaan dokumentin rakenteellisuutta sisällön merkityksestä puhumattakaan. Näin ollen xml:ää on helppo käsitellä: sisältö on täysin erillään muotoilusta, esimerkiksi sisältöä voidaan vapaasti lisätä omien määriteltyjen merkkaussääntöjen, syntaksin, mukaisesti ja erillinen tyyli hoitaa automaattisesti muotoilun. Luodut merkintäkoodit voidaan syöttää dokumentin tyyppimäärittelyssä (DTD), joka toimii dokumentin syntaksina, joten xml-dokumentin syntaksi voidaan tarkistaa ja validoida toisin kuin html-dokumentti. 1.2 XML:n edut Webin-kehitystyö on helpompaa XML:n laajennettavuuden ansiosta kuin HTML:llä, jolla

tietyt tehtävät ovat mahdottomia. XML-linkitys on tehokas, niin ikään laajennettavuuden ansiosta, sillä voidaan viitata kohteeseen, joka ei ole läsnä dokumentissa ollenkaan, esimerkiksi CD-romppuun tai tietokannan hakutuloksiin. Lisäksi XML:ää voidaan käyttää Webprotokollien ja mekanismien kanssa, ilman lisävaatimuksia. XML tukee myös monenlaisia sovelluksia ja on pidetty silti mahdollisimman yksinkertaisena verrattuna SGML:ään webin yhden huolenaiheen, nopeuden, takia. XML systeemi on harvinaisen yksiselitteistä, joten sen kanssa toimivien ohjelmienkin kehittäminen on melko helppoa. XML-dokumentit ovat maallikollekin suhteellisen selkeitä sen merkkaustavan ansiosta. Ja vaikka XML on tehty koneen koodattavaksi, on XMLdokumentteja helppo luoda käsin, koska voidaan käyttää omia merkkaustunnisteita. Tästä seuraa, että XML joustavaa, helposti luettavaa ja kirjoittavaa, sekä hyvin dokumentoitua. Merkkaamista ja sisällön käsittelyä helpottaa myöskin XML:n kansainvälisyys, se perustuu Unicodeen, joten se selviytyy niin suomenkielen ääkkösistä kuin aasialaisista kielistä ja hepreasta. Lisäksi XML:ää kehitettäessä silmällä on pidetty sähköistä kaupankäyntiä ja uudenlaista jakeluperiaatetta, jossa dokumentin voi koota tietylle hetkelle, tietylle lukijalle ja tietylle medialle useista eridokumentin pätkistä. Ja kun XML-dokumenttiin lisätään dokumentintyyppimääritykset on syntaksin tarkistuskin mahdollista. 1.3 Mitä XML:llä tehdään? Lyhyesti sanottuna XML:llä tehdään XML-sovelluksia, koska jokaista XML-pohjaista merkintäkieltä sanotaan XML-sovellukseksi. Tässä ohjeessani tehdään XML:llä webbisivusto, jota voimme kutsua niin ikään XML-sovellukseksi. XML on merkintäkieli, jolla kehitetään toimiala kohtaisia merkintäkieliä, rakennan siis internetsivusovelluksen, jolla on minun suunnittelema nettisivuja koskeva oma merkintäkielensä, syntaksi ja sanasto, jotka noudattavat XML:n perussääntöjä. Tähän päivään mennessä erilaisia toimiala kohtaisia XML-sovelluksia monia, esimerkiksi matematiikan-, musiikin- ja kirjallisuudenaloilla on omat sovelluksensa. Lisäksi on erilaisia multimedia-, vektorigrafiikka ja päivityssovelluksia. Myös XSL-tyylipohjat ovat XML-

sovelluksia W\\OLSRKMLVWDP\ KHPPLQOXYXVVD. (luvussa 1 epäsuorialainauksia, North ja Hermans 2001: 7-20 ja Harold 2000: 27-39) 2. YKSINKERAISEN XML-DOKUMENTIN RAKENNE 2.1 XML-määritelmä Jokainen xml-dokumentti alkaa xml-määritelmällä. Määritelmään prosessointi merkintöjen välissä seuraavasti: <? PllULWHOPl?> XML-määritelmä kertoo sitä seuraavan tekstin olevan xml:ää ja mikä versio xml:stä on kyseessä. Ainoa tällä hetkellä oleva versio on muotoa 1.0 ja uusia tuskin tulee xml:n laajennettavuuden ja joustavuuden ansiosta. Kuten jo aiemmin mainitsin, toteutan tässä ohjeessani internetsivusovelluksen, jonka aloitan tietenkin tekemällä dokumentilleni xml-määritelmän:.rrgdxv;0/pllulw\v <?xml version= 1.0 encoding= iso-8859-1 standalone= yes?> Määritelmään olen lisännyt encoding attribuutin, joka ilmoittaa mitä koodausta sovellukseni käyttää. ISO-8859-1 merkkivalikoima sisältää ASCII merkit täydennettynä useimmilla Länsi-Euroopan kielten merkeillä, jolloin voin vapaasti käyttää myös suomenkielen ääkkösiä NLHOLVWlOLVllOXYXVVD. Standalone attribuutilla kerron sovellustani käsittelevälle xmlprosessorille xml-dokumenttini olevan yksinään käyttökelpoinen eli dokumenttiini ei toistaiseksi sisälly ulkopuolista merkkausta ulkopuolisissa tiedostoissa WlKlQDVLDDQWXOHHPXXWRV OXYXVVD.

2.2 Juurielementti Jokaisessa xml-dokumentissa tulee olla juurielementti, joka sisältää täysin kaikki dokumentin muut elementit ja sisällön. Ja koska xml sallii minun luoda tarvitsemani merkintäkoodin, nimeän internetsivusovellukseni juurielementin seuraavanlaiseksi: <internetsivusto> PXXWHOHPHQWLWMDVLVlOW </internetsivu> Nimetessä elementtejä on hyvä muistaa xml:n tarkoitus, se kuvaa mm. merkitystä ja sisältöä. Internetsivusto, luomani juurielementin nimenä, kuvaa hyvin koko dokumentin merkitystä ja luo merkityksen myöhemmille lapsielementeille osana internetsivustoa QLPHlPLVHVWlOLVll OXYXVVD 2.3 Lapsielementit Jokainen lapsielementti tulee olla juurielementin sisällä ja, jos juurielementillä on lapsenlapsia tulee niiden sijaita lasten sisällä. Eli jos jokin elementti sisältää muita elementtejä, tarvitsee niiden muiden elementtien olla täysin tämän elementin sisällä. Tästä seuraa, että dokumenttiin syntyy looginen puurakenne, jossa elementit ovat sisäkkäin. Nyt voinkin luoda internetsivulleni perustavaa laatua olevan rakenteen lapsi ja lapsenlapsielementeillä:.rrgdxv,qwhuqhwvlyxvwrqshuxvudnhqqh <?xml version= 1.0 encoding= iso-8859-1 standalone= yes?> <internetsivusto> <info> <kuvaus></kuvaus> <hakusanat></hakusanat> <tekijä> <nimi> <etunimi></etunimi> <sukunimi></sukunimi> </nimi> <yhteystiedot> <kotisivut></kotisivut> <sähköposti></sähköposti> </yhteystiedot> </tekijä>

</info> <sivu> <info> <otsikko></otsikko> </info> <yläbanneri> <kuva></kuva> </yläbanneri> <valikko> <linkki></linkki> <linkki></linkki> <linkki></linkki> </valikko> <sivualue> <teksti></teksti> <kuva></kuva> <teksti> <linkki></linkki> </teksti> </sivualue> <sivubanneri> <mainos></mainos> </sivubanneri> <alabanneri> <kuva></kuva> </alabanneri> </sivu> </internetsivusto Kuten huomaat merkinnät ovat selkeällä suomenkielellä jopa ääkkösten kera parantaen koodaukseni ymmärrettävyyttä. Huomaa, että jokainen käyttämäni elementti on aloitettu ja lopetettu edeltävän elementin sisällä kuten xml vaatii, ja että ilman xml-määritelmän encoding -atribuuttia, xml-prosessori (kuten selain, huono esimerkki ) valittaisi ääkkösistä HOHPHQ WHLVWlMDNLHOLDVHWXNVLVWDOLVllOXYXVVD. 2.4 Attribuutit XML:n attribuutti merkinnät ovat rakenteeltaan samanlaisia kuin html:ssä, ensin attribuutin nimi ja sitten sen arvo määriteltynä elementin alkutunnisteessa. Samannimisiä attribuutteja voidaan käyttää eri elementeissä, koska kukin attribuutti on sidottu omaan elementtiinsä. Elementillä voi olla useita attribuutteja DWWULEXXWHLVWDOLVllOXYXVVD. Lisään tässä vaiheeessa sovellukseeni seuraavanlaiset attribuutit:.rrgdxv$wwulexxwwlhqolvl\vlqwhuqhwvlyxvwrrql <?xml version= 1.0 encoding= iso-8859-1 standalone= yes?> <internetsivusto>

<info> <kuvaus></kuvaus> <hakusanat></hakusanat> <tekijä> <nimi> <etunimi></etunimi> <sukunimi></sukunimi> </nimi> <yhteystiedot> <kotisivut></kotisivut> <sähköposti></sähköposti> </yhteystiedot> </tekijä> </info> <sivu> <info> <otsikko></otsikko> </info> <yläbanneri> <kuva SRONX EDQQHULMSJ ></kuva> </yläbanneri> <valikko> <linkki RVRLWH HWXVLYX[PO ></linkki> <linkki RVRLWH YLHUDVNLUMD[PO ></linkki> <linkki RVRLWH OLQNNLYLQNLW[PO ></linkki> </valikko> <sivualue> <teksti></teksti> <kuva SRONX WLNNXXNNRMSJ ></kuva> <teksti> <linkki RVRLWH KWWSZZZPEQHWIL></linkki> </teksti> </sivualue> <sivubanneri> <mainos> <teksti> </teksti> </mainos> </sivubanneri> <alabanneri> </alabanneri> </sivu> </internetsivusto Attribuutteja ja elementtejä käytettäessä herää usein kysymys, kumpaan käsissä olevan tiedon sijoittaisi. Jos katsot esimerkkistäni, vaikkapa nimi elementtiä ja sen jälkeläisiä etunimi ja sukunimi elementtejä, saatat miettiä miksi en ole päätynyt esimerkiksi seuraavanlaiseen ratkaisuun: <nimi etunimi= Henri sukunimi= Haapakanni /> Niin käyttämäni tapa, jakaa nimi elementti jälkeläisiin, kuin esimerkki ovat täysin oikeinmuodostettuja RLNHDPXRWRLVXXGHVWDOLVllOXYXVVD ja hyvää XML:ää. Mutta attribuuteilla

en saa aikaan rakenteellisuutta, hierarkiaa XML-dokumenttiini, koska attribuuteilla ei voi olla alirakenteita. Elementtejä on myös paljon helpompi laajentaa, mikäli siihen myöhemmin on tarvetta. Elementeillä on myöskin helpompi kuvata dataa tarkemmin ja yksiselitteisemmin, esimerkiksi päivityspäivämäärä, jonka lisään sivustooni sivu -elementin info -elementtiin: <päivitetty> </päivitetty <päivä>06</päivä> <kuukausi>05</kuukausi> <vuosi>2004</vuosi> Kun vertaa yllä olevaa elementtipuuta ja alla olevaan attribuuttiin huomaamme eron: attribuutista ei käy ilmi, onko kyseessä kesäkuun 5. päivä vai toukokuun kuudes päivä, sillä eri kulttuureissa päivä ja kuukausi merkitään toisinpäin. <päivitetty pvm= 06/05/2004 /> Attribuutit ovat kuitenkin hyödyllisiä, silloin kun puhutaan tiedosta, jota käyttäjän ei tarvitse nähdä. Internetsivustossani tällaista dataa on selkeästi linkkien osoite ja kuvien polku, jotka eivät ole oleellista tieto sivustoani selaavalle, joten voin yhtä hyvin sijoittaa sen attribuuttiin. 2.5 Kommentit XML-kommentit ovat samanlaiset kuin HTML:ssä. Ne alkavat <!-- merkistä päättyen --> merkkiin. XML-prosessori ei kiinnitä mitään huomiota kommenttimerkkien väliseen dataan. Suosittelen kommenttien käyttöä erityisesti dokumentin tyyppi määrityksissä, sillä muisti on usein katoava luonnonvara ja kommentit edes auttavat palauttamaan mieleen miksi kukin asia on koodattu niin kuin ne ovat. Kommenteilla on myös helppo etsiä pala palalta virheitä XMLdokumentista. Kommentteja ei kuitenkaan saa sijoittaa elementin tagien tai attribuutin sisään, eikä kommentteja saa käyttää ennen XML-määritystä. Kommentin sisällä ei saa esiintyä -- merkkintää muuten kuin kommentin aloitus ja lopetus merkinnöissä, kommentteja ei siis voi käyttää sisäkkäin.

2.6 CDATA-osuudet CDATA-osuuksia käytetään pelkän merkkimuotoisen tiedon esittämiseen. XML-prosessori käy läpi CDATA-osuuden, mutta ei tulkitse sen sisältöä merkittynä tekstinä. CDATAosuudessa voi siis vapaasti käyttää <,>,& tai merkkejä. CDATA-osuudet ovat seuraavan näköisiä: <![CDATA[ PLWlWDKDQVDPHUNLWW\lWDLPHUNLW QWlWHNVWLl]]> Ainoastaan ]]> merkkijono on kielletty CDATA-osuuden sisällä, sillä se lopettaa ky. osuuden. Esimerkiksi ohjelmointipätkät, joissa usein tarvitaan XML-merkkauksessa tarvittavia merkkejä kuten < tai >, on kätevä sijoittaa CDATA-osuuksiin. 2.7 Prosessointiohjeet XML-sovellus alkaa aina prosessointiohjeella, nimittäin XML-määritys on sellainen. Prosessointi ohje alkaa <? merkillä, jonka jälkeen tulee prosessointiohjeen nimi, kuten XMLmäärityksessä tulee xml. Prosessointiohjeen sisään voi laittaa mitä tahansa ja prosessointiohje päättyy?> -merkkiin, mutta sen nimi tarvitsee noudattaa XML-nimeämissääntöjä. Prosessointiohje on tarkoitettu kohdistettavaksi sovellukselle, joka käsittelee XML-dokumenttia. XMLprosessori ei huomioi prosessointiohjeen sisältöä osaksi dokumentin merkkidataa, mutta toisin kuin CDATA-osuudet, prosessori käy ne lävitse. Prosessointi ohjeisiin on siis kätevä upottaa koodia, esimerkiksi: <?php echo Hello World ;?> 2.8 XML-dokumentin varsinainen informaatiosisältö Merkkaushan tarkoittaa merkkien, jotka jäsentävät ja mahdollistavat tiedon prosessoinnin halutulla tavalla, lisäämistä informaatioon. XML:ssä nämä merkit erottuvat seuraavanlaisesti: -merkin(=tagin=tunnisteen) alkutunnisteen aloittava erotin

-merkin lopputunnisteen aloittava erotin esim. LQWHUQHWVLYXVWR -elementin nimi! -merkin(=tagin=tunnisteen) sulkeva erotin! -tyhjän merkin(=tagin=tunnisteen) sulkeva erotin ja kaikki näillä eroittimilla merkityiden tagien välinen sisältö ja attribuuttien arvot ovat puhdasta informaatiota, tietoa, jolla on merkitys jonkin suhteen. XML varsinaisella sisällöllä ei ole muita rajoituksia kuin, että sisällön tulee sijaita oikeinmuodostettujen tagien tai attribuuttien sisällä. Toisin kuin HTML:ssä, jossa esim. ä ja ö kirjaimet ainakin pitäisi kiertää ä ja ö -merkinnöillä, hoituu tämä XML:ssä kielimäärityksillä NVOXNX 3. MERKKAUS 3.1 Oikeamuotoisuus 3.1.1 Nimeämisen osalta Vaikka XML on joustava luonteeltaan, on sillä tietyt nimeämissäännöt, jotka koskevat niin elementtejä kuin attribuutteja: 1) Nimi koostuu vähintään yhdestä kirjaimesta: a - z tai A - Z 2) Jos nimi koostuu useamasta kuin yhdestä merkistä, se voi alkaa alaviivalla tai kaksoispisteellä. 3) Alkukirjaimen (/merkin) jälkeen voi seurata yksi tai useampia kirjaimia, numeroita, yhdistelmämerkkejä, laajennettuja merkkejä tai huomioitta jätettäviä merkkejä. (kolme viimeistä merkkiluokkaa Unicodea sisältäen erikoismerkkejä) 4) Välilyöntejä elementtien nimissä ei sallita 5) XML erottelee pienet ja isot kirjaimet HTML:stä poiketen. Isot ja pienet kirjaimet eivät siis vastaa toisiaan.

Muita rajoitteita nimeämisessä ei ole. Kannattaa kuitenkin muistaa, että XML:n on tarkoitus kuvata itseään ja nimenomaan sisältämäänsä tietoa käyttäjillekin ymmärrettävässä muodossa. 3.1.2 Elementtien osalta Paitsi että, elementtien tulee olla nimetty oikein liittyy niihin muutama muu sääntö. 1) Aloittavan ja päättävän elementin pitää olla samannimiset. 2) Elementtien kuluu noudattaa järjestyksessään hierarkista puurakennetta NV /DSVLHOHPHQWLW, esimerkiksi: <tagi><elementti></elementti></tagi> <tagi><elementti></tagi></elementti> (oikein) (väärin) 3) Tyhjätkin elementit tulee päättää, esimerkiksi: <kuva polku= kuva.jpg /> tai vastaava <kuva polku= kuva.jpg ></kuva> 3.1.3 Attribuuttien osalta Attribuuteilla on myös omat sääntönsä oikein nimeämisen lisäksi: 1) Attribuuttien arvot on suljettava aina lainausmerkeillä 2) Attribuuttien sisällössä saa olla mitä välimerkkejä tahansa, mutta jos attribuutin arvo sisältää sekä tavallisen lainausmerkkejä ( ) ja heittomerkkejä ( ), täytyy käyttää entiteetti viittauksia (&apos; / "). (QWLWHHWHLVWlOXYXVVD 3) Samalla elementillä ei saa olla kahta tai useampaa samannimistä attribuuttia. 4) Attribuuttien arvot ovat sisällöstä riippumatta merkkijonoja.

3.1.4 Yleiset säännöt 1) XML-määrityksen on oltava ensimmäinen asia tiedostossa. 2) Käytä < ja & vain elementtien ja entiteettien aluissa, ja kierrä ne muulloin entiteetti viittauksilla < ja &. 3.2 Suomeksi, englanniksi, hindiksi vai japaniksi? Kuten jo aiemmin olen maininnut, XML perustuu Unicodeen ja yhtälailla XML-ohjelmistojen pitää tukea Unicodea. Unicoden ansiosta XML selviää kielestä kuin kielestä. Eri alueiden tietokoneet käyttävät kuitenkin erilaisia merkkivalikoimia, joista yleisin on ASCIImerkkivalikoima ( American Standard Code for Information Intercharge ) ja sen lisä joukot. ASCII määrittelee kuitenkin vain 127 merkkiä, joita tarvitaan kirjoitettaessa amerikanenglantia. ISO ( International Standards Organization ) on määritellyt lisää merkkivalikoimia, jotka pohjautuvat ASCII:hin lisäten siihen muissa kielissä tarvittavia merkkejä. Näistä ISO:n merkkivalikoimista meitä koskettaa Latin-1 järjestelmä, jolla voidaan kirjoittaa lähes kaikkia länsieurooppalaisia kieliä mukaan lukien suomi. XML-määritykseni kertookin jo XMLsovellukseni käyttävän Latin-1:stä ( encoding= iso-8859-1 ). XML:llä on omassa käytössään xml:lang attribuutti, jolla määritellään millä kielellä elementin sisältö on kirjoitettu. Tästä attribuutista ei kuitenkaan ole käytännössä hyötyä, jos XMLprosessorit, kuten yleisimmät www-selaimet, eivät osaa käsitellä sitä. Seuraavassa on muutama yleisimmistä kielikoodeista ja maakoodeista, joita xml:lang attribuutti ottaa arvokseen: maakoodi kielikoodi maa - ar arabia CN ch kiina DE de saksa EN en englanti FI fi suomi FR fr ranska JA ja japani RU ru venäjä US en Yhdysvallat

Maakoodi on hyödyllinen esimerkiksi kun kielestä on kahta eri murretta kuten britti- ja Amerikan englanti. Esimerkki maakoodin käytöstä: <teksti xml:lang= fi-fi >Attribuutti kertoo elementin tekstin olevan suomenkieltä</teksti> 4. Kehittyneempi, validoitu XML-dokumentti 4.1 DTD Dokumenttityyppimäärittely Dokumentin tyyppimäärittely ja validointi kulkevat käsi kädessä, tyyppimäärittelyllä tehdään XML-dokumentille mallirakenne ja tämän mallirakenteen avulla voidaan tarkistaa kyseinen XML-dokumentti. Jos dokumentti noudattaa DTD:tä on se validi eli oikeellinen, jolloin dokumentti on oikeinmuodostettu ( ks. luku 3 ) ja noudattaa tyyppimäärittelyään. DTD:llä voidaan kontrolloida XML-dokumentin rakennetta erittäin tarkasti tekemällä niin sanottu tiukka dokumentin tyyppimäärittely. Esimerkiksi jokainen elementti on vaaditussa järjestyksessä, pakolliset attribuutit on asettu ja niiden arvot noudattavat tiettyä tyyppiä. Toisaalta DTD:stä voidaan luoda myöskin hyvin joustava, kaikki voi olla valinnaista ja vapaata, jolloin puhutaan väljästä DTD:stä. DTD asetetaan XML-dokumenttiin dokumentin tyyppiesittelyllä, joka on seuraavanlaista muotoa: <!DOCTYPE W\\SSLPllULWWHO\QQLPL [ W\\SSLPllULWWHO\W ]> Tyyppimäärittelyn nimen täytyy olla sama kuin dokumentin juurielementti. Lisään omaan XML-sovellukseeni tyyppiesittelyn, joka näyttää siis tältä:.rrgdxv,qwhuqhwvlyxvwrqw\\sslhvlwwho\ <!DOCTYPE internetsivusto [ W\\SSLPllULWWHO\WMRWNDOLVllQWlVVlOXYXVVD ]> XML:n Dokumentin tyyppimäärittely ei kuitenkaan ole ihan näin yksinkertainen, se jakautuu kahteen osaan: sisäiseen DTD:n osajoukkoon ja ulkoiseen DTD:n osajoukkoon, jotka yhdessä

muodostavat XML:n DTD:n. Yllä nähtävät esimerkit ovat koskevat DTD:n sisäistä alijoukkoa. Ulkoinen, niin sanottu kehittynyt, DTD lisätään tyyppiesittelyyn myöhemmin entiteettiviittauksilla ( ks. luku 4.4 ). 4.2 Elementit DTD:ssä XML-sovellukseni pitää sisällään seuraavat elementit: internetsivusto, info, kuvaus, hakusanat, tekijä, nimi, etunimi, sukunimi, yhteystiedot, kotisivut, sähköposti, sivu, otsikko, päivitetty, päivä, kuukausi, vuosi, yläbanneri, kuva, valikko, linkki, sivualue, teksti, sivubanneri, mainos, alabanneri. DTD:ssä tarvitaan määrittely jokaiselle näistä elementeistä. Elementti määritellään näin: <!ELEMENT internetsivusto VLVlOW PllULW\NVHW> Elementin määrityksessä annetaan elementille nimi ja määritellään sen sisältö. Sisällönmääritys kertoo tarkalleen mitä elementin sisällä voi olla: toisia elementtejä, dataa tai molempia, seuraavilla avainsanoilla: ANY kertoo, että elementti voi sisältää mitä tahansa elementtejä ja jäsen nettyä merkkimuotoista dataa. #PCDATA sanoo, että elementti pitää sisällään ainoastaan jäsennettyä merkkimuotoista dataa. EMPTY osoittaa, että elementti on tyhjä. Lapsilista on sulkumerkein merkitty lista elementeistä, joita määriteltävänä oleva elementti sisältää, pilkuilla eriteltynä. Listan elementtien järjestys on sitova: XML-sovelluksen elementtien pitää esiintyä juuri tuossa järjestyksessä, johon lapsilistalla on järjestetty. Elementit voidaan erottaa myös pystyviivalla ( ), jolloin on kyse valinnasta: pystyviivan erottamista kahdesta elementistä toista voidaan käyttää määriteltävänä olevan elementin sisällä. Lisäksi sulkumerkkien määrää nos-

tamalla voidaan päätyä hyvin monenlaisiin rakenteisiin, kukin sulkujoukko yhdistää tavallaan useat elementit yhdeksi. Sekamuotoinen sisältö on yhdistelmä merkkimuotoisesta datasta ja elementeistä. Sekamuotoisen sisällön käyttö ei ole suositeltavaa, koska tällöin rakenteen luominen DTD:llä on käytännössä mahdotonta. Sekamuodossa elementeistä ei saada määriteltyä muuta kuin elementtien nimet. Elementtien esiintymisjärjestystä, -kertoja tai esiintyvätkö ne lainkaan, ei voida määrittää, jos niiden rinnalla on merkkimuotoista dataa. DTD:ssä ainoa oikeellinen sekamuodon ratkaisu on seuraavan näköinen: <!ELEMENT ellu1( #PCDATA ellu2 ellu3 ellu4 )*> Merkille pistettävää on, kuinka XML:n DTD:ssä avainsanat ja määreet, kuten ELEMENT, ATTLIST ja ENTITY, kirjoitetaan aina isoilla kirjaimilla. Sisällön määrityksellä voidaan rajata myös elementin esiintymiskertoja lisäämällä lapsilistassa olevan elementin perään jokin seuraavista merkeistä:? -merkki elementin perässä kertoo, että kyseinen elementti esiintyy joko kerran tai ei ollenkaan määriteltävänä olevan elementin sisällä. * -merkki elementin perässä ilmaisee, että kyseinen elementti ei esiinny ollenkaan tai voi esiintyä yhden/lukemattomia kertoja määriteltävänä olevan elementin sisällä. + -merkki elementin perässä osoittaa, että kyseinen elementti esiintyy ainakin kerran tai lukemattomia kertoja määriteltävänä olevan elementin sisällä. Näitä yllä esiteltyjä avainsanoja, sulkujen erottamia lapsilistoja ja merkkejä käyttämällä DTD:stä saa erittäin tiukan, väljän tai jotain siltä väliltä kuvamaan XML-

sovelluksen rakennetta. Alla muutamia esimerkkejä kuinka monipuolisia rakenteita mainituilla määrityksillä saa aikaan. <!ELEMENT ellu1 ( (ellu2 ellu3)* )> - Elementin ellu1 sisällä voi esiintyä vapaasti missä järjestyksessä tahansa ellu2- ja ellu3 -elementtejä. <!ELEMENT ellu1 ( (ellu2,ellu3)+ )> - Elementin ellu1 sisällä esiintyy ainakin kerran elementtipari ellu2, ellu3 tässä järjestyksessä. <!ELEMENT ellu1 ( ellu2, (ellu3 ellu4)*, (ellu5,ellu6)?)> - Elementin ellu1 sisällä esiintyy ensin ellu2, jonka jälkeen missä tahansa järjestyksessä ellu3- ja ellu4 elementtejä, joiden jälkeen voi kerran esiintyä tai olla esiintymättä ellu5, ellu6 pari tässä järjestyksessä. XML-sovellukseni DTD rakentuu elementtien osalta seuraavasti:.rrgdxv,qwhuqhwvlyxvwrq'7' <!DOCTYPE internetsivusto[ <!ELEMENT internetsivusto (info?,sivu+)> <!ELEMENT info ( (kuvaus,hakusanat)?, tekijä+)> <!ELEMENT kuvaus (#PCDATA)> <!ELEMENT hakusanat (#PCDATA)> <!ELEMENT tekijä (nimi?,yhteystiedot?)> <!ELEMENT nimi ( (etunimi,sukunimi)? )> <!ELEMENT etunimi (#PCDATA)> <!ELEMENT sukunimi (#PCDATA)> <!ELEMENT yhteystiedot ( (kotisivut sähköposti)* )> <!ELEMENT kotisivut (#PCDATA)> <!ELEMENT sähköposti (#PCDATA)> <!ELEMENT sivu (info,(yläbanneri, valikko, sivualue, sivubanneri)*,päivämäärä?)> <!ELEMENT info (otsikko, päivitetty?)> <!ELEMENT otsikko (#PCDATA)> <!ELEMENT päivitetty ANY> <!ELEMENT yläbanneri ANY> <!ELEMENT valikko (linkki+)> <!ELEMENT linkki (#PCDATA)> <!ELEMENT sivualue ( (teksti, kuva, linkki)* )> <!ELEMENT teksti (#PCDATA)>

<!ELEMENT kuva (#PCDATA)> <!ELEMENT linkki (#PCDATA)> <!ELEMENT sivubanneri ANY> <!ELEMENT alabanneri ANY> <!ELEMENT päivämäärä ANY> ]> 4.3 Attribuutit ja DTD Siinä missä elementit on oikeellisessa XML-dokumentissa määriteltävä attribuutit seuraavasti: <!ATTLIST HOHPHQWLQQLPLDWWULEXXWLQQLPLDWWULEXXWLQW\\SSL DWWULEXXWLQROHWXVDUYR > Attribuuttien järjestyksellä ei ole väliä ja samalle elementille voidaan määritellä useaankin otteeseen attribuutteja, tosin ensin määritelty attribuuttilista on etusijalla. Jos attribuutille ei ole sopivaa oletusarvoa tai oletusarvoa ei haluta antaa tai oletusarvoa ei anneta muuttaa, voidaan se korvata seuraavilla määreillä: #IMPLIED #FIXED #REQUIRED Kun XML-jäsennin kohtaa elementin, jolle DTD:ssä on määritelty attribuutti, jonka perässä lukee #IMPLIED, ilmoittaa jäsennin XML-sovellukselle tästä ja sovellus toimii parhaalla näkemällään tavalla. XML-sovellus ei anna käyttäjän muuttaa oletusarvo, jonka eteen on DTD:ssä laitettu #FIXED määre. XML-jäsennin pakottaa käyttäjän lisäämään elementtiin attribuutin, jonka perässä on #REQUIRED määre DTD:ssä. Erilaisia attribuuttityyppejä on seuraavanlaisia: CDATA Lueteltu Merkkimuotoista tietoa tekstiä, joka ei sisällä < tai merkkejä, jotka voidaan toki lisätä entiteettiviittauksin. Luettelo mahdollisista arvoista, joista yksi voidaan valita. Esimerkki: <!ATTLIST elementti väri ( sininen valkoinen punainen ) valkoinen >

ID Yksikäsitteinen nimi, joka noudattaa XML:n nimeämissääntöjä ja jota ei ole millään muulla dokumentin ID tyyppisellä attribuutilla. Esimerkki: <!ATTLIST sivu sivunro ID #REQUIRED> IDREF Dokumenttiin kuuluvan toisen elementin ID-tyyppinen attribuutin arvo, jolla luodaan dokumentin kahden elementin välille yhteys. Esimerkki: <?xml version= 1.0 standalone= yes?> <!DOCTYPE sukupuu [ <!ELEMENT sukupuu ( henkilö* )> <!ELEMENT henkilö(#pcdata)> <!ATTLIST henkilö henkilnro ID #REQUIRED isä IDREF #IMPLIED vaimo IDREF #IMPLIED äiti IDREF #IMPLIED> ]> <sukupuu> <henkilö ID= 1 vaimo= 3 >Matti</henkilö> <henkilö ID= 2 isä= 1 äiti= 3 >Maija</henkilö> <henkilö ID= 3 >Tiina</henkilö> </sukupuu> IDREFS Elementtien useita ID:eitä välilyönnein erotetuina. ENTITY DTD:ssä määritellyn entiteetin nimi ( Entiteeteistä kohdassa 5.1 ). Esimerkki: <?xml version= 1.0 standalone= yes?> <!DOCTYPE esimerkki[ <!ELEMENT esimerkki (ääni)> <!ELEMENT ääni EMPTY> <!ATTLIST ääni polku ENTITY #REQUIRED> <!ENTITY biisi SYSTEM its_my_life.wav > ]> <esimerkki> <ääni polku= biisi /> </esimerkki> ENTITIES DTD:ssä määriteltyjen useiden entiteettien nimiä välilyönnein erotettuna. Toimii muuten samoin kuin ENTITY.

NMTOKEN NMTOKENS NOTATION XML-nimi, attribuutin arvo on oikeellinen XML-nimi nimeämissääntöjen mukaisesti, jotka aiemmin kerroin luvussa 3.1.1. NMTOKENISTA on hyötyä, kun ohjelmointikielillä käsitellään XML-tietoja, koska XML-nimeämissäännöt ovat likipitäen samat monien ohjelmointikielien nimeämisen suhteen. Esimerkiksi kun attribuutilla on DTD:ssä NMTOKEN määre, ei attribuutin arvossa dokumentissa saa olla välilyöntejä. Useita XML-nimiä välilyönnein erotettuina. Sama periaate kuin NMTOKENISSA. Dokumentin attribuutti hyväksyy arvokseen vain DTD:ssä määritellyn merkintätavan nimen, jos tämä määre on attribuuttimäärittelyssä. Notaatioista lisää lyhyesti kohdassa 5.2. ( Attribuuttityypeistä epäsuoria lainauksia, Harold 2000: 304-310 ) Oma XML-sovellukseni saa seuraavat attribuuttimääritykset:.rrgdxv,qwhuqhwvlyxvwrqdwwulexxwlw <!ATTLIST linkki osoite CDATA #REQUIRED> <!ATTLIST kuva polku CDATA #REQUIRED> <!ATTLIST päivämäärä tyyppi (php javascript java perl) #REQUIRED> 5. Kehittyneet XML-dokumentit 5.1 Entiteetit 5.1.1 Entiteeteistä yleisesti Tämä luku käsittelee oikeastaan pelkästään entiteettejä, koska entiteetit ovat XML:n perustekijöitä. Entiteettien tärkeys tulee esiin, kun määritellään miten XML-prosessori käsittelee XML-koodia, esimerkiksi luomaani internetsivusovellusta. Entiteetit on helppo käsittää muis-

tiyksikköinä, virallisesti säilytysobjekti. Se voi olla elementti tai ENTITY objekti (usein ulkoinen tiedosto). Olen jo alusta saakka käyttänyt internetsovelluksessani entiteettiä: dokumenttientiteettiä, toisin sanoen juurientiteettiä, joka pitää sisällään niin sanotut loogiset elementit. Entiteetit viittaavat usein toisiin entiteetteihin ja edelleen uusiin entiteetteihin ja sisällyttää niitä sitten osaksi XML-dokumenttiin kuin ne olisivat siinä alun perin olleetkin riippuen identifioinnista ja onko entiteetissä XML-koodia. Aiemmin olen maininnut entiteetit esimerkiksi kierrettäessä XML-merkintöjä oikeinnimeämisessä luvussa 3.1.1. Kirjoitettaessa merkkit: <, >,,, & entiteettiviittauksin <, >, ", &apos; ja & puhutaan XML:n ennalta määritetyistä ja sisäisistä entiteeteistä. XML-entiteetit voivat sisältää melkein mitä tahansa, merkkejä, XML-koodia, HTML:ää, tekstiä, ääntä ja kuvaa. Ilman kehittynyttä mekanismia nimeltään nimiavaruudet entiteettien kanssa saattaisi tulla ongelmia. Kuvittele entiteettien ketjua, jotka viittaavat toinen toisiinsa sisältäen lisää XML-koodia lisäten sen alkuperäiseen XML-dokumenttiin. Jokin niistä saattaisi luoda päällekkäisiä entiteettinimiä juuren kanssa jolloin sovelluksen täytyy havaita niiden erot. Nimiavaruuksista puhuttaessa ollaan kuitenkin niin syvällä XML:ssä, että päädyin tutkimaan yksinkertaisemmasta päästä entiteettien hyödyntämistä. 5.1.2 Sisäiset entiteetit Sisäisiä entiteettejä on kahdenlaisia, yleisentiteettejä ja parametrientiteettejä. Yleisentiteetit ovat yksinkertaisesti nimi-arvo pari, jota entiteetin nimellä kutsuttaessa saadaan dokumentissa arvoksi talletettu merkkidata haluttuun kohtaan dokumenttia. Esimerkiksi usein toistuvat tekstin pätkät on helppo määrittää entiteetiksi ja kutsua se sitten tarvittaessa entiteettiviittauksella osaksi dokumenttia. Sisäiset yleisentiteetit määritellään DTD:ssä, mutta niihin ei missään nimessä saa viitata DTD:ssä. Entiteetin määrittely on muotoa <!ENTITY QLPL WHNVWLQSlWNl > ja viittaus dokumentissa muotoa &QLPL;. Esimerkki: <?xml version= 1.0 standalone= yes?> <!DOCTYPE esimerkki [ <!ENTITY autoni Opel Vectra 2.0 CD > <!ELEMENT esimerkki (auto)> <!ELEMENT auto (#PCDATA)> ]> <esimerkki> <auto>&autoni;</auto> </esimerkki> (VLPHUNLNVLVHODLQQl\WWllQ\W DXWRQLHQWLWHHWWLYLLWWDXNVHQWLODOODWHNVWLQ2SHO9HFWUD&'