HTML und Verarbeitung, XML - AG Netzbasierte Informationssysteme
Transcription
HTML und Verarbeitung, XML - AG Netzbasierte Informationssysteme
3 2 6 7 ! $ %& ( ) * +& & . % / -0 0 111 % 8 "! 4 ! !5 $ " !$ " !$ , # ' & 2 , $ *= # - ! ' ; ! :;<& & "! 9 7 *:0 5 4 6 ; $ , $ $ $ 9 ! ; 4 / & = = ) &> 4 / & < ;4 4? @ <& >@ / 4? A ( ) , B B & : = , 4 / ) < A 4 / ,! 4 /< & , , !& !: ! % 1 / $ 1 &/ G 4 A 4 / 1 0 @ $ ) - ! & $ $ =6<- 9 9 0 4 / 4 />E/ F@ E0 / F E F14 / E0 F? 4 />E F14 / E0F? 1 4 /! , 9 > 4 / / = ? ! C ' H ' / / / / / / I / / : ! ; 4 / @ ! K >1 : ? G ; * 4 / , + @ @ E FE / PQ / -0 0 111 @ /E0F E0F > ? J @ 0 EL $M< N#@ !#( ! & <%0 0 =6<0 0 $$ !7 O 0 0 @F E/ F E/ F E F'(% -& +& E0 F E / PQ / -0 0 111 % Q F E0 / F E , F E FE / PQ / -0 0 111 % 0 Q F' ( ) R S E0FE F E / PQ / -0 0 111 / % 0 Q F' 4 / 4 / / & E0FE0F E/ F& R S& E0 /F ? 9 D 9 / / 8 : / / % 0 9 T / Q F ! 0 2 !Y @ E / PQ Q 4 PQ / -0 0 111 4 0 4 /Q F E / PQ / -0 0 111 Q FG E0F%; 4 /E FE P2F E , P 9 PV P 8 9 /P288 ) PQ Q F E0 FE0 F E , P/ P 4 /) PQ % Q F E , P/ P ) PQ % Q F !"#$% : $ !"#$% &"'( $)*(+! , - ! " &"'( ./0 " 1 K$ 1 /* & 1 K &/ % ; ; F E0 /2F ' W E / P 0 X 404 /4 / E0F *4 / O /* /* 2),* A %: !Y @ ; ( B ; 3 + 45 + 4 7 C ;4 / &/ 6 ; 7 +8* 0,9: 0,: ;;,< 4 , = > %? " :. 8 :00: 00300300 @'" 6 6 / @ B ;4 / # 7 +G 4 / 6 /* 7 - 1 1 L E0F !Y @ F 4 / !"#$%1 W / Q F & ) 4 / ; U E F$ ' Q / -0 0 111 % ;4 /4 / 1 1 ; E0 , F E0 / F E ; ; 4 6 7 B 7 6 = 4 / 7 7 6 ' 7 4 > )A( ;4 / CK 4 4 2 E0 E/2F: +; !Y @ 3 + / 4 /; !Y @ ; D ' : 4 8+C% F C4 7 > ? ? 76= + = 7 7 / 4 /; ! 4 / : . : E6 7 + E 4 &A%2 , &A%2 3 " 7 4 &A%2 ?/ / &A%2 * 6 BBB/ ( /4 , > G / 7 7 7 , 4 ?/ &A%2 3 BBB/ /4 , / 4 ?/ !Y @ + / 7 4 6 2 4 /; 4 !Y @ ' 4 7 7 7 ? 4 > 7 I %'J K<;;9 I2A2J DK;;<;L 7 , 4 /7 @%" > E'% ? E()% 8+C% "#$% E()% $ ' 0 4 4 / >$@ ? U88 6 4 />' '? D 88U8J 8 : 6 E!"+ '%"& %)A 7 2 4 -H D 7 7 7 +& !Y @ 9$ &/ & ! %; @4 / , ; MW 9 1 4 , , / < 1 @4 / 4 W4 $ ## ,9 , + @4 / & &/ @9 ) ; ! % 9 & MC - F E F? 4 4 & )A+ + N 3 + 4 6 ?/ /7 # -; = ? / &/ 9 / >Q # >E ' OC G + 4 > Q 4? F E/ZF 4? 4? J H - >E - 5 '+ ) 5 ) I ! ! 1 4 I ;4 <#0 ($# # '# 4 !5 & # (! < 5 : , 4 B) ) &/ $ ! 4 + & / $M U I 4 / ! 2O 1 , : + W)9 1 # # W)9 1 + ! +4 / & 9/ 9/ FE/ W) ZS W)9 1 W)9 1 /* : 4 ! - # E/ -: < < / */ W) ZS W)9 1 9 ZS 9/ 9/ ZS ZS 9 ! @ A # < 4] S 4 / FE F !; E0 F 4) / < ^^S ; > ! 4) / > PP ! ;, @ > ! ! ?] > < ?S 4) / < ^^S ; > : ; ?] _ / ; > ! @ ; : / ; @:$? > ! 9 -/ @ @ : / @ > ! 9>[ !; \O? !? -: & ! @? / */ ! : ) ; ) @ ) 9/ / % ! @ ?] ; / # @ / ; > A # ! : ; ! > @ ) A ) < 4 ; ? ? % > ! : ? ]_ ; _ W)9 1 4 4) >; ) ?] ,] 0 0( !/ (! P 1( ! > )O ?S (! < 4 4 4 P < 4 >?S 4 4 4 4>?S >4 4 < , >? = />Q 90 / Q ?? ] 0 0 !& / ; C 4 & ; P4 4 & ; >?S & ; P 1& ; > ?S P 1 > ?S < < P 1 < >?S 0 0# # $ P 1# $ >?S > < ?S _ _44 / >@9 4 _ ?] _ _ 2 @ ; : / - 22 @ ; : / 4 / >E F? / < >4 / >EL %% %%F? / 9>4 / 9 ; ? ? ? 27 26 _ 4 ! ; 4) / >> PP ! > PP ! > PP ! ;, ;, ) ! 9 ! @ A # < 4] ; > ! : ; #? ` ` ?` `> PP ! 2? ` `> PP ! 7? ` `> PP ! 8? ` `> PP ! >?S 0 0! : >?S -( 4) ! ?` `> PP ! ; >Q ZZQ ?S 0 0 ) / M G? ` `> PP > PP ;, ;, 6? ` ` D?? ] ! ?] M G? ` `> PP @ ?? ] FW) '(% ! ; -& ' ( ) 3 4 / -0 0 111 + & ) / 9>4 / > ?S 0 0@ 4 / ?] 9 ZZ% : ' 4 / & ! W)9 1 % )1 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 ; / R!/ ZZA ZZ% G 4 /* +/ ZZ; )4ZZ% ; 4 / I + $ ZZ% ; ; : 4 / ; 4 / 4 ; 4 / #+ ' #+ / 4 / ZZ% # ) ; * A 5 +/ ) !/ ) 4 / : & % ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! 9/ ! : :$$ @;; :##! @ : @: :;@ :;@'M &G ! M<AH(M @ M$N <:# &M <@ @ <& @ <M$@ # 2J ZZ!/ ZZ% ; !/ ) )* @ ?? ] * ZZ: ?] I 28 -( ZZ! ?] >?S 0 0 >?S ; _ ! _ _ ZZG ! 2D @ > ! ?` `> PP ! ; >Q ZZQ ?S 0 0 ) / ! ! _ _ 4) ;, / ! > : _ _ 4) >> PP ;, ; ?] _ >> PP ;, / ) 2 -( 4 & : 9 ) : ! @ A # < 4] 4) / ; > ! : > PP ! & G? ] M W4 P : > !: :! ?S > PP ?] ;, >Q ZZ : / ^Q+ Q ^ : > ;, >Q 5 / : -Q ?S >@ P : >?S / @ >?S? ] M W4 P 9@ >?S ;, > ^Q = Q ?S ;, > : > ??S _ _ ; Q ^ !: FW) & : ZZ : / -0 0 N4 : 5 / : ) = = / / = 1 / = 4 = / -0 0 N4 : ?] ; <??S / ) : -0 0 111 % / 7O U + 4 0a P:<B6 81B # 9 ! NH J5 b$@':(! O 4 0a P:<B6 81B # 9 ! NH J5 2U !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: !: :< &M :! &G :! & A :! : < &5@ :<AG M( $ G<M! M M $@ <@! ! #:$$& G <@! ! ;#:<& G < @<A@$ <! :;; <! :;;&$ <! @: <M$@ <M$@ :;@ <M$@ N#@ <M! M <M! ; $ 6 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 4 9/ 62 W)9 1 6O _ _ $ : : 4 / = # - 4 + <U>Robert Tolksdorf</U> <ADDRESS> TU Berlin<BR> FR 6-10<BR> Franklinstr. 28/29<BR> D-10578 Berlin<BR> </ADDRESS> ; ' *:0 5 4 / 4 / 9/ ! - *; $ 4 / ! :;<&& "! 9 4 / : A 4 / ) 4 / : "! 4 / !@ 14 ;G ! C 4 / * +K 4 / A * 1 G + 1 - 4 / $ * * : +K 4 / 4 / ! !2 O " 4 / C ! "! = ! ;5G <ORT><PLZ>...</PLZ><ORTSNAME>...</ORTSNAME></ORT> </ADRESSE> 4 / : !6 O !7 +K <ADRESSE>...</ADRESSE> <ADRESSE><STRASSE>...</STRASSE><ORT>...</ORT> </ADRESSE> <ADRESSE> <STRASSE>...</STRASSE> -: 1 !6 2 "! %@$& < ! 6D ) 68 : @ 4 / a : : : 67 ) 66 / " ! HR: " !a $ @9 ( : 4 / ! ) ;G ! 4 / = / "# $ "% 4 / ; =6< 4 / "! $ = = $' </ ! ;5G = ! "# / 4 /: 4 / 'M 4 / $M ) " !% 4 / a C 4 /$ 4 / 6J ; $ 5 $$ @ "! # "! @ Lernziele • Wie ist ein XML-Dokument aufgebaut? • Was sind Elemente und was sind Attribute? • Wann sollten Attribute und wann Elemente verwendet werden? "!$ ' -A ;4 / & 6U 5 4 / /! " !a :1 = : 4 / "! ;4 / "! ;, / " !a "! A = $ 4 / 4 / © Klaus Schild, XML Clearinghouse 2003 6 = : : A Elemente Inhalt von Elementen <first> ist ein Anfangs-Tag (engl. start tag). </first> ist das dazugehörige End-Tag. <first>John</first> wird Element und „first“ Elementname genannt. „John“ wird auch Inhalt des Elementes genannt. 1. Elemente können aus einfachem Text bestehen: <first>John</first> Der Inhalt wird dann auch als parsed character data (PCDATA) bezeichnet. 2. Elemente können auch weitere Elemente enthalten: <name> <first>John</first> <last>Doe</last> </name> Wird auch als strukturierter Inhalt bezeichnet © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Inhalt von Elementen Inhalt von Elementen 3. Elemente können gleichzeitig Text (PCDATA) und Elemente enthalten: 4. Elemente können auch leer sein: <section> Text <subsection> … </subsection> Text </section> Wird auch als gemischter Inhalt (engl. mixed content) bezeichnet © Klaus Schild, XML Clearinghouse 2003 <name> <first>John</first> <middle></middle> <last>Doe</last> </name> Beachte Unterschied zu nicht vorhandenen Element! Leeres Element <tag-name></tag-name> kann mit <tagname/> abgekürzt werden: <name> <first>John</first> <middle/> <last>Doe</last> </name> © Klaus Schild, XML Clearinghouse 2003 PCDATA CDATA • Für XML reservierte Symbole wie < und & dürfen nicht in PCDATA verwendet werden. • • Statt dessen < bzw. & verwenden. • < und & werden auch entity references genannt. • In XML gibt es insgesamt fünf entity refences: • & für • < für < • >für > • &apos für ' • " für " • • Text mit vielen reservierten Symbolen besser als sog. character data (CDATA) darstellen. XML-Parser betrachtet dann den entsprechenden Text als einfachen String und parst den Inhalt nicht. XML-Parser sucht ]]> und analysiert die Zeichenkette bis dahin nicht. & © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Regeln für wohlgeformte Dokumente Regel 1: Anfangs- und End-Tags 1. Jedes Anfangs-Tag muss ein zugehöriges End-Tag haben. 2. Elemente dürfen sich nicht überlappen. 3. XML-Dokumente haben genau ein Wurzel-Element. 4. Elementnamen müssen den Namenskonventionen von XML entsprechen. 5. XML beachtet grundsätzlich Groß- und Kleinschreibung. 6. XML belässt Formatierungen (white space) im Text. • In XML muss jedes Anfangs-Tag ein zugehöriges End-Tag haben. • In HTML gilt diese Regel nicht: <HTML> <BODY> <P>Text <BR>More text in the same paragraph. <P>Some text in another paragraph.</p> </BODY> </HTML> • Wo endet das erste P-Element? • Syntaktisch mehrdeutig XML-Dokumente strukturierter © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Regel 2: Überlappung von Elementen Regel 3: Wurzel-Elemente • In XML dürfen sich Elemente nicht überlappen. • In HTML dürfen sich Tags überlappen: • Jedes XML-Dokumente hat genau ein WurzelElement. <HTML> <BODY> <P>Some <STRONG>formatted <EM>text </STRONG>, but </EM> no grammar no good! </p> </BODY> </HTML> • semantisch mehrdeutig! • Wurzel-Element entspricht dem Dokument-Typ. • Also z.B. statt zweier Wurzel-Elemente <name>John</name> <name>Jane</name> ein zusätzliches Element einführen: <names> <name>John</name> <name>Jane</name> </names> © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Regel 4: Namenskonventionen Regel 4: Namenskonventionen • Namen beginnen entweder mit einem Buchstaben oder „_“: z.B. first, First oder _First • <résumé> • Nach dem ersten Zeichen sind zusätzlich Zahlen sowie „-“ und „.“ erlaubt: z.B. _1st-name oder _1st.name • <123> nicht wohlgeformt: beginnt mit Zahl • <fun=xml> nicht wohlgeformt: enthält „=“ • <first name> nicht wohlgeformt: enthält Leerzeichen • Namen enthalten keine Leerzeichen. • Namen enthalten kein „:“. • <xml-tag> nicht wohlgeformt: beginnt mit „xml“ • Namen beginnen nicht mit „xml“, unabhängig davon, ob die einzelnen Buchstaben groß- oder kleingeschrieben sind. • Diese Konventionen gelten für alle Namen, nicht nur für Elementnamen. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Regel 5: Groß- und Kleinschreibung Regel 6: White Space • XML beachtet grundsätzlich Groß- und Kleinschreibung. • Beispiel: • Im Gegensatz zu HTML unterscheidet XML also z.B. zwischen <P> und <p>. • Dennoch möglichst nicht gleichzeitig <First> und <first> verwenden! <P>This is a paragraph. It has a whole bunch of space.</P> • HTML reduziert alle Formatierungen (white spaces) im Text auf ein einziges Leerzeichen : © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Regel 6: White Space Attribute • • XML belässt alle Formatierungen im Text. Beispiel: Der Inhalt von <paragraph>This is a paragraph. of space.</paragraph> • • • Attribute sind Name-WertPaare der Form name="wert" oder name='wert'. • Der Wert eines Attributes ist immer ein String. • Die Reihenfolge der Attribute ist belanglos. It has a whole bunch Beachte: In Browsern wie dem IE 5 und IE 6 sind diese Formatierungen allerdings nicht sichtbar. Grund: XML-Dokumente werden zur Darstellung im Browser in HTML umgewandelt. © Klaus Schild, XML Clearinghouse 2003 Elemente können eine beliebige Anzahl von Attributen haben. It has a whole bunch ist also: This is a paragraph. of space. • © Klaus Schild, XML Clearinghouse 2003 Attribute Element statt Attribut • • Ein Element darf niemals zwei Attribute mit dem selben Attribut-Namen haben: Jedes Attribut kann auch als Kind-Element repräsentiert werden: © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Attribut statt Element Attribut oder Element? • Wann also Attribute und wann Elemente verwenden? Jedes unstrukturierte Kind-Element kann auch als Attribut dargestellt werden: © Klaus Schild, XML Clearinghouse 2003 • Ein Attribut kann nur einen String als Wert haben, ein Element kann beliebig strukturiert werden. • Die Reihenfolge der Attribute ist belanglos, diejenige von Elementen nicht. • Einheitliche Darstellung mit Elementen ist eleganter, Darstellung mit Attributen kompakter. • Fazit: Attribute eigenen sich besonders für einfache, unstrukturierte Metadaten. © Klaus Schild, XML Clearinghouse 2003 Die XML-Deklaration Attribut oder Element? interner Schlüssel des Datensatzes • Enthält Informationen für Parser, insbesondere die verwendete XML-Version und Kodierung • Muss immer am Anfang der Datei erscheinen • Ist zwar optional, sollte aber dennoch immer vorhanden sein! Erstellungsdatum des Datensatzes Beide Attribute stellen Meta-Information dar. Reihenfolge ist egal. Deshalb Repräsentation als Attribute Problem: Datum "21.05.2003" ist unstrukturierter String. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Die XML-Deklaration XML-Deklaration: Kodierung • • • • version (obligatorisch): Verwendete XML-Version, aktuelle Version ist "1.0". standalone (optional): Gibt an, ob es eine zugehörige DokumentTyp-Definition gibt ("no") oder nicht ("yes"). encoding (optional): Verwendete Kodierung des XMLDokumentes Die drei Attribute müssen immer in dieser Reihenfolge erscheinen. • ASCII (American Standard Code for Information) stellt einzelne Zeichen entweder mit 7 oder 8 Bit dar. • 7-Bit-ASCII deckt mit 128 Zeichen nur einen kleinen Teil der weltweit verwendeten Zeichen ab. • Es gibt verschiedene 8-Bit-ASCII-Versionen (u.a. ISO8859-1 und windows-1252). • Nur die ersten 128 Zeichen der 8-Bit-ASCII-Versionen sind bei allen 8-Bit-ASCII-Versionen identisch. • Fazit: ASCII ist nur beschränkt zum weltweiten Austausch von Textdateien geeignet. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 XML-Deklaration: Kodierung XML-Deklaration: Kodierung • Unicode deckt mit 65356 Zeichen alle weltweit verwendeten Zeichen ab. • Intern müssen alle XML-Parser mit Unicode arbeiten. • Unicode gibt es auf Basis von 8 Bit (UTF-8) und 16 Bit (UTF-16). • Das Attribut encoding gibt an, welches Kodierungsschema das betreffende XML-Dokument verwendet. • Sowohl UTF-8 als auch UTF-16 decken den kompletten Unicode-Zeichensatz ab, UTF-8 benutzt lediglich eine intelligentere Kodierung. • Fehlt dieses Attribut in der XML-Deklaration, dann wird angenommen, dass das Dokument entweder in UTF-8 oder UTF-16 kodiert ist. • 7-Bit-ASCII ist eine Teilmenge von UTF-8. • Tipp: Das XML-Dokument in Unicode abspeichern. Das Attribut encoding kann dann in der XMLDeklaration weggelassen werden. • Textdateien, die größtenteils aus dem 7-Bit-ASCIIZeichensatz bestehen, können in UTF-8 kompakter sein, alle anderen sind meist in UTF-16 kompakter. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Online-Test XML Zusammenfassung http://www.w3schools.com/xml/xml_quiz.asp • Elemente bestehen aus einem Anfangs-Tag, einem dazugehörigen End-Tag und dem dazwischen eingeschlossenem Inhalt. • Ein Element kann nur Text, nur Kind-Elemente oder gleichzeitig Text und Kind-Elemente enthalten. • Ein Element kann auch leer sein. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Zusammenfassung Zusammenfassung • Wohlgeformte XML-Dokumente müssen folgenden syntaktischen Regeln entsprechen: • XML beachtet grundsätzlich Groß- und Kleinschreibung. • Jedes Element kann eine beliebige Anzahl von Attributen haben. • Attribute sind Name-Wert-Paare. • Der Wert eines Attributes ist immer ein einfacher String. • Die Reihenfolge der Attribute ist belanglos. • Jedes Attribut kann auch als Kind-Element repräsentiert werden. • Umgekehrt kann jedes unstrukturierte Kind-Element auch als Attribut dargestellt werden. • Attribute eignen sich zur Darstellung von einfachen, unstrukturierten Metadaten. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 • Jedes Anfangs-Tag muss ein zugehöriges End-Tag haben. • Elemente dürfen sich nicht überlappen. • XML-Dokumente haben genau ein Wurzel-Element. • Elementnamen müssen den Namenskonventionen von XML entsprechen, müssen u.a. entweder mit einem Buchstaben oder mit „_“ beginnen. Lernziele • Wie kann mit einer DTD der Aufbau von XMLDokumenten eines bestimmten Typs beschrieben werden? ) $ ' -A • Wie wird die Elementstruktur eines Dokumentes deklariert? , ;4 / & • Wie werden Attribute von Elementen deklariert? • Was sind die Nachteile von DTDs? J $ © Klaus Schild, XML Clearinghouse 2003 Dokument-Typen Deklaration der Elementstruktur • Beschreiben den prinzipiellen Aufbau von Dokumenten eines bestimmten Typs. • Können mit DTDs (Document Typ Definitions) spezifiziert werden. • DTDs wurden von SGML übernommen. • DTDs benutzen Syntax, die regulären Ausdrücken ähnlich ist. <!ELEMENTcatalog catalog(CD (CD| |cassette cassette| |record record| |MP3)*> MP3)*> <!ELEMENT Klasse Objekt Objekt Objekt Deklariert Element catalog * bedeutet n Wiederholung mit n 0. | bedeutet Auswahl. CD, cassette, record und MP3 sind jeweils Kind-Elemente. DTD XML-Dokument XML-Dokument XML-Dokument © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Deklaration der Elementstruktur Deklaration der Elementstruktur <!ELEMENTcatalog catalog((EMPTY EMPTY| |(catalog-item, (catalog-item,catalog) catalog))> )> <!ELEMENT <!ELEMENTcatalog-item catalog-item(CD (CD| |cassette cassette| |record record| |MP3)> MP3)> <!ELEMENT <!ELEMENTCD CD(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT Deklariert Element „CD“ Rekursive Element-Deklarationen sind erlaubt. + bedeutet n Wiederholung mit n EMPTY bedeutet leerer Element-Inhalt. , bedeutet Sequenz: Aufeinanderfolge von Elementen © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 1. Deklaration der Elementstruktur <!ELEMENTcatalog catalog(CD (CD| |cassette cassette| |record record| |MP3)*> MP3)*> <!ELEMENT <!ELEMENTCD CD(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTcassette cassette(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTrecord record(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTMP3 MP3(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT Deklariert Elemente cassette, record und MP3 Analog zur Deklaration von CD Deklaration der Elementstruktur <!ELEMENTartist artist(#PCDATA)> (#PCDATA)> <!ELEMENT <!ELEMENTtitle title(#PCDATA)> (#PCDATA)> <!ELEMENT <!ELEMENTgenre genre(#PCDATA)> (#PCDATA)> <!ELEMENT <!ELEMENTdate-released date-released(#PCDATA)> (#PCDATA)> <!ELEMENT Deklariert jeweils Elemente artist, title, genre und dateresleased. #PCDATA bedeutet unstrukturierter Text ohne reservierte Symbole wie „<“ oder „>“. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Deklaration der Elementstruktur Deklaration der Elementstruktur <!ELEMENTsong song(title, (title,length, length,parody)> parody)> <!ELEMENT <!ELEMENTlength length(minutes, (minutes,seconds)> seconds)> <!ELEMENT <!ELEMENTminutes minutes(#PCDATA)> (#PCDATA)> <!ELEMENT title, length und parody sind Kind-Elemente von song. title, length und parody erscheinen immer in dieser Reihenfolge. <!ELEMENTseconds seconds(#PCDATA)> (#PCDATA)> <!ELEMENT minutes und seconds werden als unstrukturierten Text deklariert. Datentypen wie positiveInteger oder Integer stehen in DTDs nicht zur Verfügung. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Deklaration der Elementstruktur Vermeidung von Wiederholungen <!ELEMENTcatalog catalog(CD (CD| |cassette cassette| |record record| |MP3)*> MP3)*> <!ELEMENT <!ELEMENTCD CD(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTcatalog catalog(CD (CD| |cassette cassette| |record record| |MP3)*> MP3)*> <!ELEMENT <!ENTITY% %albumContentModel albumContentModel"(artist, "(artist,title, title,genre, genre,date-released, date-released,song+)"> song+)"> <!ENTITY <!ELEMENTcassette cassette(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTrecord record(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTCD CD %albumContentModel;> <!ELEMENT %albumContentModel;> <!ELEMENTcassette cassette %albumContentModel;> %albumContentModel;> <!ELEMENT <!ELEMENTMP3 MP3(artist, (artist,title, title,genre, genre,date-released, date-released,song+)> song+)> <!ELEMENT <!ELEMENTrecord record <!ELEMENT <!ELEMENTMP3 MP3 <!ELEMENT %albumContentModel;> %albumContentModel;> %albumContentModel; %albumContentModel; Struktur von CD, cassette, record und MP3 sind identisch. Änderungen dieser Struktur müssen an mehreren Stellen nachvollzogen werden. %albumContentModel; ist ein Parameter. Allerdings nur einfache textuelle Ersetzung, keine Vererbungshierarchien. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Primitive Datentypen Primitive Datentypen Neben den komplexen Datentypen zur Strukturierung von Element-Inhalten, stehen drei primitive Datentypen (engl. built-in datatypes) zu Verfügung: Beachte: Elementare Datentypen, wie sie von Programmiersprachen bekannt sind, stehen in DTDs nicht zur Verfügung. #PCDATA: unstrukturierter Text ohne reservierte Symbole. <!ELEMENT minutes (INTEGER)> EMPTY: Der Element-Inhalt ist leer. Das Element kann allerdings Attribute haben. <!ELEMENT br EMPTY> <br/> ANY: beliebige XML-Strukturen <!ELEMENT title ANY> © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Zulässige Dokumente Prüfung der Zulässigkeit In einem XML-Dokument kann ein Dokument-Typ spezifiziert werden. Das Wurzelelement des Dokumentes muss genau der Struktur dieses Elementes entsprechen, wie sie im Dokument-Typ festgelegt ist. In diesem Fall bezeichnet man das Dokument als zulässig (engl. valid). © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Prüfung der Zulässigkeit Deklaration von Attributen <!ATTLISTcatalog catalog <!ATTLIST versionCDATA CDATA#IMPLIED #IMPLIED"1.0"> "1.0"> version Das Element catalog hat ein Attribut mit dem Namen version. Außer version hat catalog keine weiteren Attribute. Das Attribut ist vom Typ String (CDATA). #IMPLIED: Das Attribut ist optional. "1.0" ist der Standard-Wert. #REQUIRED: Das Attribut ist obligatorisch. #FIXED: Das Attribut hat immer den gleichen Wert. © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Deklaration von Attributen <!ATTLISTartist artist <!ATTLIST gender(male (male| |female) female)"female"> "female"> gender Das Element artist hat ein Attribut mit dem Namen gender und keinen weiteren Atrribute. Das Attribut hat entweder den Wert male oder female (Aufzählungstyp). "female" ist der Standard-Wert von gender. Datentypen für Attribute Neben Strings (CDATA) und Aufzählungstypen stehen im wesentlichen folgende Datentypen zur Verfügung: NMTOKEN: ein String, der den Namenskonventionen von XML entspricht NMTOKENS: ein Liste von solchen Namen, jeweils getrennt durch ein Leerzeichen ID: Bezeichner, der den Namenskonventionen von XML entspricht und innerhalb des Dokumentes eindeutig ist. IDREF: eine Referenz auf einen eindeutigen Bezeichner IDREFS: eine Liste von solchen Referenzen © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 Ein Nachteil von DTDs Weitere Nachteile von DTDs Reihenfolge von Kind-Elementen ist festgelegt: <!ELEMENT song (title, length)> Dadurch sehr starre Struktur in XML-Dokumenten! Um Reihenfolgeunabhängigkeit zu garantieren, müssen alle Permutationen explizit aufgezählt werden: <!ELEMENT song ((title, length) | (title, length))> Für n Element gibt es n! verschiedene Permutationen. © Klaus Schild, XML Clearinghouse 2003 keine XML-Syntax, daher eigene Parser nötig kaum primitive Datentypen, insbesondere für ElementInhalte keine eigenen Datentypen definierbar keine Namensräume: Bereits existierende DTDs können nur dann kombiniert werden, wenn es keine Namenskonflikte gibt! keine Vererbungshierarchien, nicht objekt-orientiert © Klaus Schild, XML Clearinghouse 2003 Zusammenfassung Zusammenfassung Dokument-Typen beschreiben den prinzipiellen Aufbau von Dokumenten eines bestimmten Typs. Dokument-Typen können mit DTDs (Document Typ Definitions) spezifiziert werden. Dokument-Typen können mit Klassen und XMLDokumente mit Objekten verglichen werden. DTDs wurden von SGML übernommen. In einem XML-Dokument kann ein bestimmter DokumentTyp spezifiziert werden. keine XML-Syntax, daher eigene Parser nötig DTDs haben entscheidende Nachteile: kaum elementare Datentypen, insbesondere für ElementInhalte Das Wurzelelement des Dokumentes muss dann genau der Struktur dieses Elementes entsprechen, wie sie im Dokument-Typ festgelegt ist. keine eigenen Datentypen definierbar keine Namensräume: DTDs können nur kombiniert werden, wenn es keine Namenskonflikte gibt. In diesem Fall bezeichnet man das Dokument als zulässig (engl. valid). keine Vererbungshierarchien, nicht objekt-orientiert © Klaus Schild, XML Clearinghouse 2003 © Klaus Schild, XML Clearinghouse 2003 3 4 ! 2 6 @ @ @ 2 I 6 7 8 6 U8 8 # ;1 @ $ " !$ " !$ 1 # % /* < : 4%# , UD 2 7 4 / @ * !5 2 6 4 /: 4 / > ?: + ; G &/ & A 9 &/ ! ! $ ) S< A S $9 </ "! " !;4 / ;M:# ";! $M ;:"2O 2 2OO = 9# % D OO%88U% @ 5 / UJ / 1 ; -/ 00111 W4 & )"! %A "! % 0) 09 0 / 00111 ) U $) > ? !7O ; 4 4 =6< 4 27$ 4 UUU / 00111 16 0 0/ 7 " ! !% ; 4 / = ) 8 : 2OO2 & ; 6% U D7% 88%7 ; + ;@! ' !/ 00111 / 0