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: