- DTD
Féligstrukturált adatok
- Fákon alapuló adatmodell
- Rugalmas megjelenítés
- Dokumentumok megosztása egyszerűbb
- Pontok = objektumok
- Élek címkéi = attribútumnekvek
- Levelek = Atomi értékek
XML
- Extensible Markup Language
- HTML- szerű
- A tag-ek szemantikai jelentést indikálnak
XML - Felépítés
Deklarációval kezdődik, jellemzően
vagy
Tag - Jelölők
- Tetszőlegesen egymásba ágyazhatók
- Magányos tag-ek a HTML-hez hasonlóan
- case-sensitive
Jól formált és valid XML
- Jól formált XML megengedi, hogy önálló tageket vezessünk be
- A Valid XML illeszkedik egy előre megadott sémára:
- DTD
- XML séma
Jól formált XML
<?xml version="1.0" standalone="yes" ?>
<kocsmák>
<kocsma>
<név>Joe bárja</név>
<sör>
<név>Bud</név>
<ár>2.50</ár>
</sör>
<sör>
<név>Miller</név>
<ár>3.00</ár>
</sör>
</kocsma>
...
</kocsmák>
DTD felépítése
- Egy-egy elem leírása az elem nevét zárójelek között az alapelemek megadását jelenti
- Ez magába foglalja az elemek sorrendjét és multiplicitását
- A levelek (szöveges elemek) típusa #PCDATA
- Parsed Character DATA
DTD - Példa
<!DOCTYPE kocsmák [
<!ELEMENT kocsmák (kocsma*)>
<!ELEMENT kocsma (név,sör+)>
<!ELEMENT név (#PCDATA)>
<!ELEMENT sör (név, ár)>
<!ELEMENT ár (#PCDATA)>
]>
*- 0 vagy több elem+- 1 vagy több elem (legalább 1)?- 0 vagy 1|- "vagy"- Pontosan 1, ha nincs más megadva
#PCDATA- atomi érték, nincs gyereke
Külső séma alkalmazása
<?xml version="1.0" standalone="no" ?>
<!DOCTYPE kocsmák SYSTEM "bar.dtd">
<kocsmák>
<kocsma ... />
...
</kocsmák>
Attribútumok
- XML-ben a nyitó tag-ek mellett szerepelhetnek attribútumok
<ATTLIST E A1 type1 value1 A2 type2 value2 ...>- Az
Etagez tartozó attribútumokatA1,A2,...adja meg
- Az
- Minden attribútumhoz meg kell adni a típusát, és megkötéseit
- Adott-e valami default, vahy konstans értéke, lehet kötelező vagy opcionális
#IMPLIEDvagy#REQUIRED
Attribútumok - Példa
ID és IDREF
ID
- Attribútumokkal lehet elemről elemre hivatkozni
- XML az inkább gráf, mint fa pont emiatt
- "Fenntartásokkal kell fogadni ezt az információt."
- Megadáshot fogjunk egy
Eelemet és egyAattribútumok, aminek típusaID- Amikor az
<E>-t az XML-be hasznáéjuk, azAattribútumnak egy máshol nem szereplő értéket kell adnunk
- Amikor az
IDREF / IDREFS
- Egy
Felem azIDREFattribútum segítségével hivatkozhat egy másik elemre annakID-jén keresztül IDREFShasonló, csak ott több elemre is hivatkozhat
ID / IDREF - Példa
<!DOCTYPE kocsmák[
<!ELEMENT kocsmák (kocsma*, sör*)>
<!ELEMENT kocsma (felszolgál+)>
<!ATTLIST kocsma név ID #REQUIRED>
<!ELEMENT felszolgál (#PCDATA)>
<!ATTLIST felszolgál melyikSör IDREF #REQUIRED>
<!ELEMENT sör EMPTY>
<!ATTLIST sör név ID #REQUIRED>
<!ATTLIST sör kapható IDREFS #IMPLIED>
]>
DTD - Példára illeszkedő dokumentum
<kocsmák>
<kocsma név="Joe Bárja">
<felszolgál melyikSör="Bud">2.50</felszolgál>
<felszolgál melyikSör="Miller">3.00</felszolgál>
</kocsma> ...
<sör név="Bud" kapható="Joe Bárja Suzy bárja..."/>...
</kocsmák>
Üres elem - Példa
<!ELEMENT felszolgál EMPTY>
<!ATTLIST felszolgál melyiksör IDREF #REQUIRED>
<!ATTLIST felszolgál ár CDATA #REQUIRED>
XML séma
- XML sémák más XML dokumentumok szerkezetét adhatjuk meg
- XML séma is XML dokumentum
XML Típusok
Ahol az
xsa névteret adja megAmiből így következik, hogy az
xs:schemaazxsnévtérhez tartozik
Névtér eleme
- Az attribútumai
name- a definiált elem neve- Tagben mindenképp megjelenik
type- az elem típusa- Lehet XML séma típus
- vagy olyan típus, amit az adott XML sémában deklaráltunk
- Definíció szetint nincsen további eleme
EMPTY
Összetett típusok
xs:complexType- Tipikus elem az
xs:sequence- Elemei
xs:element - Számossága korlátozható
minOccursmaxOccurs
- Elemei
Összetett típusok - Példa
<xs:complexType name="sörTípus">
<xs:sequence>
<xs:element name="név"
type="xs:string"
minOccurs="1"
maxOccurs="1"
/>
<xs:element name="ár"
type="xs:float"
minOccurs="0"
maxOccurs="1"
/>
</xs:sequence>
</xs:complexType>
Példa - Sörnek egy eleme
Összetett típusok attribútumai
xs:attribute, melynek elemei:nameéstypeazxs:elementeseténuseami vagyrequiredvagyoptional
Példa:
<xs:complexType name="sörTípus">
<xs:attribute
type= "xs:string"
use="required" />
<xs:attribute
type="xs:float"
use="optional" />
</xs:complexType>
Típusmegkötések
xs:simpleType-al adhatóak megszotításokname-je van- meg
xs:restrictionaleleme
basemondja meg, hogy melyik egyszerű típusra vonatkozik a megkötésxs:{min|max}{Inclusive|Exclusive}- al a négyféle alsó és felsőkorlát megadható[], [), (), (]
xs:enumerationvalueattribútumban megadható a felsorolás egy eleme
Típusmegkötések - Példa
<xs:simpleType name="ár">
<xs:restriction
base="xs:float"
minInclusive="1.00"
macExclusive="5.00" />
</xs:simpleType>
...
<xs:complexType name="kocsmaTípus">
<xs:sequence>
<xs:element name="sör"
type="sörTípus"
minOccurs="1"
maxOccurs="unbounded" />
<xs:attribute name="név"
type="xs:string"
use="required" />
</xs:sequence>
</xs:complexType>
Alternatív (XML-sémás) megoldás
<xs:element name="kocsmák">
<xs:complexType>
<xs:sequence>
<xs:element name="kocsma"
type="kocsmaTípus"
minOccurs="0"
maxOccurs="unbounded" />
</xs:complexType>
</xs:element>
Amenyiben a (
bars.xsd) néven elmentett sémát akarjuk használni, azt a megszokott módon importálhatjuk
Kulcsok az XML sémában
xs:element-hez tartozhatxs:keyalelem- A kulcsnak egyedinek kell lennie
Kulcs - Példa
<xs:element name="kocsmák" ...>
...
<xs:key name="kocsmaKulcs">
<xs:selector xpath="kocsma" />
<xs:field xpath"@név" />
</xs:key>
...
</xs:element>
XPathadja meg a kapcsolások elérését
Idegen kulcsok
xs:keyrefalelem azxs:elementelement belül hivatkozik a megfelelő kulcsra
Idegen kulcs - Példa
<xs:element>
...
<xs:keyref name="kocsmaRef"
refer="kocsmaKulcs" >
<xs:selector xpath="alkesz/látogat" />
<xs:field xpath="@kocsma">
</xs:keyref>
</xs:element>
Keretrendszer
- Információintegráció
- Különböző helyekről származó adatbázisokat egy egységként üzemeltetni
- Félig strukturált adat
- Viszonylag új adatmodell
- EA szerint "Segít megbírkózni az adatintegráció problémájával"
- XML: szabvány a félis-strukturált adatok leírására
Információintegrációs probléma
- Egymáshoz kapcsolható elemek sok helyen léteznek és elvileg közösen működnek
-
Azonban a különböző adatbázisok több tekintetben is eltérnek
-
Adatbázis modellek (relációs, OO, NoSQL, dokumentum)
- Séma (normalizált, nem normalizált)
- Megnevezések, hivaktozások eltérése (tanácsadó az alkalmazott-e)
- Konvenciók (mértékegységek, SI/CGI)
Integráció megközelítése
- Adattárház
- Adatforrásokból központio másolat készítése, azokból közös sémába transzformálni
- Naponta, hetente frissül
- Ennél pontosabba nem szabad
- Mediáció, közvetítés
- Összes adatforrásra egy nézetet kialakítani
- Mintha egy integrált rendszer részei volnának
- A nézetek alakÍthatók úgy, hogy az elnevezési konvencióknak megfellejen
- Összes adatforrásra egy nézetet kialakítani

XML Adatttípusok
CDATA- String