Välkommen! Internetprogrammering III

Slides:



Advertisements
Liknande presentationer
Att söka och förvalta kunskap
Advertisements

HTML - grunder. Program •Html kan skrivas i anteckningar, eller vilket annat textbehandlingsprogram som helst. Mitt tips: Notepad ++ Notepad ++ •Grafiska.
Datavalidering med JavaScript
G RUNDLÄGGANDE XML OCH CSS Mikael Gunnarsson och Helena Francke TLS, HyrData, Stockholm mars 2003.
II130V Konstruktion av webbsidor Välkommen till föreläsning 3 September 2007.
XML och frågespråk nikos dimitrakas Rum 6626
XHTML.
FTP, HTTP, HTML, XML och XHTML
1 MSPEL Föreläsning 1 DSV Peter Mozelius XML, XHTML, CSS och Java applets.
Mjukvara och nätverk Vad är det?.
Prestandaanalys av JavaScript
Programmeringsteknik Föreläsning 13 Skolan för Datavetenskap och kommunikation.
Textkodning: XML ”Having trouble de-coding the text, Albert?”
XHTML 1 Designa din egen webbsida. Idag  Struktur och uppmärkning  Vad är (X)HTML?  Element, taggar och attribut  Validering.
Programmering?. Förslag till innehåll programmeringens grundläggande teori webbredigering, webbprogrammering html xml wml (wap 1) xhtml css javascript.
DCV Idéskiss Design Jag tror att jag ska ha en mörk och stilren design på mitt DCV. Det ska finnas dynamisk funktionalitet där designen byts utan att sidan.
HEAD – HUVUDET I huvudet hittar du information om dokumentets titel, sökord, referenser till stildokument och annan information som normalt inte visas.
Programmeringteknik Webbdelen. HTML H yper T ext M arkup L anguage Märker upp sidans innehåll så att webbläsaren kan avgöra hur innehållet ska visas.
Webbteknik En kort introduktion. Innehåll Historisk återblick Tim Berners Lee 1992 Teknisk beskrivning Märkspråk Standardisering Trender.
Polymorfism.
Programmeringsteknik K och Media
Webbteknik lektion 3 Det handlar mer om stilmallar Per K, 2012.
Webbteknik lektion 2 Det handlar om stilmallar Per K, 2012.
Webbteknik En kort introduktion. Innehåll Historisk återblick Teknisk beskrivning Märkspråk Standardisering Trender.
Next previous Lite mer om CGI-programmering Innehåll Vad är CGI? Vad är Forms? Vad är Perl? Forms, CGI och Perl Internetprogrammering F 14 Läs också: Kursboken.
Stilark: CSS Digitalisering av text April 2005 Mats Dahlström.
Textkodning: XML ”What’s the matter, Albert? Having trouble decoding the text? ”
Databaser i B2KUNO Johan Eklund. Hur går jag vidare? Avancerade tillämpningar:  Analysera data  Generera information Utveckla följande färdigheter:
XSLT – en introduktion Digitalisering av kulturarvet.
Föreläsning 11 Arrayer.
Pekare och speciell programstruktur i inbyggda system
Föreläsning 2 Kort Översikt Över Javaspråket. Källkodsformat Unicode används åäöμψζ tillåtna Inte alla miljöer klarar av det Källkod Bytekod Java VM för.
DHTML Designa din egen webbsida.
Vektorer (klassen Vector) Sortering
XSLT – en introduktion Elektronisk publicering.
Mer om arv - Polymorfism Kursbok: “Objects First with Java - A Practical Introduction using BlueJ”, David J. Barnes & Michael Kölling Fredric Ragnar
1 ITK:P2 F2 Stilsättning av XHTML DSV Peter Mozelius.
(Cascading Style Sheets) Rebecca Landmér 2007 CSS.
CSS del 3 Kvarnbrinkx Medietyper En XHTML-sida kan ha olika CSS-filer för olika medier! Definieras med attributet “media” i link- taggen,
Webbutveckling Med fokus på grunder i html och css.
EXtensible Markup Language Digitalisering av kulturarvet
XHTML och något om CSS Produktion för tryckta Webbutveckling Kvarnbrink
Namnrum, räckvidd och rekursion Linda Mannila
XHTML & CSS Introduktion Erik Nahkala
TEXT – GRUNDERNA Det huvudsakliga innehållet i XHTML- dokument är text – brödtext, rubriker, avgränsande linjer.
Föreläsning 1 Reserverade ord Javas API Identifierare Litteraler Variabler Kompilering och interpretering.
IV1023 ht2013 nikos dimitrakas KTH/ICT/SCS 1 IV1023 ht2013 Avancerad Datahantering med XML XSLT nikos dimitrakas Rum 8522 Läsanvisningar.
XHTML 1 Elektronisk publicering. Idag  Struktur och uppmärkning  Vad är (X)HTML?  Element, taggar och attribut  Klasser och.
XHTML – Dokumentets grundstruktur Body - head. Grundläggande dokument
XSLT 2 Digitalisering av kulturarvet.
UTVECKLING MED RAMVERKET.NET Marcus Medina. Dagens visdomsord ”Google is your friend”
Föreläsning 13 Appletprogram/fristående grafiska program Arv Rita linjer, rektanglar mm Skriva text, byta färg Appletprogram & HTML Grafiska användargränssnitt.
XSLT 1 Digitalisering av kulturarvet.
1 Mjukvaru-utveckling av interaktiva system God utveckling av interaktiva system kräver abstrakt funktionell beskrivning noggrann utvecklingsmetod Slutanvändare.
1 2I1073 Föreläsning 1 KTH-MI Peter Mozelius XHTML, stilmallar och Javascript.
CSS del 2 Kvarnbrink Mer elementreferens ID refererar man till med #-tecken #content { width: 600px; } Klassnamn har en punkt före.newsitem.
CSS del 1 Kvarnbrink I början… Bakgrunden var det enda man kunde byta färg på Allt var satt i Times Texten flödade över hela webbläsarfönstrets.
6558/G558 DATAKOMMUNIKATION Session Presentation.
Textkodning 1 Dokumentrepresentation. Idag  Struktur och uppmärkning  Vad är (X)HTML?  Element, taggar och attribut  Standarder.
Välkommen till Sommarkollo Expression Studio, verktyg för designers Juli 2007 Robert Folkesson Developer Evangelist Microsoft Johan Lindfors.
Anpassa fri programvara - Frihet ett, hur nyttjar man den? Copyright © 2006, 2007 Marcus Rejås Rejås Datakonsult Jag ger härmed rätten till alla att nyttja.
Webbteknik En kort introduktion. Innehåll Historisk återblick Tim Berners Lee 1992 Teknisk beskrivning Märkspråk Standardisering Trender.
Webbteknik En kort introduktion.
KPP053, HT2015 MATLAB, Föreläsning 4
Microsoft® Office Word 2007-utbildning
Föreläsning 16: Tentan, att förbereda sig…
IT Fördjupning Jon Wide
CSS del 1 Kvarnbrink
Medicinska webbapplikationer
CSS del 1 Samuel Kvarnbrink
Presentationens avskrift:

Välkommen! Internetprogrammering III http://www.dsv.su.se/~pierre/ Klicka på länken I3 och logga in som vanligt

The Big Picture  http://cgi.dsv.su.se/~pierre/i/ server-sidan klient-sidan IP0/Java IP1/Sockets IP2/CGI INS/Säkerhet IP3/DHTML MINT/Media

Innehåll: HTTP-klient-sidan Dynamisk-HTML (DHTML) det vill säga: Strukturerat innehåll (text, bild, ljud, film med mera) med XHTML 1.0 Strict Stil med Cascading Style Sheets (CSS) Funktion med JavaScript och Dokument Object Model (DOM) XML, X-Path, XSL [utvecklingen rasar fram] WML (frivilligt) SVG (frivilligt) ActiveX och DirectX (frivilligt)

Kursen renoverad (trots att den gick bra)! Följer standarder Kursen renoverad (trots att den gick bra)! Då: IE5 beroende Nu: W3C, EcmaScript-262 baserad Varför? Standarder viktiga på klient-sidan NN6 har kommit, läget var hopplöst tidigare med (dåliga) NN4

Kurslitteratur Dynamic HTML in Action Web Technology (andra utgåvan) av Pardi Behandlar IE5+ DOM, inte W3C DOM (finns inga bra böcker än) Från 1999 Databindning och XSL?

Don’t teach me, let me learn! Undervisningsform: digitalslöjd. All fokus på praktiska uppgifter Betyget sätts på gesällprovet = fritt valt avslutande arbete, tävling: bästa gesäll vinner pris Distanskurs, handledning via e-post 10-16 alla vardagar 4 veckor framåt Tenta = lätt om man gjort uppgifterna

Tentan Anmälan via Daisy: DSV/NT-konto av lotta@dsv.su.se DSV/Unix-konto av lotta@dsv.su.se DSV/Daisy-konto av kenlars@dsv.su.se Två ordinarie med en veckas mellanrum (?) och man kan bara anmäla sig till en av dessa

Varför då lyssna på Pierre? (Don’t teach me, let me learn!!!) Startmotor, komplexiteten är annorlunda på IP3 jämfört med IP0-2: (Minst) 4 olika paradigmer som ska användas enligt standarder (som finns och utvecklas) Därför 2 (?) föreläsningar som är både: Top-down generella Problemorienterade med korta kod-exempel Alla ska förstå!, sista timmen för frågor 

DHTML = Dynamic HyperText Markup Language HTML = HyperText Markup Language CSS = Cascading Style Sheets JavaScript finns i många olika versioner DOM = Document Object Model XHTML = eXtensible Hypetext Markup Language Xforms [ej klar] SVG = Scalable Vector Graphics WML = Wireless Markup Language XML = eXtensible Markup Language DTD = Document Type Definition Schemas = DTD fast med XML som språk XSL = eXtensible Stylesheet Language XSLT = eXtensible Stylesheet Language Transformations Xpath = XML PATH language Xlink, Xpointer, Xinclude, Xbase [ej klara] SAX = Simple Api for Xml

Arbeta hemma Win32, verktyg: Editor, exempelvis Notepad Browser, någon av: IE5.5 NN6 Mozilla senaste XML-parser med senaste XSLT-funktionerna Microsoft Weft 3 Windows On-Demand Producer 7 Windows Media Player 7

Arbeta hemma Linux, verktyg: Finns troligtvis verktyg för Linux (?) Uppgiften med XML kan då lösas med exempelvis ett Java-äpple för XML/XSLT Mejla gärna och berätta

Uppgifterna För samtliga uppgifter gäller: All HTML ska vara W3C-validerad XHTML 1.0 Strict. I XHTML-filen får ingen CSS- eller JavaScript-kod finnas All CSS ska vara W3C-validerad och finnas på en separat fil All JavaScript ska följa EcmaScript-262 och finnas på en separat fil och ingen HTML-kod eller CSS-kod finnas i JavaScript koden

Uppgifterna För samtliga uppgifter gäller: All DOM ska vara antingen: W3C DOM Level1/2, bäst, fungerar i både IE5+ och NN6+, endast NN6+ har stöd för händelsehantering enligt W3C-DOM Level 2 IE4+ DOM (enligt kursboken) eftersom det inte finns någon bra lärobok inom W3C DOM än Designen på det grafiska användargränssnittet är fri men försök göra det snyggt

Uppgifterna Några uppgifter är frivilliga Samarbete?: Icke-standard Fördjupning, desto fler av dessa man gör, desto större sannolikhet för VG Samarbete?: Alla uppgifter utom gesällprovet: 1-2 personer Gesällprovet: ensam (för att kunna sätta VG) Exempel  använd IE5 pga kryptering

Uppgifterna DOM 1a. Läsa och skriva egenskaper [mycket lätt] 1b. Fånga händelser [mycket lätt] 1c. Anropa metoder [mycket lätt]

Uppgifterna Stil 2a. Statisk [lätt] 2b. Dynamisk [lätt] 2c. Filter [lätt, frivillig pga MS] 2d. Övergångar element [lätt, frivillig pga MS] 2e. Övergångar sidor [lätt, frivillig pga MS] 2f. Nerladdningsbara fonter [lätt]

Uppgifterna Innehåll 3a. Användarstyrd textförändring 1 [lätt] 3b. Användarstyrd textförändring 2 [medel] 3c. Programstyrd textförändring [medel] 3d. Användarstyrd bildförändring [lätt] 3e. Programstyrd bildförändring [lätt] 3f. Formulärhantering [medel] 3g. Grafik med text [svår, frivillig]

Uppgifterna Positionering 4a. Programstyrd av bild [medel] 4b. Användarstyrd av bild [medel] 4c. Programstyrd av text [medel] 4d. Användarstyrd av text [medel] 4e. Lager [medel]

Uppgifterna Multimedia 5a. Ljud [medel] 5b. Film [medel] 5c. DirectAnimation [mycket svår, frivillig pga MS]

Uppgifterna Java Varför Java, det finns ju äpplen på IP1?  6. Kopplingar [medel] Varför Java, det finns ju äpplen på IP1?  Koppling från JavaScript till Java: XML, kryptering, grafik mm  Remote scripting! 

Uppgifterna XML 7a. Välutformad [mycket lätt] 7b. Valid [mycket lätt] 7c. Accessa data [medel] 7d. Accessa data dynamiskt [svår] 7e. Stil med CSS [lätt] 7f. Stil med XSL [svår]

Uppgifterna Gesällprovet, krav: Gesällprovet ska baseras på de tekniker som kursen bygger på Gesällprovet ska vara bra både till både form och funktion Gesällprovet ska beskrivas generellt på en separat HTML-sida

Uppgifterna Gesällprovet, exempel: SVG = XML-baserad standard för vektorgrafik WML är XML-baserad standard för Internet på mobiltelefoner XML Script är ett skriptspråk för XML Grafikdemo med rörlig grafik uppbyggd av 1*1 pixel stora bilder Spel

DHTML - intro Strukturerad data – HTML, XHTML, XML Stil/design – CSS, XSL Funktion/dynamik – JavaScript Funktion/dynamik – DOM Alla 4 är olika paradigmer, olika stil och man kan kombinera dessa på många olika sätt Se upp för kaos! 

DHTML - intro Vi ska isolera varje av de 4 delarna och arbeta mycket strikt När man väl lärt sig denna teknik blir det enormt mycket lättare att utveckla Författare, designers, programmerare kan arbeta mer isolerat Tre exempel direkt: sämst, dålig, bäst 

DHTML – 3 exempel Gör ett DHTML-program: En knapp, svart bakgrund, vit text När man klickar på knappen: Knappen röd bakgrund Dialogruta visas Knappen svart bakgrund

DHTML – exempel 1 Sämst: in-line <head> <title>Exempel 1</title> </head> <body> <h1>Det här är exempel 1</h1> <input type="button" value="tryck mig" style="color: white; background: black" onmousedown= "this.style.background='red'; window.alert('Du klarade det!'); this.style.background='black'" ></input> </body> </html>

DHTML – exempel 1 Sämst: in-line – varför sämst? Data, stil, funktion Allt ligger inline blandat, rörigt Ingen återanvändning av någon del Svårt att förändra stora dokument Stil sätts i JavaScript Alla ” och ’  Fungerar inte bra i XHTML

DHTML – exempel 2 Dålig: in-doc <head> <title>Exempel 2</title> <style> .is {color: white; background: black} </style> <script for="i" event="onmousedown()"> this.style.background='red'; window.alert('Du klarade det!'); this.style.background='black'; </script> </head> <body> <h1>Det här är exempel 2</h1> <input type="button" value="tryck mig" id="i" class="is"> </input> </body> </html>

DHTML – exempel 2 Dålig: in-doc – varför dåligt? Data, stil, funktion Allt ligger inte lika blandat men fortfarande lite rörigt Ingen återanvändning mellan dokument Svårt att förändra stora siter Stil sätts i JavaScript Fungerar inte bra i XHTML

DHTML – exempel 3 Bäst: out-doc (separata filer) link etablerar länkar till externa dokument, rel = relationship mellan elementet och länkat dokumentet Filen exempel3.html: <html> <head> <title>Exempel 3</title> <link href="exempel3.css" rel="stylesheet" type="text/css"/> </head> <body> <h1>Det här är exempel 3</h1> <input type="button" value="tryck mig" id="i" class="isUp"> </input> <script type="text/javascript" src="exempel3.js"></script> </body> </html>

DHTML – exempel 3 Bäst: out-doc (separata filer) Filen exempel3.css: .isUp { color: white; background: black; } .isDown { background: red; Filen exempel3.js: function foo() { window.document.all.i.className = 'isDown'; window.alert('Du klarade det!'); window.document.all.i.className = 'isUp'; window.document.all.i.onmousedown = foo;

DHTML – exempel 3 Bäst: out-doc (separata filer) – varför bäst? Data, stil, funktion Allt ligger inte blandat  ordning Återanvändning mellan dokument Lätt att förändra stora siter Stil sätts inte direkt i JavaScript, man byter klass-namnet Fungerar direkt i XHTML

DHTML - komponenter Redogöra för några viktiga aspekter av: WC3 XHTML 1.0 Strict WC3 CSS Ecma-262 JavaScript IE4+ DOM (+ lite W3C DOM) Alla detaljer kan man slå upp, huvudsaken är att man förstår helheten Kodexempel 

DHTML – komponenter XHTML WC3 HTML 4.0 - 1:a gången W3C före WC3 HTML 4.01 – sista versionen WC3 XHTML 1.0: Transitional – tillåter stil-element  Frameset – för frames  Strict – stil med CSS, den vi använder  W3C XHTML 1.1 – strict, extensibility, modularity [ej klar]

DHTML – komponenter XHTML Välutformad XML (det är XML): Start- och slut-taggar: <title>Hemsidan</title> <br/> Inga överlappande taggar (dvs perfekt nästling): Ej: <x><y>Pierre</x></y> Alla attribut inom ” ”: z=”värde” Alla taggar lowercase

DHTML – komponenter XHTML Kommentarer: <!-- kommentar --> PS. META-taggar: <meta name="keywords" content=”xhtml, html, css”/> <meta name="description" content=”This site deals with Internet programming”/> <meta name="author" content=”Pierre Wijkman, pierre@dsv.su.se”/> <meta name="generator" content="Notepad”/> <meta name="robots" content="nofollow”/> Exempel på XHTML 

DHTML – komponenter XHTML – exempel 4 Deklaration av XML <?xml version="1.0"?> <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Strict//EN" "DTD/xhtml1-strict.dtd"> <html xmlns="http://www.w3.org/1999/xhtml" xml:lang="en" lang="en"> <head> <title>Exempel 4</title> </head> <body> <!– här kommer innehållet --> </body> </html> Deklaration av specifik XML (med DTD) Deklaration av namespace)

DHTML – komponenter XHTML – exempel 4 <h1>Rubrik 1</h1> <h2>Rubrik 2</h2> <h3>Rubrik 3</h3> <h4>Rubrik 4</h4> <h5>Rubrik 5</h5> <h6>Rubrik 6</h6>

DHTML – komponenter XHTML – exempel 4 <div>Text A</div> <div> <span>Text B</span> <span>Text C</span> </div> <p> <span>Text D</span> <span>Text E</span> </p>

DHTML – komponenter XHTML – exempel 4 <a href="http://www.dsv.su.se/">Länk-text</a> </p> <img src=”exempel4.gif" alt="En bild"/>

DHTML – komponenter XHTML – exempel 4 <table> <tr> <td>Cell-text A</td> <td>Cell-text B</td> <td>Cell-text C</td> </tr> <td>Cell-text D</td> <td>Cell-text E</td> </table>

DHTML – komponenter XHTML – exempel 4 <ul> <li>Punktlist-text A</li> <li>Punktlist-text B</li> <li>Punktlist-text C</li> </ul> <div><br/></div> <ol> <li>Nummerlist-text A</li> <li>Nummerlist-text B</li> <li>Nummerlist-text C</li> </ol> <hr/>

DHTML – komponenter XHTML DIV och SPAN är container tags, de orsakar ingen formatering och används ofta med CSS: DIV är ett block-element SPAN är ett in-line element, orsakar ingen radbrytning Validering 

DHTML – komponenter XHTML – W3C validering

DHTML – komponenter XHTML – W3C validering

DHTML – komponenter CSS Sen IE3+ (CSS1, CSS-P, CSS2) Cascading? CSS kan defineras av: konstruktör, användare, browser Vilken CSS gäller vi konflikter? Konstruktörens CSS har högst prio Sen användarens CSS Sen browserns CSS Alla dessa CSS smälts samman

DHTML – komponenter CSS Arv? CSS kan definieras för element på olika nivåer och CSS ärvs från förälder-element till barn-element (osv) Vilken CSS gäller vi konflikter? Barns CSS har högst prio (desto mer specifikt element, desto högre prio) Använd relativa mått på exempelvis fonter Exempel 

DHTML – komponenter CSS – exempel 5 <head> <title>Exempel 5</title> <link href="exempel5.css" rel="stylesheet" type="text/css"/> </head> <body> <p class="c1">Text A</p> <p class="c1">Text B</p> <div>Text C</div> <div> <span id="i1">Text D</span> </div> <p id="i2" class="c2">Text B</p> </body> </html> div {letter-spacing: 10px; font-weight: bold} .c1 {color: red} #i1 {letter-spacing: 20px} .c2 {color: red} #i2 {color: green} röd grön

DHTML – komponenter CSS – W3C validering

DHTML – komponenter CSS – W3C validering

DHTML – komponenter JavaScript JavaScript inte Java JavaScript är ett stort riktigt språk  JavaScript lite likt C, Java, Perl (Lisp?) Objektbaserat (inte objektorienterat), baserat på prototyp, ej arv Otypat: var x=5; x=”tjosan”; Case-sensitive

DHTML – komponenter JavaScript JavaScript kommer från Netscape/SUN (NN2+) JScript är MS implementation (IE3+) Standard: EcmaScript-262 (European Computer Manufacturers Association) Inga stora skillnader mellan olika browsrar

DHTML – komponenter JavaScript Kommentarer: // eller /* … */ Variabler: var x = 5; Arrayer: var a = new Array(10); Flerdimensionella arrayer: array av array osv (jobbigt), trick: eftersom man kan ha strängar som index: a2[i + '-' + j] = 7;

DHTML – komponenter JavaScript Loopar: for(var i = 0; i < 5; i++) { … while(i < 10) { … do { … } while (i < 10); Villkor: if(x == 0) { … } else { … } if(x == 0) { … } else if { … }

DHTML – komponenter JavaScript Funktioner: function start() { initMatrix(); showMatrix(); } function square(x) { return x*x;

DHTML – komponenter JavaScript Funktioner (forts) var square = new Function(’x’, ’return x*x;’); var square = function(x) {return x*x } Argument till funktioner sänds som värde (inte pekare) Inget block-scope för variabler

DHTML – komponenter DOM JavaScript Browser/dokument DOM CSS

DHTML – komponenter DOM DOM består av en mängd objekt DOM används för att kunna accessa vissa saker hos browsern och elementen i dokumentet ”API” mot browsern och dokumentet

DHTML – komponenter DOM Här finns mest problem, olika browsrar ej kompatibla: NN2 introducerade JavaScript och en mycket begränsad DOM (skripta bilder) NN3 något bättre IE3’s DOM = NN version 2’s NN4’s DOM  inte bra (DOOM || DUM?) IE version 4’s DOM  mycket bra!

DHTML – komponenter DOM DOM Level 0 = samlingsnamn för alla tidigare vilda försök W3C DOM Level 1 (core + html) 1998-10-01 = enbart access W3C DOM Level 2 (core + views + style + events + traversal + html) 2000-11-13 W3C DOM Level 3 (core + events + content) ej klar = stöder key-events

DHTML – komponenter DOM Vilka browsrar stöder W3C DOM?: Mozilla0.8, bäst, stöder Level 1 och delar av Level 2 (händelsehantering och CSS), identisk rendering/funktion i Linux, Win32, Mac NN6, näst bäst, samma som Mozilla0.6 IE5 och IE5.5, bra, stöder Level 1, snart kommer IE6, olika rendering/funktion i Linux, Win32, Mac

DHTML – komponenter DOM – Mozilla development roadmap

DHTML – exempel Läsa in/skriva till DOM/egenskaper DOM/metoder DOM/händelser (Nästan) alla exempel med IE4+ DOM

DHTML – exempel 6 Accessa två element och införa IP3 och en egenskap <head> <title>Exempel 6</title> </head> <body> <div id="x1"></div> <div id="x2"></div> <script type="text/javascript" src="exempel6.js"></script> </body> </html> JavaScript: window.document.all.x1.innerText = 'IP3'; window.document.all.x2.innerText = window.document.title; DOM del

DHTML – exempel 7 En händelse och en metod <head> <title>Exempel 7</title> </head> <body> <div id="x1">Här kan det hända</div> <script type="text/javascript" src="exempel7.js"></script> </body> </html> JavaScript: window.document.all.x1.onmouseover = new Function('window.alert("!")');

DHTML – exempel 8 En händelse och CSS <head> <title>Exempel 8</title> <link href="exempel8.css" rel="stylesheet" type="text/css"/> </head> <body> <div id="x1" class="out">Här kan det hända</div> <script type="text/javascript" src="exempel8.js"></script> </body> </html>

DHTML – exempel 8 (forts) En händelse och CSS .out {} .over {letter-spacing: 2px; color: red} JavaScript: function changeStyleOut() { window.document.all.x1.className = 'out'; } function changeStyleOver() { window.document.all.x1.className = 'over'; window.document.all.x1.onmouseout = changeStyleOut; window.document.all.x1.onmouseover = changeStyleOver;

DHTML – exempel 9 W3C DOM – access , händelse och CSS http://mozilla <head> <title>Exempel 9</title> <link href="exempel9.css" rel="stylesheet” type="text/css"/> </head> <body> <div id="x1">Här händer det</div> <div id="x2"></div> <div id="x3" class="out">En text</div> <script type="text/javascript" src="exempel9.js"></script> </body> </html>

DHTML – exempel 9 (forts) W3C DOM – access , händelse och CSS http://mozilla.org/docs/dom/technote/tn-dom-table/ .out {} .over {font-weight: bold} var textNode = document.createTextNode(document.title); function myOver() { document.getElementById('x2').appendChild(textNode); document.getElementById('x3').className = 'over'; } function myOut() { document.getElementById('x2').removeChild(textNode); document.getElementById('x3').className = 'out'; document.getElementById('x1').childNodes[0].addEventListener('mouseover', myOver, false); document.getElementById('x1').childNodes[0].addEventListener('mouseout', myOut, false);

XML Intro Med de tekniker vi pratat om fram till nu har vi kunnat separera: DATA för HTML Stil för HTML Funktion för HTML Vi ska nu gå ett steg till och göra denna separation oberoende av tillämpningen (tidigare HTML)

XML Intro Bra bok: XML How to Program av Deitel, Deitel, Nieto, Lin och Sadhu Kursboken lite tunn med XML, speciellt: Validering XSL, XPath, XSLT XML ”tillbehör” utvecklas snabbt!

XML Generellt XML handlar om data! XML handlar om data som är: strukturerad och beskriven (i ett sammanhang/context) XML används för att skapa skräddarsydda markup språk som kan beskriva godtyckliga data på ett strukturerat sätt Matematiska formler, molekulära strukturer, grafik, finansiell data mm

XML Generellt Med XML separerar man på data och hur data ska presenteras (stil + dynamik exempelvis) XML är elegant och lätt! 

XML Mer specifikt XML-deklaration överst Godtyckliga taggar (hur funkar det?) Case-sensitive Exakt ett root-element Inga överlappande taggar (dvs perfekt nästling): Ej: <x><y>Pierre</x></y>

XML Mer specifikt Markup text skriv inom < och > Start- och slut-taggar: <titel>Hemsidan</titel> Tomma element: <bild src=”img.gif”></bild> <bild src=”img.gif”/> Alla attribut inom ” ”: z=”värde” nada 

XML Ett exempel XML deklaration root element element data <?xml version="1.0"?> <emails> <email no="1"> <from>lisa@abc.se</from> <to>pierre@dsv.su.se</to> <subject>Ett e-brev</subject> <body>Hej Pierre!</body> </email> <email no="2"> <from>maria@abc.es</from> <body>Hola Pierre!</body> </emails> root element element data

XML Mera specifika saker Tillåtna tecken: Carriage returns, line feeds och Unicode White space normaliseras: Flera mellanslag  ett mellanslag Kommentarer: <!-- kommentar --> Särbehandling av: <, >, &, ’ och ” <  < >  > &  & ’  &apos; ”  "

XML Mera specifika saker CDATA sektioner: Kan innehålla text med reserverade tecken <exempel> <![[CDATA[ Här kan man skriva godtycklig text, exempelvis: < ]]> </exempel> inte: ]]>

XML Mera specifika saker En process instruktion (PI) ger en applikation extra info: <?xml:stylesheet type=”text/xsl” href=”stil.xsl”?> Mål  xml:stylesheet Värde  type=”text/xsl” href=”stil.xsl Ingen effekt om inte applikation använder dem Kan definiera egna: <?paiwp x=”12”?>

XML Mera specifika saker Namespaces används för att undvika kollisioner mellan taggar: <myroot xmlns = ”urn:unik:text” xmlns:foo = ”urn:ho”> <text>Hej</text> <foo:bild src=”img.gif”/> Här tillhör text det definierade default namespacet ”urn:unik:text”

XML Parsning - välutformning En XML-parser/processor kontrollerar ett dokument map: välutformning, dvs om dokumentet följer generell XML-syntax och/eller validitet, dvs om dokumentet följer en egendefinierad avgränsning (inom XML-syntax) Uppfylls inte detta genereras ett fel

XML Parsning - välutformning Två typer av XML-parsning: DOM-parser bygger upp hela dokumentet i minnet (en trädstruktur) SAX-parser strömmar igenom dokumentet och använder händelser IE5+ och NN6 har en inbyggd XML-parser Finns även fria för C, C++, Java, Perl

XML Hur ser det ut i en browser? <?xml version="1.0"?> <emails> <email no="1"> <from>lisa@abc.se</from> <to>pierre@dsv.su.se</to> <cc>adapt@dsv.su.se</cc> <subject>Ett e-brev</subject> <body>Hej Pierre!</body> </email> <email no="2"> <from>maria@abc.es</from> <cc></cc> <body>Hola Pierre!</body> </emails>

XML Hur ser det ut i en browser? IE5+ visar XML med en egen default-stil NN6 visar XML så här  Vi ska se senare hur man själv stylar XML med CSS eller XSL

XML Validitet För att själv definiera en specifik struktur på XML-dokument så används Document Type Definitions (DTD) Olika ”standarder” för att en XML-struktur ska passa specifika applikationer Exempelvis XHTML, WML, SVG, mm Ett XML-dokument som uppfyller en viss DTD kallas för ett validerat dokument

XML Validitet En DTD specificeras med en annan syntax kallad Extended Backus-Naur Form (EBNF) Ett nyare XML-baserat sätt växer fram: Schemas Det finns XML-parsrar som: Enbart kontrollerar välformighet (snabbare) Både kontrollerar välformighet och validitet

XML Validitet En DTD deklarerar: Element: Attribut: Namn Regler för nästling Tillåtet innehåll Attribut: Namn och existens Typ av data

XML Validitet – ett exempel <?xml version="1.0"?> <!DOCTYPE emails SYSTEM "exempel11.dtd"> <emails> <!-– osv som innan --> </emails> DTD-fil: <!ELEMENT emails (email*)> <!ELEMENT email (from, to, subject, body)> <!ATTLIST email no CDATA #REQUIRED> <!ELEMENT from (#PCDATA)> <!ELEMENT to (#PCDATA)> <!ELEMENT subject (#PCDATA)> <!ELEMENT body (#PCDATA)> Så här ser det ut!

XML Validitet – dokument typ deklaration Man kan: Lägga DTD-definitionen direkt i dokumentet Referera till en lokal fil: <!DOCTYPE emails SYSTEM "exempel11.dtd"> Referera till en publikt definierad (ofta använd): <!DOCTYPE emails PUBLIC ”http://cgi.dsv.su.se/~pierre/i/i3/tutorials/oh/exempel11.dtd">

XML Validitet – element typ deklaration Ett element deklareras: <!ELEMENT emails (email*)> Detta betyder att elementet emails får ha godtyckligt många barn-element email +  minst 1 gång *  0 eller mer gånger ?  0 eller 1 gång

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT email (from, to, subject, body)> Detta betyder att elementet email måste ha: ett barn-element from, ett barn-element to, ett barn-element subject och ett barn-element body i denna ordning

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT a (b, (c | d)*)> Detta betyder att elementet a: måste ha ett barn-element b och ett godtyckligt antal element c eller d Vi har grupperat med ( ) och använt ”eller men inte båda” med | Komplexa deklarationer kan skapas 

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT from (#PCDATA)> Detta betyder att elementet from måste innehålla text PCDATA = Parsed Character DATA

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT br EMPTY> Detta betyder att elementet br inte får innehålla text eller barn-element

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT x (#PCDATA | y)*> Detta betyder att elementet x får innehålla en godtycklig kombination av text eller barn-element y

XML Validitet – element typ deklaration (forts) Ett element deklareras: <!ELEMENT x ANY> Detta betyder att elementet x får innehålla en godtycklig kombination av text eller barn-element Det kan också vara ett tomt element Används ofta under utveckling

XML Validitet – attribut typ deklaration Ett attribut deklareras: <!ELEMENT x EMPTY> <!ATTLIST x y CDATA #REQUIRED> Detta betyder att attributet y till elementet x: Måste finnas Får innehålla text CDATA = CharacterDATA

XML Validitet – attribut typ deklaration Ett attribut deklareras: <!ELEMENT x EMPTY> <!ATTLIST x y CDATA #IMPLIED> Detta betyder att attributet y till elementet x: Får innehålla text Finns det inget så får applikationen använda vilket värde som helst (om något)

XML Validitet – attribut typ deklaration Ett attribut deklareras: <!ELEMENT x EMPTY> <!ATTLIST x y #FIXED ”123”> Detta betyder att attributet y till elementet x: Måste innehålla texten 123

XML Validitet – attribut typ deklaration Man kan även styra attribut typerna (dvs mera val än bara CDATA): Text  CDATA Tokeniserad: ID, IDREF, ENTITY, NMTOKEN Uppräknad Exempel 

XML Validitet – attribut typ deklaration Ett attribut deklareras: <!ELEMENT x EMPTY> <!ATTLIST x y (A | B) ”A”> Detta betyder att attributet y till elementet x: Får innehålla texten A eller B Har defaultvärdet A om inget attribut anges

XML - komponenter DOM/JavaScript I IE5+ finns en inbyggd XML-parser JavaScript kan då hantera XML: var xml = new ActiveXObject('Microsoft.XMLDOM'); xml.async = false; xml.validateOnParse = true; var loadOk = xml.load('7c.xml'); if(loadOk) { window.status = 'Parsningen gick bra!'; } else { window.status = 'Parsningen gick inte bra!'; } Anger att man vill parsa validerande

XML - komponenter CSS Man kan styla ett XML-dokument på samma sätt som i XHTML Referensen skrivs med en PI: <?xml-stylesheet type="text/css" href=”minstil.css"?> Bättre med 

XML - komponenter XSL XSL används för att formatera och styla ett XML-dokument Två delar: XSLT används för att transformera ett XML-dokument till ett annan XML-dokument XSL Formatting Objects används för att transformera ett XML-dokument till ett icke-XML-dokument (ex på binär form)

XML - komponenter XSL XSL är XML XSL är omfattande XSL använder Xpath Vi tittar enbart på XSLT och det som behövs för uppgiften Rekommenderas: fördjupning = gesällprov

XML - komponenter XSL – exempel 12 <?xml version="1.0"?> <?xml-stylesheet type="text/xsl" href="exempel12.xsl"?> <emails> <email no="1"> <from>lisa@abc.se</from> <to>pierre@dsv.su.se</to> <subject>Ett e-brev</subject> <body>Hej Pierre!</body> </email> <email no="2"> <from>maria@abc.es</from> <body>Hola Pierre!</body> </emails> Referens till stylesheet

XML - komponenter XSL – exempel 12 (forts) <?xml version="1.0"?> <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0"> <xsl:template match="emails"> <html> <head> <title>Exempel 12</title> </head> <body> <h1>e-brev</h1> <hr/> <xsl:apply-templates select="email"/> </body> </html> </xsl:template> Det som är innanför detta ersätter emails-noden Här ska vi infoga något som bestäms i template email

XML - komponenter XSL – exempel 12 (forts) Här är template email <xsl:template match="email"> <xsl:for-each select="from"> <div> <span class="tn">From: </span> <span><xsl:value-of select="."/></span> </div> </xsl:for-each> <hr/> </xsl:template> </xsl:stylesheet> Här är väljer vi alla from element Här plockar vi ut värdet

XML - komponenter XSL – exempel 12 (forts)

XML - komponenter XSL Vilka browsrar stöder XSLT?: Mozilla0.9 (när den kommer) IE5 och IE5.5 om man uppdaterar till senaste XML-parsern IE6 (när den kommer) Man kan även transformera XML + XSLT på server-sidan med exempelvis Perl 

XML - komponenter XSL Lösning: kör XSLT-transformationen på http-server-sidan, exempel i Perl: #!/usr/bin/perl use XML::XSLT; my $xmlfile = "7f.xml"; my $xslfile = "7f.xsl"; my $parser = XML::XSLT->new ($xslfile, "FILE"); $parser->transform_document ($xmlfile, "FILE"); $parser->print_result(); Detta kräver modulerna: XML::DOM XML::XSLT

Tack för att Ni har lyssnat! Lycka till!