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

Relevanta dokument
Konstruktion av datorspråk

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

En snabb titt på XML LEKTION 6

Deklarativ programmering

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

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

WEBBUTVECKLING Kursplanering

Deklarativ programmering

Nätet. Uppgiften. Nivå

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

Användarhandledning Version 1.2

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

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

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

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

Laboration 1 XML, XPath, XSLT och JSON

Hantera informationspaket i system för bevarande

Att bygga enkla webbsidor

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

Mer om språk och Ruby

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

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

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

XML och C#.NET Att hantera XML-dokument

E13 Behind the Wild. Dagens agenda. Cookies Context/ändra context Augmentation (förstärkning) Klassiskt arv Att låna metoder Namespaces Postludium

Carl-Oscar Hermansson WEBB DESIGN

Introduktion. Byggstenar TDBA

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

XML. Extensible Markup Language

Tentamen TEN1 HI

JAVASCRIPT. Beteende

Mer om språk och Ruby

Konstruktion av datorspråk

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

Arbetsmaterial HTML pass 1 - Grunder

Strukturering med XML och DTD

Dugga Datastrukturer (DAT036)

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

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.

En grundkurs i hemsidor och hur de är uppbyggda

Föreläsning 5-6 Innehåll. Exempel på program med objekt. Exempel: kvadratobjekt. Objekt. Skapa och använda objekt Skriva egna klasser

Introducerande övningar i HTML

TDP007 Konstruktion av datorspråk Hemtentamen

Föreläsning 5-6 Innehåll

Lösningsförslag, tentamen i Databaser

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

E13 "Behind the Wild"

Datastrukturer, algoritmer och programkonstruktion (DVA104, HT 2014) Föreläsning 5


TDDC74 Lab 02 Listor, sammansatta strukturer

Medieteknologi Webbprogrammering och databaser MEB725, 5p (7,5 ECTS) Klientprogrammering JavaScript Program på flera sidor

Abstrakta datatyper Laboration 2 GruDat, DD1344

Uppgiften är att beskriva en kvadrat i ett Java program. En första version av programmet skulle kunna se ut så här:

emopluppen Användning av "Ant" Niklas Backlund Version: 1.4 ( 2002/04/26 07:27:52 UTC)

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

Övning (X)HTML 2. Sidan 1 av

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

Datalogi för E Övning 3

Arv. Fundamental objekt-orienterad teknik. arv i Java modifieraren protected Lägga till och modifiera metoder med hjälp av arv Klass hierarkier

Tentamen TEN1 HI

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

Introduk+on +ll programmering i JavaScript

Övningsuppgift. En array baklänges. Steg 1. Författare: Mats Loock Kurs: Inledande programmering med C# Kurskod:1DV402

F02 En första sida. Dagens agenda

Statistik över heltal

Dagens program. Programmeringsteknik och Matlab. Objektorienterad programmering. Vad är vitsen med att ha både metoder och data i objekten?

DP7 Kompletterande information

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

Kompletterande exempel till XSLT

Att styla webbsidor. Nivå. Uppgiften

Classes och Interfaces, Objects och References Objekt-orienterad programmering och design (DIT952) Niklas Broberg, 2016

Programmering B med Visual C

Objektorientering: Lagring och livstid

E12 "Evil is going on"

Tentamen, Algoritmer och datastrukturer

Vad är XSLT XSLT extensible Stylesheet Language Transformations

Objektorienterad Programkonstruktion

Classes och Interfaces, Objects och References, Initialization

729G74 IT och programmering, grundkurs. Tema 2. Föreläsning 3 Jody Foo,

TDDD78 Objektorientering: Lagring och livstid

Tentamen TEN1 HI

Avancerade Webbteknologier

Informationsmodellering och e-infrastrukturer

Bilder. Bilder och bildformat

Kopiering av objekt i Java

Konstruktion av datorspråk

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

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

Fi2xml-meddelande Arkitektur

INTRODUKTION TILL ANGULAR JS

Uppgift 1 ( Betyg 3 uppgift )

Föreläsning 9 Innehåll

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.

Föreläsning 8 Programmeringsteknik och Matlab DD1312. Klassmetod. Egen modul

Subtyping och variance. Objekt-orienterad programmering och design Alex Gerdes, 2018

Att prova på en enkel Applet och att lära sig olika sätt att hämta data från tangentbordet. Du får även prova på att skapa din första riktiga klass.

Svensk nationell datatjänst, SND BAS Online

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

TDDC74 Lab 04 Muterbara strukturer, omgivningar

Transkript:

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

Från förra gången XML-dokument specificeras med t.ex. en DTD Två olika sätt att parsa XML-dokument: Strömparsning (SAX) läser in dokumentet, i princip ett tecken i taget, och skickar signaler när något hittas (starttagg, sluttagg, etc) Trädparsning (DOM)

2. Trädparsning Vid trädparsning läses hela XML-filen in på en gång och parsern returnerar ett objekt som motsvarar hela innehållet, enligt DOM (Document Object Model). <?xml version="1.0"?> <note> <to>ola</to> <from>peter</from> <heading>öl på fredag?</heading> </note> note to from heading body paragraph paragraph Officiell specifikation: www.w3.org/dom

Exempel på användning av DOM >> require 'rexml/document => true >> src = File.open "note2.xml => #<File:note2.xml> >> 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 vårt XML-exempel Document root Element elements name note Element Element Element Element name to name from name heading elements name body Element name paragraph Element name paragraph

Exempel på metoder för DOM >> doc = REXML::Document.new src => <UNDEFINED>... </> >> doc.class => REXML::Document >> r = doc.root => <note>... </> >> r.class => REXML::Element >> r.name => "note >> r.elements[1].name => "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 name innehåller elementets namn.

Övning Ladda in filen note2.xml och plocka ut namnen på sändare och mottagare ur DOM-objektet. 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.name print_tree(subelem, indent+1) end end

XPath Att plocka fram elementen ur dokument-objektet gör att man måste hårdkoda dokumentets specifikation i programmet. Det är inte så flexibelt att peka ut delar av dokumentet med uttryck som r.elements[4].elements[2].text. 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. Man kan tänka på det som ett sätt att formulera sökvägar till delar av dokumentet. 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 paragraph-noder inuti en body, inuti en note som är roten i dokumentet. >> doc.elements.each("/note/body/paragraph") { 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.

Fler exempel på XPath-uttryck /note/from //from paragraph[2] Väljer noden from som finns under noden note som finns direkt under dokumentets rot. Väljer noden from som finns någonstans under dokumentets rot. Väljer den andra paragraph-noden som finns under den aktuella noden... Väljer den aktuella nodens föräldranod. @version para[@color= blue ] Väljer attributet version i den aktuella noden. Väljer den första para-noden under den akteulla noden som har attributet color med värdet blue.

Övning Kopiera filen animals.xml och tillhörande DTD i filen key.dtd. Filen innehåller en bestämningsnyckel för djur. Skriv ett kort program som kan använda bestämningsnyckeln och ställa frågor till användaren. Tips: Leta upp API-dokumentationen för REXML-paketet på nätet! http://www.germane-software.com/software/rexml/

<?xml version="1.0"?> <!DOCTYPE key SYSTEM"key.dtd"> <key header="animals"> <node id="start" header="classification of animals"> <alt dest="bird">has wings and flies</alt> <alt dest="fish">lives in the water</alt> <alt dest="land">mostly walks on the ground</alt> </node> <node id="bird" header="birds"> <alt dest="parus_major">...</alt> <alt dest="cyanistes_caeruleus">...</alt> </node>... </key>

Mikroformat 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

Sammanfattning 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 Förkortningar vi har pratat om: API, DOM, DTD, HTML, SAX, SGML, XHTML, XML, XPath

www.liu.se