Konstruktion av datorspråk

Relevanta dokument
Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 3. Peter Dalenius Institutionen för datavetenskap

Uppmärkningsspråk. TDP007 Konstruktion av datorspråk Föreläsning 4. Peter Dalenius Institutionen för datavetenskap

En snabb titt på XML LEKTION 6

Strukturering med XML och DTD

Vad är XML XML. Exempel - SMIL. Exempel - XHTML. extensible Markup Language

XML. Dagens föreläsning. Vad är XML extencible Markup Language. Exempel - XHTML

Dagens föreläsning. Vad är XML. Exempel - XHTML. extencible Markup Language

XML. Extensible Markup Language

Heldag om FGS FGS:er och deras tekniska regelverk. Karin Bredenberg, FGS funktionen. Standarder. FGS:er och deras tekniska regelverk 1

ITK:P2 F1. Hemsidor med HTML HTML. FTP, HTTP, HTML, XML och XHTML

XML+ANT+CVS+DIARY. XML: Exempel. XML: Syntax (1) Genomgång av några av de verktyg som används på kursen. <?xml version="1.0" encoding="iso "?

Konstruktion av datorspråk

Deklarativ programmering


Domänspecifika språk. TDP007 Konstruktion av datorspråk Föreläsning 5. Peter Dalenius Institutionen för datavetenskap

Webbteknik. Innehåll. Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender. En kort introduktion

Hantera informationspaket i system för bevarande

Parsning. TDP007 Konstruktion av datorspråk Föreläsning 6. Peter Dalenius Institutionen för datavetenskap

Nätet. Uppgiften. Nivå

Deklarativ programmering

XML. XML is a method for putting structured data in a text file

Översikt. Mer om XML & TEI Kurstillfälle 2. Grundläggande principer 1. Grundläggande principer 2. Hierarkisk dokumentmodell. XML & flexibilitet

Introducerande övningar i HTML

XML och C#.NET Att hantera XML-dokument

HTML och CSS. Eric Elfving Institutionen för Datavetenskap (IDA)

WEBBUTVECKLING Kursplanering

<sid nr="1" av="2" /> Stackenföreläsning: XML & XSLT: Intro. XML och XSLT

EDA095 HTML. Per Andersson. April 26, Lund University Innehåll: HTML, CSS, DOM, JavaScript

F02 En första sida. Dagens agenda

TDP007 Konstruktion av datorspråk Hemtentamen

Innehåll Introduktion... 3 InteractiveScene.config... 3 Scener <scenes>... 3 Typsnitt <fonts>... 3 Övergångar <transitions>...

DP7 Kompletterande information

Vad är XSLT XSLT extensible Stylesheet Language Transformations

I den här labben ska vi använda oss av en trevlig nyhet i HTML5: Local Storage, för att implementera en sorts lokal gästbok.

Webbaserad kommunikationsklient för Radarspot KRISTOFER LÖFGREN

Metaspråket XML Mika Suonvieri

Laboration 1 XML, XPath, XSLT och JSON

Tentamen TEN1 HI

XSLT. Extensible Stylesheet Language Transformations

Informationsmodellering och e-infrastrukturer

Översikt. Installation av EasyPHP 1. Ladda ner från Jag använder Release Installera EasyPHP.

HTML och CSS. Eric Elfving Institutionen för datavetenskap. 18 augusti 2015

Märkspråk, HTML, XHTML, CSS & JavaScript: kort intro med pekare till till mer information Föreläsning 4

Mer om språk och Ruby

Introduktion till programmering

Objektorienterad Programkonstruktion. Föreläsning 3 9 nov 2015

Arbetsmaterial HTML pass 1 - Grunder

Tentamen, Algoritmer och datastrukturer

Det här dokumentet är till för att ge en översikt över ASP.NET MVC samt hur WCF Services används från.net applikationer.

TDDC74 Lab 02 Listor, sammansatta strukturer

Systembeskrivning.

Webbens grundbegrepp. Introduktion till programmering. Ytterligare exempel. Exempel på webbsida. Föreläsning 5

Konstruktion av datorspråk

TDDC30. Objektorienterad programmering i Java, datastrukturer och algoritmer. Föreläsning 9 Jonas Lindgren, Institutionen för Datavetenskap, LiU

Inlämningsuppgift 2. DA156A - Introduktion till webbutveckling Teknik och samhälle, Malmö högskola Oktober 2012

Paketstruktur. Karin Bredenberg /

JAVASCRIPT. Beteende

2I1073 Föreläsning 1. HTML och XHTML XHTML

XML-produkter. -Registret över verkliga huvudmän (RVH) Teknisk handledning för webbtjänst mot RVH (Web Services) Datum: Version: 1.

Xhtml och CSS.Tillämpad fysik och elektronik Per Kvarnbrink (redigering Ulf Holmgren 2011)

Lösningsförslag, tentamen i Databaser

Dugga Datastrukturer (DAT036)

Tentamen TEN1 HI

Objektorienterad Programkonstruktion. Föreläsning 9 30 nov 2016

Delrapport DP3. FGS för paketstruktur för e-arkiv Bilaga 1 METS

XML Lars Celander en effektiv introduktion m n skonsam E

Namn: (Ifylles av student) Personnummer: Tentamensdatum: Tid: Hjälpmedel: Inga hjälpmedel

JavaScript. Innehåll. Historia. Document object model DHTML. Varför Javascript?

Lektion 8 Del 1 XML, Kapitel 20

Föreläsning 13 och 14: Binära träd

F02 HTML. Föreläsning 2, HT2013 HTML. Kurser: Klientbaserad Webbutveckling 1DV435. Johan Leitet

Du kan själv följa med i denna steg-för-steg guide i din texteditor.

Tentamen. DD2385 Programutvecklingsteknik vt Torsdagen den 27 maj 2010 kl Hjälpmedel: penna, suddgummi, linjal

Objektorienterad Programkonstruktion

Föreläsning 4. CSS Stilmallar för webben

Prova på-laboration i PHP Johan Sjöholm johsj@ida.liu.se Institutionen för datavetenskap, Linköpings universitet

Mittuniversitetet ITM Telefon RSS. Laborationskompendium för syndikering på Internet. Detta exemplar tillhör:

Programmeringteknik. Planering MÅL LABB: MOMENT LAB4 HTML - EXEMPEL HTML. Webbdelen

Policy för öppen källkod RIV Tekniska Anvisningar

Föreläsning 7. Träd och binära sökträd

Tentamen, EDAA20/EDA501 Programmering

Mer om språk och Ruby

En grundkurs i hemsidor och hur de är uppbyggda

Användarhandledning Version 1.2

INTRODUKTION TILL ANGULAR JS

Allmänna anvisningar: Skriv dina svar på svarsblanketten (se nästa sida) Markera och ange alla svar tydligt och entydigt efter instruktionerna.

Bilaga 3. En redogörelse kring metadata och XML. Status Slutlig. Sid 1 (7) Dokumenttyp. Versionsdatum

Tillämpad fysik och elektronik Per Kvarnbrink m.fl. Laboration 2: HTML och CSS.

Dagens föreläsningar

Övningar i XML och DTD

Kompletterande exempel till XSLT

ASP.NET Web Forms. Copyright Mahmud Al Hakim Vad är Web Forms?

Introduktion till XSLT

Att bygga enkla webbsidor

Objektbaserad programmering

Olika slags datornätverk. Föreläsning 5 Internet ARPANET, Internet började med ARPANET

Snabbguide för publicering i Drupal för ki.se

Laboration 13, Arrayer och objekt

Digital inlämning av årsredovisningar

Transkript:

Konstruktion av datorspråk Fö3: Uppmärkningsspråk Peter Dalenius petda@ida.liu.se Institutionen för datavetenskap Linköpings universitet 2009-01-29 Översikt Uppmärkningsspråk Struktur och specifikation av XMLdokument Parsning av XML-dokument (SAX, DOM, XPath) Mikroformat Inför seminariet Uppmärkningsspråk Kort historisk översikt meta-språk SGML Standard Generalized 1986 XML Extensible 1998 tillämpningar HTML Hypertext 1991 XHTML Extensible Hypertext 2000

Begrepp inom uppmärkning Exempel på XML starttagg element attribut <h2>this is the stuff</h2> <p>lime is a small <font color="green">green</font> fruit. It is <strong>not</strong> an unripe lemon,<br/> whatever you may think.</p> entitet sluttagg tomt element <?xml version="1.0"?> <note> <to>ola</to> <from>peter</from> <heading>öl på fredag?</heading> <body> <>Det har öppnat ett nytt holländskt ställe på S:t Larsgatan. De lär ha en massa sorters holländsk öl på fat. Vad sägs om att vi testar det på fredag kväll?</> <>Förresten, stället heter De Klomp.</> </body> </note> Well-formed Exempel på DTD Exempel på DTD (2) <!DOCTYPE note [ <!ELEMENT note (to,from,heading,body)> <!ELEMENT to (#PCDATA)> <!ELEMENT from (#PCDATA)> <!ELEMENT heading (#PCDATA)> <!ELEMENT body (+)> <!ELEMENT (#PCDATA)> ]> DTD (Document Type Defintion) Valid <!DOCTYPE RESULTS [ <!ELEMENT RESULTS (ARTICLE+)> <!ELEMENT ARTICLE (HEADLINE,BYLINE,LEAD,BODY,NOTES)> <!ELEMENT HEADLINE (#PCDATA)> <!ELEMENT BYLINE (#PCDATA)> <!ELEMENT LEAD (#PCDATA)> <!ELEMENT BODY (#PCDATA)> <!ELEMENT NOTES (#PCDATA)> <!ATTLIST ARTICLE AUTHOR CDATA #REQUIRED> <!ATTLIST ARTICLE EDITOR CDATA #IMPLIED> <!ATTLIST ARTICLE DATE CDATA #IMPLIED> <!ATTLIST ARTICLE EDITION CDATA #IMPLIED> <!ENTITY NEWSPAPER "Dagens Nyheter"> <!ENTITY COPYRIGHT "Copyright 2008 Dagens Nyheter"> ]>

Övning Kopiera DTD:n från föregåe bild från http://www.ida.liu.se/~tdp007/material/ seminarie2/newspaper.dtd Skapa en XML-fil som använder denna DTD och hitta på lite innehåll. Validera filen mot http://xmlvalidation.com/ när du är klar. Användning av XML-dokument Tolka med reguljära uttryck: jobbigt och dåligt Använda en parser: lätt och bra DTD XML Parser någon form av användbar datastruktur 1. SAX (Simple API for XML) Läser XML-filen som en ström, från början till slut. Varje gång det händer något (t.ex. en starttagg) anropas en viss funktion. <?xml version="1.0"?> <note> <to>ola</to> <from>peter</from> <heading>öl på fredag?</heading> </note> Exempel på användning av SAX require 'rexml/streamlistener' class MyListener include REXML::StreamListener def tag_start(, attrs) puts "Start of #{}." def tag_() >> lst = MyListener.new puts "End of #{}." => #<MyListener:0x2f8d188> >> src = File.new "c:/lab/ruby/code/note2.xml" => #<File:c:/lab/ruby/code/note2.xml> def text(text) >> REXML::Document.parse_stream(src,lst) puts "Tag contains the text '#{text}'."

2. DOM (Document Object Model) Exempel på användning av DOM Läser hela XML-filen på en gång och returnerar ett objekt som motsvarar hela innehållet. <?xml version="1.0"?> <note> <to>ola</to> <from>peter</from> <heading>öl på fredag?</heading> </note> note to from heading body >> src = File.open "note2.xml => #<File:note2.xml> >> require 'rexml/document => true >> doc = REXML::Document.new src => <UNDEFINED>... </> Detta anrop parsar hela XML-filen och returnerat ett DOM-objekt. Vad finns i detta objekt och hur kommer man åt det? DOM-struktur för XML-exempel Exempel på metoder för DOM elements to Document root note from heading elements body >> doc = REXML::Document.new src => <UNDEFINED>... </> >> doc.class => REXML::Document >> r = doc.root => <note>... </> >> r.class => REXML:: >> r. => "note >> r.elements[1]. => "to >> r.elements[4].elements[2].text => "Förresten, stället heter De Klomp." Dokumentet är ett objekt av klassen Document. Det har ett attribut root som representerar rotelementet. Varje element har en array elements som innehåller barnen. Attributet innehåller elementets namn.

Övning XPath Ladda in filen node2.xml och plocka ut namnen på sändare och mottagare. Ladda in följande funktion från print_tree.rb, kör den på det inlästa XML-dokumentet och förklara vad som händer. def print_tree(elem,indent=0) elem.elements.each do subelem puts " "*2*indent + subelem. print_tree(subelem,indent+1) Att plocka fram elementen ur dokumentobjektet gör att man måste hårdkoda dokumentets specifikation i programmet. Ett lite enklare sätt är att använda XPath. XPath (XML Path Language) är ett språk för att välja ut delar av ett XML-dokument. Flera av funktionerna i REXML-paketet stödjer XPath-uttryck. XPath 1.0 är från 1999. XPath 2.0 är från 2007. Exempel på XPath-uttryck Alla -noder inuti en body, inuti en note som är roten i dokumentet. >> doc.elements.each("/note/body/") { n puts n.text } Det har öppnat ett nytt holländskt ställe på S:t Larsgatan. De lär ha en massa sorters holländsk öl på fat. Vad sägs om att vi testar det på fredag kväll? Förresten, stället heter De Klomp. => >> doc.elements.each("//body/*") { n puts n.text } Samma resultat som ovan Alla noder, vilka som helst (*), som ligger inuti en body som ligger någonstans under roten, oavsett nivå. Konstruktion av XPath-uttryck Alla XPath-uttryck har en kontext som tjänar som utgångspunkt (en nod i dokumentet). Från utgångspunkten går man med hjälp av tre saker (alla behöver inte vara med): en riktning, t.ex. barn eller förälder ett nodtest, t.ex. att man söker noder med ett visst namn ett predikat som talar om att noderna ska ha ytterligare egenskaper Läs på om XPath och experimentera på egen hand. Det finns gott om bra introduktioner på nätet.

Mikroformat Inför seminariet Microformats är en uppsättning små fria standarder för att representera vissa specifika typer av information. Ett typiskt exempel är en överenskommelse om hur man kan bädda in kontaktinformation i en webbsida. <span class= vcard ><span class= fn >Kalle Kula</span></span> Mer information finns på www.microformats.org Tre sätt att bearbeta ett XML-dokument: Implementera egen SAX-lyssnare Bygga DOM och använda metoder för element Bygga DOM och använda XPath Dagens förkortningar: API, DOM, DTD, HTML, SAX, SGML, XHTML, XML, XPath