Hernyák Zoltán 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 jellegű program Ha az XML dokumentum megfelel a szabályoknak, azt mondjuk rá: VALID 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: <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ” > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ” >
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ó <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ” > <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" ” >
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 Előfordulhat (vagy 0 vagy 1 előfordulás): Pontosan egy 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 lehet ha nincs kitöltve, akkor olyan, mintha normal 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: