XML sémák, adatmodellezés

Hasonló dokumentumok
DTD Dokumentumtípus definició

Adatkezelés - XML. XML 3 XML séma

XML (DTD) (XSD) DOM SAX XSL. XML feldolgozás

Dokumentumformátumok Jelölő nyelvek XML XML. Sass Bálint Bevezetés a nyelvtechnológiába 2. gyakorlat szeptember 20.

XML alapú adatbázis-kezelés. (Katona Endre diái alapján)

XML. Document Type Definitions (DTD) XML séma

A szoftver és hardverfüggetlen adatbázis

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

3. SZÁMÚ MELLÉKLET. Elektronikus számla - XML definíciók. a) Számla. 1. ábra Számla

Általános nyomtatványok xml szerkezete. (v1.3)

XML sémanyelvek Jeszenszky, Péter

DIPLOMAMUNKA. Szűcs Béla. Debrecen PDF processed with CutePDF evaluation edition

Az XML alapjai BME VIK BSc. Intelligens Rendszerek ágazat, Kooperatív rendszerek labor

XML. XML dokumentumok alapszerkezete. XML ( / ) 5

XML és XSLT (a színfalak mögül)

Az XML szabvány. Az XML rövid története. Az XML szabvány

XML dokumentumok feldolgozása Java-ban XML, DTD, XSD, XSLT, JAXP, DOM, SAX, JDOM

Bevezetés: az SQL-be

Az XML dokumentumok adatmodellje

Az XML 1.0 szabvány. tanulmány. Készítette: Mészáros Tamás. Budapest, BME Méréstechnika és Információs Rendszerek Tanszék

Az XML Bevezetés. Fabók Zsolt Ficsor Lajos Általános Informatikai Tanszék Miskolci Egyetem. Utolsó módosítás:

XML az Extensible Markup Language (Kiterjeszthet jelöl nyelv) szavak rövidítése. XML a World Wide Web Konzorcium (W3C) ajánlása, amely kompatíbilis

Web-fejlesztés NGM_IN002_1

XML adatkezelés. 5. témakör. Nincs explicit névtér kijelölve. <?xml version="1.0"?> <xs:schema xmlns:xs="

Az XML kidolgozásakor a fejlesztés szempontjait tíz pontban foglalták össze:

Lekérdezések az SQL SELECT utasítással

1. Az XML és XHTML nyelvek. Az XML leíró nyelv Szabályok XHTML írásra. Tartalom Az XML leíró nyelv

Az XML alapnyelv. dr. Paller Gábor. XML technológiák

Orvos Bejelentő Program (OBP) rekordkép 2. verzió XML formátum

A C programozási nyelv I. Bevezetés

az XML egy leírónyelv, másnéven meta-nyelv, mely segítségével új nyelveket írhatunk le egy XML dokumentum egy ilyen nyelvnek a példánya, a formális

Adatmodellezés. 1. Fogalmi modell

XmlGessünk 13. rész - Az XML Schema II.

A C programozási nyelv I. Bevezetés

SQL DDL-1: táblák és megszorítások

AWK programozás, minták, vezérlési szerkezetek

SQL. 1.rész. 1.elıadás // Adatbázisok-1 elıadás // Ullman-Widom (Stanford) tananyaga alapján // Hajas Csilla (ELTE IK) 1

Komputeralgebra rendszerek

file./script.sh > Bourne-Again shell script text executable << tartalmat néz >>

Komputeralgebra rendszerek

Struktúra nélküli adatszerkezetek

ALAPOK. 0 és 255 közé eső számértékek tárolására. Számértékek, például távolságok, pontszámok, darabszámok.

A statisztika alapjai - Bevezetés az SPSS-be -

AWK programozás Bevezetés

TERVEZET. A nemzetgazdasági miniszter /2017. (.) NGM rendelete

Bevezetés az SPSS program használatába

Kérdőívsablon XML séma

Formális nyelvek és automaták

Térinformatikai (GIS) és CAD adatmodellek és adatformátumok Digitális térképek előállítási technológiái, metaadatok szerepe

Magas szintű adatmodellek Egyed/kapcsolat modell I.

Tömbök kezelése. Példa: Vonalkód ellenőrzőjegyének kiszámítása

Adatbázis rendszerek 2. előadás. Relációs algebra

BASH SCRIPT SHELL JEGYZETEK

CSS3 alapismeretek. Bevezetés a CSS-be. Mi is az a CSS? Alkalmazási formái, szintaxisa

Regionális forduló november 19.

Informatika 1. Informatika el adás. Kovács Kristóf, Pálovics Róbert. Budapesti M szaki Egyetem november 5.

Megjegyzés: A programnak tartalmaznia kell legalább egy felhasználói alprogramot. Példa:

BASH script programozás II. Vezérlési szerkezetek

Regionális forduló november 19.

Karakterkészlet. A kis- és nagybetűk nem különböznek, a sztringliterálok belsejét leszámítva!

XML / CSV specifikáció

Algoritmizálás és adatmodellezés tanítása 1. előadás

Operációs rendszerek. 11. gyakorlat. AWK - szintaxis, vezérlési szerkezetek UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé.

Az XML-DTD áttekintése

H N S A d a t K a p c s o l a t

Operációs rendszerek gyak.

Operációs rendszerek. 10. gyakorlat. AWK - bevezetés UNIVERSITAS SCIENTIARUM SZEGEDIENSIS UNIVERSITY OF SZEGED

Interfész specifikáció

Az alábbi kód egy JSON objektumot definiál, amiből az adtokat JavaScript segítségével a weboldal tartalmába ágyazzuk.

HTML. Dr. Nyéki Lajos 2016

Széchenyi István Egyetem. Műszaki Tudományi Kar. Informatikai és Villamosmérnöki Intézet Távközlési Tanszék. Villamosmérnöki szak HTML

AWK programozás, minták, vezérlési szerkezetek

3. Ezután a jobb oldali képernyő részen megjelenik az adatbázistábla, melynek először a rövid nevét adjuk meg, pl.: demo_tabla

34. Elsődleges kulcs megadása XMLSchema-ban Idegen kulcs megadása XMLSchema-ban Típusok kategóriái és saját típus megadásának

ArcGIS Desktop QGIS GRASS AutoCAD Map ITR. Op. rendszer Win Linux, Win, OSX Unix, CygWin, (Win) Win korábban DOS, Win. GRASS specific GDAL/OGR

Lekérdezések az SQL SELECT utasítással. Copyright 2004, Oracle. All rights reserved.

Multimédia 2017/2018 II.

Jelentés fájl struktúra a TXT formában készülő jelentések részére

Mindent olyan egyszerűvé kell tenni, amennyire csak lehet, de nem egyszerűbbé. (Albert Einstein) Halmazok 1

Adatbázis rendszerek Definíciók:

1. Alapok. #!/bin/bash

Adatbázis rendszerek 2. előadás. Relációs algebra

XML / CSV specifikáció

XCZ állományok ellenőrzése, átadása elektronikus beküldésre és közvetlen beküldése parancssori funkcióval az ÁNYK programban

Operációs rendszerek gyakorlat

C programozás. 6 óra Függvények, függvényszerű makrók, globális és

Operációs Rendszerek II. labor. 2. alkalom

Java II. I A Java programozási nyelv alapelemei

KML Keyhole Markup Language

Adatbázisrendszerek 7. előadás: Az ER modell március 20.

ADATBÁZIS-KEZELÉS. Relációalgebra, 5NF

ADATBÁZIS-KEZELÉS. Relációs modell

A legfontosabb DOS parancsok

Occam 1. Készítette: Szabó Éva

1.1. A forrásprogramok felépítése Nevek és kulcsszavak Alapvető típusok. C programozás 3

Tartalomjegyzék

HTML és CSS. Horváth Árpád május 6. Óbudai Egyetem Alba Regia M szaki Kar (AMK) Székesfehérvár

Bevezetés az SQL-be. Tankönyv: Ullman-Widom: Adatbázisrendszerek Alapvetés Második, átdolgozott kiadás, Panem, 2009

Átírás:

XML sémák, adatmodellezés

Saját jelölőnyelv Az XML nem egy nyelv, hanem egy eszköz, szabályok összessége Amikor létrehozunk egy saját jelölőnyelvet, meghatározzuk, hogy a problémával és adattípussal kapcsolatban milyen címkéket és attribútumokat használhatunk. Ezek egymás közti viszonyát is le kell írni Például sporteredmények létrehozására: SportsML www.sportsml.org Előbbieket egy formális leírással tehetjük meg, ami megadja a dokumentumok felépítését. Ezt a formális nyelvet (szabályhalmazt) nevezzük egy jelölőnyelv sémájának.

Adatmodellezés Az a folyamat, amikor létrehozunk egy sémát egy XML dokumentumtípushoz, az adatmodellezés. A sémák lehetővé teszik a az XML dokumenttumok szerkezeti és logikai ellenőrzését. A sémák lényegében hasonlíthatók egy hivatalos pecséthez. Ennek jelentősége a feldolgozó alkalmazásoknál van. Két technológia áll rendelkezésre séma létrehozására: DTD (Document Type Definition) XSD (XML Schema Definition)

Az XML dokumentumok jól formáltsága A dokumentum érvényessége (validity) mellett másik fontos fogalom a jól formáltság. Egy dokumentum jól formázott, ha szerkezetileg megfelel az XML szabvány minden egyes előírásának (az 5 feltétel). Elképzelhető, hogy egy dokumentum jól formázott, de nem érvényes nem felel meg valamilyen szabályrendszernek. A helyességnek tehát 2 foka van: 1. Jól formáltság 2. Érvényesség (valamilyen DTD vagy XSD alapján) Minden érvényes dokumentum jól formázott, de nem minden jól formázott dokumentum érvényes.

A DTD Eredetileg az SGML (a HTML elődje) fejlesztői dolgozták ki A DTD tehát egy régi technológia, mégis a mai napig rengetegen használják A DTD egy XML-től különböző felépítésű jelölőnyelv Előnye: Rendkívül egyszerű Tömör <!ELEMENT quiz (q)+> <!ELEMENT q (question,a,b,c)> <!ATTLIST q answer (a b c) #REQUIRED> <!ELEMENT question (#PCDATA)> <!ELEMENT a (#PCDATA)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)>

Az XSD A DTD-t hivatott leváltani A séma létrehozásához magát az XML-t használjuk Itt már megadhatók típusok is (DTD-ben csak szöveg lehet) A W3C dolgozta ki Példa: a kvíz feladat xsd-je Előnye: Az XSD sokkal részletesebb mint a DTD XML használata az xsd-hez Hatékonyabb mint a DTD Hátrány: Nehéz őket átlátni (elsőre)

Sématechnológiák összehasonlítása A DTD-ket egy speciális nyelven kell megfogalmazni, míg XSD-nél az XML-t használjuk Az XSD számos adattípus használatát lehetővé teszi (egész, lebegőpontos számok, logikai értékek,stb), míg DTD-ben csak karakterlánc van Az XSD-ket ugyanúgy kezelhetjük, mint bármely más XML dokumentumt A DTD használata széleskörűen elterjedt Számos létező jelölőnyelv sémája DTD-ben elérhető csak

A DTD séma A DTD tehát a dokumentumok logikai szerkezetét írja le Egy DTD-ben a következő dolgokat adhatjuk meg: A dokumentumtípusban megengedett elemek körét Az egyes elemekhez rendelhető attribútumokat Amikor összerendelünk egy XML és egy DTD dokumentumot, két lehetőségünk van: Belső DTD Külső DTD A belső DTD nagyobb prioritású mint a külső (lásd. CSS) Beszélünk DTD deklarációról és definícióról Deklaráció: az XML dokumentumnak megadjuk,hogy hol a DTD Definíció: a DTD tényleges tartalmi része

A DTD részei A deklaráció általános alakja: <!DOCTYPE RootElem SYSTEM KülsőDTD [BelsőDTD] > A KülsőDTD a DTD fájl URI-ja URI: Uniform Resource Identifier, az URL ( Locator) olyan általánosított változata, amellyel fájloktól kezdve különböző hálózati erőforrásokat azonosíthatunk. A deklarációnak az XML deklaráció után, de a gyökérelem előtt kell szerepelnie Külső erőforrás használata: <?xml version="1.0" encoding="utf-8" standalone="no"?> Ha nincs DTD-nk (és egyéb információforrásunk), akkor yes -t adunk meg

Elem vagy attribútum használata? Attribútum Előny Meghatározhatjuk a lehetséges értékeit egy felsorolás formájában Lehet alapértelmezett értékük Van adattípusa (igaz szűk listából választhatunk) Tömör információtárolás Hátrány: Nem alkalmas hosszú karakterláncok tárolására Nincs lehetőség az információk egymásba ágyazására

A DTD elemei: üres elem Elemek megadásának alakja: <!ELEMENT Elemnév Elemtípus> Az XML négy elemtípust különböztet meg: 1. Empty: üres elem 2. Element-only: csak gyermekelemet tartalmaz 3. Mixed: kevert, szöveget és gyermekelemet is tartalmaz 4. Any: tetszőleges typus, bármit tartalmazhat, amit a DTD megenged 1. Üres elem: Sem szöveget sem gyermekelemet nem tartalmazhat, viszont lehetnek attribútumai Deklarációja: <!ELEMENT Elemnév EMPTY> Példa: HTML-ben <img src= kep.jpg width= 300 height= 100 alt= Kép />

A DTD elemei: csak elemeket tartalmazó elem 2. Element-only (csak elemeket tartalmaz): <!ELEMENT Elemnév Tartalomtípus> A tartalomtípus meghatározza, hogy milyen más elemeket tartalmaz az adott elem, ezt kerek zárójelek között kell megadni. Lehet sorozatokat, vagy választási csoportokat írni, a sorozatoknál az lemek sorrendje kötött A sorozatban az elemeket vessző, a csoportokban választja el Az alkalmazható szimbólumok: ( gyermekelemek ): sorozatot vagy választási csoportot fog közre, (vessző): sorozat elemeit választja el (szűrőkarakter): választási csoportok elemeit választja el Nincs szimbólum: jelzi, hogy az elem pontosan egyszer fordulhat elő? (kérdőjel): az elem pontosan egyszer, vagy egyszer sem fordulhat elő + (pluszjel): az elemnek legalább egyszer elő kell fordulnia * (csillag): az elem tetszőleges sokszor előfordulhat

Példák csak elemet tartalmazó elem DTD-jére 1. <!ELEMENT resume (intro, (education experience+)+, hobbies?, references* )> A resume csak elemeket tartalmazó elem Az intro pontosan egyszer fordul elő a resume-ben Az education és experience csoportnak legalább egyszer szerepelnie kell Az education pontosan egyszer fordul elő Az experience legalább egyszer előfordul A hobbies legfeljebb egyszer fordulhat elő A references akárhányszor előfordulhat 2. <!ELEMENT item (title, link?, description?) > Az item három elemet tartalmazhat A title mindig előfordul egyszer A link és a description vagy egyszer vagy egyszer sem fordul elő 3. <!ELEMENT item (title link description) > Az item a három elem közül az egyiket tartalmazza csak

A DTD elemei: kevert és tetszőleges tartalmú elemek 1. Csak szöveget tartalmaz: <!ELEMENT elemnév (#PCDATA) > Parsed Character Data Pl.: <!ELEMENT title (#PCDATA) > 2. A kevert elem: <!ELEMENT elemnév (#PCDATA elemlista)* > A *(csillag) a végén kötelező! Ennek gyakorlati haszna nem igazán van, kerüljük a használatát 3. A tetszőleges tartalmú elem (any) Nem rendelkeznek belső szerkezettel Bármit tartalmazhat <!ELEMENT elemnév ANY > Ennek a használata is kerülendő

Példa Hozzunk létre egy olyan adatstruktúrát, amivel recepteket tudunk tárolni. Recept neve, összetevők, elkészítés Majd hozzunk létre a struktúrához egy DTD sémát Hozzunk létre egy adatstruktúrát mozifilmek adatainak tárolásához Majd hozzunk létre a struktúrához egy DTD sémát

Attribútumok DTD-ben Az attribútumot tehát kiegészítő információk tárolására használjuk Az attribútum név/érték páros Megadása: <!ATTLIST Elemnév Attribútumnév Attrib.típus Default > Az alapértelmezett értéknek (default) 4 típusa létezik: #REQUIRED kötelező az attr. Megadása #IMPLIED opcionális a megadása #FIXED az attr. kötött értékkel rendlkezik, az értéket a deklarációban a #FIXED után kell megadni között Default az alapértelmezett érték, ha nem adunk meg értéket neki

Attribútumtípusok DTD-ben Az attribútumoknak 10 típust adhatunk meg: CDATA szöveges adat Enumerated karakterek sorozata NOTATION egy a DTD más pontján megadott jelölés ENTITY külső bináris egyed ENTITIES több külső bináris egyed üres karakterekkel elválasztva ID egyedi azonosító IDREF egy a DTD más pontján deklarált ID-re mutató hivatkozás IDREFS több különböző, máshol deklarált ID-re mutató hivatkozás NMTOKEN XML tokenekből (számok, betűk, pontok, kötőjelek, kettőspontok, aláhúzásjelek) felépített név NMTOKENS több XML tokenből felépített név

Attribútumtípusok osztáyozása: Az előző típusokat feloszthatjuk 3 részre: 1. Karakterláncok: a leggyakrabban használt típus CDATA Pl.: <!ATTLIST education school CDATA #REQUIRED > Az education elemnek van egy school attribútuma, melynek megadása kötelező 2. Felsorolt típus: a felsorolt típushoz tartozó attribútumok értékei egy halmazból kerülnek ki. A deklarációban a lehetséges étékeket kell megadni <!ATTLIST education degree (doctor phd master) teacher >

Attribútumtípusok osztályozása 3. Tokenizált attribútumok: A tokenizált attribútum értékét az alkalmazás tokenekre bontja. A tokenek határai az üres karakterek (szóköz, tabulátor, új sor). ID: mindig betűvel kezdődik és számmal, ponttal, aláhúzással vagy kötőjellel folytatódik Pl: <!ATTLIST part id ID #REQUIRED > IDREF, IDREFS: kereszthivatkozások megadása Pl.: <family id="f01" husband="p01" wife="p02" children="p03 P04 P05"> </family> <!ATTLIST family id ID #REQUIRED husband IDREF #REQUIRED wife IDREF #REQUIRED children IDREFS #IMPLIED > NMTOKEN, NMTOKENS: speciális karaktersorozat, csak nevekben megengedett karakterek, nem lehet szóköz és szám ENTITY, ENTITIES (lásd.:egyedek): Pl.: <!ATTLIST photo image ENTITY #IMPLIED >

Példa egy teljes DTD-re: edzésterv Készítsünk egy számítógépes edzéstervet. Amit tárolni kell: Dátum (date) edzés ideje Edzéstípus (type) edzés típusa (úszás, futás vagy kerékpár) Pulzusszám (heartrate) átlagos pulzusszám az edzés során Időtartam (duration) az edzés hossza (mp, perc, vagy óra) Távolság (distance) a távolság km-ben vagy mérföldben Hely (location) az edzés helye Megjegyzések (comments) egyéb információ Több megoldás létezik, egy lehetséges megoldás: Attribútum: dátum, edzéstípus, pulzusszám (gondolkodjunk, hogy melyiket kötelező megadni és melyiket nem) Elem: időtartam, távolság, hely, megjegyzések Az XML egyik szabálya: minél több korlátozást alkalmazunk egy dokumentum tartalmával kapcsolatban, annál jobb lesz a szerkezete.

Mik azok az egyedek? Egyedeknek számítanak az XML dokumentumon kívüli hivatkozások (pl. fájlra, vagy weboldalra, stb.) Pl.: a HTML-ben egy kép egyedként van jelen Az XML dokumentum elején a külső DTD-ra való hivatkozás (vagyis a DTD fájl) egyednek számít. Megkülönböztetünk: Értelmezett egyed: amit a dokumentum feldolgozása során értelmezni fognak (csak szöveges adat lehet) Nem értelmezett egyed: szöveget és bináris adatokat egyaránt tartalmazhat Az értelmezett egyeden belül megkülönböztetünk: Általános egyedek Paraméteregyedek

Mik azok az egyedek? Általános egyedek: Amit a dokumentumban lévő használatra terveztek. Pl.: egy cégnév vagy egy cím, amit többször fel akarunk használni Megadása: <!ENTITY Egyednév Egyeddefiníció > Kötelező belső DTD-ben ezt megadni!!!! Pl.: <!ENTITY ekf Eszterházy Károly Főiskola > Ilyen egyedek a <>, stb. Paraméteregyedek: Kizárólag a DTD-ben használunk, célja: helyettesítés Előfordulhat, hogy több elemnél ugyanolyan attribútumlistát használunk, ilyenkor ezt berakhatjuk egy paraméteregyedbe Alakja: <!ENTITY % Egyednév Egyeddefiníció > Pl.: <!ENTITY % autoelems year, make, model > Hivatkozás: %Egyednév; Pl.: <!ELEMENT car (%autoelems;) > Pl.: <!ELEMENT truck (%autoelems;) >

Feladat: Készítsünk XML rádiót Egy FLASH lejátszó XML dokumentumot képes kezelni. Cím: www.catalistcreative.com Adott a DTD fájl, készítsük el ez alapján az XML dokumentumot DTD: <!ELEMENT radio (station+) > <!ELEMENT station (song+) > <!ATTLIST station name CDATA #REQUIRED > <!ELEMENT song (title,composer,file) > <!ELEMENT title (#PCDATA) > <!ELEMENT composer (#PCDATA) > <!ELEMENT file (#PCDATA) >

A névterek használata A névtér olyan elem és attribútumnevek halmaza, melyeket egy adott XML dokumentumban használhatunk. Rendeltetése: a nevek közti ütközések feloldása Pl.: zene és videógyűjtemények leírása egy fájlon belül, és pl. mindkét címe <title> Új fogalom: érvényességi kör Pl.: edzés XML Egy elem v. attr. érv. köre a hierarchiában elfoglalt helye. Egy adott csomóponton bevezetett névtér az alatta lévő elemekre fejti ki hatását. Vannak globális névterek, amelyek a dokumentum egészére hatnak.

A névterek használata Névterek elnevezése: Névterekhez kizárólag URI (egységes erőforrás azonosító) címeket rendelhetünk. Pl.: <media xmlns:mov= http://www.ektf.hu/~szlahorek/ns/media > A létezés nem követelmény, az egyediség számít! Névterek deklarálása: Amennyiben egy névteret a dokumentum egészére szeretnénk alkalmazni, azt a gyökérelemben kell megadni. A névtér megadása: xmlns:névtérnév= az uri azonosító A névtérnév megadása nem kötelező, csak akkor, ha minősített neveket akarunk használni az elemek és attribútumok elnevezésénél. Pl.: <mov:title>volt egyszer egy vadnyugat</mov:title> Két lehetőség: Alapértelmezett névtér deklaráció: nem kell névtérnevet adni Explicit névtér deklaráció: névtérnevet kell megadni, és mindazon elemnél és attribútumnál használni kell a névtérnevet, amit a névtérhez akarunk sorolni. Pl.: <mov:title>

A névterek használata Megoldás a zene és videogyűjtemények leírására: <mediacollection xmlns:mov="http://www.ektf.hu/~szlahorek/ns/movies" xmlns:mus="http://www.ektf.hu/~szlahorek/ns/music"> <mov:movie mov:type= vigjatek" mov:year="1988"> <mov:title>éjszakai rohanás</mov:title> <mov:comments> utazásos vígjáték </mov:comments> </mov:movie> <mus:music mus:type= trance" mus:year= 2008"> <mus:title>somersault</mus:title> <mus:artist>chicane</mus:artist> <mus:label>trance, club</mus:label> <mus:comments>koncert: 2008. június. 12.</mus:comments> </mus:music> </mediacollection>

Az XML schema (xsd) Az XML sémák maguk is XML dokumentumok. Érdekes: mivel az XSD-k is XML dokumentumok, ezekhez is van séma, és ez a séma egy DTD séma. Minden XSD dokumentum alapja: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema"> </xs:schema> Explicit névtérdeklarációt használ! Az XSD erejét az adattípusai jelentik. Egyszerű adattípusok (számok, dátumok, listák, stb.) Összetett adattípusok (kevert elemek, elemsorozatok) http://www.w3.org/tr/xmlschema-2/#built-in-datatypes Elem definiálása: xs:element, attribútum definiálása: xs:attribute Pl.: <xs:element name= name type= xs:string > Összekapcsolás: <RootElem xmlns:xsi=http://www.w3.org/2001/xmlschema-instance xsi:nonamespaceschemalocation= az xsd fájl elérése">

Az XML schema egyszerű típusok A karakterlánc (string) típus: Szövegrészt tartalmazó elem vagy attribútum használatakor. Alakja: type= xs:string Pl.: <name>juhász Endre</name> <xs:element name= name type= xs:string /> A logikai típus Igaz vagy hamis értékű elemek vagy attribútumok használatakor. Alakja: xs:boolean Pl.: <xs:attribute name= married type= xs:boolean /> Számtípusok Numerikus értékek esetén: xs:byte, xs:short, xs:integer, stb. : egész számok, például 3 xs:decimal : decimális számok, például 3,14 (törtrészt is tartalmazhatnak) xs:float : 32 biten ábrázolt lebegőpontos számok, például 6,0022E23 xs:double : 64 biten ábrázolt lebegőpontos számok xs:positiveinteger, xs:negativeinteger, xs:nonpositiveinteger, xs:nonnegativeinteger

Az XML schema egyszerű típusok Dátum és idő típusok xs:date - "YYYY-MM-DD alakú dátum <xs:element name="start" type="xs:date"/> <start>2002-09-24</start> <start>2002-09-24-06:00</start> xs:time - "hh:mm:ss alakú időpont <xs:element name="start" type="xs:time"/> <start>09:00:00</start> xs:datetime - "YYYY-MM-DDThh:mm:ss alakú dátum és időpont, a T az elválasztó karakter <xs:element name="startdate" type="xs:datetime"/> <startdate>2002-05-30t09:00:00</startdate> xs:duration - "PnYnMnDTnHnMnS alakú időtartomány P : kötelező ny : évek száma, nm : hónapok száma, nd : napok száma T : elválasztó karakter a dátum és idő között nh : órák száma, nm : percek száma, ns : másodpercek száma <xs:element name="period" type="xs:duration"/> <period>p5y2m10d</period>

Az XML schema egyszerű típusok Dátum és idő típusok gday : a dátum nap részét jelenti (DD) gmonth : a dátum hónap részét jelenti (MM) gmonthday : a dátum hónap és nap részét jelenti (MM-DD) gyear : a dátum év részét jelenti (YYYY) gyearmonth : a dátum év és hónap részét jelenti (YYYY-MM)

Az XML schema egyéni típusok Az XML lehetővé teszi saját típusok létrehozását Egy típussal kapcsolatban korlátozhatjuk az értéktartományt vagy egy lista formájában megadhatjuk a felvehető értékek halmazát, stb. A deklarációt az xs:simpletype-al kell kezdeni: <xs:simpletype name= az új típus neve > típusmeghatározás </xs:simpletype> Hivatk.: <xs:element name= elemnév type= az új típus neve /> Vagy: <xs:element name= elemnév"> <xs:simpletype> típusmeghatározás </xs:simpletype> </xs:element> A típusmeghatározás lehet: megszorítás (xs:restriction), unió (xs:union) vagy lista (xs:list)

Az XML schema egyéni típusok - megszorítások Értéktartomány megszorítások: xs:mininclusive a legkisebb megengedett érték xs:minexclusive a legkisebb megengedett érték (a határ nem számít bele) xs:maxinclusive a legnagyobb megengedett érték xs:maxexclusive a legnagyobb megengedett érték (a határ nem számít bele) Pl.: <xs:element name="age"> <xs:simpletype> <xs:restriction base="xs:integer"> <xs:mininclusive value="0"/> <xs:maxinclusive value="120"/> </xs:restriction> </xs:simpletype> </xs:element>

Az XML schema egyéni típusok - megszorítások Szöveghossz megszorítások: Teljes hossz: xs:length, megadása: xs:value Pl.: <xs:restriction base="xs:string"> <xs:length value="4"/> </xs:restriction> Alsó, felső határ: xs:minlength, xs:maxlength Pl.: <xs:restriction base="xs:string"> <xs:minlength value="5"/> <xs:maxlength value="8"/> </xs:restriction> Whitespace megszorítás: xs:whitespace Lehetőségek: preserve : nem törli a whitespace karaktereket replace: minden whitespace karaktert space-re cserél collapse : a induló és záró whitespace-eket törli, a többit space-re cseréli, több egymás utáni space-t eggyel helyettesít

Az XML schema egyéni típusok - megszorítások Felsorolás: Csak bizonyos előre meghatározott értékeket vehetnek fel. Alakja: xs:enumeration, value= érték Pl.:<xs:restriction base="xs:string"> <xs:enumeration value="audi"/> <xs:enumeration value="golf"/> <xs:enumeration value="bmw"/> </xs:restriction> Listák: Egy elem vagy attribútum egymástól szóközzel elválasztott értékeket vehet fel. Alakja: xs:lista, itemtype: típus Pl.: <xs:simpletype> <xs:list itemtype="xs:byte"/> <!-- 123 45 56 31 --> </xs:simpletype>

Az XML schema egyéni típusok reguláris kifejezés Nagyon hasznos megszorítás. Egy adott sablon szerinti felépítésű értékeket fogad el. Alakja: xs:pattern, value= sablon Mik használhatók a sablonban:. (pont) bármely karakter \d bármely számjegy \D bármely nem számjegy \s bármely üres karakter \S bármely nem üres karakter x? az x egy vagy nulla előfordulása x+ - az x egy vagy több előfordulása x* - az x tetszőleges sok előfordulása (xy) az x és y csoporttá kapcsolása x y x vagy y [xyz] az x,y vagy z közül bármelyik [x-y] az x és y által meghatározott tartományból bármi x{n} az x n számú előfordulása egy sorban x{n,m} az x legalább n, de legfeljebb m előfordulása

Az XML schema egyéni típusok reguláris kifejezés Példák reguláris kifejezés használatára: <xs:element name= nem"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value= férfi nő"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:element name= szöveg"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="([a-z][a-z])+"/> <! stop helyes, egyéb nem --> </xs:restriction> </xs:simpletype> </xs:element> <xs:pattern value="\d{2}-\d{2}-\d{3}-\d{4}"/> <!-- mobilszám mintája -->

Az XML schema összetett típusok összetett típusok létrehozása: xs:complextype Az összetett típusokat 4 csoportba sorolhatjuk: Üres elemek (attribútumokat tartalmaznak) Csak elemeket tartalmazó elemek Kevert tartalmú elemek (elemek + attribútumok) Sorozatok és választási listák

Az XML schema összetett típusok üres elemek Létrehozása: xs:complextype és xs:complexcontent elemekkel Definiáljunk egy auto elemet, aminek van évjárat, márka, modell attra. <xs:element name="auto"> <xs:complextype> <xs:complexcontent> <xs:extension base="xs:anytype"> /azt jelenti, hogy semelyik típus nem képezi alapját <xs:attribute name="évjárat" type="xs:positiveinteger"/> <xs:attribute name="márka" type="xs:string"/> <xs:attribute name="modell" type="xs:string"/> </xs:extension> </xs:complexcontent> </xs:complextype> </xs:element> Vagy <xs:element name="auto"> <xs:complextype> <xs:attribute name="évjárat" type="xs:positiveinteger"/> <xs:attribute name="márka" type="xs:string"/> <xs:attribute name="modell" type="xs:string"/> </xs:complextype> </xs:element>

Az XML schema összetett típusok Csak elemeket tartalmazó elemek Egyszerűen az xs:complextype segítségével tehetjük meg Pl.: <xs:element name="person"> <xs:complextype> <xs:sequence> <xs:element name="firstname" type="xs:string"/> <xs:element name="lastname" type="xs:string"/> </xs:sequence> </xs:complextype> </xs:element> Kevert tartalmú elemek (elemeket és attribútumokat tartalmaz) Létrehozása: xs:complextype és xs:simplecontent segítségével Egyes esetekben(szöveg + gyermekelem) használhatjuk az xs:complextype esetében a mixed= true paramétert is.

Az XML schema összetett típusok Kevert tartalmú elemek példa (csak szöveg, nincs gyermekelem): <distance units="km">123000</distance> <xs:element name="distance"> <xs:complextype> <xs:simplecontent> <xs:extension base="xs:positiveinteger"> <xs:attribute name="units"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:pattern value="miles km"/> </xs:restriction> </xs:simpletype> </xs:attribute> </xs:extension> </xs:simplecontent> </xs:complextype> </xs:element>

Az XML schema összetett típusok Kevert tartalmú elemek példa (szöveg és gyermekelem), használni kell a mixed= true paramétert az xs:complextype-ban. <food type="vegetable"> sárgarépa <warranty>2008-10-12</warranty> </food> <xs:element name="food > <xs:complextype mixed="true"> <xs:sequence> <xs:element name="warranty" type="xs:date"/> </xs:sequence> <xs:attribute name="type" type="xs:string"/> </xs:complextype> </xs:element>

Az XML schema összetett típusok Sorozatok: A sorozatok gyermekelemek olyan listája, amely azok pontos megjelenési sorrendjét írja elő. Alakja: xs:sequence Az adott sorrendben felsoroljuk az elemeket benne. Példa: <xs:element name= quiz > <xs:complextype> <xs:sequence> <xs:element name= question type= xs:string /> <xs:element name= answer type= xs:string /> </xs:sequence> </xs:complextype> </xs:element> Alapértelmezés: 1 sorozat csak egyszer fordulhat elő egy elemen belül Használhatjuk a minoccurs és maxoccurs paramétereket Előbbieket az xs:element tagoknál is használhatjuk

Az XML schema összetett típusok Választások: Ha olyan elemeket akarunk létrehozni, amely választható elemek közül csak egyet tartalmazhat, akkor xs:choice-al tehetjük meg. Ekkor fel kell sorolnunk a választható elemeket. Példa: <xs:element name= id"> <xs:complextype> <xs:choice> <xs:element name= szemigszam" type= xs:positiveinteger"/> <xs:sequence> <xs:element name= name" type="xs:string"/> <xs:element name= birthdate" type= xs:string"/> </xs:sequence> <xs:element name="utlevelszam" type= xs:positiveinteger"/> </xs:choice> </xs:complextype> </xs:element>

Feladat egy teljes XML sémára Készítsük el az alábbi XML fájlhoz az XSD sémát! <persons> <person> <full_name>hege Refsnes</full_name> <child_name>cecilie</child_name> </person> <person> <full_name>tove Refsnes</full_name> <child_name>hege</child_name> <child_name>stale</child_name> </person> <person> <full_name>stale Refsnes</full_name> </person> </persons> Készítsük el a korábbi számítógépes edzéstervünk XML fájljához az XSD sémát!

Elem El

Elem El

Elem El