XML gida

No profile photo programatzen | 2007-05-16 13:15

XML, etiketen lenguaia edagarria (eXtensible Markup Lenguage) World Wide Web Consortiumek (W3C) garatutako etiketen metalenguaia edagarri bat da. Ez da lenguaia partikular bat HTML izan daitekeen bezala, behar jakin batzuetara moldatzeko lenguaiak definitzeko era bat baizik, hau da, lenguaiak definitzeko lenguaia bat. Berau osatzen duten elementuek beraien edukiari buruzko informazioa eman dezakete, ez dute zerbat beraien egitura fisiko edo aurkezpenaren buruzkoa eman behar HTMLan bezala.

XMLa ez da Internetera aplikatzeko sortu, plataforma ezberdinen arteko informazioaren elkartrukerako maila baxuko lenguaia (aplikazioaren mailan, ez programazioarenean) gisa baizik. Datu baseetan, textu editoreetan, kalkulu orrietan eta pentsa dezakegun edozein aplikazio motetan erabil daiteke.

EGITURA


XML dokumentu batek bi egitura ditu, bata logikoa eta beste fisikoa. Fisikoki, dokumentua entitate izeneko unitateetan banatuta dago, dokumentu bakoitza "erroa" (root) izeneko entitate batekin hasten delarik. Entitate batek beste bati erreferentzia egin diezaioke, hau dokumentura gehitzen delarik. Logikoki, dokumentua deklarazioz, elementuz, komentarioz, karaktereen erreferentziez eta prozesamentu aginduez osatuta dago, bakoitzak bere marka duelarik. Bi egitura hauek, fisikoak eta logikoa, era egokian etorri behar dute bat.

XML dokumentuak bi taldetan banatzen dira, ongi eratuak eta baliozkoak.

    * Ongi eratuak: DTD batean (Documente Type Definition) finkatatutako elementuen menpe egon gabe erregela sintaktikoei buruzko espezifikazio guztiak betetzen dituzten dokumentuei deritze.

    * Baliozkoak: ongi eratuta egoteaz gain, DTD batek determinatutako egitura eta semantika bat jarraitu behar dute.


Hona hemen adibide errez bat:

    <?xml version=" 1.0 " encoding=" UTF-8 " standalone= " yes "?>
    <fitxa>
    <Izena> Itxaso </Izena>
    <abizena> Goitia </abizen>
    <helbidea> Aker kalea, 17 </helbidea>
    </fitxa>



Ikus leen lerroa. Lerro honetatik aurrera dagoen kodea XML dela adierazten du. Aukerazkoa den arren, sartzea gomendatzen da. Atributu ugari izan ditzake, batzuk nahitaezkoak eta besteak ez:


    * version: dokumentuan erabilitako XMLaren bertsioa adierazten du. Nahitaez jarri behar da, iada adierazten zuen beste dokumentu baten kanpo dokumentu bat ez bada behintzat.

    * encoding: dokumentua kodifikatu den era. Defektuz UTF-8 da, baina besteren bat jarri daiteke, UTF-16, US-ASCII, ISO-8859-1, ... Ez da nahitaezkoa, kanpo dokumentu bat ez den bitartea.

    * standalone: dokumentua DTD batekin ("no") edo gabe ("yes") datorren adierazten du. Berez ez dago jarri beharrik, DTDa behar denean adierazten bait da geroago.

"Dokumentu mota deklarazioaan" ze dokumentu mota sortzen hari garen definitzen du, behar den bezala prozesatzeko. Hau da, gure XMLko datuak ze dokumentu mota deklaraziok (DTD) balidatu eta definitzen dituen adierazten dugu. Bertan dokumentu mota eta bere DTD non aurkitu adieratzen da, honakoen bidez:

    * Identifikatzaile publiko bat (PUBLIC): DTDra erreferentzia egiten duena.

    * Errekurtsoen identifikatzaile unibertsala (URI): SYSTEM hitza aurretik duela.


Adibideak:

    <!DOCTYPE MESAJE SYSTEM "message.dtd">

    <!DOCTYPE HTML PUBLIC "-/ /W3C/ /DTD HTML 3.2 Final/ /EN">

    <!DOCTYPE LABEL SYSTEM "http://www.blogak.com/programatzen/dtds/label.dtd">


ONGI ERATUTAKO XML DOKUMENTUAK


XML dokumentu bat produkzioareko XML espezifikazioekin bat baldin badator bat ongi eratuta dagoela esaten da, honakoa bete behar duelarik:


Elementuen egitura hierarkikoa

Elementuak mugatzen dituzten etiketei dagokienez, XML dokumentuak egitura hierarkiko zorrotz bat jarraitu behar dute. Etiketa bat beste baten "barruan" egon behar du, eta aldi berean, edukia duten elementu guztiak egoki itxita egon behar dute. Ondoren, adibide ezegoki bat eta ondo idatzita dagoen bat:


    <li>HTMLk <b> honakoa <i> uzten du</b> </i>.

    <li>XMLn <b> egitura<i> es </i> hierarkikoa da</b>.</li>



Etiketa hutsak

HTML eduki gabeko elementuak onartzen ditu. XMLk baita, baina etiketak honako forma eduki behar du <elementu hutsa/>. Ondoren, adibide ezegoki bat eta ondo idatzita dagoen bat:

    <li>Hau HTML da <br> lasaikeria hutsa </li>

    <li>XML <br/> zorrotzagoa da</li>



Erro elementu bakarra

XML dokumentuek erro elementu bakarra onartzen dute, gainontzekoak bere zati direlarik.


Atributuen balioak

Atributuen balio guztiak kakots bakar (') edo bikoitzen (") hartean joan behar dute beti. Ondoren, adibide ezegoki bat eta ondo idatzita dagoen bat:


    <a HREF=http://www.blogak.com/programatzen>

    <a HREF="http://www.blogak.com/programatzen">



Letra motak, espazio zuriak

XMLk erabiltzen den letra mota nabaritzen du, hau da, letra xehe eta larriak karaktere ezberdin bezala tratatzen ditu. Horrela, "FITXA", "Fitxa", "fitxa" eta "fiTXa" elementu ezberdinak lirateke.


"Espazio zuriak" izeneko karaktere multzo bat ere bada, XML prozesagailuek markaketan ezberdin tratatzen dituztenak. Karaketere hauek espazioak, tabulatzaileak, return-ak eta lerro jauziak dira. XML 1.0 espezifikazioak "espazio zuri" hauen erabilera ahalbidetzen du kodea ulergarriago egiteko, nahiz eta prosegailuek ez dituzten kontutan hartuko.


Elementuak izendatzen

XML erabiltzean, beharrezkoa da estrukturei, elementu motei, entitateei, etab... izenak esleitzea. XMLn izenek ezaugarri amankomun batzu dituzte.

Ezin da "xml", "xML", "XML" edo beste edozein aldaeraz hasten den izenik sortu. Letrak eta marrak izenaren edozein zatitan erabil daitezke. Digituak, marratxoak eta puntuak ere erabil daitzeko, baina ezin dute izenaren lehen karakterea izan. Gainontzeko karaktereak, espazio zuriak edo beste hainbat sinbolo, ezin dira erabili.


Markaketa eta datuak

Etiketen "eraikinei", entitateen erreferentziei eta deklarazioei "markak" deritze.  XML prozesagailuak itxaroten dituen dokumentuaren zatiak dira. Marken artean dagoen gainontzeko guztia pertsonentzat ulergarri diren datuak dira.

Erreza da XML dokumentu batean markak antzematea. "<" hasi eta ">" amaitzen diren edota (entitate erreferentzia diren kasuan) "&" hasi eta ";" amaitzen diren kode zatia dira.


ELEMENTUAK


XML elementuak edukia izan dezakete (elementu gehiago, karaktereak, edo biak) edo hutsak izan daitezke. Edukidun adibide bat:

    <izena>Itxaso Arrillaga</izena>
    <mezua mota="deialdia" larritasuna="handia">Etorri hadi segituan hona</mezua>


Beti <etiketa> batekin hasi beharra dago, atributuak eduki ditzazkena (edo ez), eta izen bereko </etiketa> batekin amaitu. HTMLn ez bezala, XML elementu bat itxi beharra dago nahitaez. "<" sinboloa XML etiketa baten hasiera bezala interpretatuko da beti. Ez bada horrela, dokumentua ez da ondo eratuta egongo.

Aldiz, elementu huts bat, edukirik gabekoa, honakoa litzateke:

    <identifikatzailea NAN="12345678"/>
    <lerro-horizontala/>


Ez edukirik ez itxiera etiketik duenez, <etiketa/> forma erabiltzen da, atributuak eduki ditzazkena (edo ez). HTMLn <hr> edo <img src="..."> bezalako etiketa hutsak onartuta dauden arren, ondo eratutako XML dokumentu batean <hr/> edo <img src="..."/> erabili beharko litzateke.


ATRIBUTUAK


Lehenago aipatu den bezala, elementuek atributuak eduki ditzakete, ezaugarriak eta propietateak gehitzeko modu bat direlarik. Adibidez, "liburu" elementu batek "mota" eta "kalitatea" atributuak eduki ditzake, "beldurrezkoa" eta "ederra" balioekin.

    <liburu mota="beldurrezkoa" kalitatea="exkaxa">The Very Old Folks, H.P. Lovecraft</liburu>

Dokumentu Mota Deklarazio baten, elementu mota bakoitzak eduki ditzakeen atributuak zeazten dira, baita bere balioak eta balio mota posibleak ere.

Batzuetan, edukidun elementu bat atributudun elementu huts bezala modelatu daiteke:

    <zakurra><izena>Printzesa</izena><arraza>Bulldog frantziarra</arraza></zakurra>

    <zakurra arraza="Bulldog frantziarra">Printzesa</zakurra>

    <zakurra arraza="Bulldog franziarra" izena="Printzesa"/>



AURREZ DEFINITUTAKO ENTITATEAK


XML 1.0n karaktere bereziak errepresentatzeko bost entitate definitzen dira, XML prozesagailuak markaketa bezala interpretatuko ez dituztenak. Horrela, "<" karakterea erabili dezakegu, XML etiketa bat bezala interpretatua izan gabe.

Entitatea Karakterea
&amp; &
&lt; <
&gt; >
&apos; '
&quot;
"


CDATA ATALAK


Bada XMLn egitura bat XML markaketa bezala interpretatu gabe edozein karaktere erabilita datuak espezifikatzea ahalbidetzen duena. CDATA (Character DATA) izeneko egitura honen arrazoia askotan XML garatzaileek askotan dokumentuak entitate kodeak deszifratzen ibili gabe irakurri behar izaten dutela da. Adibide gisa, ikusi ondokoa (lehen aurrez definitutako entitatea erabiliz eta gero CDATA bloke batekin):

    <parrafoa>Hurrengoa HTML adibide bat da.</html>
    <adibidea>
    &lt;html>
    &lt;head>&lt;title>Rock &amp; Roll&lt;/title>&lt;/head>
    </adibidea>



    <adibidea>
    <![CDATA[
    <html>
    <head><title>Rock & Roll</title></head>
    ] ]>
    </adibidea>


CDATA sekzioaren barnean edozer gauza ipini dezakegu, textu soil gisa interpretatua izango bait da. "] ]>" katea da salbuespen bakarra, CDATA blokearen amaiera adierazten bait du.


KOMENTARIOAK


Batzuetan komentarioak txertatu behar izaten dira XML dokumentuetan, informazioaren prozesagailuak eta dokumentuaren erreprodukzioak kontutan hartuko ez dituztenak. HTML bezala idaztem dira, "<!--" hasi eta "-->" bukatu.


DOCUMENT TYPE DEFINITION (DTD)


Dokumentu mota definizio (DTD) bat sortzea, aplikazio jakin batetarako gure markaketa leguaia propios sortzea bezala da. Adibidez, bisita txartel bat definitzen duen DTD bat eduki dezakegu. DTD hau oinarri gisa harturik, txartelak definitzea ahalbidetuko diguten XML elementu sorta bat edukiko genuke.

DTDak elementu motak, atributuak eta baimendutako entitatea definitzen ditu, eta hauek konbinatzeko mugak adierazi ditzake.

Bere DTDra doitzen diren dokumentuak "baliozkoak" deitzen dira. "Baliotasun" kontzeptuak ez du zerikusirik "ondo eratuta" egotearekin. "Ondo eratutako" dokumentu batek XML espezifikazioaren egitura eta sintaxia errespetatzen du soilik. "Ondo eratutako" dokumentu bat "baliozkoa" izan daiteke DTD jakin baten arauak jarraitzen baditu. Badaude DTD atxikituta ez duten XML dokumenturik, "ez baliozkoak" izango liratekenak.

DTD bat kanpo fitxategi batean egon daiteke, agian dokumentu askok elkartrukatua. XML dokumentuan bertan ere egon daiteke, bere dokumentu mota deklarazioko kide.

Ikus ondorengo adibidea:

    <! DOCTYPE etiketa[
    <!ELEMENT etiketa (izena, kalea, herria, kodea)>
    <!ELEMENT izena (#PCDATA)>
    <!ELEMENT kalea (#PCDATA)>
    <!ELEMENT herria (#PCDATA)>
    <!ELEMENT kodea (#PCDATA)>
    ]>


    <etiketa>
    <izena>Uraitz Zabala</izena>
    <kalea>Zintzarri kalea, 23</kalea>
    <herria>Durango</herria>
    <kodea>12345</kodea>
    </etiketa>



Dokumentu mota deklarazioa lehen lerroan hasten da eta "]>" katearekin amaitzen. DTD deklarazioak "<!ELEMENT" katearekin hasten diren lerroak dira, elementu mota deklarazioak deitzen direlarik. Atributuak, entitateak eta DTD batetarako oharrak ere deklaratu daitezke.

Aurreko adibidean, DTD deklarazio guztiak dokumentuaren barnean daude, baina posible da DTDa beste batean definitzea (osoa edo zati bat). Adb.:


    <?xml version="1.0"?>
    <!DOCTYPE coche SYSTEM "http://www.autoak.com/dtd/autoa.dtd">
    <autoa>
    <modeloa>...</modeloa>
    ...
    </autoa>



ELEMENTU MOTA DEKLARAZIOAK


Elementuak XML marken oinarri dira, eta baliozko bezala kontutan hartzeko, DTD batean deklaratutako dokumentu mota batetara doitu behar du.

Dokumento mota deklarazioak "<!ELEMENT" kate batekin hasi behar dute, deklaratzen den elementuaren identifikatzailea jarraian jarriko delarik. Ondoren edukiaren espezifikazioa bat dute. Adb.:

    <!ELEMENT albiste (izenburua, sarrera, gorputza)>

Adibide honetan, <albiste> elementuak <izenburua>, <sarrera> eta <gorputza> elementuak ditu bere baitan, hauek ere DTDan definituak egongo direlarik eta barnean elementu geiago eduki ahal dituztelarik. Adibideko elementuaren definizioa jarrituz, honakoa izango litzateke baliozko XML dokumentua:

    <albiste>
    <izenburua>...</izenburua>
    <sarrera>...</sarrera>
    <gorputza>...</gorputza>
    </albiste>


    Baina hau ez:

    <albiste>
    <paragrafoa>Ez dakit zer egiten dudan hemen</paragrafoa>
    <izenburua>...</izenburua>
    <sarrera>...</sarrera>
    <gorputza>...</gorputza>
    </albiste>



Edukiaren espezifikaizoa lau motatakoa izan daiteke:

EMPTY

Posible da edukirik ez edukitzea. Atributuetarako erabili ohi da.

    <!ELEMENT lerroa EMPTY>

ANY

Edozein eduki eduki dezake (apur bat erredundantea, badakit). Ez da erabiltzen normalean, gure XML dokumentuak egoki estrukturatu behar bait dira.

    <!ELEMENT denetik_zerbait ANY>

Mixed

Dato motako karaktereak edo eduki nahasiaren espezifikazioan espezifikatutako azpi-elementuen eta karaktereen arteko nahasketa bat izan daiteke.

    <!ELEMENT garrantzia (#PCDATA)>
    <!ELEMENT paragrafoa (#PCDATA|garrantzia)>


Adibidean definitutako lehen elementuak (<garrantzia>), (#PCDATA) motako datuak eduki ditzake. Bigarrenak (<paragrafoa>) bai (#PCDATA) motako datuak bai <enfasis> motaren azpi-elementuak eduki ditzake.

Element

Edukiaren espezifikazioan espezifikatutako azpi-elementuak bakarrik eduki ditzake.

    <!ELEMENT mezua (nork, nori, textua)>


EDUKIAREN EREDUAK


Eredu bat onartutako azpi-elementuak eta hauen ordena ezartzen dituen eredu bat da. Eredu soil batek azpi-elementu bakar bat eduki dezake:

    <!ELEMENT mezu (paragrafo)>    

Honen arabera, <mezu> elementuak <paragrafo> bakar bat eduki dezake.

        <!ELEMENT mezu (izenburu,paragrafo)>

Komak sekuentzia adierazten du. <mezu> elementuak <izenburu> bat eduki behar du eta jarraian <paragrafo> bat.

    <!ELEMENT mezu (paragrafo | irudi)>

Makila bertikala aukera adierazten du. Hau da, <mezu>k elementuak <paragrafo> edo <irudi> bat eduki dezake. Bi aukera soilik daude eta parentesiak erabiliz multzokatu daitezke.

    <!ELEMENT mezu (izenburu, (paragrafo | irudi))>

Azken adibide honetan, <mezu> elementuak <izenburu> bat eduki beharra du eta ondoren <paragrafo> edo <irudi> bat.

Gainera, edukiko elementu bakoitzak frekuentzia adierazle bat eduki dezake:

Frekuentzia adierazleak

? aukerazkoa (0 edo 1 aldiz)
* aukerazkoa eta errepikagarria (0 aldiz edo gehiago)
+ beharrezkoa eta errepikagarria (behin aldiz edo gehiago)


    <!ELEMENT mezu(izenburu?, (paragrafo+, irudi)*)>

Adibide honetan, <mezu> elementuak <izenburu> eduki dezake edo ez (izatekotan bakarra), eta <paragrafo><irudi>, <paragrafo><paragrafo><irudi>... talde ugari eduki ditzake.


ATRIBUTUEN ZERRENDAREN DEKLARAZIOAK


Atributuek dokumentu bateko elementuei informazio gehigarria txertatzea ahalbidetzen dute. Elementuen eta atributuen arteko ezberdintasun nagusia atributu batek ezin duela azpi-atributurik eduki da. Informazio labur, soil eta desegituratua txertatzeko erabiltzen dira.

    <mezu garrantzia="handia">
    <nork>Izaro Sarasola</nork>
    <nori>John Brown</nori>
    <textua hizkuntza="ingelesa">
    Hello John, how are you going?
    ...
    </textua>
    </mezua>

    
Beste ezerdintasun bat, atributu bakoitza behin bakarrik espezifikatu ahal daitekela da, edozein ordenetan. Aurreko adibidean, <mezu> eta <textua> elementuen atributu zerrenda deklaratzeko honakoa egingo genuke:

    <!ELEMENT mezu (nork, nori, textua)>
    <!ATTLIST mezu garrantzia (normala | handia) normala>
    <!ELEMENT textua (#PCDATA)>
    <!ATTLIST textua hizkuntza CDATA #REQUIRED>


Atributuen deklarazioak "<!ATTLIST" katearekin hasten dira, ondoren atributua aplikatzen zaion elementuaren identifikatzailea etorriko delarik. Gero atributuaren izena, mota eta defektuzko balorea dator. Adibideko "garrantzia" atributuak "normala" edo "handia" balioak eduki ditzake, baina defektuzk balioa "normala" izango du ez badugu atributua zehazten. "hizkuntza" atributua "textua"rena da eta CDTA motako datuak eduki ditzazke. #REQUIRED hitzak ez duela defektuzko baliorik esan nahi du, atributu hau zehaztea nahitaezkoa bait da.


ATRIBUTU MOTAK


CDATA eta NMTOKEN atributuak

CDATA (Character DATA) atributuak dira soilenak, ia edozein gauza eduki ditzakete. NMTOKEN (NaMe TOKEN) atributuak antzekoak dira, baina gauzak izendatzeko karaktereak soilik (letrak, zenbakiak, puntuak, gidoiak, azpimarratuak eta bi puntuak) onartzen ditu.

    <!ATTLIST mezu eguna CDATA #REQUIRED>
    <mezu eguna="2007ko maiatzaren 14a"> <!ATTLIST mezu eguna NMTOKEN #REQUIRED>
    <mezu eguna="2007-5-14">



Atributu zenbakituak eta oharrak

Atributu zenbakituak balioa aukera kopuru murriztu batekoa dutenak dira.

    <!ATTLIST mezu garrantzia(normala | handia) normala>

Bada antzeko beste atributu bat, oharra izenekoa (NOTATION). Atributu mota honek egileari bere balioa deklaratutako ohar batetara doitzen dela deklaratzea ahalbidetzen dio.

    <!ATTLIST mezu eguna NOTATION (ISO-DATE | EUROPEAN-DATE) #REQUIRED>

Oharrak deklaratzeko "<!NOTATION" erabiltzen da oharraren kanpo definizio gisa.

    <!NOTATION HTML SYSTEM "http://www.w3.org/Markup">
    <!NOTATION HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">



ID eta IDREF atributuak

ID motak mota jakin batek izen bakar bat edukitzea ahalbidtzen du, IDREF motako beste elementu baten atributuak erreferentziatu ahalko duena. Adibidez, dokumentu bateko esteka sistema soil bat inplementatzeko:

    <!ELEMENT esteka EMPTY>
    <!ATTLIST esteka helburua IDREF #REQUIRED>
    <!ELEMENT atala (paragrafoa)*>
    <!ATTLIST atala erreferentzia ID #IMPLIED>


Kasu honetan, <esteka helburua="3-sekzioa"> etiketak <atala erreferentzia="3-sekzioa"> etiketari egingo lioke erreferentzia, XML prozesagailuak esteka bilakatuko lukelarik.


ENTITATEEN DEKLARAZIOA


XMLk entitaeen bidez sintaktikoki XML erregelen arabera aztertu behar ez diren objetuei (fitxategia, web orriak, irudia,...) egiten die erreferentzia. "<!ENTITY" erabiliz deklaratzen dira DTDan. Entitate bat texto batzuen forma labur gisa erabiltzen den laburdura soil bat izan daiteke. Entitate honetara erreferentzia egitean, analizatzaile sintaktikoak erreferentzia edukiagatik ordezkatzen du. Beste kasu batzuetan erreferentzia  kanpo edo barneko objetu batera da.

Entitateak honakoak izan daitezke:
    
    * Barnekoak edo Kanpokoak
    * Aztertuak edo Ez aztertuak
    * Orokorrak edo Parametroak


Barne entitate orokorrak

Soilenak dira. XML dokumentuaren DTDaren zatian definitutako laburdurak dira. Erreferentzia edukiagatik aldatua izan ondoren, XML dokumentuaren zati izatera pasatzen dira eta honela aztertzen du XML prozesagailuak.

    <!DOCTYPE textua [
    <!ENTITY Mikelen "munduko baburik handienaren">
    ]>

    <textua><izenburua>Egun bat &Mikelen bizitzan</izenburua></textua>



Aztertutako kanpo entitate orokorrak

Kanpo entitateek beraien edukia sistemako beste edozein tokitatik ateratzen dute (disko gogorretik, web orri batetik, datu base batetik...). SYSTEM hitzaren bitartez egiten da erreferentzia edukiari, URI (Universal Resource Identifier) bat ondoren ipiniz.

    <!ENTITY intro SYSTEM "http://www.nerezerbitzaria.com/sarrera.xml">


Entitate ez aztertuak

Entitatearen edukia MPG artxibo bat, GIF irudi bat edo EXE exekutagarri bat bada, XML prozesagailuak ez luke XML textua balitz bezala interpretatzen saiatu behar. Entitate mota hauek beti orokorrak eta kanpokoak dira.

    <!ENTITY logo SYSTEM "http://www.nerezerbitzaria.com/logo.xml">


Barneko eta kanpoko parametro entitateak

Parametro entitate gisa DTDan bakarrik (ez XML dokumentuan) erabil daitezkeen entitateei deritze. Asko errepikatzen diren DTDko elementu batzu taldekatzeko erabil daitezke. "%" sinboloa erabiltzen da, entitate orokorretako "&"ren ordez.

    <!DOCTYPE textua [
    <!ENTITY % elementua-Mikelen "<!ELEMENT ALF (#PCDATA)>">
    ...
    %elementua-Mikelen;
    ]>


Kanpokoa ere izan daiteke:

    <!DOCTYPE textua [
    <!ENTITY % elementua-Mikelen;SYSTEM "Mikelen.ent">
    ...
    %elementua-Mikelen;
    ]>



DTD ADIBIDEAK


Ondoren, posta helbideen datu base baten markaketa lenguaia definitzen duen DTD baten adibidea ikusiko dugu.

ZERRENDA.DTD fitxategia horrelako zerbait izango litzateke:

    <?xml encoding="UTF-8"?>
    <!ELEMENT zerrenda (pertsona)+>
    <!ELEMENT pertsona (izena, email*, erlazioa?)>
    <!ATTLIST pertsona id ID #REQUIRED>
    <!ATTLIST pertsona sexua (gizonezkoa | emakumezkoa) #IMPLIED>
    <!ELEMENT izena (#PCDATA)>
    <!ELEMENT email (#PCDATA)>
    <!ELEMENT erlazioa EMPTY>
    <!ATTLIST erlazioa lagunak IDREFS #IMPLIED
    etsaiak IDREFS #IMPLID>


DTD honetan oinarrituta, gure zerrenda XML bidez honela idatziko genuke:

    <?xml version="1.0"?>
    <!DOCTYPE listin SYSTEM "zerrenda.dtd">
    <zerrenda>

    <pertsona sexua="emakumezkoa" id="Eki">
    <nombre>Ekiñe Garmendia</nombre>
    <email>mutturgorri@euskalerria.org</email>
    <erlazioa lagunak="Iñaki">
    </pertsona>

    <pertsona sexua="gizonezkoa" id="Iñaki">
    <nombre>Iñaki Leunda</nombre>
    <email>iLeunda@euskalerria.org</email>
    </pertsona>

    </zerrenda>



Utzi iruzkina: