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

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

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

Strukturering med XML och DTD

En snabb titt på XML LEKTION 6

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

Konstruktion av datorspråk

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

Vad är XSLT XSLT extensible Stylesheet Language Transformations

XML. Extensible Markup Language

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

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

Vad är XML Schemas. XML Schemas. Varför XML Schmas. Namespace

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

XSLT. Extensible Stylesheet Language Transformations

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


Labora&on 2 HTML och validering övningar/uppgi:er

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

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

Hantera informationspaket i system för bevarande

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

Introducerande övningar i HTML

TNMK30. Elektronisk publicering

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

CSS- Cascading Stylesheets

Informationsmodellering och e-infrastrukturer

WEBBUTVECKLING Kursplanering

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

Förkunskaper: Tim Berners Lees vision webbläsarkriget W3C strukturtagg <h1> layout-tagg <font size="6">

F02 En första sida. Dagens agenda

Klassdeklaration. Metoddeklaration. Parameteröverföring

Web (html+xhtml), CSS. Dagens föreläsning. Web - grundprinciper. Syfte Ge er grunderna för att skapa och publicera websidor.

TENTAMEN I INTRODUKTION TILL MEDIEPRODUKTION, 5p

Lektion 8 Del 1 XML, Kapitel 20

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

Vad är XLink. XLink/XPointer/XSLT-FO. Namespace. Simple Links

Tillämpningsanvisningar

Internet A. HTML Grunder Maximilien Chiang 1

Bilder. Bilder och bildformat

Språk för webben introduk4on 4ll HTML

Fass webbtjänster Fass Vet.- texter

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 "?

Kompletterande exempel till XSLT

Lektion 2 - CSS. CSS - Fortsätt så här

TNMK30. Elektronisk publicering

! Katerina Vrotsou! Medieteknik. 2004! Informationsvisualisering, visuell data analys

Parameteröverföring. Exempel. Exempel. Metodkropp

Användarhandledning Version 1.2

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

Fass webbtjänster Veterinära Fass-texter

JAVASCRIPT. Beteende

extensible Markup Language

Laboration 3 HTML och struktur samt frågorna A - C övningar/uppgifter

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

Datatyper och kontrollstrukturer. Skansholm: Kapitel 2) De åtta primitiva typerna. Typ Innehåll Defaultvärde Storlek

<header> </header> <footer> </footer>

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

DP7 Kompletterande information

FältGIS. Utfört av Patrik Fundberg. Mälardalens Högskola, IDt. Handledare John Kessler, LandFocus IS AB Christer Norström, Mälardalens Högskola

Övning (X)HTML 2. Sidan 1 av

GRUNDER I VHDL. Innehåll. Komponentmodell Kodmodell Entity Architecture Identifierare och objekt Operationer för jämförelse

En grundkurs i hemsidor och hur de är uppbyggda

ORDLISTA WEBBDESIGN 100P

Post- och telestyrelsens författningssamling

Introduktion till programmering

Webbdesign vt Innehållsförteckning

Arbetsmaterial HTML pass 1 - Grunder

Inför prov 1 i webbdesign

I Skapa Hej.java och skriv programmet. I Kompilera med javac Hej.java. I Rätta fel och repetera tills du lyckas kompilera ditt program

Objektorienterad Programmering (TDDC77)

Metaspråket XML Mika Suonvieri

Övning 1 - Abstrakta datatyper

Webbdesign vt Innehållsförteckning

Nätet. Uppgiften. Nivå

En bortsprungen katt

Dokumentmallar i praktiken, Nyps

21/01/2016. Stilmallar. styra utseendet av webbplatsen DEL 1. Karin Fahlquist. index.html. recept.html frukt.html grönsaker.html

Labora&on 7 Syfte med laborationen:

F07 Stilmallar Dagens agenda

Lektion 3 HTML, CSS och JavaScript

Objektorienterad Programkonstruktion. Föreläsning 10 7 dec 2015

24-timmarswebben. Riktlinje Förklaring Så uppfyller vi den

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

Introduk+on +ll programmering i JavaScript

HTML5 Semantic. Informationen kommer från w3schools.com. En semantisk elementet beskriver tydligt dess betydelse för både webbläsaren och utvecklaren.

Del 1 och 2 HTML/CSS. Webbutveckling Laboration 1 Nicklas Bostedt

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

Anvisningar för ifyllning av Excelark för databaser (xml-filer)

Programmering A. Johan Eliasson

Kursplanering Utveckling av webbapplikationer

Lektion 2 Del 1 Kapitel 6

<script src= "

Grundläggande datalogi - Övning 1

Objektorienterad Programmering (TDDC77)

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

Kommunikation. Dator med webbläsare Förfrågan: Webserver. Returnerar HTML-kod

XML Lars Celander en effektiv introduktion m n skonsam E

Webbprogrammering. Sahand Sadjadee

20/01/2016. html och css

Transkript:

Dagens föreläsning XML D151 Databasteknik och datorkomunikation http://www.csc.kth.se/dd1051/ Syfte Få en introduktion till XML, vilket är det vanligaste dataformatet för att strukturera data idag. Mål Lära er vad XML är, Skillnaden mellan well formed och valid Hur man skriver en DTD 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 1 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 2 Vad är XML extencible Markup Language - XHTML Ett meta-märkspråk med vilket man kan bygga märkspråk som xhtml, wml, smil etc. Inget exekverande programspråk, endast för att strukturera data. Rekommendation förvaltad av W3C. XML-familjen = XML + relaterade rekommendationer som xslt, xpath, xlink mm. <?xml version="1.0"> <?xml-stylesheet type="text/css" href="style.css" type="text/css" /> <!doctype html public "-//w3c//dtd html 4.0 transitional//en"> <html> <title>personlig webbsida för Förnamn Efternamn</title> <body> <p align="center"> <img src="/kth/bilder/nada.gif" alt="nada" width="468" height="68"/> </p> </body> </html> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 3 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 4

- SMIL - Dataformat <?xml version="1.0"?> <smil> <layout> <root-layout height="350" width="600" title="universal SMIL Document"/> <region id="w" left="174" top="100" height="47" width="63" z-index="3" /> </layout> <body> <video src="help.mov" begin="0.00s" end="11.00s" /> </body> </smil> <?xml version="1.0"?> <imf> <version>3.0</version> <source supplier="printingcompany-1" application="application-1"/> <time>1997-10-06t00:11:00.00+2</time> <body> <object action="modify"> <PrintingJob/> <object_uid> <source supplier="printingcompany-1" application="application-1"/> <local_id>17</local_id> </object_uid> <attributes> <ActualCopies>14322</ActualCopies> </attributes> </object> </body> </imf> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 5 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 6 Ett element är den grundläggande informationsenheten i en xml-applikation. Ett element har en starttag, ett innehåll och en slut-tag. Element Start-tag <title> </title> Innehåll Slut-tag 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 7 Simple-, Complexeller Empty content Simple content - En tag innehåller endast text. Complext content - En tag innehåller en eller flera andra tags och eventuellt text. Empty content - En tag innehåller inget. <title> </title> <br></br> <br /> har Complex Content <title> har Simple Content <br> har Empty Content Kortversion av <br></br> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 8

Attribut Attribut eller element? Attribut innehåller extra information om ett element T.ex. width på bilder, href på länkar Skrivs på formen <elementnamn attributnamn1= värde1 attributnamn2= värde2 > <a href= b.html >Link</a> <img width= 14 src= b.jpg /> Observera att det går att innesluta attributvärdet antingen värde eller värde, men inte värde eller värde. Då man själv gör ett märkspråk ställs man ofta inför valet att koda något som ett attribut eller ett element. Valet är huvudsakligen en smakfråga. <video duration= 2s href= b.jpg /> Eller <video> <duration>2s</duration> <source>b.jpg</source> </video> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 9 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 10 Trädstruktur Föräldrar, barn, syskon XML-strukturer bildar alltid en trädstruktur Alla XML-strukturer har ett root-document HTML <html> <title> </title> html <body> head body root Element som innehåller andra element kallas dessa elements förälder. Omvänd relation kallas barn. HTML <html> <title> </title> html <body> head body </body> </html> title Element på samma nivå kallas syskon. </body> </html> title Tecken-data 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 11 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 12

Reserverade tecken CDATA och PCDATA Vissa tecken är reserverade då de har speciell betydelse i XML. De kodas som entitetsreferenser. Även svenska tecken kodas oftast som entitetsreferenser < < (less than) > > (greater than> & & (ampersand) " (quotation) &apos; (apostrophe) Å Å eller Å Ä Ä Ä Ö Ö Ö å å å ä ä ä ö ö ö PCDATA = Parsed Character Data. Parsern ersätter entitetsreferenser med deras värde. CDATA = Character Data. Entitetsreferenser tolkas ej. Om man har många konstiga tecken som man av lathet eller något annat skäl vill skriva in utan entitetsreferenser kan man innesluta tecknen i en CDATA-sektion. Den inleds med strängen <! [CDATA[ och avslutas med strängen ]]> <reserved_characters> <![CDATA[ <, > &, och är alla reserverade tecken ]]> </reserved characters> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 13 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 14 Namn på tags och attribut måste inledas med en bokstav eller _ Därefter bokstäver och/eller _ och/eller siffror. Svenska tecken OK men bör undvikas i praktiken xml reserverat som inledning Namngivning Godkända exempel <html> <_my_id_19> <dåligt_namn> <tag_with_xml> Felaktiga exempel <mitt element> <7nde_elementet> <Bjorn s_tag> <xml_tag> Ett xml-dokument är well formed om det uppfyller ett antal kriterier. Alla xml-dokument måste vara well-formed. Well-formed Varje start-tag måste ha en motsvarande slut-tag (<html></html>) Elementen måste bilda en trädstruktur (t.ex. <i><p></p></i> men EJ <i><p></i></p>) Attributvärden måste omslutas av citattecken eller apostrofer. Observera att många html-editorer endast uppfyller en del av ovanstående krav. Fullständig lista i kapitel 18 av XML in a nutshell, något mer lättbegripligt på sid 23 i samma bok. 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 15 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 16

Kommentarer Processinstruktioner Kommentarer omsluts med <!-- kommentar --> Får EJ finnas i en tag. Får EJ innehålla strängen -- Godkänt exempel <html> <!-- min kommentar --> </html> Felaktiga exempel <html <!-- en html-tag -->> <!-- -- är ej tillåtet --> Processinstruktioner kan användas för att skicka vidare information till applikationer. Många applikationer har tidigare använt kommentarer i samma syfte, vilket är dåligt. <?xml-stylesheet type= text/xml href= my-stylesheet.xsl?> Denna processinstruktion kan sedan plockas upp exempelvis av en webserver som kan använda informationen till att styra sitt beteende. Processinstruktioner inleds med <? och avslutas med?> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 17 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 18 XML-deklarationer Dokumenttypdeklaration XML-dokument bör inledas med en XMLdeklaration. Den innehåller: XML-version Teckenkodning Om en extern dtd används <?xml version= 1.0 encoding= ISO-8859_1 standalone= yes?> Teckenkodning (t.ex. ascii, iso-8859_1 eller unicode kan väljas med encoding ) standalone= no används om en extern DTD finns. Förklaring av DTD kommer senare. XML-dokument kan även innehålla en Document Type Declaration som anger en eventuell DTD. <!DOCTYPE imf SYSTEM http://www.aa.com/imf.dtd > imf är i ovanstående fall rootelementet SYSTEM används om det inte är en officiell DTD, annars används PUBLIC URLen är urlen till DTDn Kan även innehålla en så kallad public ID, t.ex. -//W3C//DTD XHTML 1.0 Transitional//EN" 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 19 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 20

Tag-set DTD Tags och deras attribut för ett visst område kallas tag-set, xml application eller xml vocabulary. <br> ingår i den tag-set som finns för xhtml men inte för SVG <apply-templates> ingår i den tag-set som finns för xsl men inte för xhtml <p> ingår i både xhtml s tag-set och wml s tag-set. I en Document Type Definition (DTD) definierar man ett tag-set och de inbördes relationer som ska gälla. Samma sak kan idag göras med t.ex. XML Schemas. <html>, och <body> är alla definierade i DTDn för XHTML. I den DTDn anges att ett <html>-element ska innehålla exakt ett -element följt av exakt ett <body>element. Detta uttrycks genom följande rad i DTDn <!ELEMENT html (head, body)> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 21 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 22 Valid DTD - Element Om ett XML-dokument är well-formed och uppfyller alla de begränsningar som ges av dess DTD är det valid. xhtml-dokument kan valideras på http://validator.w3.org/ En generell valideringstjänst som klarar andra vokabulärer än xhtml finns på http://www.stg.brown.edu/service/xmlvalid Element definieras enligt syntaxen <!ELEMENT elementnamn (barnelement) > Sekvenser separeras med kommatecken <!ELEMENT e1 (e3,e4) > <!ELEMENT html (head,body)> <!ELEMENT title (#PCDATA)> Processen att kontrollera detta kallas validering XML Schemas kan valideras på http://www.w3.org/2001/03/webdata/xsv Teckendata skrivs #PCDATA <!ELEMENT e4 (#PCDATA) > 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 23 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 24

DTD - Repeterande element DTD - Grupperingar Default är att ett element förekommer exakt en gång. Vill man ange något annat finns *, + och? * betyder 0, 1 eller flera gånger + betyder 1 eller flera gånger? betyder 0 eller 1 gång Definition <!ELEMENT a (b?)> <!ELEMENT b (c+))> <!ELEMENT c (d*))> <!ELEMENT d (#PCDATA)> Instansdokument <a> <b> <c> <d>hej</d> </c> <c> </c> </b> </a> Parenteser kan användas för att gruppera element. Sedan kan *, + och? appliceras på hela parentesen som en grupp. <!ELEMENT a (b,(c+,d?)*)+> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 25 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 26 DTD - Val DTD - Tomma element För att ange valmöjlighet mellan en mängd element Tomma element, alltså element utan innehåll kan operatorn användas. <!ELEMENT boolean (true false)> deklareras med EMPTY <!ELEMENT br EMPTY> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 27 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 28

DTD - Blandat innehåll DTD - Godtyckligt innehåll I vissa fall är det önskvärt att kunna blanda teckendata med element. Typexemplet är web. Blandning måste vara godtyckligt mycket av vallista där #PCDATA måste vara först. Deklaration <!ELEMENT mixedelement (#PCDATA p br em strong)*> Instansdokument <mixedelement> <em>hej</em> hopp <p>tjoho</p> </mixedelement> Ibland (mycket sällan) är det önskvärt att deklarera ett element som kan ha godtyckligt innehåll. Det görs med ANY. <!ELEMENT everything ANY> Elementet everything kan nu innehålla godtycklig well-formed xml och text blandat. 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 29 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 30 DTD Övningar 1 DTD Övningar 2 Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): <!ELEMENT a (b,c?)> <!ELEMENT b (d+, e*)> <!ELEMENT c (#PCDATA)> <!ELEMENT d EMPTY> <!ELEMENT e (#PCDATA)> <!ELEMENT a ((b c)+,(c,b)+)> <!ELEMENT b (#PCDATA)> <!ELEMENT c (#PCDATA)> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 31 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 32

Skriv en DTD som kan validera följande instansdokument. <a> <b/> <b/> <c/> <d> <b/> </d> </a> DTD Övningar 3 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 33 Ett eller flera attribut kan associeras med ett element. Ett attributnamn kan förekomma i flera element, men ett element kan inte ha två attribut med samma namn DTD - Attribut <!ATTLIST img src CDATA #REQUIRED width CDATA #REQUIRED height CDATA #IMPLIED> img är elementet attributen ska associeras med. src, width, height är attributnamn CDATA är attributens datatyp #REQUIRED betyder att attributet måste finnas med, #IMPLIED att det kan finnas med 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 34 Attribut - Datatyper Entitetsdeklartioner Mycket begränsade datatyper finns. De viktigaste är: CDATA NMTOKEN NMTOKENS ENUMERATIONS ID IDREF IDREFS CDATA - Minst begränsade datatypen. NMTOKEN - Alfanumeriska tecken, _, -,. och :. Inte mellanslag. NMTOKENS - En eller flera NMTOKEN separerade av mellanslag (whitespace) Enumerations - Endast ett av en enumerering värden kan antagas. Definieras exempelvis <!ATTLIST book published (true false) #REQUIRED> ID - Unika värden inom XML-dokumentet. Som NMTOKEN men kan inte inledas med en siffra IDREF - Används för interna länkar till attribut av ID-typ. Måste alltså antaga ett värde som ett IDattribut har. IDREFS - En eller flera IDREF Entitetsdeklarationer kan användas för att skapa alias för långa eller svåra strängar. Deklareras i en DTD, används i instansdokumenten. I en DTD <!ENTITY mtgp Medieteknik och Grafisk Produktion > I ett instansdokument som använder den DTDn <p>kursen ges av &mtgp;</p> Slutresultat <p>kursen ges av Medieteknik och Grafisk Produktion </p> I #PCDATA-sektioner går parsern igenom texten och ersätter entiteter med dess värden. 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 35 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 36

Entitetsdeklarationer skrivs i en DTD och används i instansdokument. Parameterdeklarationer både skrivs och används i DTDer. Parameterentiteter <!ELEMENT person (fname, lname)> <!ELEMENT employee (fname, lname)> <!ELEMENT student (fname, lname)> Istället kan man deklarera en parameterentitet <!ENTITY % name fname, lname > <!ELEMENT person (%name;)> <!ELEMENT employee (%name;)> <!ELEMENT student (%name;)> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 37 Entitetsdeklarationer kan innehålla referenser till parameter-entiteter, tecken-entiteter (som &) och allmänna entiteter. I entitets-deklarationen expanderas parameter- och tecken-identiteter direkt. Då entiteten används i ett instansdokument, expanderas alla entiteter och element tolkas. Nästlade entiteter I DTDn: <!ENTITY % gen a general > <!ENTITY chr a character > <!ENTITY example <p>an ampersand (&#38;) may be written as &chr; (&#38;#38;) or %gen (&amp;) entity.</p> > Detta resulterar i att example får betydelsen: <p>an ampersand (&) may be written as &chr; (&#38;) or a general (&amp;) entity.</p> I ett instansdokumentent kommer &example; att ersättas med paragrafen: An ampersand (&) may be written as a character (&) or a general (&) entity. 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 38 Extern DTD Intern DTD Vanligtvis ligger DTDdeklarationerna i en extern fil. Att använda en parameterentitet som vi gjort här är ju inte nödvändigt men vi kommer att använda den längre fram. extern DTD Filen student.dtd <!ENTITY % name fname, lname > <!ELEMENT student (%name;)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> Filen student.xml (instansdokumentet) <?XML version= 1.0?> <!DOCTYPE student SYSTEM student.dtd > <student> <fname>bjorn</fname> <lname>hedin</lname> </student> Det går dock även att inkludera deklarationerna i själva instansdokumentet. Interna deklarationer kan inte använda parameterentiteter inuti elementdeklarationer. intern DTD <?XML version= 1.0?> <!DOCTYPE student [ <!ELEMENT student (fname, lname)> <!ELEMENT fname (#PCDATA)> <!ELEMENT lname (#PCDATA)> ]> <student> <fname>bjorn</fname> <lname>hedin</lname> </student> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 39 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 40

Det går också att kombinera intern och extern DTD. Intern och Extern DTD Interna och externa element-deklarationer får ej kollidera, men interna entitets-deklarationer kan skugga externa. intern och extern DTD <?XML version= 1.0?> <!DOCTYPE student SYSTEM student.dtd [ <!ENTITY % name fname, mname, lname > <!ELEMENT mname (#PCDATA)> ]> <student> <fname>inge</fname> <mname>b</mname> <lname>frick</lname> </student> 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 41 Problem med DTDer Begränsade datatyper (inga int, long, date ) Begränsade repetitionsalternativ (endast?, * och +) Endast en betydelse för ett element per DTD DTDer är själva inte XML-dokument. Inga möjligheter till arvsmekanismer. Försök till lösning med XML Schemas, men mer om det i andra kurser. 2008-03-25 Björn Hedin, Inge Frick, NADA/KTH 2002-2008 42