Logische Dokumentenstruktur mit SGML und XML ein Referat von Oliver Lichte olichte@techfak.uni-bielefeld.de 15. Mai 2001 Standard Generalized Markup Language SGML GML Ende der sechziger Jahre von IBM entwickelt. Slide 1 Anwendungsunabhängiges Format zum Austausch von Daten. Weiterentwicklung zu SGML. 1986 als ISO-Standard 8879 veröffentlicht. Juli 1988 Standard erweitert. 1
SGML Dokumentenbestandteile SGML- Dokument Slide 2 Dokumenttypdefinition SGML- Deklaration Dokumenten- instanz Dokumenttypdefinition DTD Slide 3 Elementtypdefinition <!ELEMENT...> Dokumentstruktur als Grammatik definiert. Beschreibung mittels regulärer Ausdrücke. Attributlistendefinition <!ATTLIST...> Definition von Attributlisten zu den Elementtypen. Entitäten <!ENTITY...> Ersetzungsmechanismus vergleichbar mit Makros.
DTD Elementtypdefinition <!ELEMENT Bezeichner(gruppe) Verkürzung Beschreibung> Bezeichner(gruppe): Name oder Liste von Namen in Klammern. Slide 4 Verkürzung: Anfangs-/Endmarken müssen angegeben werden o Endmarke kann wegfallen o Anfangsmarke kann wegfallen o o Beide Marken können wegfallen Beschreibung: Beschreibung der Struktur des Elements. Vergleichbar mit rechter Seite von Grammatikregeln. DTD Elementtypdefinition vereinfachte Syntax <!ELEMENT Typname A > Slide 5 Der Ausdruck A ist ein regulärer Ausdruck mit folgender Syntax, wobei B, B 1,..., B n wieder reguläre Ausdrücke sind: (B 1,..., B n) Liste mit fester Reihenfolge (B 1 &... & B n) Liste mit beliebiger Reihenfolge (B 1... B n) Alternative Bestandteile B? B + B Name #PCDATA Optionaler Bestandteil Nicht-leere Liste Eventuell leere Liste vom Benutzer definierter Typname Text ohne Marken (also ohne logische Struktur)
DTD Elementtypdefinition nichtreguläre Ausdrücke Können nicht geschachtelt werden! Slide 6 EMPTY hat keinen Inhalt Inhalt meist über Attributlisten definiert ANY hat beliebigen Inhalt darf im Gegensatz zu #PCDATA auch Marken (Tags) enthalten DTD Attributlistendefinition Slide 7 Daten über die Daten (Metadaten) einführen. Zum Beispiel: Verweise im Text durch Zuordnung symbolischer Namen zu Dokumentteilen. Verweisobjekte werden verbunden mit o.g. Dokumentteilen über den symbolischen Namen. Dateieinbindungen werden über (symbolischen) Namen mit Datei verbunden werden.
DTD Attributlistendefinition Syntax Slide 8 <!ATTLIST Typname A 1 W 1 V 1... A n W n V n > Dabei bedeutet: A Attributwerte W Wertebereich V Vorbelegungswerte Slide 9 CDATA ID IDREF ENTITY NUMBER NUMBERS NAME NAMES DTD Attributlistendefinition Wertebereich Beliebige Zeichenfolge. Unterschied zwischen CDATA und NAME ist, dass NAME lexikalisch gesehen ein SGML-Name ist. Eindeutiger Name (für Verweisziel) Benutzung von ID in Verweisen Name von externen Objekten (z.b. Datei) Zahl (syntaktisch als Folge von Ziffern) Liste von Zahlen String Liste von Strings
DTD Attributlistendefinition Vorbelegungswerte Default-Wert in Anführungszeichen gesetzt z.b. 0. Slide 10 #REQUIRED Wert muß im Element angegeben werden. #IMPLIED Wert kann angegeben werden. Wird kein Wert angegeben, so wird ein Default-Wert vom System vorgegeben. DTD Entitäten Slide 11 Parameter-Entitäten <!ENTITY % name ersetzungszeichenfolge > Abkürzende Schreibweise nur in DTD s erlaubt. (schlechtes) Beispiel: <!ENTITY % pcdata (#PCDATA) > <!ELEMENT title %pcdata> Interne Entitäten <!ENTITY name ersetzungszeichenfolge > Werden benutzt wie Makros. Können im Text an beliebigen Stellen benutzt werden. Werden mit & eingeleitet und enden mit ; Häufige Anwendung: Beschreibung von Sonderzeichen wie ä für,,ä.
Dokumenttypdefinition des HTML-Tags <UL> {...} <!ENTITY % attrs "%coreattrs; %i18n; %events;"> {...} <!-- Unordered Lists (UL) bullet styles --> <!ENTITY % ULStyle "(disc square circle)"> Slide 12 <!ELEMENT UL - - (LI)+ -- unordered list --> <!ATTLIST UL %attrs; -- %coreattrs, %i18n, %events -- type %ULStyle; #IMPLIED -- bullet style -- compact (compact) #IMPLIED -- reduced interitem spacing -- > {...} <!ENTITY % LIStyle "CDATA" -- constrained to: "(%ULStyle; %OLStyle;)" --> <!ELEMENT LI - O (%flow;)* -- list item --> <!ATTLIST LI %attrs; -- %coreattrs, %i18n, %events -- type %LIStyle; #IMPLIED -- list item style -- value NUMBER #IMPLIED -- reset sequence number -- > HTML eine Dokumenteninstanz HTML-Dokument kann als SGML-Instanz gesehen werden. Slide 13 Spezielle DTD oft angegeben im HTML-Kopf: <!DOCTYPE HTML PUBLIC -//W3C// DTD HTML 3.2 Final//EN > Bedeutet das HTML 3.2 mittels eines bestimmten Mechanismus aus einer öffentlichen DTD geladen wird.
DTD Einfügen in das Dokument Slide 14 Am häufigsten gebraucht <!DOCTYPE docname PUBLIC public identifier > <!DOCTYPE docname SYSTEM filename > <!DOCTYPE docname [ dtd-def... ]> SGML Deklaration <!SGML...> Slide 15 Hier können verschieden Einstellungen gemacht werden Z.B. die Begrenzer < und > können verändert werden Vorsicht! Dokument wird unleserlich Gehen nicht weiter auf Deklaration ein
XML Dokumentenbestandteile XML- Dokument Slide 16 XML- Deklaration Dokumenttypdefinition Dokumenten- instanz XML Vereinfachtes SGML Keine DTD notwendig. XML-Deklaration kann wegfallen. Beispiel: <?xml version= 1?> Slide 17 Unterscheidung zwischen Validierbarkeit und Wohlgeformtheit Minimierbarkeit nicht möglich. Beispiel: <person> Oliver Lichte In SGML unter Umständen möglich; in XML nicht erlaubt. Die schließende Marke </person> fehlt. Weitere Unterschiede siehe Lobin, Henning (1998): Informationsmodellierung in XML und SGML. Berlin, Heidelberg, New York: Springer. S. 70-71
XML Validierbar und wohlgeformt Slide 18 Ein SGML-Dokument heißt validierbar, wenn es korrekt im Bezug auf die Dokumenttypdefinition ist. Ein XML-Dokument heißt wohlgeformt, wenn es einer Baumstruktur entspricht, die nicht mehrdeutig und korrekt annotiert (geklammert) ist. Validierbarkeit ist stärker als Wohlgeformtheit. Wohlgeformte Dokumente können bezüglich einer DTD falsch sein. XML Was bringt die Zukunft Slide 19 Bisheriges XML 1.0 Konflikte in der Namensgebung bei Einbettung von externen XML- Dokumenten keine Hyperlink-Unterstützung geringe Möglichkeit der Typisierung keine Restriktionen mit wenig Aufwand DTD kein XML-Dokument keine Formatierung im Dokument getrennte Dokumenteninstanz und DTD Lösungsansätze XML Namespace XLink/XPointer XML-Schema XSL/T (Extensible Stylesheet Language / Transformations) TREX (Tree Regular Expressions for XML) RELAX (Regular Language description for XML)
Slide 20 Seminar: Titel: Dokumentenverarbeitung Seminarleiter: Joern Clausen Referent: Oliver Lichte Thema: Logische Dokumentenstruktur mit SGML und XML Teilnehmer: 1. Karl-Heinz Mustermann 2.... Slide 21 <Seminar> Titel: Dokumentenverarbeitung Seminarleiter: Jörn Clausen Referent: Oliver Lichte Thema: Logische Dokumentenstruktur mit SGML und XML Teilnehmer: 1. Karl-Heinz Mustermann 2.... </Seminar>
<Seminar> <Titel> Dokumentenverarbeitung </Titel> <Leiter> Jörn Clausen </Leiter> Slide 22 <Referent> Oliver Lichte </Referent> Thema: Logische Dokumentenstruktur mit SGML und XML <Teilnehmer> 1. Karl-Heinz Mustermann </Teilnehmer> <Teilnehmer> 2.... </Teilnehmer> </Seminar> <Seminar> <Leiter> <Person sex="maennlich"> Jörn Clausen </Leiter> </Person> Slide 23 <Referent Thema="Logische Dokumentenstruktur mit SGML und XML"> <Person sex="maennlich"> Oliver Lichte </Person> </Referent> <Teilnehmer nummer="1"> <Person sex="weiblich">... </Person> </Teilnehmer> <Teilnehmer nummer="2"> <Person sex="maennlich"> &kh; Mustermann </Person> </Teilnehmer> </Seminar>
<Seminar> <Leiter> <Person sex="maennlich"> Jörn Clausen </Leiter> Slide 24 <Referent Thema="Logische Dokumentenstruktur mit SGML und XML"> <Person sex="maennlich"> Oliver Lichte </Referent> <Teilnehmer nummer="1"> <Person sex="weiblich">... </Teilnehmer> <Teilnehmer nummer="2"> <Person sex="maennlich"> &kh; Mustermann </Teilnehmer> </Seminar> <!DOCTYPE Seminar [ <!ELEMENT Seminar - - (Leiter, Referent?, Teilnehmer+)> <!ELEMENT Leiter - - (Person)> <!ELEMENT Referent - - (Person)> <!ATTLIST Referent Thema CDATA #REQUIRED> <!ELEMENT Teilnehmer - - (person*)> <!ATTLIST Teilnehmer nummer NUMBER #REQUIRED> Slide 25 <!ENTITY % sexatt "weiblich maennlich"> <!ENTITY ouml CDATA "ö"> <!ELEMENT Person - o (#PCDATA)> <!ATTLIST Person sex (%sexatt) #REQUIRED geboren NUMBERS #IMPLIED telefon CDATA #IMPLIED> <!ENTITY kh "Karl-Heinz"> ]>