[[oktatas:számítástechnika|< Számítástechnika]] ====== DTD ====== * **Szerző:** Sallai András * Copyright (c) 2009, Sallai András * Licenc: [[https://creativecommons.org/licenses/by-sa/4.0/|CC BY-SA 4.0]] * Web: https://szit.hu ===== Blokkok létrehozása az XML dokumentumban ===== A következő jelölőkből épülhet fel egy XML dokumentum: *elemek *tulajdonságok *elemzett adat (PCDATA) *adat (elemzés nélkül; CDATA) A HTML nyelvben elemekre példa a "body" és az "img". Egy XML dokumentumban például "megjegyzés" "üzenet", stb. Az elemek tartalmazhatnak szöveget, vagy újabb elemeket, de maradhatnak üresen is. Üres elemek a HTML nyelvben például a következők: "hr", "br" és az "img". Például: szöveg <üzenet>szöveg ===== Tulajdonságok ===== A tulajdonságok, másként attribútumok az elemekről még több információt adnak számunkra. A tulajdonságot mindig egy elemen belül hozunk létre, és mindig név és érték párokból épül fel. A példában az elem neve az "img". Az tulajdonság az "src". A tulajdonság értéke "kep.jpg". A végén az elem önmagát zárja, mivel üres elem. ===== Entitások (Egyedek) ===== Néhány karakternek speciális jelentése van az XML-ben, olyanok mint a (<). Ez a karakter például egy tag kezdetét határozza meg. A HTML is tartalmaz ilyen egyedeket (entitás), például a " ". Ez egy nem törhető szóközt jelöl. Az XML-ben ezek előre definiáltak: ^ Entitás ^ Jelentés ^ | < | < | | > | > | | & | & | | " | " | | ' | ' | ===== PCDATA ===== A PCDATA jelentése elemzett karakteres adat (parsed character data). Egy nyitó és egy záró elem közzé tesszük tartalomként. Az PCDATA egy olyan szöveg amely elemezhető szöveget tartalmazhat. A szöveg különböző entitásokat tartalmazhat. Az entitásokat & vezeti be a szövegben. Így ez nem szerepelhet önálló karakterként. De ilyen a <, > karakterek is. Helyettük: < és > ===== CDATA ===== A CDATA jelentése karakteres adat (character data). Nem tartalmaz elemzett részeket, nincsenek benne jelölök. Mindent úgy értelmezünk, ahogy az meg van adva. ===== DTD elemek ===== A DTD elemeket ELEMENT deklarációval adunk meg. ==== Elemek deklarálása ==== Egy DTD-ben az XML elemek megadása a következő szintaxis szerint történik: vagy ==== Üres elemek ==== Üres elemeket az EMPTY kategóriával adunk meg. Például: XML példa:
==== Az elemek és a Parsed Character Data ==== A Parsed Character Data, elemzett karakteres adatokat jelent. Elemzett mert figyeli, hogy van-e például < karaktersorozat a tartalomban, mert ezt másként értelmezi. Az elemzett karakteres adatokat a #PCDATA segítségével adunk meg: Példa: ==== Elemek valamilyen tartalommal ==== Az ilyen elemet ANY kategória leíróval adjuk meg. Példa: ==== Az elemek gyermekei (sorozat) ==== Az elemek egy vagy több újabb gyermekelemet is tartalmazhatnak. vagy Példa: Ha a gyermekelem vesszővel van szeparálva, akkor azokat ugyanilyen sorrendben kötelező megadni. ==== Csak egy gyermekelem megadása ==== Példa: Az üzenet gyermekelem csak egyszer szerepelhet a jegyzet elemben belül. ==== Egy elem minimum egyszer vagy többször ==== Példa: A + jel azt jelenti, az elem többször is szerepelhet a jegyzet elemen beül, de egyszer minimum kötelező szerepelnie. ==== Egy elem nullaszor vagy többször ==== Példa: A * azt jelenti, hogy az "üzenet" elem többször is szerepelhet a "jegyzet" elemen belül, de ha egyszer sem szerepel az sem baj. ==== Egy elem nullaszor vagy egyszer ==== Example: A ? karakter azt jelenti az "üzenet" gyermekelem vagy egyszer szerepelhet, vagy egyszer sem a "jegyzet" elemen belül. ==== Mindkettő/vagy megadása ==== Példa: A példában a "jegyzet" elemnek tartalmaznia kell egy "kezdes", egy "vége", egy fej elemet és végül vagy egy "üzenet" vagy egy "törzs" elem jön. ==== Kevert tartalom megadása ==== Példa: A példában a "jegyzet" elem tartalmazhat nulla vagy több elemzett karaktert, "kezdet", "vége", "fej" vagy "üzenet" elemet. ===== Tulajdonságok ===== Tulajdonságok vagy attribútumok meghatározása ==== Tulajdonság deklaráció ==== Az tulajdonság deklarációnak a következő a szintaktikája: DTD példa: XML példa: A tulajdonság típusa a következő egyike: ^ Típus ^ Leírás ^ | CDATA | Az érték karakteres adat | | (en1|en2|..) | Az érték egy a felsorolt listából | | ID | Az érték egyediazonosító | | IDREF | Az érték egy másik elem azonosítója | | IDREFS | Az érték egy más azonosítók listája | | NMTOKEN | Az érték egy érvényes XML név | | NMTOKENS | Az érték érvényes XML nevek egy listája | | ENTITY | Az érték üres | | ENTITIES | Az érték egy egyedlista | | NOTATION | Az érték egy jelölés neve | | xml: | Az érték újradefiniált xml érték | Az alapértelmezett érték egy a következők közül: ^ Érték ^ Értelmezés ^ | #REQUIRED | A tulajdonság kötelező | | #IMPLIED | A tulajdonság nem kötelező | | #FIXED érték | A tulajdonság állandó | ==== Az alapértelmezett tulajdonság értéke ==== DTD: Érvényes XML: A példában egy kocka elemet definiálunk. A kocka elemnek egy "szélesség" tulajdonsága lehet, amely alapértlemezeten 0, de mi 100-as értéket adtunk neki meg. ==== #REQUIRED ==== Szintaktika Például: DTD: Érvényes XML: Érvénytelen XML: Nincs alapértelmezett értékünk, de kötelező megadni a személy számát. ==== #IMPLIED ==== Szintaktika Példa DTD: Érvényes XML: Érvényes XML: Akkor használjuk, ha nem akarjuk kötelezővé tenni a tulajdonság megadását, és alapértelmezett értékünk sincs. ==== #FIXED ==== Szintakitka Példa DTD: Érvényes XML: Érvénytelen XML: Akkor használjuk, ha tulajdonság értékét állandóra szeretnénk beállítani, hogy a felhasználó ne változtathassa azt meg. Ha a használója mégis mást állít be, akkor az XML értelmező hibát fog jelezni. ==== Felsorolt tulajdonság értékek ==== === Szintaktika === === Példa === DTD: XML példa: vagy Akkor használd ezt a tulajdonságot, amikor valamilyen adott értékeket vársz a felhasználótól. ===== Tulajdonság vagy elem használata ===== ==== Kérdés ==== Kérdéses lehet, hogy egy adatot gyermekelemként vagy tulajdonságként hozzunk létre. Anna Nagy Anna Nagy ==== A legjobb út ==== A legjobb talán az adatokat gyermekelemekben tárolni. A következőkben három XML dokumentumot látunk, amely ugyanazokat az információkat tárolják. === Tulajdonság használata === Emese Jani Emlékeztető Ne feledkezz meg rólam a hétvégén! === Második példa === 2011-10-03 Emese Jani Emlékeztető Ne feledkezz meg rólam a hétvégén! === Legjobb példa === 12 11 2002 Emese Jani emlékeztető Ne feledkezz meg rólam a hétvégén! ===== Entitások használata ===== Az entitásokat változóként használjuk, amelyek gyorsbillentyűként szolgálnak szabványos szövegek vagy speciális karakterek beillesztésére. Az entitást internal és external módon deklaráhatunk. ==== Belső entitás deklaráció ==== === Szintaktika === Példa DTD példa: XML példa: &cr;&szerzo; Megjegyzés: Egy entitás három részből áll: egy ampersand (&), egy név, és egy pontosvessző (;) ==== Külső entitás deklaráció ==== === Szintaktika === Példa DTD példa: XML példa: &cr;&szerzo; ===== Link ===== * http://www.w3schools.com/dtd/dtd_elements.asp