380 likes | 493 Views
eXtensible Markup Language. Digitalisering av kulturarvet david.gunnarsson@hb.se. XML. Utökar begränsningarna för vad som är möjligt, jämfört med SGML (och fr.a. HTML) därigenom ökar förutsägbarheten
E N D
eXtensible Markup Language Digitalisering av kulturarvet david.gunnarsson@hb.se
XML • Utökar begränsningarna för vad som är möjligt, jämfört med SGML (och fr.a. HTML) • därigenom ökar förutsägbarheten • Beskrivna dokumentmodeller (dvs DTDer) inte längre absolut nödvändiga -> ett dokument är giltigt (valid) eller välformat. • Har genererat en stor mängd nya tillämpningar
XML-teknik • XML • Xlink & XPointer • XSL: • XSLT • XPath • XSL-FO
XML • Egentligen inget eget märkspråk, snarare syntaktiska regler för konstruktion av märkspråk (eller märkscheman) • Med XML kan vi själva skapa olika märkscheman för olika syften • Mer makt åt oss textproducenter
XML • Ingen "äger" XML – plattformsoberoende • Stöd (dvs XML-parser) i yngre webbläsare, fr.a. MS IE • W3C: HTML, XHTML, XML, CSS, validering
"barn" till SGML • TEI (1988) (språkvet., litteraturvet.) • EAD (arkiv o museer) • DocBook (akademiska texter) • HTML • XML
SGML - HTML, XML - XHTML generalitet SGML (1986) XML (1998) HTML (ca 1992) XHTML (2000) specificitet
XHTML • HTML omdefinierad som en XML-tillämpning • Skillnader HTML ↔ XHTML • utbyggbart • egna märken • krav på giltigt, välformat • exakthet i notationen • versaler/gemener • tomma element måste vara stängda
Grundläggande komponenter i ett XML-dokument • Prologen • Element • Attribut och attributvärden • Entiteter • (CDATA i kommentarer)
Processinstruktioner,dokumenttypsdeklarationer <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="stil.css"?> <!DOCTYPE anthology SYSTEM "anthology.dtd">
Prologen <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="stil.css"?> <!DOCTYPE anthology SYSTEM "anthology.dtd"> <anthology> <poem> <title> This Be The Verse </title> <stanza> <line> They fuck you up, your mum and dad.</line> <line> They may not mean to, but they do. </line> <line> They fill you with the faults they had</line> <line> And add some extra, just for you. </line> </stanza> …
Element • Par: <title> </title> • Undantag tomma element: <pb/> • Versaler / gemener
attribut <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="stil.css"?> <!DOCTYPE anthology SYSTEM "anthology.dtd"> <anthology> <poem id="P1"> <title> This Be The Verse </title> <stanza> <line> They fuck you up, your mum and dad.</line> <line> They may not mean to, but they do. </line> <line> They fill you with the faults they had </line> <line> And add some extra, just for you. </line> </stanza> …
ett eller flera attribut • <element attribut="värde"> • <title type="journal"> • <name who="David" reg="GunnarssonD">
Entitetsreferenser <?xml version="1.0" encoding="ISO-8859-1"?> <?xml-stylesheet type="text/css" href="stil.css"?> <!DOCTYPE anthology SYSTEM "anthology.dtd"> <anthology> <poem id="P1"> <title>LE BATEAU IVRE </title> <stanza> <line>Comme je descendais des Fleuves impassibles,</line> <line>Je ne me sentis plus guidé par les haleurs:</line> <line> Des Peaux-rouges criards les avaient pris pour cibles, </line> <line> Les ayant cloués nus aux poteaux de couleurs. </line> </stanza> …
entiteter • En viss teckensekvens har fördefinierats (i DTD:n) och givits ett namn. • Vanligen för att representera tecken som annars kan "riskeras" • Ibland även för att generera kortare eller längre text: genom att bara referera till namnet komprimerar man koden och spar arbete • Refererar till externa data såsom grafik • Behövs inte minst när märkenas och elementinnehållens notation kolliderar (<)
Entitetsexempel • é = é = é • ü = ü = ü • &kontakt; = referens till en textsträng i DTD:n, i det här fallet ett namn på den aktuella kontaktpersonen • &introduktion • <bild src="&allc;"> • I DTD:n: • <!ENTITY eacute "é"><!-- small e, acute accent --> • <!ENTITY kontakt "Pelle Johansson, tel. 0709-308673264"> • <!ENTITY introduktion SYSTEM "intro.xml"> • <!ENTITY allc SYSTEM "graphics/allc.gif" NDATA gif>
Kommentarer <anthology> <poem> <title>This Be The Verse</title> <stanza> <line> They fuck you up, your mum and dad.</line> <line> They may not mean to, but they do. </line> <line> They fill you with the faults they had </line> <line> And add some extra, just for you. </line> </stanza> <!-- en strof borttagen --> <stanza> <line> Man hands on misery to man. </line> <line> It deepens like a coastal shelf. </line> <line> Get out as early as you can, </line> <line> And don't have any kids yourself. </line> </stanza> </poem> </anthology>
Kommentera bort kod <anthology> <poem> <title>This Be The Verse</title> <!--<stanza> <line> They fuck you up, your mum and dad.</line> <line> They may not mean to, but they do. </line> <line> They fill you with the faults they had </line> <line> And add some extra, just for you. </line> </stanza>--> <stanza> <line> Man hands on misery to man. </line> <line> It deepens like a coastal shelf. </line> <line> Get out as early as you can, </line> <line> And don't have any kids yourself. </line> </stanza> </poem> </anthology>
Rotelement <anthology> <poem> <title>This Be The Verse</title> <stanza> <line> They fuck you up, your mum and dad.</line> <line> They may not mean to, but they do. </line> <line> They fill you with the faults they had </line> <line> And add some extra, just for you. </line> </stanza> <!- - en strof borttagen - -> <stanza> <line> Man hands on misery to man. </line> <line> It deepens like a coastal shelf. </line> <line> Get out as early as you can, </line> <line> And don't have any kids yourself. </line> </stanza> </poem> </anthology>
Välformad XML • Versaler / gemener • Minst ett element • Alltid ett rotelement • Elementen bäddas in i strikt hierarkiska strukturer (OHCO) – tänk träd och filstrukturer • Elementnamnen i start- och slutmärke matchar varandra • Attributnamn förekommer blott en gång i startmärket • Attributvärden inom citattecken • Attributvärden refererar inte till externa entiteter (annat än till DTD:n) • Entiteter deklareras
Välformad XML • <?xml version="1.0" ?><name><firstname> Philip </firstname ><lastname> Larkin </lastname ></name>
Giltig XML • En välformad XML-fil som använder en dokumentypsdeklaration för att referera till en DTD och sedan följer denna DTD
<name> Philip Larkin </name> • <name> Philip Larkin <Name> • <name> Philip Larkin <name /> • <name> Philip Larkin </Name>
<name><firstname>Philip<lastname></firstname>Larkin</lastname></name><name><firstname>Philip<lastname></firstname>Larkin</lastname></name> • <name><firstname>Philip</firstname><lastname>Larkin</lastname></name> • <name><Firstname>Philip</firstname><lastname>Larkin</Lastname><name> • <name><firstname>Philip</firstname<lastname>Larkin</lastname></name>
<name type=personname> PhilipLarkin </name> • <name type="personname" type="straightorder"> PhilipLarkin </name> • <name type="personname"> Philip Larkin </name>
Giltig XML • En välformad XML-fil som använder en dokumentypsdeklaration för att referera till en DTD och sedan följer denna DTD
Dokumenttypsdeklaration • <!DOCTYPE TEI.2 PUBLIC "-//TEI P4//DTD Main Document Type//EN" "http://www.adm.hb.se/~mg/ dig/XMLLab/teilitex.dtd"> • referens till rotelementet TEI.2 • publik identifierare + backup • dvs. en referens till en särskild dtd-fil med deklarationer av TEI-dokumentets element, attribut och entiteter
Dokumenttypsdeklaration • <!DOCTYPE TEI.2 PUBLIC "-//TEI P4//DTD Main Document Type//EN" "http://www.adm.hb.se/~mg/ dig/XMLLab/teilitex.dtd"> • referens till rotelementet TEI.2 • publik identifierare + backup • referens till en särskild dtd-fil med deklarationer av TEI-dokumentets element, attribut och entiteter
En simpel DTD <?xml version="1.0" ?> <name> <firstname>Philip</firstname> <lastname>Larkin</lastname> </name> DTD: <!ELEMENT name (firstname, lastname)> <!ELEMENT firstname (#PCDATA)> <!ELEMENT lastname (#PCDATA)>
Innehållsmodellen • #PCDATA • EMPTY • andra element • blandat innehåll
Notation i DTD:n <!ELEMENT lista (produkt+)> <!ELEMENT produkt (kvantitet?,namn)> <!ELEMENT namn (#PCDATA)> <!ELEMENT kvantitet (#PCDATA)> Se övningsmaterialet, bl.a. en bilaga
Problem med DTD:er • annan notation än XML • krångligt, särskilt med externa entiteter (bilder etc) • emellertid är XML-världen på väg att lämna DTD:er för XML-scheman • och för er finns också en redan färdigskriven DTD i TEI Lite
Verktyg • Kommersiella redigeringsverktyg • "Fria" verktyg • Anteckningar (ingen validator) • JEdit (validator) • Emacs m fl • MS IE Explorer (parsern "validerar")