HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:

Størrelse: px
Begynne med side:

Download "HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt:"

Transkript

1 HVA ER XML? extensible Markup Language En standardisert måte å strukturere ulike typer data Åpent format Enkelt: Tagger/Noder Attributter Mest kjente XML-versjon er XHTML En mengde datakilder er tilgjengelige i XMLformater

2 XML EKSEMPEL 1 <?xml version="1.0" encoding="utf-8"?> <kunder> </kunder> <kunde kundeid="a123"> <etternavn>nordmann</etternavn> <fornavn>ola</fornavn> </kunde> <kunde kundeid="a124"> <etternavn>nordmann</etternavn> <fornavn>kari</fornavn> </kunde>

3 XML STRUKTUR Tagger/ noder og attributter Må være velformet. Kan ha et metaspråk: Regler for hvordan språk/dokumenttyper skal lagres. Egendefinert velformethet. DTD : Enkelt XML Schema : Mer avansert

4 VELFORMET STRUKTUR Tagger må avsluttes. <etternavn>olsen</etternavn> <hobby /> Tagger må avsluttes i riktig rekkefølge. <kunde><fornavn></fornavn></kunde> Ikke: <kunde><fornavn></kunde></fornavn>

5 TILGJENGELIGE DATAKILDER I XML Værdata: Flydata: Kollektivtrafikk:

6 FORDELER Menneskeleselig Maskineleselig Ferdige verktøy, takket være felles struktur DOM XPATH XQUERY Osv.. Kan editeres i alt fra Notepad til rene XML verktøy Kan modellere mer strukturert enn flatfiler(csv)

7 ULEMPER Kan være vanskelig å skille hva som bør være attributt og node Kan være treigere å finne frem til data i enn f.eks en csv-fil Uthenting fra store/kompliserte datamengder kan være tidskrevende.

8 XML OG DATABASER Flere nivåer: Relasjonsdatabaser som kan prod. XML (postgresql, SQL server etc) Relasjonsdatabaser som lagrer som XML (Storage Engine) Relasjonsdatabaser som inneholder XML XML-dokumenter som database Native XML databaser Er XML en DB? DB: JA(Definisjonsspørsmål) DBMS: Nei, men det finnes XML-DBMS'er

9 XQUERY Spørrespråk tilpasset XML 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 XML Da også XHTML osv...

10 XPATH Ideen er å kunne adressere seg frem til visse elementer... Adresserer oss frem, som med filstier på maskinen F.eks /demographics/region/country Kan inneholde en slags WHERE F.eks /demographics/region[name= Africa ]/country Vi kan hoppe over deler av stien F.eks /dempgraphics//name Vi kan gå til noden over oss F.eks /demographics//city[../name="norway"] Vi kan referere til gjeldende node F.eks //name[.="oslo"] Vi kan hente ut attributter F.eks F.eks

11 SAXON Ett av flere verktøy som kan kjøre XQuery spørringer mot XML Finnes i Java og.net versjon (vi bruker.net verjsonen...) Last ned fra NB! Pass på å velge Saxon HE-versjonen Kan brukes mot programmeringsspårket eller som stand-alone NB! Gratisversjonen av Saxon støtter ikke delete, insert etc Kjøres slik (.NET versjonen):.\query.exe -s:demographics.xml -o:output.xml -q:query.xq Må stå i bin -mappa til saxon Eller legge til i Pathen

12 RÅDATA Dere kan finne en fin XML-fil å jobbe med her...(demographics.xml): WNLOAD/AppB.XML.zip

13 EKSEMPEL 1 HENTE UT ENKEL DATA for $i in /demographics/region/country return $i/name

14 EKSEMPEL 2 HENTE UT DATA MED ORDER BY for $i in /demographics/region/country order by $i/area descending return $i/name

15 EKSEMPEL 3 HENTE UT ATTRIBUTTVERDIER for $i in /demographics/region/country where $i/@id<15 return $i/name

16 EKSEMPEL 4 HENTE UT DATA MED WHERE for $i in /demographics/region/country where $i/area > return $i/name

17 EKSEMPEL 5 HENTE UT FLERE VERDIER for $i in /demographics/region/country return <land>{$i/name} {$i/area}</land>

18 EKSEMPEL 6 BYGGE XML <landsinfo> { } for $i in /demographics/region/country return <land areal="{string($i/area)}">{string($i/name)} </land> </landsinfo>

19 EKSEMPEL 7 GENERERE ANDRE OUTPUT <html> <body> <h1>dette er landene vi har i databasen:</h1> { for $i in /demographics/region/country return if($i/area> 10000) then <pre>stort land: {string($i/area)} {(string($i/name))} </pre> else <pre>lite land: {string($i/area)} {(string($i/name))} </pre> } <i>generert av XQuery:-)</i> </body> </html>

20 EKSEMPEL 8 - SUBQUERIES <landinfo> { for $i in /demographics/region/country return <land> {$i/name} <populationdata> { for $x in $i/population/year where $x/@year>1980 return <populationyear="{string($x/@year)}"> {$x/@population}</population> } </populationdata></land> } </landinfo>

21 NATIVE XML- DATABASER

22 NATIVE XML-DATABASES Mest kjente er exist Alt foregår i XML og ulike XML-språk. Tabeller er erstattet med XML-dokumenter Støtter selvfølgelig insert, update etc

23 DEMO AV EXIST Relasjonsavhengige spørringer Replace Insert Delete

24 RELASJONSSPØRRINGER for $i in /ansatte/ansatt, $j in /avdelinger/avdeling where $i/avd_id = $j/data(@avd_id) return <output>{$i,$j}</output>

25 REPLACE update replace //fornavn[.='per-olav'] with <fornavn>per</fornavn>

26 INSERT update insert <ansatt ans_id="ans5"> <fornavn>kurt</fornavn> <etternavn>furt</etternavn> <avd_id>a2</avd_id> </ansatt> into /ansatte

27 DELETE for $i in //ansatt where $i/fornavn='kurt' return update delete $i