1 / 32

XML och frågespråk

XML och frågespråk. nikos dimitrakas nikosd@kth.se 08-162099 Rum 6626. Connolly/Begg (3rd edition) Kapitel 29.2, 29.3.1, 29.3.2, 29.3.3, 29.3.4, 29.3.8, 29.4.5 (obs! upplaga 3 täcker inte allt) (4th edition) Kapitel 30.2, 30.3.1, 30.3.2, 30.3.3, 30.3.4,

vin
Download Presentation

XML och frågespråk

An Image/Link below is provided (as is) to download presentation Download Policy: Content on the Website is provided to you AS IS for your information and personal use and may not be sold / licensed / shared on other websites without getting consent from its author. Content is provided to you AS IS for your information and personal use only. Download presentation by click this link. While downloading, if for some reason you are not able to download a presentation, the publisher may have deleted the file from their server. During download, if you can't get a presentation, the file might be deleted by the publisher.

E N D

Presentation Transcript


  1. XML och frågespråk nikos dimitrakas nikosd@kth.se 08-162099 Rum 6626 Connolly/Begg (3rd edition) Kapitel 29.2, 29.3.1, 29.3.2, 29.3.3, 29.3.4, 29.3.8, 29.4.5 (obs! upplaga 3 täcker inte allt) (4th edition) Kapitel 30.2, 30.3.1, 30.3.2, 30.3.3, 30.3.4, 30.4 (dock inte 30.4.1), 30.5.3, (30.6) (5th edition) Kapitel 31.2, 31.3.1, 31.3.2, 31.3.3, 31.3.4, 31.4 (dock inte 31.4.1), 31.5.3, (31.6)

  2. Står för Extensible Markup Language Ett språk för att definiera dokumentstrukturer XML är en textuell representation av data Används i olika områden: Datalagring Webb (XHTML) Konfigurationsfiler Transportformat Regler kan specificeras via DTD (Document Type Definition) XML Schema Case sensitive XML

  3. XML syntax Element <Person>Kalle</Person> Attribut <Person namn="Kalle"></Person> Nästlade element <Person id="59"> <Fnamn>Kalle</Fnamn> <Enamn>Lindblim</Enamn> <Adress> <Gata>Kungsgatan 53</Gata> <Postnr>12332</Postnr> <Ort>Stockholm</Ort> </Adress> </Person> Tomt element <Person namn="Kalle"></Person> <Person namn="Kalle" />

  4. XML-deklaration <?xml version="1.1" encoding="UTF-8" ?> DOCTYPE – referens till regler <!DOCTYPE Person SYSTEM "Person.dtd"> Namespaces kvalificering av element- och attributnamn <iv1351:Person iv1315:namn="Kalle"></iv1351:Person> default och andra namespaces <Root xmlns="default ns URI" xmlns:iv1351="iv1351 ns URI"> … </Root> XML-dokument

  5. ID <Person namn="Kalle" id="39"></Person> IDREF <Organisation namn="KTH" chef="39"></Organisation> XML-referenser

  6. Definierar XML-strukturen (element och attribut) <!ELEMENT db (Person*)> <!ELEMENT Person (Adress)> <!ELEMENT Adress EMPTY> <!ATTLIST Person namn CDATA #REQUIRED id ID #REQUIRED fdatum CDATA #IMPLIED pappa IDREF #IMPLIED> <!ATTLIST Adress gatuadress CDATA #REQUIRED postnr CDATA #REQUIRED postort CDATA #REQUIRED> DTD (Document Type Definition)

  7. Starkare än DTD flexiblare strukturer datatyper XML-syntax <element name="db" type="dbType"/> <complexType name="dbType"> <sequence> <element name="Person" type="PersonType" minOccurs="0" maxOccurs="unbounded"/> </sequence> </complexType> <complexType name="PersonType"> <sequence> <element name="Adress" type="AdressType" /> </sequence> <attribute name="namn" type="string" use="required"/> <attribute name="id" type="id" use="required"/> <attribute name="fdatum" type="date" use="optional"/> <attribute name="pappa" type="idref" use="optional"/> </complexType> <complexType name="AdressType"> … XML Schema

  8. Well-formed XML Syntaktiskt korrekt Börjar med XML-deklarationen Innehåller endast ett rot-element Matchade öppnings- och stängningstaggar Valid XML Följer reglerna i den kopplade DTD eller XML Schema Well-formed & Valid

  9. XML Språk Språk för att komma åt innehållet i XML-dokument XPath XSLT XQuery SQL/XML (SQL 2003c) (SQL 2008) Proprietary languages (IBM, Oracle, etc.) …

  10. XPath Path expressions för navigering i XML-strukturer Stödjer villkor och wildcards Inkluderar många funktioner Exempel: /Book[@Price=500]/Author/@Name

  11. XSLT Möjliggör transformationer mellan olika XML-strukturer Exempel: <xsl:template match=“/”> <authors> <xsl:for-each select=“books/book/author”> <author><xsl:value-of select=“name”></author> </xsl:for-each> </authors> </xsl:template> <books> <book title=“x”> <author name=“a”/> </book> <book title=“y”> <author name=“b”/> </book> </books> <authors> <author>a</author> <author>b</author> </authors>

  12. XQuery Frågespråk för XML Kombinerar XPath och FLWOR-uttryck FLWOR: For Let Where Order by Return Stödjer alla funktioner som ingår i XPath Baserat på andra språk som SQL, OQL, Lorel, etc.

  13. SQL/XML SQL 2003 & 2008 (ISO standard) Stöd för XML i relationsdatabaser Lagring Hantering via XQuery Stöd för komposition av XML-dokument från vanliga relationsdata med SQL Funktioner för generering av XML-dokument i SQL: XMLELEMENT XMLFOREST XMLATTRIBUTES XMLAGG XMLCONCAT … Bonusmaterial om SQL/XML finns i Bilda

  14. Proprietära Språk/Teknologier Stöd för lagring och hantering av XML-data, samt transformationer mellan XML och relationsdata IBM: SQL UDFs: Extract-funktioner, Update-funktion Mappning XML-RDB: DAD-filer Oracle: SQL UDFs: Extract-funktioner, existsNode, etc. Microsoft Egen variant av SQL/XML Egen variant av XQuery-stöd … och många andra

  15. Exempeldata <Filmer> <Film Titel="Driven" År="2001"> <Skådis Namn="Burt Reynolds" Födelseår="1936" Land="USA"/> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Kip Pardue" Födelseår="1976" Land="Canada"/> <Regissör Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Produktionsbolag>Tri-Star</Produktionsbolag> </Film> <Film Titel="Antz" År="1998"> <Skådis Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Skådis Namn="Silvester Stallone" Födelseår="1946" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Regissör Namn="Eric Darnell" Födelseår="1961" Land="Ireland"/> <Produktionsbolag>Universal</Produktionsbolag> </Film> <Film Titel="Picking Up the Pieces" År="2000"> <Skådis Namn="Woody Allen" Födelseår="1935" Land="USA"/> <Skådis Namn="Sharon Stone" Födelseår="1958" Land="USA"/> <Skådis Namn="Alfonso Arau" Födelseår="1948" Land="USA"/> <Regissör Namn="Eric Darnell" Födelseår="1961" Land="Ireland"/> <Produktionsbolag>Tri-Star</Produktionsbolag> </Film> … </Filmer>

  16. XPath / // @ /element/@attribut /elementX//elementY Wildcards * nodes() Predicates: [predicate]: /element[1] /element[@attribute=value] . och .. ("current node" och "parent node") | (konkatenering)

  17. XPath Exempel Alla Filmer (Film-noder): //Film Alla Filmer (Film-noder) från år 2000 //Film[@År=2000] Året för filmer av Universal //Film[Produktionsbolag='Universal']/@År Regissörer för filmer från 2000 och 2003 //Film[@År=2000]/Regissör | //Film[@År=2003]/Regissör Titel på filmer med Woody Allen //Skådis[@Namn='Woody Allen']/../@Titel

  18. XPath Axes child, ancestor, descendant, parent /Filmer/child::Film (ekvivalent med /Filmer/Film) //Skådis/ancestor::Film

  19. XQuery For Loopar igenom en nodsekvens (eller värdesekvens) Let Tilldelningar Where Villkor Order By Sordering av resultatet Return Konstruktion av resultatet

  20. XQuery FLWOR-uttryck kan nästlas. Ingen klausul är obligatorisk. XPath-uttryck kan användas i alla klausuler. Resultatet kan vara well-formed XML, men behöver inte vara det. Funktionen doc() kan användas för att definiera källan (ett XML-dokument). Annars kan man använda exekveringsmiljön för att konfigurera källan.

  21. XQuery Variabler börjar med $: for $s in //Film/Skådis let $n := $s/@Namn Sekvenser: for $x in (1, 2, 3) let $y := (1, 2, 3) Utverdering av uttryck: Lägg uttrycket inuti { }: <resultat>{$x*3}</resultat>

  22. XQuery – Flera resultat return-klausulen genererar ett resultat per värde i for-loopen: for $x in (1,2,3) return <värde>{$x}</värde> Placera resultatet i ett annat resultat som kan fungera som rot-nod: <resultat>{ for $x in (1,2,3) return <värde>{$x}</värde> }</resultat>

  23. XQuery/XPath-funktioner Sekvens-funktioner: distinct-values(s) min(s), max(s), sum(s), avg(s) empty(s), exists(s) union(s1,s2), instersect(s1,s2), except(s1,s2) concat(s1,s2) Nod-funktioner: name(n), local-name(n), node-name(n)

  24. XQuery/XPath-funktioner String-funktioner: matches(s, regexp) concat(s1,s2) starts-with(s1,s2), ends-with(s1,s2), contains(s1,s2) substring(s, start), substring(s, start, length) lower-case(s), upper-case(s) replace(s, pattern, replacement) tokenize(s, pattern)

  25. XQuery/XPath-funktioner Other functions: doc(URI) not(e) Många datum/tid-funktioner Många numeriska funktioner data(ns) – Seqvens av noder till seqvens av enkla (atomic) värden number(n) – Värdet av noden som nummer eller NaN string(n) – Nodens värde som string current-time(), current-date(), current-dateTime()

  26. XQuery/XPath-operatorer +, -, *, div, mod =, !=, >, <, <=, >= eq, ne, lt, le, gt, ge or, and, not is, >>, <<

  27. XQuery-funktioner element() /element() (samma som /*) attribute() //Film/attribute() (samma som //Film/@*) node() /node() – element-noder och text-noder /@node() – attribut-noder

  28. XQuery – Computed Constructors element element name value: let $a := "a", $b := 2 return <x>{element {$a} {$b}}</x> attribute attribute name value: let $a := "a", $b := 2 return <x>{attribute {$a} {$b}}</x>

  29. XQuery – Flödeskontroll if-then-else for $a in (1 to 5) return if ($a mod 2 = 0) then <even>{$a}</even> else <odd>{$a}</odd>

  30. XQuery – Kvantifierare some for $a in //Film where some $b in $a/Skådis/@Land satisfies string($b) = "Austria" return $a every for $a in //Film where every $b in $a/Skådis/@Land satisfies string($b) = "USA" return $a

  31. XQuery – Nesting Ett uttrycks resultat blir källa för ett annat uttryck: for $x in distinct-values (for $a in (1 to 6), $b in (1 to 6) return <summa>{$a + $b}</summa>) return <unik>{$x}</unik>

  32. Mer Information XPath http://www.w3schools.com/xpath/ XQuery http://www.w3schools.com/xquery/ http://www.stylusstudio.com/xml_tutorial.html

More Related