Presentasjon lastes. Vennligst vent

Presentasjon lastes. Vennligst vent

HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)

Liknende presentasjoner


Presentasjon om: "HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)"— Utskrift av presentasjonen:

1 HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)

2 HUMIT1731 uke43 Kåre A. Andersen 2 Utgangspunkt i XML Vi har tidligere sett på hovedprinsippene ved XML: definere egne element Document Type Definition (DTD) element attributt velformet dokument gyldig dokument

3 HUMIT1731 uke43 Kåre A. Andersen 3 XSL Transformation (XSLT) eXtensible Stylesheet Language (XSL) er ikke tema/pensum i Humit1731, men siden vi har brukt en del tid på å introdusere XML, kan det være nyttig å bl.a. se litt på hva et XML-dokument kan være utgangspunkt for… Ofte brukes XSL til å transformere (omforme) et XML-dokument til et annet XML-dokument. Et XSLT-dokument er et stilsett bestående av såkalte malregler (template rules). En malregel beskriver hvordan en XML-elementnode konverteres til en XSL-elementnode. Både XML- og XSLT-dokumentet må være velformet. Et XSLT-dokument er altså selv et XML-dokument. Ofte vil det være snakk om å transformere et XML-dokument til et HTML- dokument, og det er det vi i første omgang skal konsentrere oss om her. Vi har også valgt å bruke en nettleser som XSLT-prosessor. Både omforming og vising vil skje i nettleseren. ( -elementet gir muligheter for andre resultatformat, men det tar vi ikke opp her)

4 HUMIT1731 uke43 Kåre A. Andersen 4 Eksempel 4.1 Eksempel 4.1: Et XML-dokument med et "tomt" XSLT - stilark (eks4_1.xsl) Aasen, Ivar Millom bakkar og berg I utval ved Magne Myhren DnB 1980 Oslo 82-525-0298-9 I eksempel 4.1 har vi satt opp vårt gjennomgangseksempel for transformering vha. stilsettet som ligger på en ekstern fil (eks4_1.xsl). Eksempeldokumentet er utvidet med et nytt rot-element for å rydde plass for en base bestående av flere bøker. Her har vi sløyfet DTD'en - det er nok at input-dokumentet er velformet. For å få nettleseren til å hente inn XSLT- dokumentet, kan vi bruke prosesseringsinstruksjonen. (Her er stilsettets type oppgitt til "text/xsl", mens det normalt bør være "application/xsl". Grunnen til vårt oppsett er at enkelte versjoner av IE krever en slik type-angivelse.)

5 HUMIT1731 uke43 Kåre A. Andersen 5 En enkel transformasjon I første omgang setter vi opp et minimalt/"tomt" stilsett: Eksempel 4.2: Et "tomt" XSLT -stilark (tenkt brukt på eks4_1.xml ) Som vi ser har vi også i stilsettet brukt XML-deklarasjon. Dette er ikke nødvendig, men anbefalt. Dokumentet må imidlertid være velformet. Stilsettets rot-element er enten stylesheet eller transform - de er ekvivalente. I tillegg til elementnavnet og et versjonsattributt, må vi oppgi navnerommet (namespace), nøyaktig slik: xmlns:xsl="http://www.w3.org/1999/XSL/Transform". Det minste avvik vil resultere i feil.

6 HUMIT1731 uke43 Kåre A. Andersen 6 Eksempel 4.1 Ved å hente XML-dokumentet i eksempel 4.1 inn i nettleseren, får vi rett og slett ut innholdet av XML-elementene uten noen form for formatering:eksempel 4.1

7 HUMIT1731 uke43 Kåre A. Andersen 7 Malregler Eksempel 4.3: Et XSLT -stilark som erstatter input-dokumentet med en HTML-side Transformasjon til et enkelt HTML-dokument Hele input-dokumentet blir transformert til dette HTML-dokumentet. Ikke særlig interessant.... Malregelen, som begynner med, sier at vi skal finne rot-elementet (i match="/" betyr tegnet / rot-elementet) og erstatte dette med innholdet i regelen, dvs det som står mellom regelens start-tagg og slutt-tagg. Kjør eksempel.Kjør eksempel Selv om dette eksemplet ikke er særlig interessant, viser det likefullt en transformasjon:

8 HUMIT1731 uke43 Kåre A. Andersen 8 Resultat av transformasjonen

9 HUMIT1731 uke43 Kåre A. Andersen 9 Elementet: xsl:apply-templates Eksempel 4.4: Et XSLT -stilark som åpner for behandling av nodebarn Transformasjon til et enkelt HTML-dokument Nå ser vi at vi først ønsker å matche rot- elementet gjennom dets navn: bokbase. Dette erstattes med et HTML-dokument - og etter hvert innholdet i de ulike nodebarna. Elementet indikerer hvor vi ønsker at transformasjonen av eventuelle nodebarn skal opptre. Vi må imidlertid beskrive slike regler for seg, f.eks. slik: Her kommer data for en bok...

10 HUMIT1731 uke43 Kåre A. Andersen 10 Eksempel 4.5 Plassert inn i eksempel 4.4, får vi: Eksempel 4.5: Et XSLT -stilark som illustrere bruk av xsl:apply-templates Transformasjon til et enkelt HTML-dokument Her kommer data for en bok...

11 HUMIT1731 uke43 Kåre A. Andersen 11 Resultat: Vi har nå lagt inn en ekstra post i input-dokumentet (til sammen to bøker), og ved å anvende stilsettet over, vil vi rett og slett bare få skrevet ut setningen "Her kommer data for en bok..." to ganger:. Kjør eksempel. Kjør eksempel.

12 HUMIT1731 uke43 Kåre A. Andersen 12 Hente ut verdier: xsl:value-of I eksemplene over har vi laget en struktur som gjør det enkelt å legge inn de konstruksjonene som skal til for å hente ut opplysninger om de enkelte bøkene. For eksempel får vi tak i en boktittel ved:. Select-attributtet virker omtrent som match, men med enda flere muligheter - som vi skal se senere. Med disse endringene vil utskriften bli: Millom bakkar og berg Med livet foran seg

13 HUMIT1731 uke43 Kåre A. Andersen 13 Valg av flere elementer med samme navn: xsl:for-each Vi har et problem fordi første bok egentlig har to titler. Select henter bare fram første tittel-element. For å hente ut flere elementer med samme elementnavn, kan vi bruke løkkekonstruksjonen: xsl:for-each, slik Her legger vi inn et avsnitt for hver bok, men bare et linjeskift mellom flere titler for samme bok. Punktumet står for aktuell node.

14 HUMIT1731 uke43 Kåre A. Andersen 14 Resultat (eksempel 4.6) Kjør eksempel

15 HUMIT1731 uke43 Kåre A. Andersen 15 Oppsummering Vi skal avslutte med et eksempel som repeterer det meste av xsl + flere såkalte xpath-funksjoner. Utgangspunktet er en xml-fil som inneholder bøker, og som vi ønsker å presentere som en ”vanlig” oppsatt litteraturliste (se nedenfor).xml-fil Her ligger en stegvis utvikling av litteraturlista, mens utsnitt av det endelige resultat følger her: Her

16 HUMIT1731 uke43 Kåre A. Andersen 16


Laste ned ppt "HUMIT1731 Hypermedier Introduksjon til XSL Transformation (XSLT)"

Liknende presentasjoner


Annonser fra Google