Bevezetés a DTD-be
Attribútumok létrehozása
Az előző szakaszban megismerhettük a DTD nyelv szintaxisának alapjait, hogy meghatározzuk az XML dokumentumaink szabályhalmazát. Láttuk, hogyan lehet meghatározni az elemnevek és elemtartalmak szabályait. Most megnézzük, hogyan lehet az attribútumokat és az attribútumértékeket definiálni a DTD-ben.
Az utolsó szakaszban egy DTD-t építünk a következő címjegyzék XML-jéhez:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 |
<addressBook> <entry> <name>Clark Kent</name> <address>344 Clinton Street Metropolis</address> <phoneNr>55 50145</phoneNr> <relationship/> </entry> <entry> <name>Bruce Wayne</name> <address>1007 Mountain Drive Gotham</address> <phoneNr>53 59333</phoneNr> <relationship/> </entry> </addressBook> |
1 2 3 4 5 6 7 |
<!DOCTYPE addressBook [ <!ELEMENT addressBook (entry*)> <!ELEMENT entry (name, address, phoneNr, relationship)> <!ELEMENT name (#PCDATA)> <!ELEMENT address (#PCDATA)> <!ELEMENT phoneNr (#PCDATA)> <!ELEMENT relationship EMPTY> ]> |
A következő DTD utasítás egy „type” nevű attribútumot határoz meg a „relationship” elemhez.
1 |
<!ATTLIST relationship type CDATA #REQUIRED>
|
Ennek az állításnak az összetevői:
<! |
az attribútum definiálásának kezdete |
ATTLIST |
meghatároz egy attribútumlistát |
relationship |
meghatározza azt az elemet, amelyhez az attribútum tartozik |
type |
meghatározza az attribútum nevét |
CDATA |
meghatározza az attribútum tartalomtípusát, CDATA = „character data" |
#REQUIRED |
meghatározza, hogy ez az attribútum kötelező minden „relationship" elemben |
> |
az attribútum definiálásának vége |
A DTD-k lehetővé teszik az attribútumok különböző tartalomtípusainak meghatározását. Karakteradat (CDATA) mellett más értékek is lehetségesek.
Bizonyos attribútumoknál célszerű előre definiált értékeket megadni. Ezt úgy tehetjük meg, ha a CDATA helyett az attribútum név után, zárójelben hozzáadjuk az előre definiált értékeket:
1 |
<!ATTLIST relationship type (private|work) #REQUIRED>
|
Egy attribútumlista egy elem több attribútumát tartalmazhatja. Az alábbi utasítások például meghatározzák a „first”, „second” és „title” attribútumokat a névelemben:
1 2 |
<!ATTLIST name first CDATA #REQUIRED second CDATA #REQUIRED title CDATA #REQUIRED> |
A #REQUIRED utasításnak köszönhetően minden itt definiált attribútum kötelező. Annak érdekében, hogy egy attribútum opcionális lehessen, a #REQUIRED szót ki kell cserélni #IMPLIED-ra, mint itt a „title” attribútum példájában:
<!ATTLIST name first CDATA #REQUIRED second CDATA #REQUIRED |