HyperLink
Bejelentkezés
E-mail: 
Jelszó: 





Skip Navigation Links
 

Az XML bemutatása - DTD


XML 6. rész


XML sorozatuk jelen részében a DTD készítésének alapjait tárgyaljuk, ezt a nem kötelező, de mégis széles körben elterjedt kiegészítését az XML dokumentumoknak. Megnézzük milyen fajtái vannak és milyen elemeket használhatunk felépítésüknél, mindenhol igyekezve a legegyszerűbb példákon keresztül szemléltetni a nagy bonyolultságot is elérő parancsokat.

A DTD (Document Type Definition) feladata
A DTD annyiban hasonlít az XSL-hez, hogy az XML fájlban szereplő adatok típusát és viselkedését határozza meg. Szabályok összessége, melyek az XML dokumentum teljes szerkezetét leírják.
Állhat külön fájlban és lehet az XML dokumentum elején is. Speciális esetekben előfordulhat a kettő keveréke. Különálló DTD-nek előnye, hogy több XML dokumentumhoz is használható, ami nem elhanyagolható, figyelembe véve a sokszor időigényes elkészítését. Ha a dokumentumba épül be, akkor nincs szükség több fájlra, de kívülről más XML fájlokból nem használható. Ugyanazt a belső DTD-t átmásolhatjuk más dokumentumba is, de változás esetén az összes példányt módosítani kell. Ennek okán inkább külsőt szokás használni. Ha egy XML fájlban is szerepel külső és belső is, akkor az utóbbi felülírja a külső definíciókat.
A DTD határozza meg például, hogy egy adatot kötelező-e megadni, milyen intervallumban szerepelhet, lehet-e ismétlődő, stb. Programozók számára különösen előnyös, mert nem kell programjaikban ellenőrizni a bevitt adatok helyességét, ugyanis nem várt adatok eleve nem juthatnak el az alkalmazásig.
Minden DTD elemhez komplett stílusokat leíró szabályok rendelhetők. Elég egyszer elkészíteni a DTD-t, kiosztani a munkatársaknak és biztosítható, hogy mindig megfelelő adatokat, a megfelelő formában fogják beírni. Természetesen csak programozási eszközökkel leírható helyesség ellenőrzést készíthetünk, magának az információnak a tartalmi helyességét nem lehet ellenőrizni.
Fontos megemlíteni, hogy DTD-t nem kötelező készíteni.
Szintaxis
A DTD deklarációkat tartalmaz. Minden deklaráció <!....!> jelek között szerepel. Például:
<!ENTITY % Propagated      "PROPAGATED     (true|false)  'false'">
<!ENTITY % SuperClass      "SUPERCLASS     CDATA         #IMPLIED">
<!ENTITY % ClassName       "CLASSNAME      CDATA         #REQUIRED">
<!ELEMENT DECLARATION (DECLGROUP|DECLGROUP.WITHNAME|DECLGROUP.WITHPATH)*>
<!ATTLIST CIM 
         CIMVERSION CDATA #REQUIRED   
         DTDVERSION CDATA #REQUIRED>  
A fenti sorok a Windows XP %systemroot% \ system32 \ wbem \ xml \ wmi32.dtd fájlból származnak és egy kivételével tartalmazzák az összes felhasználható kulcsszót:
  • ATTLIST = jellemző meghatározás
  • ENTITY = egyed meghatározás
  • ELEMENT = jelölőelem meghatározás
  • NOTATION = nem XML adattípus meghatározás
ATTLIST
Kezdjük az ATTLIST paranccsal:
Neve az Attributum List (~jellemző lista, jellemzők listája) szavak összevonásából keletkezett. Mint a neve is utal rá, egy adott elemhez tartozó összes jellemzőt egyetlen listában adhatunk meg. A lista annak az elemnek a nevével indul, melynek a jellemzőiről szó van:
<!ATTLIST book ...
.......................>
Ezt követően kell felsorolni az egyes jellemzőket és típusaikat:
<!ATTLIST book cim CDATA
               szerzo CDATA
               kiadas ENTITY
               sorszam ID>
A típusok a következő lehetnek:
  • CDATA = egyszerű karakterlánc (<cim="Windows Software Online">)
  • NMTOKEN és NMTOKENS = egy (vagy több) szó vagy token (<valami="15abc">)
  • ENTITY és ENTITIES = egyedhivatkozás(ok)
  • ID és IDREF és IDREFS = speciális kapcsolódást meghatározó tulajdonságok (lásd egy későbbi részben)
  • NOTATION = meghatározza, hogy mely adattípusok ágyazhatók be az elembe.
Ha kötelező egy adatot megadni, akkor a #REQUIRED kulcsszóval zárjuk a deklarációt:
<!ATTLIST fajlnev CDATA #REQUIRED>
ELEMENT
Az ELEMENT kulcsszó egy új jelölőelemet és lehetséges tartalmát írja elő. Ha a jelölőelemben nem szerepelhetnek más jelölőelemek és szöveg sem, akkor az EMPTY (üres) kulcsszóval deklaráljuk:
<!ELEMENT kep EMPTY>
Az XML-ben ez így jelenik meg:
<fejezet>Az alábbi képen látható a hátpikkelyes, tükrös nemesponty.<kep ../></fejezet>
vagy
<fejezet>Az alábbi képen látható a hátpikkelyes, tükrös nemesponty.<kep fájlnev="c:\ponty1.jpg"/></fejezet>
Az elem tartalmazhat gyermekelemet vagy szöveget, ekkor már nem üres elemnek nevezzük. Ha bármit tartalmazhat, az ANY kifejezést használjuk a deklarációban?
<!ELEMENT fejezet ANY>
Szöveget tartalmazó elemeket a (#PCDATA) kifejezéssel kell deklarálni:
<!ELEMENT cim (#PCDATA)>
Nézzük meg a következő példát:
<!ELEMENT konyv (cim+, fejezet*, bekezdes?)>
A * karakter jelentése, hogy az adott elem ismételhető és választható is, a + jelé, hogy ismételhető és szükséges, a ?, hogy választható, de nem ismételhető
NOTATION
Nem XML típusú adatok beágyazását teszi lehetővé.
<!NOTATION MySpecialText SYSTEM "c:\MyTextViewer">
A "MySpecialText" az elem neve, a SYSTEM kulcsszó után, pedig a feldolgozására képes alkalmazás szerepel. Természetesen ennek elérhetőnek és futtathatónak kell lenni, ami az Interneten nem igazán alkalmazható.
ENTITY
Az ENTITY egy speciális típusú egyedhivatkozás
<!ENTITY logo "logo1">

Könyv
Ez a cikk megtalálható ebben a könyvben: Windows Software Offline 2002 évkönyv 566. oldal

Felhasználási feltételek
A Software Online szoftverfejlesztői magazin mindegyik cikke, minden megjelent képe, és egyéb publikált anyaga szerzői jog védelme alatt áll! Bármilyen formában történő másodlagos terjesztésük, közzétételük vagy felhasználásuk kizárólag a kiadó előzetes írásbeli engedélyével történhet!

Copyright © 1999-2012 Animare Software Kft. Minden jog fenntartva!
| Készült: Animare Stúdió | Adatvédelem | Kapcsolat |