Transcript XML DTD
Extensible Markup Language
XML validálás
Hernyák Zoltán
http://aries.ektf.hu/~hz [email protected]
XML validálás
Az XML alapkövetelménye a jól formázottság Ha nem jól formázott, a feldolgozó szoftver be sem olvassa Ha jól formázott, még nem biztos hogy olyan a szerkezete, mint amilyet várunk A szerkezet persze betölthető, és ha nem feldolgozható, akkor a feldolgozó szoftver hibát jelezhet ki De egyszerűbb ha egy szabályrendszerrel írjuk elő a szerkezeti elvárásainkat A szabályrendszert a kliens is át tudja venni, és ellenőrízni tudja, hogy amit előállít, az megfelelő-e a nélkül, hogy a feldolgozó szoftverrel ténylegesen rendelkezne Így univerzális szerkezet-ellenőrző program írható, amelynek két paramétere van egy konkrét xml file - egy szerkezet leíró file (szintén xml formájú)
XML DTD
DTD – Document Type Definition Szabályok gyűjteménye Megadja hogy kell az XML nek megírva lennie XML struktúrát ír le (Jellemzően) külső file-ban tároljuk A benne szereplő szabályokat összevetjük egy konkrét XML dokumentummal Ezt végzi az XML PARSER azt mondjuk rá: VALID jellegű program Ha az XML dokumentum megfelel a szabályoknak, Egy XML dokumentumot a parser csak akkor tud ellenőrízni, ha jól formázott (well-formed)
XML – belső DTD
A DTD leírást beszúrhatjuk az XML file belsejébe
XML – külső DTD
Vagy csatolhatjuk külső file-ként is:
XML DTD
DTD elem alakja:
XML DTD
Belső DTD leírás:
Külső privát DTD file:
>
Külső publikus DTD file:
” >
XML DTD
Publikus DTD esetén: név (részek // elválasztva): prefix (előtag) ISO: ISO elfogadott név +: elfogadott, de nem ISO szabvány : nem elfogadott, nem ISO szabvány a DTD tulajdonosa a DTD leírása ISO 639 nyelvi leírás uri: a DTD elérési útja, ha név alapján nem azonosítható
XML DTD – entitás definíció
Entitás: név-érték páros Az entitás értékére nevével lehet hivatkozni
&név;
formában.
XML DTD – külső entitás definíció
Az entitás értékét külső fileban is lehet tárolni:
XML DTD – NDATA külső entitás definíció
Nem elemzett külső entitás-tartalom:
XML DTD – paraméter entitás
Egy általános entitás nem használhtó a DTD definícióban, csak az XML ben magában A paraméter entitás csak a DTD belsejében használható A paraméter entitás deklarációjában a
%
jel fel van tüntetve Ezt külső file-ban kell tartani!
XML DTD - elemleírás
Elemleírás: name: az elem neve content-model: EMPTY: üres, nem lehet tartalma ANY: bármi lehet PCDATA: parsed character data (feldolgozott text) vagyis tartalmazhat gyerek-elemeket CDATA: plain text, szimpla szöveg, nem tartalmazhat gyerek elemeket
XML DTD - elemleírás
HTML
elem leírása:
Konkrét gyerek elemek felsorolása (ebben a sorrendben):
… … …
XML DTD - elemleírás
Pontosan egy előfordulás:
Előfordulhat (vagy 0 vagy 1 előfordulás):
) >
Legalább egy (vagy 1 vagy több előfordulás):
Tetszőleges sok (vagy 0, vagy 1, vagy több előfordulás):
XML DTD - elemleírás
Vagy ez vagy az:
Óvatosan kezeljük a * és egyéb karakterekkel:
Kevert tartalom:
Komplex példa:
XML DTD – példák
XML DTD – attribútum-leírás
Attribútum-leírás: Általánosan:
XML DTD – attribútum-leírás
!ATTLIST
elem neve: a tartalmazó elem neve attribútum neve: az attribútum neve attribútum értéke: mi lehet a tartalma?
flag: kötelező / lehetséges / …
XML DTD – attribútum-leírás
Attribútum értéke lehet:
CDATA: tetszőleges string Felsorolás: megadjuk a lehetésges értékeket NMTOKEN: (name token) az érték első betűje spec kar lehet csak NMTOKENS: felsorolás (white-space elválasztóval) ID: az érték egyedi kell legyen ezen XML-en belül IDREF: hivatkozás egy ID elemre (értékével) IDREFS: felsorolás ENTITY: egy entitás neve (lásd !ENTITY definiálás) ENTITIES: entitás-nevek felsorolása
Attribútum flag lehet:
#REQUIRED: kötelező megadni #IMPLIED: opcionális attribútum #FIXED: az értéket nem lehet megváltoztatni
XML DTD – CDATA példa
XML DTD – ID példa ID:
ilyenből elemenként csak egy lehet csak #IMPLIED vagy #REQUIRED lehet az érték első karaktere betű, aláhúzás, vagy kettőspont lehet további karakterek: a..z, A..Z, 0..9, _, -, : az értéke egyedi kell legyen az XML dokumentumban
XML DTD – IDREF példa IDREF:
csakis olyan értéke lehet, amely ID-ként szerepel valahol
XML DTD – ATTLIST felsorolás
vagy kiírjuk minden attribútum definíciónál az elem nevét is vagy adott elemnévhez soroljuk fel az attribútumokat
XML DTD – felsorolás példa
XML DTD – NMTOKEN (name token) NMTOKEN:
a tartalma akár xml tag név is lehetne névképzési szabályoknak meg kell felelnie a..z, A..Z, 0..9, _, -, : stb
XML DTD – alapértelmezett érték alapértelmezett:
a status értéke csak
normal
vagy
important
ha nincs kitöltve, akkor olyan, mintha
normal
lehet lenne írva
XML DTD – fixed alapértelmezett érték Kitölteni sem érdemes, kötelezően ” monthly ” értékű
XML DTD – ENITIÁSOK NMTOKEN:
a tartalma akár xml tag név is lehetne névképzési szabályoknak meg kell felelnie a..z, A..Z, 0..9, _, -, : stb
XML DTD – feldolgozási utasítás Feldolgozási utasítás
Tartalma „bármi” lehet A megnyitó alkalmazásnak szól
XML DTD – ![CDATA[ … ]] nem feldolgozandó
XML DTD – NOTATION megjegyzés NOTATION:
nem feldolgozott tartalom típusát írja le
XML DTD – feladat FELADAT:
készítsünk DTD-d az alábbi XML file-hoz csak elemek vannak benne útvonal:
FELADAT:
készítsünk DTD-d az alábbi XML file-hoz attribútumok is vannak benne: útvonal: