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

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

Vad är XML XML. Exempel - SMIL. Exempel - XHTML. extensible 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

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

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

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


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

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

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

Introducerande övningar i HTML

TNMK30. Elektronisk publicering

Hantera informationspaket i system för bevarande

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

CSS- Cascading Stylesheets

Informationsmodellering och e-infrastrukturer

WEBBUTVECKLING Kursplanering

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.

Lektion 8 Del 1 XML, Kapitel 20

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

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

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

Tillämpningsanvisningar

Internet A. HTML Grunder Maximilien Chiang 1

TENTAMEN I INTRODUKTION TILL MEDIEPRODUKTION, 5p

Bilder. Bilder och bildformat

Språk för webben introduk4on 4ll HTML

Fass webbtjänster Fass Vet.- texter

Kompletterande exempel till XSLT

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

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

Fass webbtjänster Veterinära Fass-texter

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

JAVASCRIPT. Beteende

extensible Markup Language

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

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

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

ORDLISTA WEBBDESIGN 100P

Övning (X)HTML 2. Sidan 1 av

Post- och telestyrelsens författningssamling

Webbdesign vt Innehållsförteckning

Arbetsmaterial HTML pass 1 - Grunder

Inför prov 1 i webbdesign

Metaspråket XML Mika Suonvieri

Webbdesign vt Innehållsförteckning

Nätet. Uppgiften. Nivå

En bortsprungen katt

Introduktion till programmering

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

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)

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

Övning 1 - Abstrakta datatyper

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

Lektion 2 Del 1 Kapitel 6

<script src= "

Grundläggande datalogi - Övning 1

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

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

Webbprogrammering. Sahand Sadjadee

Webbprogrammering grunder

20/01/2016. html och css

Webbstandarder för fler än en plattform

Transkript:

Dagens föreläsning 2D1522 Datorteknik och -kommunikation 2D2051 Databasteknik och datorkomunikation http://www.nada.kth.se/kurser/kth/2d1522/ http://www.nada.kth.se/kurser/kth/2d2051/ 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 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 1 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 2 Vad är XML extencible Markup Language 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. - XHTML <?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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 3 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 5 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 6 Element Simple-, Complexeller Empty content Ett element är den grundläggande informationsenheten i en xml-applikation. Ett element har en starttag, ett innehåll och en slut-tag. <title> </title> Start-tag Innehåll Slut-tag 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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 7 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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 <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> attributnamn2= värde2 > 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 9 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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> <body> </body> </html> head title html body root Element som innehåller andra element kallas dessa elements förälder. Omvänd relation kallas barn. Element på samma nivå kallas syskon. HTML <html> <title> </title> <body> </body> </html> head title html body Tecken-data 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 11 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 13 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 15 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. 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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?> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 17 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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" 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 19 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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)> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 21 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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. Processen att kontrollera detta kallas validering 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 XML Schemas kan valideras på http://www.w3.org/2001/03/webdata/xsv Element definieras enligt syntaxen <!ELEMENT elementnamn (barnelement) > Sekvenser separeras med kommatecken <!ELEMENT e1 (e3,e4) > Teckendata skrivs #PCDATA <!ELEMENT e4 (#PCDATA) > <!ELEMENT html (head,body)> <!ELEMENT title (#PCDATA)> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 23 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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?)*)+> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 25 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 26 DTD - Val DTD - Tomma element För att ange valmöjlighet mellan en mängd element kan operatorn användas. <!ELEMENT boolean (true false)> Tomma element, alltså element utan innehåll deklareras med EMPTY <!ELEMENT br EMPTY> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 27 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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. 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 29 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 30 Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): DTD Övningar 1 Skriv ett instansdokument som kan valideras mot följande DTD (a är root-elementet): DTD Övningar 2 <!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)> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 31 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 32

Skriv en DTD som kan validera följande instansdokument. <a> <b/> <b/> <c/> <d> <b/> </d> </a> DTD Övningar 3 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 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 33 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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 IDtyp. Måste alltså antaga ett värde som ett ID-attribut 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. 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 35 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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;)> Entitetsdeklarationer kan innehålla referenser till parameter-entiteter, teckenentiteter (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;). </p> entity. > 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. 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 37 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 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> 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 39 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 40

Intern och Extern DTD Det går också att kombinera 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> 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 senare. 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 41 2005-04-11 Björn Hedin, Inge Frick, NADA/KTH 2002-2004 42