Ladda ner presentationen
Presentation laddar. Vänta.
1
david.gunnarsson@hb.se XSLT 1 Digitalisering av kulturarvet
2
Idag Repetition XSLT och TEI XREF
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
Den röda tråden… DATALOGIKGRÄNSSNITT XMLXSLTXHTML(+CSS)
5
XML, XSLT, XHTML och CSS XML XSLT CSS XHTML Transformation (XSLT-processor)
6
Transformation Sker med en XSLT-processor Finns inbyggd i Internet Explorer… …men inte i alla webbläsare Därför använder vi JEdits XSLT- processor XALAN
7
Hur fungerar XSLT?
8
Ett stycke TEI-kod The Life and Opinions of Tristram Shandy, Gentleman, by Laurence Sterne
9
XSLT-kod Exempel 1
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 The Life and Opinions of Tristram Shandy, Gentleman, by Laurence Sterne Dokumentnod (rotelement) Textnod Attributnoder Elementnoder
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 /TEI2 – Pekar ut rotelementet TEI2 TEI2/text – Pekar ut alla text-element som är barn till TEI2 text//* – Pekar ut alla noder inuti elementet text //p – pekar ut samtliga p-element, oavsett var de befinner sig i hierarkin text//p – Pekar ut samtliga p-element som är ättlingar till text, oavsett var de befinner sig i hierarkin //@n – Pekar ut samtliga attributnoder med namnet n
16
Exempel: peka ut alla p som är barn till div1 Gör att vi är säkra på att rätt p hämtas, dvs det som är barn till div1, som i sin tur är barn till div, som i sin tur är barn till body
17
En annan variant
18
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
19
Exempel, templates Anropar alla barn (och ättlingar) till body Matchar noder med namnet div, dock endast de som är barn eller ättlingar till body Matchar noder med namnet p, dock endast de som är barn eller ättlingar till body
20
Exempel, templates med villkor
21
Exempel, templates med villkor
22
apply-templates När processorn stöter på apply- templates undersöker den det första elementet och ser om det finns ett template som matchar den Så länge det finns ett template som matchar aktuellt element kommer processorn att fortsätta på samma sätt till nästa element
23
Repetitioner i XSLT: for-each …kod som utförs på varje nod som överensstämmer med X-PATH- uttrycket
24
Exempel: for-each../@id pekar här ut attributet id hos heads förälder: <div1 id="OTS1" n="I" type="book"> Notera krullparenteserna som används när man vill använda ett värde i exempelvis en länk
25
Styrstrukturer i XSLT om (villkor a) utför a annars om (villkor b) utför b annars utför c
26
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
27
Exempel: if Jodå, det funkar faktiskt
28
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
29
Exempel: choose Även detta funkar
30
Den TEI-uppmärkta texten The Life and Opinions of Tristram Shandy, Gentleman, by Laurence Sterne: Electronic edition …
31
Ett XSLT-skal
32
Lite innehåll… <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/> <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>
33
Hämta allt med for-each <xsl:value-of select="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>
34
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
35
Templates Skriver ut allt Ytterligare templates och mer styrning behövs
36
Placering av nytt template
37
Två templates infogas…
38
Varför skrivs headern ut igen? Skriver ut allt (inklusive teiHeader- noden) Detta åtgärdas med hjälp av select
39
Uteslutning av överflödig headerinformation <xsl:value-ofselect ="TEI.2/teiHeader/fileDesc/ titleStmt/title"/>
40
XSLT och TEI Källan kan ses som en linjär sekvens Det TEI-kodade innehållet är mer likt en databas Flera olika outputs är möjliga
41
Varför transformera TEI med 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
42
Rendering av TEI-text Kopiera element Utesluta element Flytta element Generera element
43
Kopiera element Navigationssystem Till exempel kan alla head-element kopieras och placeras i en lista i början av texten Listans element kan sedan länkas till respektive head-element För kopiering kan for-each användas med fördel
44
Exempel: kopiera element
45
Matchande template Länkar varje head-element tillbaka till index Exempel 4
46
Utesluta element TEI Header innehåller enbart metadata Vi kanske inte vill visa texten på bokens baksida Redaktionella noter bör inte visas Eller varför inte enbart visa vissa element för vissa läsare och andra element för andra läsare?
47
Utesluta element, exempel
48
Utesluta element, exempel To the Right Honourable <rs type="person" key="mrpitt">Mr Pitt. <note place="end" type="editorial">Sex tecken används för attributet key Sir, Never poor Wight of a Dedicator had less hopes from his Dedication, than I have from this of mine; for …
49
Uteslutning av note
50
Flytta element Template-anrop utförs i den ordning de är skrivna i: Här kommer body skrivas ut först, sedan back och sist front
51
Generera element Rahtz exempel något modifierat: –Varje namn ska transformeras till en länk vars titel-attribut får värdet This name occurs x times –Dvs, när muspekaren förs över namnet Toby ska en gul ruta med texten This name occurs 3 times dyka upp
52
TEI-kod Toby Shandy XSLT-kod Generera element, exempel Exempel 5
53
TEI-länkar Intratextuella länkar –ref och ptr Intertextuella länkar –xref och xptr
54
ptr TEI XSLT Go to Kräver att det finns ett element med attributet id="preface", detta id måste vara unikt för filen Notera också fyrkanten (#) som gör det möjligt att länka till ett ankare inom ett dokument
55
Mer ptr ptr kan tilldelas attributet type På så vis kan vi skilja olika typer av länkar ifrån varandra
56
Matchande template … Go to …
57
ref TEI Go to preface XSLT Go to Nackdel med denna variant är att man infogar text som inte hör till originalkällan
58
xptr DOC1 måste definieras i DTD:n:
Liknande presentationer
© 2024 SlidePlayer.se Inc.
All rights reserved.