Presentation laddar. Vänta.

Presentation laddar. Vänta.

XSLT – en introduktion Digitalisering av kulturarvet.

Liknande presentationer


En presentation över ämnet: "XSLT – en introduktion Digitalisering av kulturarvet."— Presentationens avskrift:

1 david.gunnarsson@hb.se XSLT – en introduktion Digitalisering av kulturarvet

2 Idag Vad är XSLT? Hur fungerar XSLT? XPath och noder XSLT:s notation Templates, repetitioner och villkor TEI

3 XSL-språk XSLT –Ett språk för att transformera XML- dokument X-PATH –Ett språk för att navigera i XML-dokument XSL-FO –Ett språk för att formatera XML-dokument

4 Vad är XSLT? Står för eXstensible Stylesheet Language for Transformation Ett programmeringsspråk för att transformera XML-dokument En W3C-standard XSLT transforms an XML source- tree into an XML result-tree

5 Den röda tråden… DATALOGIKGRÄNSSNITT XMLXSLTXHTML(+CSS)

6 XML, XSLT, XHTML och CSS XML XSLT CSS XHTML Omvandling

7 Hur fungerar XSLT?

8 En post i XML-filen Sue Grafton L som i laglös Deckare 20

9 XSLT-kod <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns="http://www.w3.org/1999/xhtml"> Författare: Titel: Kategori:

10 XPath Ett språk för att navigera i XML- dokument En syntax för att definiera delar av ett XML-dokument En W3C-standard XSLT använder XPath för att navigera i XML-dokument

11 XPath - noder XML-dokument behandlas som träd bestående av noder Typer av noder –Element –Attributes –Text –Namespaces –Processing instruction –Comment –Document node (dokumentets rotelement)

12 XPath - noder Sue Grafton L som i laglös Deckare 20 Dokumentnod (rotelement) Textnod Attributnod Elementnod

13 XPath – Relationer mellan noder Varje element och attribut har en och endast en förälder Elementnoder har noll till många barn Noder med samma förälder kallas syskon –Det första syskonet är äldst, det näst första är näst äldst och så vidare… En förfader är en förälders förälder En ättling är ett barns barn

14 XPath – Peka ut noder Nodnamn – Pekar ut samtliga barn till noden / - Pekar ut från rotelementet // - Pekar ut noder i dokumentet från den aktuella nod som matchar utpekningen. – Pekar ut aktuell nod.. – Pekar ut föräldern till aktuell nod @ - Pekar ut attribut

15 XPath – Peka ut noder boksamling – Pekar ut samtliga barn till noden boksamling /boksamling – Pekar ut rotelementet boksamling boksamling/bok – Pekar ut alla bok-element som är barn till boksamling //bok – pekar ut samtliga bok-element, oavsett var de befinner sig i hierarkin boksamling//titel – Pekar ut samtliga titel-element som är ättlingar till boksamling, oavsett var de befinner sig i hierarkin //@currency – Pekar ut samtliga attributnoder med namnet currency

16 Exempel: template-anrop Gör att vi är säkra på att rätt eNamn hämtas, dvs det som är barn till forfattare som i sin tur är barn till bok

17 En annan variant Gör att vi är säkra på att rätt eNamn hämtas, dvs det som är ättling till bok

18 En tredje variant Gör att vi är säkra på att rätt eNamn hämtas, dvs det som är barn till forfattare

19 En fjärde variant Fungerar om eNamn finns på endast en nivå i trädet Skulle eNamn finnas på flera nivåer förväxlar tolken noderna med varandra Att ha samma namn på noder på olika nivå i XML-trädet är dock ingen optimal lösning

20 Exempel: anropat template Pekar ut aktuell nod (eNamn) Pekar ut eNamns förälders (forfattare) barn (fNamn) (enkelt uttryckt: eNamns syskon) Pekar ut eNamns förfäders barn

21 Operatorer A=A (A är ekvivalent med A) A!=B (A är inte ekvivalent med B) A>B (A är större än B) A<C (A är mindre än C) A>=D (A är större än eller lika med D) A<=E (A är mindre än eller lika med E) Ett uttryck av detta slaget är antingen sant (true) eller falskt (false)

22 Operatorer A=A and B!=C –Sant om och endast om A är ekvivalent med A och B inte är ekvivalent med C A=A or B=C –Sant om A är ekvivalent med A eller om B är ekvivalent med C –Om första påståendet är sant kollas inte fler påståenden not (A=B) –Sant om och endast om A inte är ekvivalent med B

23 Aritmetiska operatorer + addition5+2 - subtraktion7-2 * multiplikation8*3 div division6 div 3 mod modulus9 mod 2

24 XSLT Förändra en icke presentabel fil till en webbsida Formatera ett dokument till PDF eller liknande Förändra en XML-vokabulär till en annan Extrahera specifik information från ett dokument och formatera på ett annat sätt

25 XSLT:s notation Alla element i XSLT innehåller prefixet xsl:

26 Operatorer i XSLT A=AA är ekvivalent med A A!=BA är inte ekvivalent med B 8 > 68 är större än 6 6 < 86 är mindre än 8 A >= BA är större än eller lika med B B <= AB är mindre än eller lika med A

27 Operatorer i XSLT AND, OR och AND…! –pris < 10 and kategori = 'Deckare’ –pris < 10 or kategori = 'Deckare’ –pris < 10 and kategori != 'Deckare’

28 Templates Innehåller regler som appliceras vid matchning av en specificerad nod Syntax: … Samtliga attribut är valfria, men minst ett av attributen name och match måste återfinnas

29 Exempel, templates

30 Exempel, templates med villkor

31 Repetitioner i XSLT: for-each …kod som utförs på varje nod som överensstämmer med X-PATH- uttrycket

32 Exempel: for-each

33 Exempel: for-each med villkor

34 Styrstrukturer i XSLT om (villkor a) utför a annars om (villkor b) utför b annars utför c

35 Med if …kod som utförs om villkor a är sant …kod som utförs om villkor b är sant …kod som utförs om villkor c är sant

36 Exempel: if :

37 Med choose...kod som utförs om villkor a är sant...kod som utförs om villkor b är sant …kod som utförs om varken villkor a eller b är sant

38 Exempel: choose, är en deckare, är inte en deckare

39 TEI och XSLT På samma sätt som en XML-fil kan transformeras med XSLT kan text uppmärkt med TEI transformeras Även här används XPath för navigering

40 Den TEI-uppmärkta texten The Life and Opinions of Tristram Shandy, Gentleman, by Laurence Sterne: Electronic edition …

41 Ett XSLT-skal

42 Lite innehåll… <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/> <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>

43 Hämta allt med for-each <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>

44 OK, men det ser ju inte så lyckat ut… /TEI.2//* matchar alla noder som befinner sig i TEI.2 skriver ut värdet på den nod som XSLT- processorn pekar på Om en nod har fler än ett barn kommer innehållet i denna nod (plus dess barn) att skrivas ut lika många gånger som antalet barn

45 Templates Skriver ut allt Ytterligare templates och mer styrning behövs

46 Placering av nytt template

47 Två templates infogas…

48 Varför skrivs headern ut igen? Skriver ut allt (inklusive teiHeader- noden) Detta åtgärdas med hjälp av select

49 Uteslutning av överflödig headerinformation <xsl:value-ofselect ="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>

50 Att titta på över sommaren http://www.w3schools.com/xsl/ http://www.w3.org/TR/xslt Ray, Eric T. (2003). Learning XML. 2. ed. Sebastopol: OReilly. 399 s. Kompendiet Digitalisering av text


Ladda ner ppt "XSLT – en introduktion Digitalisering av kulturarvet."

Liknande presentationer


Google-annonser