12.07.2015 Views

XML og databaser

XML og databaser

XML og databaser

SHOW MORE
SHOW LESS
  • 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

Hooray! Your file is uploaded and ready to be published.

Saved successfully!

Ooh no, something went wrong!