XML. Databaser Leksjon 14c: XML - 1

Like dokumenter
XML Schema. David Massey MBIB

Semistrukturerte data og XML

Læringsmål XML. Markering av tekst. SGML-familien. Forstå prinsippene bak XML og XHTML. Forstå hva XML kan brukes til og hvordan.

1. XHTML. Innhold Innledning

1. XML Grunnlag

Web fundamentals. Web design. Frontend vs. Backend Webdesign 17. januar Monica Strand

XML - kurs. XML-kurs for nybegynnere. ICONS Management Elisabeth Buntz

Markeringsspråk og XML Nettsider og XHTML

Markeringsspråk og XML

1. Lage og vise et enkelt XML-dokument

NOIS-PIAH XML-import Filformat

1. Mer om oppbyning av XML-dokument

MMT105 Internettprogrammering Uke 44, høst 2007

XSLT 1. David Massey MBIB

Oblig 2: Prototype. Oblig 2: Mulig sekvens. Oblig 2: Grovstruktur. Oblig 2: The Candy-community. Begrenset prototype Teste teknologi:

Semistrukturerte data og XML

XML Kurs for earkivar

Teknisk håndbok SPESIFIKASJON. Påmelding i XML-FORMAT. versjon Status: Gjeldene. Påmelding XML format versjon 2.9

Navngivning av XML elementer

XML. Figur Et eksempel på et XML-dokument

Teknisk håndbok efaktura Spesifikasjon Påmelding i XML-format Innhold

Markeringsspråk og XML

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

XML og JDOM. Helge Furuseth

XSLT 2. David Massey MBIB

Javascript. Mer om layout

HØGSKOLEN I SØR-TRØNDELAG

Web Services. Olav Lysne

Intro til WWW, HTML5 og CSS

HTML-del. 1. <!-- ikke slett min kode, vær så snill --> er a) en HTML stil-tag b) en CSS stil-tag c) en HTML kommentar-tag d) en CSS kommentar-tag

og XML Where is the Life we have lost in living? Where is the wisdom we have lost in knowledge? Where is the knowledge we have lost in information?

(X)HTML, CSS og JavaScript HTML. Det første dokumentet Grunnleggende programmering i Java Monica Strand 26.

MPEG-7. Problemstilling:

INF1040 Oppgavesett 4: CSS

HØGSKOLEN I SØR-TRØNDELAG Avdeling for informatikk og e-læring - AITeL

INF1040 Oppgavesett 5: XML

Beskrivelse av filformatet for likningsoppgaven pass og stell av barn

Databaser: Relasjonsmodellen, del I

MOD 250 Avansert programvareteknologi Extensible Markup Language, XML

Modeller for design av Web-Applikasjoner

NCE TOURISM FJORD NORWAY. FJORDNETT INTERNETTFORUM 2012 Bergen, 12./13. juni 2012

EKSAMEN Web-publisering

IDA 350, oppgave 4. André Børge Kjetil (gruppe2) 3. november 2005

praktiske eksempler DOM Document Object Model DOM og Høst 2013 Informasjonsteknologi 2 Læreplansmål Gløer Olav Langslet Sandvika VGS

OBLIG 1 - WEBUTVIKLING

Vedlegg til meldinger

EKSAMEN Webpublisering

NKKN typeforslag versjon Definisjon av grunntypene

DRI1002 IKT og Informasjonssøking Våren forelesning 16. Januar Arild Jansen, Avd. for forvaltningsinformatikk, UiO

Pass og stell av barn

Forslag til nasjonal standard for sending av vedlegg til nasjonale XML-meldinger

lagring med HTML5 Offline lagring Offline Informasjonsteknologi 2 Gløer Olav Langslet Sandvika VGS

Skatteetaten Drosjesentraler Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten Gjelder fra inntektsåret 2013 Versjon 1.0.

class Book { String title; } class Dictionary extends Book { int wordcount; } class CartoonAlbum extends Book { int stripcount; }

Løsningsskisse prøve IT1

extensible Markup Language XML

EKSAMEN DATABASER OG WEB Et maskinskrevet notat på maksimalt 2 A4-sider, satt med enkel linjeavstand og skriftstørrelse 12 (eller større).

Beskrivelse av filformatet for opplysninger om "Kjøp fra primærnæring Pelsdyrskinn" til Skatteetaten

ADDML. Archival Data Description Markup Language. Generell del. Versjon PA 0.07 Sist oppdatert: TPD. ADDML_8_2.doc 03/03/2011 1(12)

HTML: Del inn nettsiden

Læringsmål og pensum. Hvordan virker webteknologi? (klient-tjener arkitektur) HTML - virkemåte. Nettleser: Firefox, Opera, Safari

Arv. Book book1 = new Book(); book1. title = "Sofies verden" class Book { String title; } class Dictiona ry extends Book {

Tilgjegelighet av XHTML-forms

INF3100 Databasesystemer

Oppgave 1 (Etter forelesning 31/8) Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

INF1300 Introduksjon til databaser

1. Relasjonsmodellen Kommentarer til læreboka

Rapport fra arbeidet med eksport av data fra SFX til BIBSYS

UNIVERSITETET I OSLO. Relasjonsmodellen. Relasjoner og funksjonelle avhengigheter. Institutt for Informatikk. INF Ellen Munthe-Kaas 1

CSS-formatering: stilark med kommentarer

EKSAMEN. Elektronisk publisering. INNFØRING MED PENN, evt. trykkblyant som gir gjennomslag

HØGSKOLEN I SØR-TRØNDELAG

Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2)

Litt om kompilering og interpretering. Dagens tema Syntaks (kapittel Komp. 47, kap. 1 og 2) Syntaks og semantikk

To RDF or not to RDF Fagdag om Noark 5 og RDF

IN2090 Introduksjon til databaser

TENK TECH SUMMERCAMP BYGG DIN EGEN NETTSIDE

HUMIT1731. Tekstkoding. Koding/merking av tekst Uke 35. Tekster som teknologiske produkter. Koding/merking på flere nivå. Utvikling av notesystemet

SQL og Mengdelære. Oracle, MySQL, Access, bruker forskjellige syntaks.

OBLIG 2 WEBUTVIKLING

FORORD... III KAPITTELOVERSIKT... VI INNHOLDSFORTEGNELSE... VII DEL I SQL OG RELASJONSDATABASER INTRODUKSJON...

DRI2001 : Informasjonsinfrastrukturer Forelesning Arild Jansen, AFIN

Markeringsspråk og XML

Skatteetaten Boligsameie Beskrivelse av filformatet for innsending av opplysninger til Skatteetaten Gjelder fra og med innrapportering i januar 2016

HIS 1023:2010. Pasientliste Informasjonsmodell og XML meldingsbeskrivelse

Oblig 1. Oppgave 1. Gå gjennom nettsiden arngren.net og list opp alle problemene du ser. Både i funksjonalitet/bruk og i koden bak.

HØGSKOLEN I SØR-TRØNDELAG

Databaser. Relasjonsmodellen 1 Læreboka: Kap. 2 Relasjonsmodellen Faglærere: Tore Mallaug, Kjell Toft Hansen

Spørretjenesten pasientens frikortstatus

Brukerdokumentasjon. Webservices og webklient for kodeverk/ kodeverdi verifisering

Høringsnotat ny delversjon av Referansekatalog for anbefalte og obligatoriske IT-standarder i offentlig sektor, våren 2015

SQL Structured Query Language. Definere tabeller Skranker Fylle tabeller med data

ER-BASERT ABONNEMENT PÅ ENDRINGER FRA GREP

Semantisk Analyse del I

Utvikling av dynamiske nettsteder med PHP og databaser, våren 2009

Stilark Cascading Style Sheets - CSS

Stilark Cascading Style Sheets - CSS

Angivelse av EHF profiler og dokumenttyper

Grunnleggende om websider og HTML-kode

Nettsider og XHTML. SGML-familien. Hvordan lage et nettsted

Transkript:

XML XML vs HTML Språket XML Elementer og attributter Prolog, navnerom, prosesseringsinstruksjoner Gyldig XML DTD XML Schema XML som hierarkisk struktur (XPath) Transformasjon og presentasjon (XSLT) XML og databaser Strukturerte og semi-strukturerte data Lagring av XML-data i databaser XML som overføringsformat Spørrespråk mot XML Web-tjenester Pensum: Kapittel 16 SOAP, WSDL, UDDI Databaser Leksjon 14c: XML - 1

XML - extensible Markup Language Syntaksregler for velformet XML Hvert XML-dokument har ett og bare ett rot-element Alle elementer har både start-merke og slutt-merke Hvert element kan ha attributter med en attributtverdi Attributtverdier er alltid i fnutter (anførselstegn) Ett element kan ikke ha to attributter med samme navn Kan ha nøstede elementer som i HTML, men: Elementer kan ikke overlappe XML er et meta-språk = språk for å definere nye språk Finnes for mange fagområder og bransjer, f.eks: Geografiske data (GML) www.opengis.net/gml/ e-handel (ebxml) www.ebxml.org Kjemiske formler (CML) www.xml-cml.org XHTML 1.0 = HTML 4 definert ved hjelp av XML 1.0 Se www.w3.org/tr/xhtml1/ Databaser Leksjon 14c: XML - 2

HTML vs XML - I <body> <h1>html</h1> <p> <b>html</b> er et språk for å beskrive nettsider. </p> </body> h1 body p b HTML er bygget opp fra elementer organisert i en tre-struktur Hvert element har et start-merke og et slutt-merke, og består av tekst og/eller andre elementer Lovlige HTML-elementer er forhåndsdefinert Nettlesere vet hva h1, p og b betyr HTML beskriver både struktur og presentasjon! Denne sammenblanding er ofte uheldig Databaser Leksjon 14c: XML - 3

HTML vs XML - II XML er et meta-språk Ingen forhåndsdefinerte elementer Må tolkes for å bli presentert XML dokumentet må knyttes til et sett med presentasjonsregler (stilark).xml.htm.htm.txt <sjakktrekk> <brikke> <farge>hvit</farge> <type>tårn</type> </brikke <fra>d1</fra> <til>d8</til> </sjakktrekk> Kan vises som teksten Hvitt tårn fra D1 til D8, eller som en animasjon. Databaser Leksjon 14c: XML - 4

Oppbygging av XML-dokumenter XML har «HTML-syntaks» Elementer og attributter Må ha 1 rot Alle elementer må ha slutt-merke (evt. bruk av / ) Elementer kan ikke overlappe Kan som i HTML ha elementer som inneholder både tekst og andre elementer (<t1>tekst<t2>mer tekst</t2></t1>) <?xml version="1.0" encoding="utf-8"?> <melding dato="07.12.2001" rom="5-116"> <avsender fnavn="kari" enavn="lie"/> <beskjed>xml-forelesning om 5 min!</beskjed> </melding> Databaser Leksjon 14c: XML - 5

Navnerom Navnerom er innført for å unngå navnekollisjoner av egendefinerte elementer med forskjellige betydninger i forskjellige XMLdokumenter. Kan ha to elementer med samme navn så lenge de er definert i forskjellige navnerom (name spaces). <hit xmlns = "http://www.hit.no" xmlns:k = "http://www.hit.no/skipsfart"/> <k:kurs>nordvest</k:kurs>... <kurs>grunnkurs i akvatisk økologi</kurs>... URL'er (URI Uniform Recource Identifier) brukes for unik navngiving, og trenger ikke å være en nettadresse som eksisterer. Databaser Leksjon 14c: XML - 6

Anvendelser av XML MathML (Mathematical Markup Language) er en XMLbasert standard for matemattik. Eksempel : <apply> <power> <apply><plus/><ci>a</ci>/><ci>b</ci></apply> <cn>2</cn> </apply> GML (Geographic Markup Language) er en XML-basert standard for å beskrive geografiske kartdata. Dette er eksempler på bruk av XML for å standardisere et fagområde. XML kan også brukes for å standardisere vokabularet i en bransje eller næringskjede Databaser Leksjon 14c: XML - 7

Graf (til venstre) og tre (til høyre) XML-dokumenter er trestrukturer (pga. at elementer er nøstet) Forståelsen av XML som tre-struktur er nyttig for å beskrive lovlige dokumenter, for å adressere deler av et XML-dokument og for å lage stilark for XML Nettverksdatabaser og hierarkiske databaser «Tre-strukturer» i relasjonsdatabaser: En-til-mange forhold 1 a 2 3 c b 4 5 e d Databaser Leksjon 14c: XML - 8

Trestrukturen Foreldre, barn, søsken Forfedre, avkom bookstore book book title author year Databaser Leksjon 14c: XML - 9

Noder Det er 7 nodetyper i et XML-tre: document (root) node element attribute text namespace processing-instruction comment Databaser Leksjon 14c: XML - 10

DOM (Document Object Model) DOM (Document Object Model) er en trestruktur av objekter Kan behandles med forskjellige programmeringsspråk (standard) Metoder: appendchild, removechild, nextsibling, childnodes, Definert både for HTML og XML Rotnoden «root» representerer hele dokumentet! root comment element comment attribute comment element element text text text Databaser Leksjon 14c: XML - 11

Lovlige struktur av XML-dokumenter Et XML-dokument som er «syntaktisk korrekt» sies å være velformet. Nøyaktig ett rotelement. Alle elementer har et startmerke og et sluttmerke. Elementer er nøstet korrekt (trestruktur). Vi trenger forskjellige typer av XML-dokumenter. Det finnes flere teknikker for brukerdefinerte bekransinger av XMLdokumenter. Et XML-dokument som (dessuten) tilfredsstiller en slik spesifikasjon sies å være gyldig. DTD (Document Type Definition) er en av slike teknikker. Databaser Leksjon 14c: XML - 12

DTD (Document Type Definition) DTD beskriver lovlig oppbygging av et spesielt type XMLdokumenter: <!ELEMENT FILM (ENFILM)*> <!ELEMENT ENFILM (TITTEL, SJANGER?, PRODÅR)> <!ELEMENT TITTEL (#PCDATA)> <!ELEMENT SJANGER (#PCDATA)> <!ATTLIST ENFILM FilmNr CDATA #REQUIRED> <!ATTLIST ENFILM Sensur CDATA #IMPLIED> XHTML HTML formelt definert ved hjelp av XML (forenklet): <!ELEMENT html (head,body)*> <!ELEMENT body (p h1 h2 ul ol dl table)*> En DTD beskriver en generative grammatikk (som gjør BNF). Databaser Leksjon 14c: XML - 13

Formelle språk Et språk er definert ved en grammatikk. UTTRYKK ::= UTTRYKK '+' UTTRYKK UTTRYKK ::= UTTRYKK '*' UTTRYKK UTTRYKK ::= VARIABEL En parserer avgjør om en setning er lovlig. UTTRYKK Bygger gjerne opp et syntakstre. UTTRYKK VARIABEL VARIABEL VARIABEL DTD er en slags grammatikk. Databaser Leksjon 14c: XML - 14

DTD vs XML Schema Svakheter med DTD: Ingen datatyper, kun tekststrenger (PCDATA elementer / CDATA attributter) Svak støtte for primærnøkler, fremmednøkler og valideringsregler Sær syntaks, ikke XML-basert XML Schema = en rikere DTD Kan benyttes som datadefinisjonsspråk for XML-dokumenter Flere datatyper, både enkle og brukerdefinerte Primærnøkler, fremmednøkler og valideringsregler Bruker XML-syntaks Støtter XML navnerom Databaser Leksjon 14c: XML - 15

XML Schema Strukturen til et XML-skjema: <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" targetnamespace="http://www.hit.no" xmlns="http://www.hit.no" elementformdefault="qualified"> <!-- Typedefinisjoner -->... <!-- Elementdefinisjoner -->... </xs:schema> navnerom Databaser Leksjon 14c: XML - 16

Koble XML og XML Schema Opprett 2 filer på (f.eks.) www.xyz.no/: personer.xml personer.xsd XML-filen personer.xml refererer til XML-skjemaet: <?xml version="1.0" encoding="utf-8"?> <personer xmlns="http://home.hit.no" xmlns:xsi= "http://www.w3.org/2001/xmlschema-instance" xsi:schemalocation= "http://home.hit.no personer.xsd"> <person> </person> <person> </person> </personer> Databaser Leksjon 14c: XML - 17

Innebygde datatyper Et element kan tildeles en av de innebygde datatypene: string decimal integer boolean date time Eksempel på XML-data: <fornavn>per</fornavn> <alder>27</alder> <fodselsdato> 2012-02-27T17:30:07 </fodselsdato> Eksempler: <xs:element name="fornavn" type="xs:string"/> <xs:element name="alder" type="xs:integer"/> <xs:element name="fodselsdato" type="xs:date"/> Prefikser som regel med navnerom (xs må deklareres) Databaser Leksjon 14c: XML - 18

Enkle datatyper ved restriksjon: Lengde Kan lage egne (enkle) datatyper ved restriksjon av de innebygde. Restriksjon på antall tegn (lengde) <xs:simpletype name="fornavn_t"> <xs:restriction base="xs:string"> <xs:maxlength value="20"/> </xs:restriction> </xs:simpletype> Gir et element denne datatypen: <xs:element name="fornavn" type="fornavn_t"/> Databaser Leksjon 14c: XML - 19

Enkle datatyper ved restriksjon: Intervall Restriksjon på verdiområde: <xs:simpletype name="pnr_t"> <xs:restriction base="xs:integer"> <xs:mininclusive value="1"/> <xs:maxinclusive value="500"/> </xs:restriction> </xs:simpletype> Gir et element denne datatypen: <xs:element name="pnr" type="pnr_t"/> Databaser Leksjon 14c: XML - 20

Enkle datatyper ved restriksjon: Mønster Et mønster er et slags regulært uttrykk: <xs:simpletype name="regnr_t"> <xs:restriction base="xs:string"> <xs:pattern value="[a-z]{2}[0-9]{5}"/> </xs:restriction> </xs:simpletype> Gir et element denne datatypen: <xs:element name="regnr" type="regnr_t"/> Databaser Leksjon 14c: XML - 21

Komplekse datatyper En kompleks datatype kan f.eks. modellere rader i en tabell: <xs:complextype name="person_t"> <xs:sequence> <xs:element name="pnr" type="pnr_t"/> <xs:element name="fornavn" type="fornavn_t"/> <xs:element name="etternavn" type="xs:string"/> <xs:element name="tlf" type="tlf_t" /> </xs:sequence> </xs:complextype> Kan bruke både innebygde og egendefinerte datatyper når vi definerer en ny kompleks datatype Databaser Leksjon 14c: XML - 22

Antall forekomster Kan uttrykke at et element kan inneholde et bestemt antall under-elementer. En databasetabell kan inneholde vilkårlig mange rader (og kan være tom). <xs:complextype name="personer_t"> <xs:sequence> <xs:element name="person" type="person_t" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> </xs:complextype> Merk for øvrig at personer_t refererer til person_t Kan klare oss med 1 eneste elementdefinisjon <xs:element name="personer" type="personer_t"/> Databaser Leksjon 14c: XML - 23

Gjenbruk av datatyper Samme datatype kan brukes for flere elementer: <xs:complextype name="person_t"> <xs:sequence> <xs:element name="pnr" type="pnr_t"/> <xs:element name="fornavn" type="navn_t"/> <xs:element name="etternavn" type="navn_t"/> <xs:element name="tlf" type="tlf_t" /> </xs:sequence> </xs:complextype> Basert på: <xs:simpletype name="navn_t"> <xs:restriction base="xs:string"> <xs:maxlength value="20"/> </xs:restriction> </xs:simpletype> Databaser Leksjon 14c: XML - 24

Hvis pnr er et attributt: Attributter <person pnr="1" > <fornavn>per</fornavn> </person> Kan tilordne attributtet en datatype: <xs:complextype name="person_t"> <xs:sequence> <xs:attribute name="pnr" type="pnr_t"/ use="required" /> <xs:element name="fornavn" type="navn_t"/> </xs:sequence> </xs:complextype> Kan også bruke egendefinerte datatyper her. Databaser Leksjon 14c: XML - 25

Mixed content Et element med både underelementer og tekst: <letter> Dear Mr.<name>John Smith</name>. Your order will be shipped on <shipdate>2001-07-13</shipdate>. </letter> XML-type: <xs:element name="letter"> <xs:complextype mixed="true"> <xs:sequence> <xs:element name="name" type="xs:string"/> <xs:element name="shipdate" type="xs:date"/> </xs:sequence> </xs:complextype> </xs:element> Databaser Leksjon 14c: XML - 26

Ukjent innhold: any <xs:element name="message"> <xs:complextype> <xs:sequence> <xs:element name="datesent" type="xs:date" /> <xs:element name="sender" type="xs:string" /> <xs:element name="content"> <xs:complextype> <xs:sequence> <xs:any /> </xs:sequence> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> Databaser Leksjon 14c: XML - 27

Nøkler Anta vi har et XML-dokument med personer og avdelinger: Elementet avdeling har attributt anr Elementet person har underelement anr Primærnøkkel: <xs:key name="avd_pk"> <xs:selector xpath="/db/avdelinger/avdeling"/> <xs:field xpath="@anr"/> </xs:key> Fremmednøkkel: <xs:keyref name="avd_fk" refer="avd_pk"> <xs:selector xpath="/db/personer/person"/> <xs:field xpath="anr"/> </xs:keyref> Databaser Leksjon 14c: XML - 28

XPath stiuttrykk /bookstore velg roten, absolutt sti book velg alle bøker, relativ sti bookstore/book bøker rett under bookstore //book bøker vilkårlig dypt bookstore//book som over,men under bookstore //@lang alle med attributt lang /bookstore/book[1] første bok under bookstore /bookstore/book[last()] siste book /bookstore/book[position()<3] bok nr. 1 og 2 //title[@lang='eng'] engelske titler /bookstore/book[price>35.00] billige bøker /bookstore/* alle elementer under bookstore //* alle elementer, relativ sti //title[@*] alle attributter til title Databaser Leksjon 14c: XML - 29

Instans av et XML Schema Et skjema beskriver en samling dokumenter XML-dokumenter som inneholder data i henhold til et XMLSchema kalles en instans av skjemaet Sammenlign Skjema/Dokument med Datatype/Verdi Klasse/Objekt Klasse diagram / objekt-lenk diagram Grensesnitt/Implementasjon Tabelldefinsjon/Tabellinnhold Uwe: Metamodel/Model/Instance Lingvistisk vs. Ontologisk metamodel Databaser Leksjon 14c: XML - 30

DTD vs XML Schema Svakheter med DTD: Ingen datatyper, kun tekststrenger (PCDATA elementer / CDATA attributter) Svak støtte for primærnøkler, fremmednøkler og valideringsregler Sær syntaks, ikke XML-basert XML Schema = en rikere DTD Kan benyttes som datadefinisjonsspråk for XML-dokumenter Flere datatyper, både enkle og brukerdefinerte Primærnøkler, fremmednøkler og valideringsregler Bruker XML-syntaks Støtter XML navnerom Databaser Leksjon 14c: XML - 31

Hyperlenker XML documenter kan inneholde hyperlenker til andre XML-documenter eller deres deler. For å lage regler som «skriver om» XML-dokumenter er det også nyttig å kunne snakke om deler av et XMLdocument. Eksempel: Innholdet av elementet <title> som befinner seg under første forekomst av elementet <book> Notasjonen for å beskrive slike referanser bygger på tre standarder: XPath, XPointer og Xlink. Databaser Leksjon 14c: XML - 32

XPath og XLink XPath (XML Path Language) er en notasjon for å referere til deler av et XML-dokument XPath er basert på stiuttrykk (neste side) XPath inneholder et bibliotek av standardfunksjoner XPath er en W3C Standard XLink (XML Linking Language) er et spark for å lage hyperlenker til XML-documenter. Ethvert element kan være en hyperlenke. <lenke type= "simple" href="http://www.w3.org" > World Wide Web Consortium </lenke> Databaser Leksjon 14c: XML - 33

XPath stiuttrykk /bookstore velg roten, absolutt sti book velg alle bøker, relativ sti bookstore/book bøker rett under bookstore //book bøker vilkårlig dypt bookstore//book som over,men under bookstore //@lang alle med attributt lang /bookstore/book[1] første bok under bookstore /bookstore/book[last()] siste book /bookstore/book[position()<3] bok nr. 1 og 2 //title[@lang='eng'] engelske titler /bookstore/book[price>35.00] billige bøker /bookstore/* alle elementer under bookstore //* alle elementer, relativ sti //title[@*] alle attributter til title /bookstore//title.. foreldrene til title under bookstore Databaser Leksjon 14c: XML - 34

XPointer XPointer (XML Pointer Language) er en notasjon for å la hyperlenker referere til utvalgte deler av et XMLdokument ved hjelp av XPath stiuttrykk. Følgende uttrykk refererer til avsenderen av første melding på en oppslagstavle: http//www.hit.no/tavle.xml#/tavle/melding[1]//avsender Databaser Leksjon 14c: XML - 35

CSS (Cascading Style Sheets) Et CSS stilark definerer alternativ layout for HTML-elementer Alle elementer har en predefinert standard-layout Eksempel h1 { } font-weight: bold; font-size: 20pt; HTML CSS "HTML" Stilark kan brukes for å få et uniformt utseende på et nettsted Kan endre utseende ved å erstatte stilark (kun noen få stilark mange dokumenter). Diskutere Figur 194 på side 380 i boken Databaser Leksjon 14c: XML - 36

Språkfamilien XSL (extensible Stylesheet Language) XSL = stilark for XML (består av to deler) XSLT et språk for å transformere XML-dokumenter XSL-FO et språk for å presentere XML-dokumenter XSLT (XSL Transfomation Language) XSLT står for XSL Transformations XSLT er et funksjonelt programmeringsspråk XSLT skriver om et XML-dokument til et annet XML-dokument Husk at XHTML er XML! I praksis bruker vi altså XSLT for å gjøre om XML til HTML XSLT bruker XPath for å navigere i XML-dokumenter XSL er en W3C Standard Nettsider Lær-selv-sider: www.w3schools.com/xsl Standard/spesifikasjon: www.w3.org/style/xsl/ Databaser Leksjon 14c: XML - 37

XSL vs CSS I HTML har alle elementer en predefinert betydning Nettleseren vet hvordan h1, p, ul skal bli presentert Bruker CSS der vi ønsker annen design enn standarddesign I XML har ingen elementer predefinert betydning <table> kan bety «tabell» eller «bord» eller Må bygge opp presentasjon fra «bunnen av» Det enkleste: Oversette til HTML, så får vi presentasjon «gratis». Databaser Leksjon 14c: XML - 38

Presentere XML med XSLT Med XSLT kan vi lage regler for å avbilde XML til HTML Generelt format XML-mønster => HTML + «XML-utplukk» Høyresiden av regelen består av HTML ispedd (tilsett) kode for å plukke ut elementer fra XML-dokumentet Kan gjøre strukturelle endringer Kan velge ut noen elementer Kan sortere elementer Hvordan brukes XPath i XSL? Brukes som mønster i venstresiden av regler Brukes også for å plukke ut elementer i høyresiden Databaser Leksjon 14c: XML - 39

Eksempel på XSLT-regel Plukk ut <pnr>, <fornavn>, <etternavn> fra <person>. Sett <pnr> som overskrift (h2). Sett fornavn og etternavn i et avsnitt (p), med et blankt tegn mellom. <xsl:template match="person"> <h2>person <xsl:value-of select="pnr"/></h2> <p> Navn: <xsl:value-of select="fornavn"/> <xsl:text> </xsl:text> <xsl:value-of select="etternavn"/> </p> </xsl:template> Databaser Leksjon 14c: XML - 40

Komplekse datatyper En kompleks datatype kan f.eks. modellere rader i en tabell: <xs:complextype name="person_t"> <xs:sequence> <xs:element name="pnr" type="pnr_t"/> <xs:element name="fornavn" type="fornavn_t"/> <xs:element name="etternavn" type="xs:string"/> <xs:element name="tlf" type="tlf_t" /> </xs:sequence> </xs:complextype> <xs:element name="person" type="person_t"/> Databaser Leksjon 14c: XML - 41

Omskrivningssystemer generelt Litt teori helt uavhengig av XML Et omskrivningssystem er et sett av regler v => h v og h er uttrykk som kan inneholde variable 0 + Y => Y S(X) + Y => S(X + Y) Omskrivning av et uttrykk Finn en regel som «matcher» venstresiden i en regel, og erstatt med «instansen» av tilhørende høyreside: S(S(0)) + S(S(0)) ==> S(S(0) + S(S(0))) (dvs. 2 + 2 ==> 4) ==> S(S(0 + S(S(0)))) ==> S(S(S(S(0)))) Databaser Leksjon 14c: XML - 42