XML og databaser
XML og databaser
XML og databaser
- No tags were found...
Create successful ePaper yourself
Turn your PDF publications into a flip-book with our unique Google optimized e-Paper software.
HVA ER <strong>XML</strong>?• eXtensible Markup Language• En standardisert måte å strukturere ulike typerdata• Åpent format• Enkelt:• Tagger/Noder• Attributter• Mest kjente <strong>XML</strong>-versjon er XHTML• En mengde datakilder er tilgjengelige i <strong>XML</strong>formater
<strong>XML</strong> EKSEMPEL 1NordmannOlaNordmannKari
<strong>XML</strong> – STRUKTUR• Tagger/ noder <strong>og</strong> attributter• Må være velformet.• Kan ha et metaspråk: Regler for hvordan språk/dokumenttyper skal lagres.Egendefinert velformethet.• DTD : Enkelt• http://www.w3schools.com/dtd/dtd_intro.asp• <strong>XML</strong> Schema : Mer avansert• http://www.w3schools.com/schema/schema_howto.asp
VELFORMET STRUKTUR• Tagger må avsluttes.• Olsen• • Tagger må avsluttes i riktig rekkefølge.• • Ikke:•
TILGJENGELIGE DATAKILDER I <strong>XML</strong>• Værdata:• http://www.yr.no/verdata/1.3316805• Flydata:• http://www.avinor.no/avinor/trafikk/50_Flydata• Kollektivtrafikk:• http://labs.trafikanten.no/aapne-data.aspx
FORDELER• Menneskeleselig• Maskineleselig• Ferdige verktøy, takket være felles struktur• DOM• XPATH• XQUERY• Osv..• Kan editeres i alt fra Notepad til rene <strong>XML</strong>verktøy• Kan modellere mer strukturert enn flatfiler(csv)
ULEMPER• Kan være vanskelig å skille hva som bør væreattributt <strong>og</strong> node• Kan være treigere å finne frem til data i enn f.eks encsv-fil• Uthenting fra store/kompliserte datamengder kanvære tidskrevende.
<strong>XML</strong> OG DATABASER• Flere nivåer:• Relasjons<strong>databaser</strong> som kan prod. <strong>XML</strong> (postgreSQL,SQL server etc)• Relasjons<strong>databaser</strong> som lagrer som <strong>XML</strong> (StorageEngine)• Relasjons<strong>databaser</strong> som inneholder <strong>XML</strong>• <strong>XML</strong>-dokumenter som database• Native <strong>XML</strong> <strong>databaser</strong>• Er <strong>XML</strong> en DB?• DB: JA(Definisjonsspørsmål)• DBMS: Nei, men det finnes <strong>XML</strong>-DBMS'er
XQUERY• Spørrespråk tilpasset <strong>XML</strong>• Benytter XPath• Ligner SQL, men man kan detaljere formatering på output.• Inneholder samme muligheter som SQL• Funksjoner, tester, formatering av output osv..• Outputen vil som oftest være en eller annen form for <strong>XML</strong>• Da <strong>og</strong>så XHTML osv...
XPATH• Ideen er å kunne adressere seg frem til visse elementer...• Adresserer oss frem, som med filstier på maskinen• F.eks /dem<strong>og</strong>raphics/region/country• Kan inneholde en slags ”WHERE”• F.eks /dem<strong>og</strong>raphics/region[name=”Africa”]/country• Vi kan hoppe over deler av stien• F.eks /dempgraphics//name• Vi kan gå til noden over oss• F.eks /dem<strong>og</strong>raphics//city[../name="Norway"]• Vi kan referere til gjeldende node• F.eks //name[.="Oslo"]• Vi kan hente ut attributter• F.eks /dem<strong>og</strong>raphics/region/@id• F.eks /dem<strong>og</strong>raphics/region[@id="1"]
SAXON• Ett av flere verktøy som kan kjøre XQuery spørringer mot <strong>XML</strong>• Finnes i Java <strong>og</strong> .NET versjon (vi bruker .net verjsonen...)• Last ned fra http://saxon.sourceforge.net/• NB! Pass på å velge Saxon HE-versjonen• Kan brukes mot pr<strong>og</strong>rammeringsspårket eller som stand-alone• NB! Gratisversjonen av Saxon støtter ikke delete, insert etc• Kjøres slik (.NET versjonen):• .\Query.exe -s:dem<strong>og</strong>raphics.xml -o:output.xml-q:query.xq• Må stå i ”bin”-mappa til saxon…• Eller legge til i Pathen
RÅDATA• Dere kan finne en fin <strong>XML</strong>-fil å jobbe medher...(dem<strong>og</strong>raphics.xml):• http://media.wiley.com/product_ancillary/02/04717912/DOWNLOAD/AppB.<strong>XML</strong>.zip
EKSEMPEL 1 – HENTE UT ENKELDATAfor $i in /dem<strong>og</strong>raphics/region/countryreturn $i/name
EKSEMPEL 2 – HENTE UT DATAMED ORDER BYfor $i in /dem<strong>og</strong>raphics/region/countryorder by $i/area descendingreturn $i/name
EKSEMPEL 3 – HENTE UTATTRIBUTTVERDIERfor $i in /dem<strong>og</strong>raphics/region/countrywhere $i/@id
EKSEMPEL 4 – HENTE UT DATAMED WHEREfor $i in /dem<strong>og</strong>raphics/region/countrywhere $i/area > 1000000return $i/name
EKSEMPEL 5 – HENTE UT FLEREVERDIERfor $i in /dem<strong>og</strong>raphics/region/countryreturn {$i/name} {$i/area}
EKSEMPEL 6 – BYGGE <strong>XML</strong>{}for $i in /dem<strong>og</strong>raphics/region/countryreturn {string($i/name)}
EKSEMPEL 7 – GENERERE ANDREOUTPUTDette er landene vi har i databasen:{for $i in /dem<strong>og</strong>raphics/region/countryreturn if($i/area> 10000)then Stort land: {string($i/area)}{(string($i/name))} else Lite land: {string($i/area)} {(string($i/name))}}Generert av XQuery:-)
EKSEMPEL 8 - SUBQUERIES{for $i in /dem<strong>og</strong>raphics/region/countryreturn {$i/name} {for $x in $i/population/yearwhere $x/@year>1980return {$x/@population}}}
NATIVE <strong>XML</strong>-DATABASER
NATIVE <strong>XML</strong>-DATABASES• Mest kjente er eXist• http://exist.sourceforge.net/• Alt foregår i <strong>XML</strong> <strong>og</strong> ulike <strong>XML</strong>-språk.• Tabeller er erstattet med <strong>XML</strong>-dokumenter• Støtter selvfølgelig insert, update etc• http://exist.sourceforge.net/update_ext.html
DEMO AV EXIST• Relasjonsavhengige spørringer• Replace• Insert• Delete
RELASJONSSPØRRINGERfor $i in /ansatte/ansatt,$j in /avdelinger/avdelingwhere $i/avd_id = $j/data(@avd_id)return {$i,$j}
REPLACEupdate replace //fornavn[.='Per-Olav']with Per
INSERTupdate insert KurtFurta2into /ansatte
DELETEfor $i in //ansattwhere $i/fornavn='Kurt'return update delete $i