Document Type Definition: razlika između inačica

Prijeđi na navigaciju Prijeđi na pretraživanje
m
Uklonjena promjena suradnika 80.80.48.84, vraćeno na zadnju inačicu suradnika Luckas-bot
No edit summary
m (Uklonjena promjena suradnika 80.80.48.84, vraćeno na zadnju inačicu suradnika Luckas-bot)
'''DTD''' (Document Type Definition) je stariji način određivanja pravila strukture XML dokumenta. U zaglavlju [[XML]] dokumenta navodi se oznaka DTDa prema pravilima kojeg je dokument formatiran. Za vrijeme kreiranja XML dokumenta, kreator koristi DTD kako bi formirao XML dokument prema odgovarajućim pravilima. Svaki korisnik tog XML dokumenta koristeći odgovarajući DTD zna na ispravan način interpretirati sadržaj XML dokumenta. Također primjenom pravila iz DTDa osoba koja kreira novi XML dokument može provjeriti da li ga je na ispravan način formirala.
Nika Turković (Zagreb, 7. lipnja 1995.), mlada hrvatska pjevačica, koja je predstavljala Hrvatsku na Dječjoj pjesmi Eurovizije 2004. godine.
 
Glazbom se Nika počela baviti sa četiri godine. Prije pojavljivanja na Dječjoj pjesmi Eurovizije, sudjelovala je u nekoliko poznatih TV emisija. Usprkos prehladi i blagom strahu, odvažnu Niku to nije pokolebalo, te je na Euroviziji s pjesmom "Hej, mali" zauzela treće mjesto.
 
Nika polazi osnovnu školu "Antun Gustav Matoš", koju je polazio i Dino Jelusić.
== DTD formatiranje ==
Pored hrvatskog, Nika tečno govori i talijanski, slovenski i engleski, a uči i španjolski. Prva joj je pjesma "Mjesec i zvijezde" ("The Moon and The Stars").
DTD formatiranje se odvija na slijedeći način:
Nika je poslije uspjeha na Dječjoj pjesmi Eurovizije snimila CD "Stranac", na kojem se nalaze dueti s Tonyjem Cetinskim i Oliverom Dragojevićem.
# definira se skup elemenata
Njezin album pod nazivom "Alien" (eng. izvanzemaljac, svemirac) sadrži 15 pjesama, među kojima su i "Putujem", "Hej, mali", "Alien", "I can see", "Ja mogu.. sve!" (brza verzija), "Ja mogu.. sve!" (spora verzija), pjesma na španjolskom s Oliverom Dragojevićem, "Sjaj, zvjezdani sjaj", "Zamisli", "Sve je u redu"... Pjesme "Hej, mali" i "Zamisli" su prevedene na engleski jezik i također se nalaze na tom albumu.
# definira se sadržaj svakog elementa
Nika svira glasovir,ima odličan glas. Mogla bi jednoga dana biti zvijezda poput Nine Badrić,jedne od naših najboljih pjevačica, jedne od naših diva.
# definiraju se atributi elemenata
# definiraju se entiteti koji će se koristiti u dokumentu
 
== Sintaksa DTDa ==
=== XML blokovi sadržaja ===
Sa stajališta DTDa svaki [[XML]] document sastoji se od od slijedećih tipova blokova sadržaja:
# '''Elementi''' su osnovni blokovi XML dokumenta. Elementi mogu sadržavati druge elemente, sadržaj ili biti prazni. <br />
# '''Atributi''' sadrže dodatne informacije o elementima. Navode se unutar početne oznake elementa. <br />
# '''Entiteti''' su varijable koje definiraju često korišteni tekst. Postoje i reference na entitete. Jedna od najpoznatijih i najčešće korištenih je referenca na znak praznine &amp;nbsp;.<br />
# '''PCDATA''' predstavlja tekst koji će parsirati XML parser. XML oznake na koje parser naiđe tretirati će kao posebne XML oznake i interpretirati ih na odgovarajući način.<br />
# '''CDATA''' predstavlja tekst koji XML parser neće parsirati. XML oznake na koje parser naiđe tretirati će kao običan tekst i neće ih interpretirati kao XML oznake.<br />
 
=== DTD elementi ===
Deklaracija svakog DTD elementa započinje oznakom '''&lt;!ELEMENT''' i završava znakom '''&gt;'''. Sastoji se od '''naziva''' elementa i '''opisa''' [[model|modela]]. Četiri su tipa sadržaja:
* '''podaci''' su sadržaj najniže razine i unutar njega se navodi krajnji sadržaj. Model toga sadržaja označava se s '''<nowiki>#</nowiki>PCDATA'''.
 
 
{| class="wikitable"
|-
! DTD || XML
|-
| <tt><!ELEMENT ime (#PCDATA)><br><!ELEMENT prezime (#PCDATA)></tt> || <tt><ime>Pero</ime><br>
<prezime>Perić</prezime></tt>
|}
 
* '''elementi''' sadrže elemente podređene razine. Model toga sadržaja sastoji se od niza podređenih elemenata razdvojenih zarezima. Redoslijed niza '''je važan''';
 
 
{| class="wikitable"
|-
! DTD || XML
|-
| <tt><!ELEMENT osoba (ime, prezime?)></tt> || <tt><osoba><br><ime>Pero</ime><br>
<prezime>Perić</prezime><br>
</osoba>
</tt>
|}
 
* '''prazni elementi''' ne sadrži niti podatke niti elemente. Model tog sadržaja označava se s '''EMPTY'''.
 
{| class="wikitable"
|-
! DTD || XML
|-
| <tt><!ELEMENT br EMPTY></tt> || <tt>&lt;br /&gt;</tt>
|}
 
* '''miješani sadržaj''' sastoji se od podataka i elemenata podređene razine. Model se sastoji od niza podređenih elemenata i od oznake '''<nowiki>#</nowiki>PCDATA'''.
 
=== Kardinalnost elemenata ===
Prilikom označavanja elemenata moguće je odrediti njihovu [[kardinalnost]] (broj pojavljivanja) na slijedeći način:
* 0 ili 1 element označava se znakom "?". Npr '''<!ELEMENT Osoba (Ime, Prezime?)>''' označava da element "Osoba" mora imati 1 podređeni element "Ime", a može (ali ne mora) imati podređeni element "Prezime;
* 0 ili više elemenata označava se znakom "*". Npr. '''<!ELEMENT KontaktPodaci (Telefon*, Email*)>''' označava da element "KontaktPodaci" može imati više podređenih elemenata "Telefon" i "Email";
* 1 ili više elemenata označava se znakom "+". Npr. '''<!ELEMENT Student (UpisanaGodina+)>''' označava da element "Student" može imati jednu ili više upisanih godina na fakultetu;
* alternative su razdvojene iznakom "|" i određuju da element mora sadržavati jedan od podelemenata iz liste. Npr. '''<!ELEMENT NačinPlaćanja(Gotovina | KreditnaKartica | Ček)>''' Označava da se plaćanje mora izvršiti gotovinom, kreditnom karticom ili čekom. Sukladno tome podređeni element mora biti jednog od navedenih tipova.
 
=== DTD atributi ===
Atributi u DTDu deklariraju se unutar '''ATTLIST''' deklaracije.
''Tip atributa'' može biti različit ovisno o sadržaju:
* atributi čija vrijednost je niz znakova su tipa '''CDATA'''
* atributi čija vrijednost mora biti jedna iz navedenog niza su tipa '''(vrijednost1|vrijednost2|..)'''
* atributi čija vrijednost je jedinstvena oznaka su tipa '''ID'''
* atributi čija vrijednost je jedinstvena oznaka nekog drugog elementa su tipa '''IDREF'''
* atributi čija vrijednost je lista drugih jedinstvenih oznaka su tipa '''IDREFS'''
* atributi čija vrijednost je ispravan [[XML]] naziv su tipa '''NMTOKEN'''
* atributi čija vrijednost je lista ispravnih [[XML]] naziva su tipa '''NMTOKENS'''
* atributi čija vrijednost je entitet su tipa '''ENTITY'''
* atributi čija vrijednost je lista entiteta su tipa '''ENTITIES'''
* atributi čija vrijednost je naziv notacije su tipa '''NOTATION'''
* atributi čija vrijednost je predefinirana [[XML]] vrijednost su tipa '''xml:'''
Vrijednost atributa može biti:
* ako u dokumentu nije zadana vrijednost, onda se podrazumijeva fiksno zadana vrijednost
* '''<nowiki>#</nowiki>REQUIRED''' označava da vrijednost atributa mora biti navedena
* '''<nowiki>#</nowiki>IMPLIED''' označava da je vrijednost atributa opcionalna i ne mora biti uključena
* '''<nowiki>#</nowiki>FIXED''' označava da je vrijednost atributa fiksno određena
 
=== DTD entiteti ===
DTD entiteti definiraju prečace do određenih vrijednosti. Određeni enetiteti standardno su zadani unutar XMLa. To su npr.
* znak "manje od (<) - &amp;lt;
* znak "veće od" (>) - &amp;gt;
* razmak - &amp;nbsp;
* navodnik (") - &amp;quot;
 
Druga vrsta entiteta su oni koje sami deklarirate unutar DTD dokumenta i koristite unutar XML dokumenta. Prilikom obrade (parsiranja) XML dokumenta DTD entitet će se pretvoriti u vezanu vrijednost. Entiteti se deklariraju unutar '''ENTITY''' deklaracije.
 
 
{| class="wikitable"
|-
! DTD || XML prije parsiranja || XML nakon parsiranja
|-
| <tt><!ENTITY imeAutora "Pero Perić"></tt> || <tt><autor><br>&amp;imeAutora;<br></autor></tt> || <tt><autor><br>Pero Perić<br></autor></tt>
|}
 
== Deklariranje DTD modela ==
Deklariranje modela započinje korjenskim elementom. Nakon toga deklaracija se nastavlja s elementima neposredne niže razine. Postupak se ponavlja sve dok se ne dođe do elemenata najniže razine, a to su oni koji su izravno vezani uz podatke i označeni s oznakom '''<nowiki>#</nowiki>PCDATA'''.
 
== Povezivanje DTDa s XMLom ==
Povezivanje vanjske DTD datoteke s XMLom provodi se navođenjem DOCTYPE definicije unutar XML dokumenta.
<!DOCTYPE root-element SYSTEM "filename">
 
=== Primjer korištenja ===
==== XML dokument ====
Dokument '''studenti.xml'''
<?xml version="1.0" encoding="UTF-8"?>
'''<!DOCTYPE Studenti SYSTEM "studenti.dtd" >'''
<Studenti>
<Osoba id="s201">
<Ime>Pero</Ime>
<Prezime>Perić</Prezime>
</Osoba>
<Studij>Računarstvo</Studij>
<Adresa>
<Ulica>U gradu</Ulica>
<Broj>247</Broj>
<Grad>Zagreb</Grad>
</Adresa>
<KontaktPodaci>
<Telefon>01-111-777</Telefon>
<Telefon vrsta="Mobilni">098-111-1778</Telefon>
<Email>pperic@zg.tel.hr</Email>
<KorisnickoIme>pperic</KorisnickoIme>
</KontaktPodaci>
</Studenti>
 
=== DTD dokument ===
Dokument '''studenti.dtd'''
<!ELEMENT Studenti (Osoba, Studij?, Adresa?, KontaktPodaci?)>
<!ELEMENT Osoba (Ime, Prezime?)>
<!ELEMENT Ime (#PCDATA)>
<!ELEMENT Prezime (#PCDATA)>
<!ELEMENT Studij (#PCDATA)>
<!ELEMENT Adresa (Ulica?, Broj?, Grad?)>
<!ELEMENT Ulica (#PCDATA)>
<!ELEMENT Broj (#PCDATA)>
<!ELEMENT Grad (#PCDATA)>
<!ELEMENT KontaktPodaci (Telefon*, Email+, KorisnickoIme+)>
<!ELEMENT KorisnickoIme (#PCDATA)>
<!ELEMENT Telefon (#PCDATA)>
<!ELEMENT Email (#PCDATA)>
<!ATTLIST Osoba id ID #REQUIRED>
<!ATTLIST Telefon vrsta (Fiksni|Mobilni) #IMPLIED>
 
 
== Prednosti i nedostaci DTDa ==
Osnovni nedostatak DTDa je što sintaksna pravila kreiranja DTD dokumenta nisu usklađena s pravilima formiranja [[XML]] dokumenta. Zbog toga program koji interpretira [[XML]] dokumente mora znati parsirati pravila oba jezika. To znatno komplicira izgradnju takvih programa. Također i ljudi koji kreiraju DTD dokument moraju pored sintaksnih pravila [[XML]] dokumenata savladati i sintaksna pravila za formiranje DTD dokumenata.<br />
DTDom se ne mogu precizno definirati pravila koja [[XML]] dokument treba zadovoljavati (npr. kardinalnost se može opisati samo na nivou "niti jedan", "jedan" ili "više elemenata", nije moguće precizno opisivanje tipa podataka (numerički znakovni,...)). <br />
S druge strane, DTD je vrlo raširen i njegova sintaksa je dosta jednostavna za korištenje što krajnjim korisnicima pojednostavljuje rad.
 
== Vanjske poveznice ==
[http://www.w3schools.com/dtd/ Vodič kroz DTD]<br />
 
[[Kategorija:Komunikacijski protokoli]]
 
[[ar:تعريف نوع المستند(DTD)]]
[[ca:Document Type Definition]]
[[cs:Document Type Definition]]
[[de:Dokumenttypdefinition]]
[[en:Document Type Definition]]
[[eo:Dokumento-Speco-Difino]]
[[es:Definición de tipo de documento]]
[[et:Dokumendi tüübi definitsioon]]
[[fa:تعریف نوع سند]]
[[fi:DTD]]
[[fr:Document Type Definition]]
[[he:Document Type Definition]]
[[it:Document Type Definition]]
[[ja:Document Type Definition]]
[[ko:문서 형식 정의]]
[[nl:Document Type Definition]]
[[nn:Dokumenttypedefinisjon]]
[[no:Document Type Definition]]
[[pl:DTD]]
[[pt:Definição de Tipo de Documento]]
[[ru:DTD]]
[[sk:Definícia typu dokumentu]]
[[sv:Document Type Definition]]
[[te:డాక్యుమెంట్ టైప్ డెఫినిషన్]]
[[tr:DTD]]
[[uk:Document Type Definition]]
[[wuu:DTD]]
[[zh:文件类型描述]]

Navigacijski izbornik