inhalt.html
Inhaltsverzeichnis Vorwort Kapitel 1 Einleitung Kapitel 2 XML und Auszeichnungssprachen 2.1 Textverarbeitung 2.2 Das Dokument als integrative Basis 2.3 Informationen strukturieren 2.4 Alternative Lösungen 2.5 Forderungen an eine neue Auszeichnungssprache 2.6 Definition: Auszeichnungssprachen 2.7 Aufgabe des W3C 2.8 Historie und Vergleich 2.9 Extensible Markup Language (XML) 2.10 Ziele von XML 2.11 XML als Alternative zu HTML
Kapitel 3 Einführung XML 3.1 Einleitende Beispiele 3.2 Software 3.3 Schnelleinstieg 3.4 Document Type Definition (DTD) 3.5 XML Beschreibung 3.6 XML Data Island 3.7 XML-Dokumente im Browser anzeigen 3.8 Erweiterte XML-Syntax
Kapitel 4 Die vollständige XML-Referenz 4.1 Extended Backus-Naur Form (EBNF) 4.2 XML-Definition 4.3 Behandlung von Entities und Referenzen durch einen XML-Prozessor 4.4 Wohlgeformtheitsbeschränkung
file:///C|/Eigene Dateien/Texte/E-Books/XML/inhalt.htm (1 von 3) [12.02.2001 16:43:20]
inhalt.html
4.5 Gültigkeit 4.6 Document Object Model
Kapitel 5 XML in der Praxis 5.1 XML-Dokumente mit Unterstützung erstellen: X-Metal 1.0 5.2 Synchronized Multimedia Integration Language (SMIL) 5.3 Wireless Markup Language (WML) 5.4 XML und EDI 5.5 Chemical Markup Language (CML) 5.6 Channel Definition Format 5.7 Szenarien 5.8 Microsoft Office 2000 5.9 Shakespeare
Kapitel 6 XSL - Extensible Stylesheet Language 6.1 Warum XSL? 6.2 Cascading Stylesheets (CSS) 6.3 Konstruktionsregeln (rules) 6.4 Flow Objects 6.5 Muster (pattern) 6.6 Aktionen (action) 6.7 Skriptsprachen 6.8 Referenz XSL
Kapitel 7 HTML geht fremd: X-HTML 7.1 X-HTML 1.0 Document Type Definition
Anhang A Anhang A.1 Tabellen A.2 Informationsquellen im Web A.3 Inhalt der CD-ROM
Anhang B Glossar XML
file:///C|/Eigene Dateien/Texte/E-Books/XML/inhalt.htm (2 von 3) [12.02.2001 16:43:20]
inhalt.html
Stichwortverzeichnis
file:///C|/Eigene Dateien/Texte/E-Books/XML/inhalt.htm (3 von 3) [12.02.2001 16:43:20]
Vorwort
Vorwort »Next Year's Top 25 Technologies: Extensible Markup Language (XML) enables extensible data-exchange formats.« Zeitschrift Byte Mit wohl einem der faszinierendsten und innovativsten Themen der Gegenwart und allernächsten Zukunft des Internet befasst sich dieses Buch: XML. Nie als HTML-Ersatz gedacht, erweitert es das Spektrum möglicher Anwendungen im Internet einerseits und schließt andererseits klaffende Lücken und technische Unzulänglichkeiten. Keine Frage: Wer sich als Web-Administrator, Autor eines privaten oder geschäftlichen Internet-Auftritts, Intranet-Verantwortlicher oder -Anwender mit HTML auseinandergesetzt hat, wird in Zukunft auch um XML nicht umhinkommen. Auch außerhalb der Online-Szene hat sich XML bereits heute als richtungsweisender Standard des Dokumentenmanagements etabliert. Dieses Buch bietet das komplette XML- und XSL-Wissen auf praxisnahem und hohem Niveau. Neben einer fundierten Einführung finden Sie das komplette Know-how, stets belegt und beschrieben durch Praxisanwendungen, das Sie für die Arbeit mit XML benötigen. Mit viel Engagement und Zeitaufwand haben uns Firmen, Freunde, Mitarbeiter und der Markt & Technik-Verlag unterstützt. Unser Dank gilt daher all jenen, die ihren Anteil am Gelingen dieses Buches hatten und noch haben werden. In der zweiten völlig aktualisierten und stark erweiterten Ausgabe dieses Buches konnten wir zahlreiche positive Rückmeldungen von Leserinnen und Lesern berücksichtigen. So greift dieses Buch jetzt auch neueste Entwicklungen aus der XML-Entwicklung auf. Dazu gehören beispielsweise SMIL und WML (WAP) oder die erst im Dezember 1999 veröffentlichte X-HTML Empfehlung. Besonders danken möchten wir Ihnen, dem Leser, denn schließlich haben Sie dieses Buch gekauft und wir es für Sie zuvor geschrieben. Wenn Sie Kritik, Lob oder Anregungen für Folgeauflagen haben, lassen Sie uns dies wissen. Sie erreichen uns unter
[email protected]; umfassendere Anfragen können Sie gerne an unseren Verlag richten, der die Leserpost an uns weiterleitet. Viel Spaß beim Lesen und viel Erfolg mit Ihren eigenen XML-Projekten wünschen Gunter Wielage Oliver Pott Paderborn, 2000
file:///C|/Eigene Dateien/Texte/E-Books/XML/Vorwort.html [12.02.2001 16:43:26]
Kapitel 1 Einleitung
Kapitel 1 Einleitung Wenn Sie gerade vor der Entscheidung stehen, dieses Buch zu kaufen oder sich mit dem Thema XML zu befassen, helfen Ihnen vielleicht die folgenden Zeilen. Sie geben Ihnen vorab einen kleinen Überblick, warum XML heute eines der Top-Themen des Internet ist. XML unterscheidet sich zu HTML unter anderem dadurch, dass Informationsanbieter eigene Markupbefehle und Attribute nach Bedarf definieren können. Dokumentstrukturen können in ihrer Komplexität an die erforderlichen Informationen angepasst werden. Jedes XML-Dokument kann weitere optionale Beschreibungen seiner Grammatik enthalten, mit deren Hilfe eine Applikation dann eine strukturelle Überprüfung durchführen kann. Microsoft München Die Vision von XML für die Zukunft ist, die Sprache als Basis für jede Art von Daten zu etablieren. Aus diesen Daten können dann, fast beliebig, andere Dokumenttypen erzeugt werden. Die heute anfallende Doppelarbeit bei Erfassung und Konvertierung fällt weg. Deutlich wird dabei auch, dass nicht mehr einzig und allein die Verarbeitung von Dokumenten im Vordergrund steht, sondern selbst Datenbanken wie beispielsweise Artikelstammdaten mithilfe von XML verarbeitet werden können. Neben verständlichen Erklärungen und zahlreichen Praxisbeispielen besteht das Konzept dieses Buches darin, Ihnen zusätzlich auch als Referenzhandbuch zur Seite zu stehen. Sobald Sie den Umgang mit XML erlernt haben, werden Sie dieses Buch auch als Nachschlagewerk zu schätzen wissen. Zunächst führen wir Sie in Kapitel 2 strukturiert in XML ein. Dieses Kapitel verschafft Ihnen einen kurzen Überblick über die vorhandenen Auszeichnungssprachen und ihre Einsatzmöglichkeiten. Die zentrale Frage wird geklärt, warum wir trotz der vorhandenen und schon lange eingeführten Sprachen SGML und HTML schon wieder etwas Neues brauchen. Sie erfahren unter anderem, wie XML entstanden ist und in die bestehenden Sprachen einzuordnen ist. Sie wissen bereits am Ende dieses Kapitels was XML ist und bekommen vielleicht schon einige Ideen, wie Sie für eigene Projekte XML gewinnbringend einsetzen können. Detailliert verrät Ihnen Kapitel 3, was es mit XML auf sich hat. Hier finden Sie Programmiereinleitungen und tiefergehendes Wissen und Material zum Thema für Ihre eigenen Projekte. In Kombination mit dem vierten Kapitel, der Referenz, steht Ihnen die XML-Gesamtfunktionalität zur Verfügung. Praxisprojekte und reale Umsetzungen mit XML haben wir im Kapitel 5 zusammengetragen. Erfahren Sie, wie XML heute schon eingesetzt wird und erweitern Sie Ihr Wissen mithilfe von zahlreichen Beispielen aus der täglichen Praxis der Dokumentenverarbeitung. Dazu gehören beispielsweise die Sprachen SMIL und WML. Zu beiden finden Sie eine komplette Einführung und Referenz. Eine weitere Entwicklung in der XML-Technologie ist der im April 1999 vorgelegte letzte Entwurf file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap1.html (1 von 2) [12.02.2001 16:43:31]
Kapitel 1 Einleitung
zur XML-Stylesheet-Sprache, die wir Ihnen vollständig in Kapitel 6 vorstellen. Anhand einer ausführlichen Anleitung zum Thema XSL erfahren Sie vor allem, wie Sie XML mithilfe von Stylesheet in HTML-Dokumente umwandeln. Die Einführung und Zielrichtung der Sprache XML machte zudem eine Reformation der Sprache HTML notwendig. Alles über die konsequente Neuorientierung und die Umsetzung von HTML mithilfe von XML erfahren Sie in Kapitel 7 (X-HTML). Ein XML- und XSL-Glossar ergänzt das Buch und gibt Ihnen neben einer Befehlsübersicht Auskunft zu Befehlen, Syntax und Termini von XML. Die meisten Programme, die im Buch vorgestellt wurden, erhalten Sie natürlich auf der beiliegenden CD-ROM. Damit ersparen Sie sich die mühsame und zeitraubende Recherche nach Tools und Hilfsmitteln und können sofort effizient in das Thema einsteigen.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap1.html (2 von 2) [12.02.2001 16:43:31]
Kapitel 2 XML und Auszeichnungssprachen
Kapitel 2 XML und Auszeichnungssprachen 2.1 Textverarbeitung 16 2.2 Das Dokument als integrative Basis 16 2.3 Informationen strukturieren 17 2.4 Alternative Lösungen 18 2.5 Forderungen an eine neue Auszeichnungssprache 21 2.6 Definition: Auszeichnungssprachen 22 2.7 Aufgabe des W3C 26 2.8 Historie und Vergleich 28 2.9 Extensible Markup Language (XML) 40 2.10 Ziele von XML 43 2.11 XML als Alternative zu HTML 43 Das folgende Kapitel verschafft Ihnen einen ersten Überblick über die vorhandenen Auszeichnungssprachen und hilft Ihnen XML in die bisher bestehenden Standards einzuordnen. Lernen Sie Stärken und Schwächen von SGML und HTML kennen und erfahren Sie warum in XML eine Chance für die Zukunft der Textbeschreibung liegt.
2.1 Textverarbeitung Betrachten wir eine moderne Textverarbeitung wie etwa Microsoft Word, dann bietet uns diese zum Erstellen unserer Texte zahlreiche Möglichkeiten der Formatierung. Im Gegensatz zu den Ursprüngen der Textgestaltung haben wir heute Möglichkeiten, die früher nur dem Drucker oder Setzer vorbehalten waren. Dem normalen Anwender standen selbst mit einer komfortabel anmutenden modernen elektrischen Schreibmaschine nur sehr begrenzte Layoutfunktionen zur Verfügung. Neben hoch- und tiefgestellten Buchstaben, konnte man auf Sperrschrift oder Fettschrift zurückgreifen. Von einem befriedigenden Ausdruck oder gar Textgestaltung konnte man hier wohl nicht reden. Eine Textverarbeitung im heutigen Sinne bietet jedem Anwender jene zahlreichen Möglichkeiten der Gestaltung, die früher nur den Profis vorbehalten waren. Angefangen bei Fettschrift, Kursiv oder unterstrichenem Text handelt es sich hier in erster Linie um optische Elemente, die wir hier verändern können. Und seit die ersten Apple Macintosh-Computer das Licht der Welt erblickt haben ist WYSIWYG (»What you see is what you get«) in aller Munde. Jeder, der ein solches Programm bedienen kann, wird in die Lage versetzt schon am Bildschirm den Text genau so gestalten zu können, wie er anschließend aus dem Drucker kommt.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (1 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Abb. 2.1: Ein professionelles Dokument zeichnet sich nicht unbedingt durch die Vielzahl der genutzten Funktionen aus. Spätestens wenn wir wieder einmal ein Dokument erhalten, in dem sieben verschiedene Schriftarten eingesetzt sind, wissen wir: hier wurde mit einem DTP-Programm (»Desktop Publishing«) gearbeitet. Diese Programme haben eins gemeinsam: Sie bieten auch dem Laien unüberschaubar viele Möglichkeiten auf die visuelle Darstellung des Textes Einfluss zu nehmen. Am Rande sei bemerkt, dass dies dem Aussehen des Textes nicht immer zum Vorteil gereicht. Auszeichnungssprachen wie HTML verfolgen aber primär eine andere Richtung der Textauszeichnung. Hier geht es nicht in erster Linie um die optische Gliederung eines Textes, sondern viel mehr um eine inhaltliche Abgrenzung.
2.2 Das Dokument als integrative Basis Text allein reicht natürlich heute kaum noch zur angemessenen Darstellung von Informationen aus. Aber auch im Zeitalter von Multimedia, in denen zahlreiche Tonwiedergaben und Grafikanimationen und Videosequenzen Internetseiten nicht immer nur bereichern, ist der wichtigste Bestandteil einer Seite der Text. Das Internet ist trotz aller anders klingender Verlautbarungen ein deutlich textorientiertes Medium. Schon allein aus dem Grund, weil nur Text hard- und softwareunabhängig von jeder Computerplattform dargestellt werden kann. Wenn Sie sich eine Internetseite, die heute üblicherweise noch in HTML programmiert wird, einmal genauer anschauen, erkennen Sie allerdings, dass mit dieser Textauszeichnungssprache doch noch mehr zu machen ist als nur einfachen Text darzustellen. Ein Dokument dient als Grundlage zur Strukturierung einer Seite. In dieser Struktur ist festgelegt welche weiteren multimedialen Inhalte integriert sind. Das heißt auch eine Seite ohne Text benötigt eine Textauszeichnungssprache als Basis zur Definition des Inhaltes.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (2 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Abb. 2.2: Im HTML-Dokument sind alle Bestandteile der Seite integriert. In dem Dokument ist bestimmt welche Bilder, Videos oder Sounds zur Seite gehören. Der gesamte visuelle Eindruck muss hier bestimmt werden. So ist auch zu verstehen, dass trotz deutlicher multimedialer Ausrichtung des Internet kein völlig neues Format, sondern ein über lange Zeit entwickeltes Textformat die Aufgabe übernimmt als integrative Basis für darauf aufbauende Informationsinhalte.
2.3 Informationen strukturieren Eine von der WYSIWYG-Welt unabhängig entwickelte Idee ist es aber Informationen nicht nach rein visuellen Gesichtspunkten aufzubauen, sondern strukturiert nach Inhalten festzulegen. Diese Idee ist nicht ganz so neu und eigentlich ist sie zumindest in der EDV-Welt schon älter als die Idee des Desktop Publishing. Schon 1967 beschäftigte sich William Tunnicliffe mit dem so genannten »Generic Coding«. Er trennte die Informationsstruktur des Textes von seinem optischen Erscheinungsbild. Zu dieser Zeit war es noch so, dass allein der Setzer für das spätere Druckbild verantwortlich war und der Autor lediglich Anmerkungen und Hinweise für den Druck notieren konnte. Damals begann man langsam die ersten Texte auch digital mithilfe des Computers zu speichern. Der Autor konnte zwar notieren, dass eine Überschrift beispielsweise groß und in Fettschrift gedruckt werden sollte, die Information, dass es sich dabei aber um eine Überschrift handelt, ging bei der Computerverarbeitung leider verloren. Die Weiterentwicklung von William Tunnicliffe kennen wir heute übrigens als SGML-Standard. Die Auszeichnungssprachen, von denen im folgenden die Rede sein wird, sind also in erster Linie Hilfen, um einen Text strukturell zu definieren. Natürlich ist der Übergang beispielsweise bei HTML heute fließend zwischen optischer und inhaltlicher Auszeichnung. Selbstverständlich bietet diese Sprache heute bereits zahlreiche Möglichkeiten, Text auch optisch auszuzeichnen. Aber wir wollen hier die Grundintention nicht vergessen: Informationen durch den Computer nicht nur darzustellen, sondern auch inhaltlich auszuwerten.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (3 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Abb. 2.3: Die drei Teile des Dokuments können auch in einer Datei gespeichert sein. Die heutige Entwicklung geht dazu über ein Dokument in drei Teile zu zerlegen. Ein Teil stellt die reine Text- und Bildinformation also den Inhalt dar. Zusätzlich ist die Struktur der Information elektronisch gespeichert. Der nächste logische Schritt ist, für die vorhandene und definierte Struktur auch ein bestimmtes Layout als Formatvorlage festzulegen. Ob man dabei alle drei Teile in dem Dokument selbst oder in externen Dateien ablegt spielt für das Endergebnis keine Rolle. Ein großer Vorteil einer solchen Struktur gerade für den Online-Bereich ist, dass der Desktop-Computer diese Daten nach der Übertragung selbst weiterverarbeiten kann. Der PC mit dem man im Netz surft ist meist mit der Darstellung von Webinhalten chronisch unterfordert. Die meiste Zeit wartet man wohl darauf, dass Webserver die eigenen Such- oder Datenbankanfragen verarbeiten und Ergebnisse senden. Die neue XML-Technologie schafft die Möglichkeit einen Teil der Datenverwaltung auf den Desktop-PC zu übertragen und ist so vielleicht ein neuer Schritt zum schnelleren Web.
Abb. 2.4: Die Möglichkeiten der Strukturierung in den verschiedenen Datenformaten. In die bisherigen Technologien zur Strukturierung eingeordnet, steht XML zwischen dem völlig unstrukturierten Text und den Möglichkeiten zur komplexen Datenstruktur einer Datenbank.
2.4 Alternative Lösungen Es gibt eine Reihe von alternativen Formaten, die für die inhaltliche Auszeichnung und Strukturierung entwickelt wurden und sich auch heute noch zahlreich im Einsatz befinden. Jedes Datenbankprogramm stellt eine solche Form von inhaltlicher Auswertung dar. In einer Datenbank können in mehr oder weniger starren Datensätzen einzelne Datenfelder gespeichert werden. Der Nachteil liegt auf der Hand: aufgrund der starren Datenstruktur, die vorgegeben wird, ist ein sinnvoller Einsatz dieser Lösung nur für gleichmäßige, homogene Datenmengen möglich.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (4 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Abb. 2.5: Für gleichmäßige Datenstrukturen bieten sich spezielle Datenbankformate an. Jede Datenbank ist von einer speziellen Software und damit von einem bestimmten Computer-System abhängig auf dem sie entwickelt wurde. Auch wenn inzwischen viele übergreifende Formate existieren, die den Datenaustausch ermöglichen, besteht dieses Problem grundsätzlich. Viele Formate nutzen zusätzlich zur Speicherung ein binäres Format, das den Austausch zwischen verschiedenen heterogenen Sprach- und Rechnersystemen nicht gerade erleichtert.
2.4.1 Einsatz von MIME-Typen zum Datenaustausch Ein Ansatz zum Dokumentenaustausch zwischen verschiedenen Systemen besteht in der Verwendung des so genannten MIME-Standards. Dieser beschreibt weniger einen einheitlichen Standard zur Informationsspeicherung, sondern eine Möglichkeit der Verständigung zwischen Sender und Empfänger, darüber welches Format zum Einsatz kommt. Im praktischen Einsatz kündigt der Web-Server dem Browser, der die Daten anfordert, mit, um welchen MIME-Typen es sich handelt. Der Browser kann dann auf die entsprechend ankommenden, meist binären Daten angemessen reagieren. Entweder kann der Browser die Daten selbst verarbeiten, respektive anzeigen, oder er greift auf die Hilfe eines Zusatzprogramms (s.g. »Plug-In«) zurück. Eine MIME-Typ-Bezeichnung besteht aus zwei Bestandteilen: dem Haupttyp und dem Subtyp. Der folgenden Tabelle können Sie einige Standard-MIME-Typen entnehmen. Einige MIME-Typen, wie z.B. Word oder Excel, gehören nicht zum ursprünglichen Standard, wurden von uns aber der Übersicht und der Vollständigkeit wegen hinzugefügt. Haupttyp
Subtyp
Bedeutung
application msexcel
Microsoft Excel-Tabelle
application msword
Microsoft Word-Dokument
application pdf
Adobe Acrobat Dokument
application postscript PostScript-Datei audio
basic
Einfache 8-Bit Audiodaten
audio
mid
MIDI-Sequenz
audio
wav
Wave-Audiodaten
image
bmp
Bitmap-Grafik
image
gif
Grafik in CompuServes GIF-Format
image
jpeg
Grafik im JPEG-Format
text
css
Hypertext-Stylesheet
text
html
Hypertext-Dokument
text
plain
Daten in einfacher Textform
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (5 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
text
xml
XML-Dokument
video
mpeg
Video-Daten im Motion Picture-Format
video
quicktime Video-Daten im Quicktime-Format von Apple
Im Internet findet sich das MIME-Verfahren im HTTP-Protokoll wieder, es informiert den Browser darüber welche Art von Daten gesendet werden. Die Standard-MIME-Typen sind in der Norm RFC 1590 definiert.
2.4.2 Portable Dokumentformate Einige Formate, die heute breite Anwendung vor allem im Druckbereich finden, möchten wir kurz vorstellen. Sie zeigen, dass portable Dokumentformate auch außerhalb des Webs eine hohe Bedeutung erlangt haben. Vielleicht wird auch XML in das eine oder andere dieser Segmente vorstoßen können und eine sinnvolle Alternative für den Austausch von Dokumenten in allen Bereichen der elektronischen Informationsverarbeitung darstellen Gerade in großen Unternehmen, in denen eine Flut von Dokumentationsmaterial anfällt, möchte man sich nicht gerne auf ein systemgebundenes Datenformat festlegen. Schließlich möchte man auch in vier oder fünf Jahren, wenn das Textverarbeitungsprogramm bereits drei Versionsnummern weiter ist, auf die vorhandenen Informationen zurückgreifen. Außerdem muss der Austausch zwischen verschiedenen Ländern und Systemen, zumindest zwischen PC-Welt und Macintosh, sichergestellt werden. Formate also, die den Autor oder Nutzer von der Wahl des Werkzeuges unabhängig machen. Für diese Anforderungen existieren einige Formate, die sich breiter Zustimmung erfreuen. PostScript-Format
Mit Postscript existiert eine komfortable Lösung zum Austausch von Dokumenten zwischen unterschiedlichen Computer-Plattformen. Die Besonderheit besteht darin, dass sich Postscriptdateien unter jedem Betriebssystem ohne weitere Software auf einem Postscriptdrucker ausgeben lassen. Die meisten hochwertigen Drucker und Satzbelichter sind zum PostScript-Standard kompatibel. PostScript-Dokumente werden typischerweise von der Textverarbeitung oder dem Grafikprogramm automatisch aus dem programminternen Format übersetzt und dann zum Drucker geschickt. Der große Vorteil von PostScript liegt in der großen Hardware-Unabhängigkeit. Die Datei beschreibt lediglich das Aussehen der Seite, macht aber keine Annahmen über Bildschirm oder Drucker. So kann dieselbe Datei sowohl auf einem 75 -dpi-Bildschirm, als auch auf einem 600-dpi-Laserdrucker oder 2.400-dpi-Satzbelichter ausgegeben werden. In der Praxis bedeutet das: vor der teuren und hochwertigen Belichtung kann ein einfacher Probeausdruck auf einem handelsüblichen Laser- oder Farbtintenstrahldrucker erstellt werden. Portable Document Format (PDF)
Als Erweiterung zum Postscript-Format, hat die Firma Adobe das Portable Document Format entwickelt. Zusätzlich können mit ihm Seiten- und Inhaltsstrukturen erfasst werden. Der Text wird am Bildschirm lesbar und durchsuchbar.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (6 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Abb. 2.6: Das PDF-Format bietet einen Ansatz zur plattformübergreifenden Verbreitung von Dokumenten. Es findet heute auch im Web großen Zuspruch. Zahlreiche downloadbare Handbücher finden sich bei fast allen Herstellern. Das PDF-Format findet heute breite Anwendung im Print-on-Demand-Bereich. Viele Software-Hersteller verzichten heute auf eine gedruckte Dokumentation und geben dem Kunden lediglich PDF-Dateien als Ersatz mit auf den Weg. Es bedarf allerdings für die Portabilität (Übertragbarkeit) dieser Daten sehr komplexer Software-Anforderungen. Adobe ist mit dem Adobe Acrobat Reader als das marktführende Produkt im Rennen. Trotzdem erklärte Adobe PDF zum offenen Format und hat die Format-Spezifikationen öffentlich bekannt gegeben. Erste Bestrebungen gehen in die Richtung Anwendungen zu entwickeln, die XML-Dokumente automatisch in das PDF-Format überführen. Rich Text Format (RTF)
Das von Microsoft entwickelte Rich Text Format (RTF) ähnelt in seiner Struktur Adobes PDF-Format, bietet aber längst nicht so zahlreiche Ausdrucksmittel und ist nur begrenzt portabel. Sowohl PostScript, PDF als auch RTF stellen rein physische Auszeichnungssysteme dar. PostScript und PDF haben darüber hinaus den Nachteil, dass sie sich nur sehr schlecht oder gar nicht nachträglich editieren lassen. Obwohl Adobe versucht PDF als Format für das Web zu vermarkten, eignet sich natürlich eine rein physische Auszeichnung nur bedingt als Basisformat für die Informationsübermittlung. In Zukunft ist das XML-Format sicherlich auch in diesem Bereich eine gute Alternative. Denkbar wäre auch ein Programm, dass aus dem XML-Format PDF-Dokumente konvertiert.
2.5 Forderungen an eine neue Auszeichnungssprache Einige Bedingungen, die aus dem Zusammenhang im vorausgegangenen Kapitel an eine neue Auszeichnungssprache gestellt werden müssten, möchten wir hier noch einmal auflisten. So viel schon im Voraus: XML erfüllt diese Forderungen und setzt sie in der Sprachdefinition um. ● Flexible Datenstruktur Die Sprache darf nicht auf einer festen Datenstruktur basieren, sondern muss ständig erweiterbar sein. Sie muss sich den wechselnden Gegebenheiten und Anforderungen, die der Nutzer insbesondere bei der Dateninterpretation an sie stellt, anpassen. Sie muss sich leicht in möglichst unterschiedliche Formate konvertieren lassen. Beispielsweise sollte sich eine Adressliste leicht in ein optisch ansprechendes, druckbares Format wie PDF konvertieren lassen. Andererseits müssen die gleichen Daten auch eine nahtlose Übernahme in eine Adressdatenbank finden. ● Plattformunabhängig Die Daten, die mit dieser neuen Auszeichungssprache definiert wurden, müssen flexibel zwischen den verschiedensten Plattformen austauschbar sein. Zumindest die bekanntesten Betriebssysteme sollten unterstützt werden, wie Windows,
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (7 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Macintosh und Unix.
●
Das bedingt natürlich schon, dass es sich um einen offengelegten Standard handelt, der von jeder interessierten Person oder Institution möglichst ohne zusätzliche Lizenzkosten in eigene Programme aufgenommen werden kann. Denn erst durch große Verbreitung von Programmen, die das Format einheitlich unterstützen, ist auch die Möglichkeit gegeben ein solches Format wirklich zum Standard werden zu lassen. Und nur ein solcher durch die Nutzer angenommener Standard verschafft dem Anwender wirkliche Vorteile bei seiner täglichen Arbeit Textorientiert Schon die plattformübergreifende Struktur bedingt, dass man keine binäre Datenstruktur zur Speicherung verwendet. Ein Textformat, wie wir es auch in HTML finden, ist hier deutlich im Vorteil. Die Kennzeichnung der einzelnen Daten muss dann natürlich auch durch Textmarken erzeugt werden. Die Delimitierung darf also nicht durch Byteverschiebungen erzeugt werden. Meist beschränkt man sich auf die 128 Zeichen des US-ASCII-Zeichensatzes. Für landesspezifische Zeichen und Sonderzeichen muss man sich alternative Lösungen ausdenken, um diese mithilfe der vorhandenen Zeichen zu umschreiben.
Im Kapitel über die Bedeutung des W3-Konsortium finden Sie die Forderungen, die sich das XML-Entwicklerteam als Maßgabe für ihre Arbeit an der neuen Metasprache gesetzt haben.
2.6 Definition: Auszeichnungssprachen Sie haben inzwischen einiges über Auszeichnungssprachen und deren Bedeutung erfahren. Wir möchten es dennoch nicht versäumen Ihnen nun eine theoretische Definition dieses Begriffs zu geben, den wir bisher immer mit einiger Selbstverständlichkeit, und sicherlich im Zusammenhang auch verständlich, eingesetzt haben. Anschließend wird Sie die kleine Reise durch die Geschichte der vorhandenen Auszeichnungssprachen führen und wir werden das Kapitel mit einem genaueren Einstieg in die Sprachen SGML, HTML und XML beenden. In der Auszeichnungssprache selbst sind verschiedene Befehle definiert, die der optischen und inhaltlichen Strukturierung von Informationen dienen. Auf Basis einer Auszeichnungssprache können dann Dokumente verfasst und verarbeitet werden. Die Datenart, die sich weltweit der weitesten Verbreitung und der leichtesten Portierbarkeit erfreut ist die Textdatei. Doch auch auf dieser einfachen Basis und den gänzlichen Verzicht auf binäre Daten bestehen zwei Hauptprobleme, die eine Auszeichnungssprache lösen muss. Als Erstes existieren weltweit hunderte von verschiedenen länderspezifischen Zeichen. Und wenn man sich bei der Verwendung für die 128 Zeichen des weitverbreiteten US-Zeichensatzes entscheidet, müssen Möglichkeiten gefunden werden diese Zeichen darzustellen. Aber selbst der erweiterte Zeichensatz mit 255 Zeichen, reicht beispielsweise für die hunderte von verschiedenen Schriftzeichen des japanischen oder chinesischen Alphabets nicht aus. Das erste Problem, das eine Auszeichnungssprache zu lösen hat, haben wir auf den vorangegangenen Seiten schon angesprochen: Text allein reicht zur angemessenen Darstellung von Informationen kaum aus. In reinen Texten können keine Schriftarten, Überschriften, Fußnoten, Kursiv- oder Fettschrift verwendet werden. Es müssen Möglichkeiten gegeben werden, die Wirkung der online abgerufenen oder ausgedruckten Dokumente inhaltlich und visuell zu gestalten. Außerdem müssen sie helfen Text, Grafik und andere Multimedia-Elemente zu verbinden. In der Praxis wird dieses Problem durch den Einsatz von vorher festgelegten Auszeichnungen gelöst. Beispielsweise wird mit der Auszeichnung in HTML definiert, dass der Text in Fettschrift darzustellen ist. Dieser Text wird in Fettschrift dargestellt Dies ist Kursivschrift (Italic) Der englische Begriff für Auszeichnung ist Markup. Daher können wir den geläufigeren Begriff »Markup Language« für Auszeichnungssprache analog verwenden. In HTML hat sich für die Textauszeichnungen der Begriff »Tag« durchgesetzt. Der komplette Text, für den die Auszeichnung gelten soll, wird in Tags eingeschlossen. Ein »Start-Tag« definiert den Beginn und ein »Schluss-Tag« das Ende einer Auszeichnung. Delimitierung Jeder Auszeichnungsbefehl muss durch spezielle, vorher definierte Zeichen eingegrenzt werden. In den meisten bekannten Markup-Sprachen nutzt man hierzu die Größer- und Kleinerzeichen (»«). Bei dieser Eingrenzung von Textstellen, die einer besonderen Verarbeitung bedürfen, spricht man auch von Delimitierung. Im günstigsten Fall setzt man hier zwei Zeichen ein, die sonst im übrigen Text nur eine geringe Bedeutung haben und selten genutzt werden. Denn diese Zeichen kann man anschließend im normalen Text nur über Umwege darstellen. Verschiedene Möglichkeiten der Delimitierung eines Befehls: file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap2.html (8 von 25) [12.02.2001 16:43:42]
Kapitel 2 XML und Auszeichnungssprachen
Billy Joel River of Dreams' Sony Music No Man's Land The Great Wall Of China Blonde Over Blue A Minor Variation Shades Of Grey All About Soul Lullabya The River Of Dreams' Two Thousand Years Famous Last Words Madonna Ray of light Drowned world Swim Ray of light Candy perfume girl Skin Nothing really matters Sky fits heaven Shanti
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (1 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Frozen The power of good-bye To have and not to hold Little star Mer girl
Abb. 3.18: Unser Beispiel angezeigt im Editor Microsoft XML Notepad. Das Programm liegt der CD-ROM zum Buch bei. Als HTML-Dokument mit gleichem Textinhalt würden wir die einzelnen Elemente vielleicht in eine Tabelle integrieren, um so eine gewisse Übersichtlichkeit herzustellen: CD-Sammlung
Billy Joel |
River of Dreams' |
Sony Music |
No Man's Land |
The Great Wall Of China |
Blonde Over Blue |
A Minor Variation |
Shades Of Grey |
All About Soul |
Lullabya |
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (2 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
The River Of Dreams' |
Two Thousand Years |
Famous Last Words |
Madonna |
Ray of light |
Drowned world |
Swim |
Ray of light |
Candy perfume girl |
Skin |
Nothing really matters |
Sky fits heaven |
Shanti |
Frozen |
The power of good-bye |
To have and not to hold |
Little star |
Mer girl |
An diesem Beispiel wird der Unterschied zwischen XML und HTML sehr gut deutlich. Obwohl die Information, bei welchem Text es sich um einen Titel und bei welchem um den Namen des Interpreten handelt, vielleicht für die Weiterverarbeitung noch einmal wichtig werden kann, sind diese strukturellen Informationen im HTML-Dokument völlig verloren gegangen. Während es in der XML-Datei darum ging, Struktur in die vorhandenen Textdaten zu bringen, ist man bei der Verwendung von HTML ausschließlich damit beschäftigt sich um die Ausgabe auf den Bildschirm zu konzentrieren. Waren Sie bisher gewohnt in HTML zu programmieren und zu denken müssen Sie sich jetzt umstellen. Überlegen Sie nicht mehr, wie dieses oder jenes Element auf dem Bildschirm wirken könnte und ob eine Tabelle oder doch lieber eine Fettschrift sich optisch besser macht. Nebenbei: Diese Aspekte werden bei XML nicht völlig ausgeklammert, doch darum kümmert sich in erster Linie die Stylesheet-Sprache XSL. Vergessen Sie also physische Auszeichnungen und konzentrieren Sie sich ganz auf den Inhalt, der mit semantischen Auszeichnungen seine Struktur erhält.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (3 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.19: In einem HTML-Browser
3.1.2 Beispiel: Informationsverwaltung Eine noch etwas weiter verzweigte Struktur enthält unser zweites Beispiel. Es verwaltet in einer Liste die Zitate bekannter Persönlichkeiten. Neben den Zitaten selbst sind noch die Namen und einige Daten des Zitierenden integriert. John Osborne engl. Dramatiker 1929 Der Computer ist die logische Weiterentwicklung des Menschen: Intelligenz ohne Moral. 1976 Die Historiker sind so etwas wie die Schminkmeister des großen Welttheaters. 1963
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (4 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Helmar Nahr dt. Mathematiker 1931 Beispiele sind die Schwimmbojen der Logik. 1972 (siehe Abb. 3.3) Also ist auch eine komplexere Datenstruktur mithilfe von XML umsetzbar und kann mit entsprechenden Programmen umgesetzt und sichtbar gemacht werden. XML eignet sich hervorragend als einheitliches Format zur Speicherung von komplexen und weniger komplexen, strukturierten Textdaten.
3.2 Software Gerade eine ganz neue Technologie wie XML bringt es mit sich, dass unterstützende Software zunächst noch Mangelware ist. Im Gegensatz zu HTML, zu dem wir allein hunderte von Editoren finden, sind solche Programme für XML bisher kaum veröffentlicht. Wir möchten uns daher im nächsten Abschnitt ausführlich mit der vorhandenen oder in der Entwicklung befindlichen Software befassen und einige Programme kurz vorstellen. Denn die Suche nach solcher Software, beispielsweise im Internet, gleicht immer noch eher der Suche nach der Nadel im Heuhaufen. Trotzdem ist schon heute der Trend der breiten Unterstützung und das Bekenntnis zu XML, insbesondere durch die Industrie zu spüren. Allen voran ist in der Software-Industrie Microsoft eine der treibenden Kräfte dieser Entwicklung. Einerseits fördert Microsoft die Unterstützung von XML durch die eigenen Internet-Browser und die Entwicklung von XSL. Auf der anderen Seite ist besonders die Implementierung in das bestehende Office-Paket 2000 ein großer Schritt. So können sowohl Word 9.0 als auch Excel 9.0 bereits heute Dateien statt im proprietären Format als gültiges XML-Dokument abspeichern.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (5 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.20: Die Baumstruktur ist im XML-Editor deutlich zu erkennen. Weitere Anbieter, beispielsweise Corel für WordPerfect, haben ähnliche Absichten angekündigt. Auch auf leistungsfähige XML-Editoren werden wir nicht mehr lange warten müssen, einige können wir Ihnen hier sogar schon vorstellen. Die Firma SoftQuad, Hersteller des HTML-Editors HotMetal, hat in der weiterentwickelten nächsten Version den Editor XmetaL mit XML-Unterstützung angekündigt. Die Firma Vervet Logic rühmt sich schon heute damit, den ersten XML-fähigen Editor auf den Markt gebracht zu haben. In erster Linie sind es drei Gruppen von Anwendungen, die wir Ihnen vorstellen möchten: Browser Browser mit denen sich XML-Dateien anzeigen lassen sind dadurch das wichtigste Bindeglied zwischen Anwender und den im Dokument enthaltenen Informationen. Nur durch eine konsequente Verbreitung von Browsern, die XML unterstützen, wird sich diese Sprache auch weltweit zum anerkannten Standard für Websites entwickeln können. Programmiertools / Editoren Im Grunde genommen reicht, wie bei HTML und jeder anderen textorientierten Markup-Sprache, bereits ein einfacher Texteditor aus, um gültige XML-Dateien zu erstellen. Meist verwendet man für die erstellten Dateien die Extension ».xml«. Aber gerade bei der hohen Komplexität von XML benötigt der Programmierer weitere Hilfsmittel. SGML und XML-Editoren erleichtern die Erstellung und Verwaltung von XML-Dokumenten oder den zugehörigen DTDs. Den Editor X-Metal von SoftQuad, der sich auch als Trial-Version auf der beiliegenden CD-ROM befindet, beschreiben wir im Kapitel »XML in der Praxis«. Anwendungen Da XML sich als Datenformat für jede Art von Informationen nicht nur für die Darstellung im Internet versteht, wird es auch für andere Anwendungen beispielsweise aus dem Druckbereich interessant auf XML als Format zur Speicherung der Daten zu setzen. Außerdem ist das Format auch zur Verarbeitung größerer Mengen strukturierter Daten, wie sie beispielsweise in Datenbankprogrammen auftauchen, einsetzbar. Auch wenn es in diesem Sektor eher als flexibles Austauschformat, denn als Basisformat eingesetzt werden wird.
3.2.1 Verarbeitung von XML-Daten Zur Verarbeitung von XML-Daten nennt die W3C-Spezifikation zwei Stufen: den so genannten Parser oder Prozessor und die Anwendung. Ausgehend vom XML-Dokument verarbeitet der Parser die Daten und stellt sie aufbereitet den verschiedenen Anwendungen zur Verfügung. Die folgende Übersicht zeigt das Zusammenspiel der einzelnen Instanzen (siehe Abb. 3.4):
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (6 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.21: Der Parser bereitet die Daten zur Verarbeitung durch die Anwendungen auf. Im Gegensatz zum Verhalten des Parsers macht die offizielle Spezifikation keinerlei Aussagen über den Umgang der Anwendung mit den erhaltenen Daten. Man unterscheidet zwei Typen von Parsern: ● validierende Parser und ● nicht-validierende Parser. Validierende Parser überprüfen die exakte Gültigkeit, sowie die Wohlgeformtheit des XML-Dokuments und geben bei Verstößen Fehlermeldungen aus. Nicht-validierende Parser überprüfen lediglich Verstöße gegen die Wohlgeformtheit des Dokuments. Die Aufgabe des Parsers ist es das vorhandene Dokument so aufzubereiten, dass es von der Anwendung weiterverarbeitet werden kann. Dazu gehört neben der Überprüfung auf Fehler auch die Zusammenführung der verschiedenen Bestandteile des Dokuments, die sich möglicherweise in unterschiedlichen Dateien befinden. Zusätzlich sorgt der Parser mithilfe der DOM-Schnittstelle dafür, dass Anwendungen beispielsweise mithilfe einer Script-Sprache auf die Inhalte einzelner Elemente der Seite zugreifen können. Aufgabe jedes Parsers, ob validierend oder nicht-validierend, ist es den zugrundeliegenden XML-Quelltext zu überprüfen und dem Benutzer oder der Anwendung Verletzungen der Spezifikationen mitzuteilen. Die genaue Überprüfung ist relativ aufwendig, daher verzichten viele Parser darauf zu validieren und führen nur eine einfachere nicht-validierende Kontrolle durch. Bevor ein XML-Dokument veröffentlicht wird sollte man es auf jeden Fall mit einem validierenden Prozessor genau auf Konformität überprüfen.
3.2.2 Browser Microsoft Internet Explorer 4.0 Der Microsoft Internet Explorer war einer der ersten Browser der eine XML-Unterstützung angeboten hat. Schon dieser Version wurde das Channel Definition Format eingeführt. Es basiert vollständig auf der XML Definition. Diese Push Channel Technologie fasst Websites zu Channels zusammen und enthält außerdem Einstellungen zur Updatehäufigkeit und Aktualisierung der Inhalte. Für den Microsoft Explorer 4.0 wird ein externer XML Parser als ActiveX-Objekt angeboten. Microsoft Internet Explorer 5.0 Der Internet Explorer 5.0 verspricht eine umfangreiche XML Unterstützung. Beispielsweise durch den integrierten context-sensitiven XML Parser. Sowohl eine Unterstützung der aktuellen XML 1.0 Version inklusive den Namespaces ist voll umgesetzt, als auch eine XSL-Unterstützung basierend auf dem letzten Entwurf des W3C. Microsoft Internet Explorer 5.5
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (7 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Der Internet Explorer 5.5 wird schrittweise zusätzlich um weitere XML-Funktionen erweitert. Dazu gehört beispielsweise eine weitgehende Unterstützung der SMIL-Syntax. Netscape Communicator 5.0 Netscape bietet mit der künftigen Version 5.0 des Communicators einen verbesserten XML-Parser an. Der Parser ist dabei direkt in den Quellcode des Programms eingebunden und verspricht somit eine hohe Leistungsfähigkeit. Damit setzt Netscape fast alle Empfehlungen des XML Standards um. Da Netscape den Quellcode des Communicators freigegeben hat, findet die Entwicklung nicht mehr nur innerhalb des Unternehmens statt. Schon wenige Stunden nach der Freigabe der aktuellen Version im Netz waren schon Fehlerkorrekturen zurückgesandt worden. Ein Third-Party-Entwickler hat »Expat«, einen der fortschrittlichsten und aktuellsten Parser in das Software-Produkt, integriert. Auf der Website http://www.mozilla.org sind aktuelle Hinweise und Quellcodes der aktuellen Browserentwicklungen von Netscape zu finden.
3.2.3 Programmiertools ADEPT Editor 7.0 Der von ArborText entwickelte Editor ermöglicht es XML-Dokumente zu erzeugen und diese mit Text und Grafiken zu versehen. Sein Einsatzgebiet liegt schwerpunktmäßig in der Entwicklung von Büchern, Katalogen und Nachschlagewerken. Astoria 3.0 Die amerikanische Firma Chrystal Software entwickelte dieses Content Managementsystem zur Verwaltung von besonders komplexen Dokumenten und technischen Publikationen. Insbesondere die Verwaltung von technischen Publikationen eines Unternehmens macht es erforderlich neben Programmen zur Erstellung der Dokumente, zusätzliche Tools zur Organisation einzusetzen. Das Programm Astoria 3.0 vereint die große Anzahl anfallender Informationen, wie die Zusammenarbeit verschiedener Autoren, Grafiker und technischer Redakteure, unter einer Oberfläche. So ist eine exakte Kontrolle bereits im Stadium der Entwicklung und Überarbeitung von Inhalten möglich. Über die gesamte Lebensdauer eines Dokuments wird der Inhalt und alle zusätzlich anfallenden Informationen in einer Datenbank verwaltet. Das Verfassen, Überprüfen, Produzieren, Verteilen und Pflegen von Informationen ist also mit einem Produkt möglich.
Abb. 3.22: Das Astoria 3.0 Content Managementsystem Es wird immer deutlicher, dass der Einsatz eines gezielten Dokumentmanagements dem Unternehmen nicht nur einen subjektiven Informationsvorsprung verschafft, sondern dass sich dieser in einen realen betriebswirtschaftlichen Gewinn umsetzen lässt. Zusätzliche Module erweitern das Astoria-System. Speziell für die Unterstützung multilingualer Dokumente und der Verwaltung von Übersetzungen (Lingua Translation Management) und zur Veröffentlichung im Internet (Web Services) existieren einzelne Module, um die das Programm erweitert werden kann. Chrystal Software setzte bei der Entwicklung der aktuellen Version von Astoria konsequent auf die Auszeichnungssprache XML zur kontrollierten und präzisen Verarbeitung der Informationen. Auch in Deutschland setzen zahlreiche große Unternehmen bei ihrer Dokumentenverwaltung auf das Produkt von Chrystal, beispielsweise: Daimler Benz, Debis, Lufthansa und Siemens Nixdorf. HotMetal Pro Der HTML-Editor HotMetall Pro von SoftQuad unterstützt in der aktuellen Version XML. Author Editor 3.5 file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (8 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Der Author Editor von SoftQuad ist ein klassisches Produkt zur Erstellung von SGML Dokumenten. Die aktuellste Version hat allerdings auch schon einige Jahre hinter sich, das letzte Programmupdate stammt von 1996. So dass von XML damals natürlich noch keine Rede war. Das Programm ist in erster Linie ein professioneller SGML-Editor, der sich nur begrenzt für die Erstellung von XML-Dokumenten einsetzen lässt.
Abb. 3.23: Der SGML-Editor Author Editor. Rules Builder 3.0 Wie der Name uns schon verrät: dieses Programm dient ausschließlich dazu Document Type Definitions zu erstellen. Auch dieses Programm wurde von SoftQuad entwickelt und es ist insbesondere auf die Zusammenarbeit mit dem Author Editor abgestimmt. Für die Erstellung von XML-Document Type Definitions ist auch dieses Programm nur begrenzt geeignet (siehe Abb. 3.7).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (9 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.24: Der Rules Builder von SoftQuad. Microsoft XML Notepad Das Microsoft XML Notepad ist eine sehr einfache Anwendung um kleine XML-Dokumente zu erstellen. Es befindet sich zurzeit noch in der Entwicklungsphase und wird vielleicht in Zukunft in andere größere Applikationen übergehen. Mit dem kleinen nützlichen Tool lässt sich zwar noch nicht besonders viel anfangen, aber da echte XML-Programme noch sehr rar auf dem Markt sind, leistet dieses Produkt erste Hilfe. Elemente lassen sich leicht in bereits bestehende XML-Strukturen einfügen. Die Elemente lassen sich schnell mit Attributen und Inhalt versehen und werden noch dazu übersichtlich als Baumstruktur angezeigt (siehe Abb. 3.8).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (10 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.25: Das Microsoft XML Notepad. Adobe Framemaker und Framemaker+SGML Adobe Framemaker+SGML ist ein Publishing-Tool, mit dem Anwender SGML-Dokumente erstellen, bearbeiten und publizieren können. Nachdem sich Framemaker schon lange als Produkt zur professionellen Dokumentenbearbeitung etabliert hat, erweitert Adobe mit der neuesten Version das Produkt zusätzlich um SGML- und XML-Unterstützung. Die Dokumenten- und Informationsverwaltung POET Content Management Suite beispielsweise setzt den Framemaker zur Erstellung von Dokumenten, als integrierte Lösung ein.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (11 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.26: Framemaker+SGML XML-Pro Der Editor von Velvet Logic, der selbst von sich behauptet einer der ersten XML-Editoren zu sein ist mit intuitiver grafischer Oberfläche ausgestattet und ermöglicht so den leichten Zugang zur Erstellung von XML-Dokumenten. Bei der Umsetzung des Programms trat allerdings der Aspekt der Geschwindigkeit in den Hintergrund. So ist eine Bearbeitung von Dokumenten auf langsameren Rechnersystemen nur schleppend möglich.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (12 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.27: XML-Pro im Überblick. POET Content Management Suite Mit der POET Content Management Suite bietet POET eine flexible und erweiterbare Komplett-Lösung zur Verwaltung von SGML und XML-Dokumenten. Kernstücke der neuen Technologie sind ein Content Server und der Content Client, eine mehrbenutzerfähige und Workgroup-geeignete Oberfläche für das Dokumenten-Management. Für den Zugriff auf die Daten steht außerdem eine Programmierschnittstelle zur Verfügung. Die Content Management Suite unterstützt XML. Diese Elemente erlauben eine Speicherung von komplexen SGML/XML-Inhalten, HTML und zahlreichen weiteren Dokumenten-, Grafik-, Audio- oder Video-Formaten (siehe Abb. 3.11).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (13 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.28: Struktur der POET Content Management Suite Der POET Content Client bietet eine Lösung für die Verwaltung von Dokumenten im Single- und Multiuser-Betrieb. Der Content Client ist als Browser konzipiert und ermöglicht Projekt-Verwaltung, Check-In/Check-Out, die Exploration von Komponenten, Viewing und Versions-Kontrolle. Die Applikation kann sowohl auf lokale Content Datenbanken als auch auf Server-Datenbanken (POET Content Server) zugreifen (siehe Abb. 3.12).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (14 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.29: Ein Blick auf die POET Content Management Suite Der POET Content Server ist optimiert für die Verwaltung von SGML/XML-Daten. Mit der POET Web Factory (Web Server Plug-In) können die Dokumente einer beliebigen POET Content Datenbank im Internet veröffentlicht werden. POET Content Datenbanken können Internet-Anbindung und den Zugriff durch den einen oder mehreren Anwendern über das World Wide Web gleichzeitig verwalten. Web Valet Das Programm Web Valet ist ein universeller Editor, der den Entwickler bei der Erstellung seiner Websites unterstützt. Dabei ist Web Valet nicht an eine Sprache gebunden. Befehle lassen sich selbst definieren und einsetzen. Damit lassen sich mit diesem Produkt durchaus XML Dokumente erstellen. Eine breite Unterstützung der XML-Fähigkeiten kann man aber hier nicht erwarten. Das Programm lässt sich lediglich dann einsetzen, wenn eine feste Dokumenten-Struktur bereits feststeht und diese nicht mehr verändert wird.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (15 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.30: Der Universal-Editor: Web Valet. Symposia doc+ Mit Symposia lassen sich problemlos Web Dokumente erstellen. Die Stärke von Symposia liegt in der Erstellung von HTML-Dokumenten. Allerdings ist auch das Einfügen von XML-Tags in der aktuellen Version integriert (siehe Abb. 3.14).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (16 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.31: Symposia Doc+ Allaire Die Firma Allaire entwickelt zurzeit die beiden Programme HomeSite 4.0 und Cold Fusion 4.0. Beide werden in Kürze erwartet und unterstützen XML inklusive Stylesheet-Definitionen. Eine Microsoft-Channel-Definition-Umsetzung ist schon jetzt in HomeSite 3.0 integriert.
3.2.4 Applikationen Microsoft Office 2000 Die Vision vom übergreifenden Format für alle Anwendungen und Datenstrukturen rückt mit XML ein Stückchen näher. Microsoft hat sich im Office-Paket klar dieser Vision verschrieben. Alle Programme des Office-Pakets können in einem einheitlichen HTML-Format mit XML-Unterstützung aufwarten (siehe Abb. 3.15).
Abb. 3.32: Ein Word-Dokument im Browser. Der Internet-Explorer 5.0 erkennt anhand des HTML-Quellcodes von welchem Programm die Dokumente erstellt wurden und bietet eine direkte Bearbeitung an. Also steht auch dem lückenlosen Import der entstandenen HTML-Dokumente in vorhandene Applikationen nichts im Wege (siehe Abb. 3.16).
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (17 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.33: Eine Excel-Tabelle inklusive Diagramm im Internet Explorer.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (18 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.34: PowerPoint bietet seine Präsentation komplett im webfähigen Format an.
3.3 Schnelleinstieg Im folgenden Abschnitt erfahren Sie alles, was Sie für einen schnellen Einstieg in die Sprache XML benötigen. Insbesondere Unterschiede zur HTML-Syntax werden dabei immer wieder hervorgehoben.
3.3.1 Allgemeine syntaktische Hinweise Gültige Zeichen Ein XML-Dokument wird in erster Linie im reinen Textformat erstellt. Das Dokument enthält, wie bei einer Auszeichnungssprache üblich, einerseits entsprechend delimitierte Markup-Befehle sowie »normale« Zeichendaten. Ein Zeichen wird in der ISO/IEC 10646 definiert. Unterstützt die eingesetzte Software diesen Zeichensatz, so können insbesondere deutschsprachige Texte inklusive aller Sonderzeichen und Umlaute eingegeben werden. Neben den Text- und Grafikzeichen des Unicodes sind auch Tabulatoren, Zeilenumbrüche [CR] (carriage return) und Wagenrückläufe [LF] (line feed) einsetzbar. Windows-Systeme setzen beim Druck auf die Eingabetaste automatisch Carriage Return und Line Feed ein. Dagegen verwenden Unix-Systeme lediglich ein Line Feed für einen Zeilenumbruch. Macintosh Rechner setzen ein Carriage Return ein.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (19 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.35: Ein Editor, der zwischen Unix/Mac und Windows-Format konvertieren kann. Beachten Sie dies bei der Konvertierung von Dokumenten zwischen den Systemen. So werden Dokumente, die von Unix-Systemen erstellt wurden, auf Windows-Rechnern ganz ohne Zeilenumbrüche dargestellt. Mit geeigneten Tools können Sie die Formate konvertieren. Case-Sensitiv Im Gegensatz zur Verwendung von Markup- und Attribut-Bezeichnungen bei HTML wird in XML-Dokumenten zwischen Großund Kleinschreibung unterschieden. Inzwischen ist auch die neuere Parser-Generation »case-sensitive«. Die erste Anweisung eines Dokuments, die angibt, dass es sich um ein gültiges XML-Dokument handelt, ist in Kleinbuchstaben abzufassen: Viele Software-Produkte, die sich noch in der Entwicklung befinden, unterstützen in der ersten Generation noch keine »case-sensitive« Unterscheidung. Im Hinblick auf die weiteren Fortschritte sollten Sie aber schon jetzt die »richtige« Schreibweise in Ihren Dokumenten verwenden. Zeichenreferenz Für Sonderzeichen, die wir nicht auf der normalen Tastatur finden, sowie Zeichen, die in XML eine andere (beispielsweise delimitierende) Bedeutung haben, muss eine andere Möglichkeit zur Eingabe verwendet werden. Insbesondere sind dies die folgenden Zeichen: & < > '
"
Diese Zeichen können mithilfe einer so genannten Entity-Umschreibung eingesetzt werden. Eingeleitet wird die Entity mit einem kaufmännischen »Und« ("&"). Dann folgt eine abgekürzte Umschreibung des Zeichens, die mit einem Semikolon abgeschlossen wird. Wahlweise kann das Zeichen auch mithilfe einer Dezimalzahl dargestellt werden. Im nächsten Beispiel finden Sie die Entities für die deutschen Umlaute. Im Anhang dieses Buchs haben wir eine komplette Übersicht aller Abkürzungen für Sie zusammengestellt. Buchstabe
Entity
Abkürzung Dezimalzahl
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (20 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
ä
ä
Ä ö
Ä ö
Ö ü
Ö ü
Ü
Ü
a Umlaut A Umlaut o Umlaut O Umlaut u Umlaut U Umlaut
ä Ä ö Ö ü Ü
Innerhalb der DTD-Beschreibungen können Sie selbst Entities als Abkürzungen nicht nur für Sonderzeichen, sondern für ganze Textabschnitte definieren. Siehe dazu Kapitel Entity-Definition. CDATA Abschnitte Der CDATA (character Data) Abschnitt innerhalb eines Dokuments weist den Parser an, diesen Text nicht auszuwerten und insbesondere Markup-Befehle und Entities zu ignorieren. Eingesetzt wird diese Form etwa, wenn man Quellcode in die Seite integrieren möchte und dieser auch genau so angezeigt werden soll. Paderborn ]]> Alle Zeichen, die sich zwischen dem einleitenden Markup "" befinden, werden ohne weitere Bearbeitung vom Parser an die Applikation weitergereicht. Die einzige Zeichenfolge, die sich natürlich nicht innerhalb des Abschnitts befinden darf, ist das Abschluss-Tag. Auch eingebettete Kommentare ("") werden ohne Berücksichtigung an die Anwendung übermittelt. Alternativ hätten Sie diesen Quelltext natürlich auch mithilfe der oben genannten Entities darstellen können: Beispiel für einen XML-Quelltext:
Paderborn Sie erkennen schon an diesem Beispiel, dass die Verwendung der CDATA-Section, insbesondere für längere Quellcodes, wesentlich einfacher und übersichtlicher als die alternative Verwendung von Entities ist. Angabe von Attributen Attribute von Markup-Befehlen müssen anders als in HTML grundsätzlich in Anführungszeichen angegeben werden. Dabei spielt es keine Rolle, ob man die doppelten oder einfachen Anführungszeichen verwendet. Beide Schreibweisen sind korrekt: Ein Attributname darf höchstens einmal innerhalb eines Markup-Elements auftreten. Außerdem darf der Wert eines Attributs keine öffnenden spitzen Klammern enthalten, wie sie zur Delimitierung eines Markups verwendet werden. Folgende Schreibweisen entsprechen nicht der korrekten Syntax:
3.3.2 Grundgerüst eines XML-Dokuments Die offizielle Spezifikation des W3C für den Aufbau eines gültigen und so genannten wohlgeformten XML-Dokuments liest sich recht kryptisch und unverständlich, dennoch möchten wir sie Ihnen im Original nicht vorenthalten:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (21 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
document ::= prolog element Misc* Ein Objekt ist ein gültiges XML-Dokument, wenn es im Sinne dieser Definition wohlgeformt ist. Im folgenden Abschnitt werden wir Ihnen diese Struktur unabhängig von der oben genannten Codierung deutlich machen. Auch auf den Begriff der Wohlgeformtheit werden wir näher eingehen. Auch die Syntax, in der das oben genannte Beispiel definiert ist (Extended Backus-Naur Form), werden wir noch eingehend erläutern.
Abb. 3.36: Der Aufbau eines typischen XML-Dokuments Das Dokument besteht aus drei Datenteilen. Wobei die Verwendung der ersten beiden Teile optional ist. Im so genannten Prolog, der Einleitung des XML-Dokuments befindet sich die Verarbeitungsanweisung und die Document Type Definition. Danach folgt der eigentliche Inhalt der Datei. Processing Instruction (PI) Wird ein Tag innerhalb eines XML-Dokuments mit einem Fragezeichen eingeleitet und geschlossen (""), so handelt es sich um eine so genannte Processing Instruction (engl. Verarbeitungsanweisung) oder kurz PI. Verarbeitungsanweisungen, die mit dem Schlüsselwort XML beginnen, sind für die XML-Standarddefinition reserviert. Diese Verarbeitungsanweisung teilt dem Parser mit, dass er aktiv werden muss und beispielsweise eine DTD-Datei hinzugeladen werden muss. Die anfängliche Verarbeitungsanweisung teilt dem Parser mit um welches XML-Format es sich beim vorliegenden Dokument handelt. Augenblicklich ist als Versionsangabe ausschließlich die Version 1.0 vorgesehen. Aber im Hinblick auf weitere Entwicklungen der Sprache sollte man diese trotzdem korrekt verwenden. Der innerhalb eines Dokuments verwendete Zeichensatz kann in der Verarbeitungsanweisung über das Schlüsselwort ENCODING näher bestimmt werden. Dabei steht neben der ISO-Norm 8859 mit ihren zehn Untergliederungen auch die ISO/IEC 10646-Norm zur Verfügung. Jeder XML-Prozessor muss in der Lage sein mindestens die Formate UTF-8 und UTF-16 zu lesen. ISO-Norm
Zeichensatz
UTF-8
internationaler Zeichensatz
UTF-16
internationaler Zeichensatz
ISO-8859-1
West Europa (Latin-1)
ISO-8859-2
Ost Europa (Latin-2)
ISO-8859-3
Süd Europa (Latin-3)
ISO-8859-4
Nord Europa (Latin-4)
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (22 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
ISO-8859-5
Kyrillisch
ISO-8859-6
Arabisch
ISO-8859-7
Griechisch
ISO-8859-8
Hebräisch
ISO-8859-9
Türkisch (Latin-5)
ISO-8859-10 Nordisch (Latin-6) Die Option STANDALONE (engl. alleinstehend) in der Verarbeitungsanweisung kennzeichnet, ob der Parser eine externe DTD einlesen muss oder nicht. Der Wert "yes« zeigt an, dass keine externen Dateien hinzugezogen werden müssen. Der Wert "no" zeigt lediglich an, dass eine externe Datei existiert. Der Dateiname muss dann in der DOCTYPE-Definition angegeben werden. Der Befehl ist optional anzuwenden. Wird er nicht eingesetzt und existiert eine externe DTD so wird der Wert STANDALONE="no" angenommen, andernfalls hat die Standalone-Deklaration keine Bedeutung. Die Verwendung von Document Type Definitions werden wir im nächsten Abschnitt ausführlich erläutern. Wie Sie schon erfahren haben, gibt es zwei Möglichkeiten eine DTD einer XML-Datei zuzuordnen. Einerseits in einer separaten Datei und alternativ innerhalb des Dokuments. Der Parser muss sich die Angaben zur DTD dann nicht aus einer externen Datei holen, sondern kann sie direkt der XML-Datei entnehmen. Beispiel: externe DTD Möchten Sie auf eine öffentlich zugängliche DTD-Definition verweisen so verwenden Sie statt des Schlüsselworts SYSTEM einfach PUBLIC und geben den vollständigen URL-Pfad an. Beispiel: interne DTD Das komplette Grundgerüst, bestehend aus den drei Teilen Processing Instruction und Document Type Definition, sowie dem eigentlichen Inhalt des Dokuments möchten wir Ihnen im Folgenden als kurzes zusammenfassendes Beispiel zeigen. Die ersten beiden Teile sind untergebracht im Prolog, also dem ersten Teil der Datei. Processing Instruction Document Type Definition Inhalt des Dokuments [...] Wohlgeformtheit (wellformed) Ein Begriff wird Ihnen bei der Arbeit mit XML immer wieder in Bezug auf korrekte Umsetzung der Spezifikation begegnen: Wohlgeformtheit. Die Wohlgeformtheit eines Dokuments (oder englisch wellformed document) besagt im Grunde genommen nichts anderes, als dass sich das vorliegende Konstrukt vollständig an die offiziellen Regeln des W3C zur Erstellung von XML-Dokumenten hält. Insbesondere gehört dazu auch, dass es aus einem Prolog und mindestens einem Element besteht. ● Das gesamte Dokument muss in ein einzelnes Wurzelelement eingeschlossen sein. Übertragen auf die Sprache HTML bedeutet das, ein Dokument ohne umschließende -Tags ist nicht wohlgeformt. file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (23 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Beispiel: Text ● Alle unbedingt erforderlichen Attribute sind angegeben. ● Die Werte der Attribute befinden sich im richtigen Wertebereich und entsprechen dem angegeben Typ. Für die eingesetzten Elemente gilt, dass diese korrekt ineinander verschachtelt sind. Also wenn sich das Start-Tag eines Elements im Inhalt eines anderen Elements befindet, so muss sich auch dessen End-Tag im Inhalt des anderen Elements befinden. Im Hinblick auf die Zusammenarbeit oder Konvertierung von XML zu SGML ist es wichtig zu wissen, dass jedes wellformed Dokument gleichzeitig auch ein SGML Dokument ist. Gültigkeit (valid) Neben der Wohlgeformtheit eines Dokuments spielt auch die Überprüfung auf die Gültigkeit eine wichtige Rolle. Drei Punkte bestimmen, ob ein XML Gültigkeit besitzt oder nicht: ● Es handelt sich um ein wohlgeformtes Dokument. ● Eine zugehörige interne oder externe DTD existiert und ist verfügbar. ● Das Dokument ist in Bezug auf die in der DTD aufgestellten Regeln gültig. Das bedeutet, schon das Fehlen einer DTD wirkt sich auf die Gültigkeit des Dokuments aus. XML-Dokumente ohne DTD können keine gültigen Dokumente im Sinne der Spezifikation sein. Da die Verarbeitung und Überprüfung der DTD nicht einfach ist, verzichten viele Parser darauf Dokumente auf Gültigkeit zu überprüfen. Das einfachste gültige XML-Dokument mit integrierter DTD-Definition eines Elements müsste also mindestens aus den folgenden Zeilen bestehen: Hier sind die Daten ... Wie man aus den Bedingungen für Gültigkeit ersehen kann, folgert daraus, dass jedes gültige Dokument auch ein wohlgeformtes Dokument sein muss. Die Überprüfung auf Gültigkeit schließt die Überprüfung auf Wohlgeformtheit ein. In vielen Fällen ist die weitreichende Überprüfung auf Gültigkeit nicht notwendig. Beispielsweise wenn die Dokumentenstruktur so einfach ist, dass keine DTD erforderlich ist oder der Processor die DTD sowieso nicht berücksichtigt. Dieses Dokument ist zwar wohlgeformt, aber nicht gültig. Das obige Beispiel zeigt ein Dokument, das zwar die Bedingungen der Wohlgeformtheit erfüllt, aber nicht gültig ist. Denn das Element ist zwar richtig eingesetzt, es wird aber nicht in der zugehörigen DTD definiert. Nach der Definition ist ein nicht-wohlgeformtes Dokument kein XML-Dokument.
3.3.3 Extended Backus-Naur Form (EBNF) Die Intention unseres Buches ist es ja eigentlich Ihnen XML anhand eindeutiger Formulierungen und anschaulichen Praxisbeispielen verständlich zu machen. Ein genaues Studium der offiziellen XML-Recommendation des W3C möchten wir Ihnen gerne ersparen. Dennoch verspüren Sie vielleicht hin und wieder den Wunsch sich diese Empfehlungen einmal im Original anzusehen. Die offiziellen Definition des XML-Standards folgt einer ganz besonderen Syntax.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (24 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Diese Syntax ist so gestaltet, dass sie durch eine Software, beispielsweise durch einen Parser ausgewertet und verstanden werden kann. So muss der Programmierer eines solchen Parsers nicht die W3C-Empfehlungen Schritt für Schritt in Programmform umsetzen, sondern er muss dem Parser nur beibringen die Syntax der Definition zu verstehen. Um die Syntax einer Sprache dem Computer verständlich zu machen, bedient man sich des »Extended Backus-Naur«-Formats (EBNF). Mit dessen Hilfe ist es möglich logische Definitionen in einen speziellen Programmcode umzuwandeln. Das System ist zur Konstruktion eines Compilers entwickelt worden. Wenn Sie dieses Thema näher interessiert, erhalten Sie weitere Informationen in zahlreichen Fachbüchern zum Compilerbau. Die W3C-Empfehlung zu XML enthält zurzeit insgesamt 89 solcher Definitionen im EBN-Format. Diese sind durchgängig nummeriert. Die Nummerierung finden Sie jeweils vor der Definition in eckigen Klammern. Neben diesen Syntax-Begriffsbestimmungen enthält der Original-Text natürlich noch eine Reihe von ergänzenden Erklärungen. EBNF ist eine Auflistung von Bedingungen (so genannten »productions«). Jede Bedingung beschreibt ein Fragment der Syntax. [Nummer] Bezeichnung ::= Definition Kurz zusammengefasst besteht eine EBNF-Bestimmung grundsätzlich aus einer Bezeichnung und der Definition, getrennt durch zwei Doppelpunkte und ein Gleichzeichen. Im folgenden Beispiel sehen Sie die Definition des Kommentar-Blocks: [15] Comment ::= ''
Abb. 3.37: Der Kommentarblock als Ablaufgrafik dargestellt Schlüsseln wir die Bestandteile dieser Definition unseres Beispiels nun einmal Stück für Stück auf: Definition ''
(Teil 1 | Teil 2)
(Char - '-')
('-' (Char - '-')
Bedeutung Die Zeichenkette ist unbedingt zu Beginn des Markups notwendig. Mit dieser Zeichenkette wird der Markup-Befehl abgeschlossen. Neben Start- und Schluss-Delimitierung finden wir zwei weitere Definitionsteile. Die beiden Teile sind mit einem senkrechten Strich verbunden. Das bedeutet, entweder muss die eine ODER die andere Definition (Teil 1 oder Teil 2) gelten. Die erste Definition sagt aus, dass zwischen den Delimitierungen ein beliebiges Zeichen (Character) stehen darf. Mit dem nach dem Minus stehenden Zeichen (»-«) wird der Trennstrich als folgendes Zeichen ausgeschlossen. Um einen Trennstrich vor einem Zeichen zuzulassen, wurde noch ein Definition hinzugenommen.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (25 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Das Sternchen hinter den beiden Teilen gibt uns an, dass beliebig viele den Regeln folgender Zeichen (Teil 1 | Teil 2)* eingesetzt werden dürfen. Zeichenräume definieren Nach diesem Beispiel möchten wir Ihnen die gesamte formale Grammatik der erweiterten Backus-Naur-Form genauer erläutern. Jeder Ausdruck stellt das Muster eines oder einer ganzen Reihe von Zeichen dar. Für die Angabe der gültigen Zeichen sind folgende Ausdrücke einsetzbar: Ausdruck
Folgende Zeichen sind gültig ... ... alle Zeichen innerhalb des angegeben Intervalls.
[a-z]
... alle Zeichen außerhalb des angegebenen Intervalls.
[^a-z]
... alle Zeichen außer den genannten.
[*abc] "Zeichen" 'Zeichen'
... die angegebene Zeichenkette. ... die angegebene Zeichenkette.
Verknüpfung von Ausdrücken Neben der Definition von Zeichen und Zeichenketten kann man diese miteinander kombinieren, wie auch schon in unserem Beispiel gesehen. A und B sind in der obigen Tabelle genannte Ausdrücke. Muster A? A B A | B A - B A+ A*
Kurz
Bedeutung
Optional
Die Benutzung des definierten Symbols ist optional.
UND
Die Symbole müssen in der genannten Reihenfolge vorkommen.
ODER
Entweder muss das Symbol A oder B eingesetzt werden.
OHNE
Das Symbol A mit der Ausnahme B muss eingesetzt werden.
Einfach oder mehrfaches
Das Symbol muss mindestens einmal, darf aber auch öfter vorkommen.
Gar nicht, einfach oder mehrfach Das Symbol muss nicht vorkommen, darf aber auch einmal oder öfter auftauchen.
Mehrere auf oben beschriebene Weise verknüpfte Ausdrücke können in Klammern gesetzt werden und sind dann als eine Einheit (ein Ausdruck) zu betrachten. Beispiel: Verarbeitungsanweisung Die Verarbeitungsanweisung zur Definition der XML-Version kennen Sie schon aus dem vorangegangenen Abschnitt. Im folgenden Beispiel erläutern wir die Definition dieses Befehls (wir haben aus Gründen der Verständlichkeit den Befehl um einige Optionen gekürzt): Die Befehlsdefinition der einleitenden Processing Instruction findet sich in der offiziellen Darstellung wie folgt wieder: [23] XMLDecl [24] VersionInfo [26] VersionNum
::= '' ::= 'version=' (' VersionNum ' | "VersionNum") ::=
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (26 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
([a-zA-Z0-9_.:] | '-')+ Deutlich zu sehen ist, dass in Defintion [23] auf die weiteren Definitionen VersionInfo, EncodingDecl und Sdecl zurückgegriffen wird. Die beiden letzt genannten, die wir schon als die Attribute ENCODING und STANDALONE kennen, sind optional (zu erkennen am angehängten Fragezeichen). Die Versionsnummer selbst, die im Augenblick ja ausschließlich "1.0" lauten darf, ist in [24] festgelegt, so dass sie in doppelten Anführungszeichen oder alternativ in einfachen Anführungszeichen angegeben werden darf. Diese Alternative ist übrigens für alle Attribute gegeben. Die Zahl zur Angabe der Version erfährt eine weitere genaue Definition in [26]. Beliebige Buchstaben, Zahlen sowie Unterstrich, Punkt oder Doppelpunkt sind zulässig. Alternativ ist ein Bindestrich einsetzbar. Das abschließende Pluszeichen zeigt, dass mindestens eins oder mehrere zu dem Muster passende Zeichen einzusetzen sind. Ein XML-Dokument ist dann gültig, wenn es auf eine einzige, spezifische Bedingung reduziert werden kann. Das heißt jeder Bestandteil lässt sich in eine EBNF-Bedingung auflösen, dieser ist rekursiv wieder Bestandteil einer umschließenden Bedingung. Hat man alle Bedingungen eines Dokuments aufgelöst muss folgende zugrunde liegende Definition herauskommen: [1] document ::= prolog element Misc* Auch wenn das EBN-Format nicht gerade eine menschlich verständliche Definition einer Syntax bildet, bietet es doch einen unmissverständlichen und nur auf eine Weise interpretierbaren Mechanismus eine Sprache festzulegen. Textbeschreibungen, noch dazu in verschiedenen Übersetzungen, bieten häufig einen gewissen Spielraum für Interpretation und sind damit nicht eindeutig. Im Zweifelsfall bietet es sich also durchaus an, bevorzugt die EBN-Form der XML-Syntax zu Rate zu ziehen. Daher haben wir im Anhang dieses Buches alle 89 Regeln des W3C zur XML Version 1.0 als Übersicht für Sie zusammengestellt.
3.4 Document Type Definition (DTD) 3.4.1 Kurzübersicht DTD Wenn Sie bisher Internetseiten unter HTML erstellt haben, wird Ihnen der Begriff Document Type Definition sicherlich schon einmal begegnet sein. Zumindest wenn Sie in der ersten Zeile eines Dokuments angegeben haben, welche HTML-Version Ihr Dokument unterstützt. Dafür sich näher mit einer DTD zu beschäftigen sahen Sie bisher sicherlich keinen Grund. Wir haben ja in unserem einleitenden Titel schon auf die Verwendung von DTDs unter HTML hingewiesen. Wenn Sie sich jetzt näher mit XML beschäftigen, kommen Sie allerdings nicht um eine gründliche Einarbeitung des Themas herum. Die Document Type Definition ist ein zentraler Bestandteil jedes SGML und auch XML-Dokuments. Sie können vielleicht zunächst auf einige vorhandene DTDs zurückgreifen, zumindest müssen Sie aber deren Funktionsweise verstehen. Später werden Sie sicherlich den Drang verspüren selbst DTD zu erstellen oder vorhandene an individuelle Projekte anzupassen. Dieser Abschnitt wird Ihnen einen Einblick in das gar nicht so schwierige Thema verschaffen. In einer Document Type Definition werden die Grundregeln für die Struktur eines Dokuments festgelegt. In der DTD zur HTML-Sprache sind alle einsetzbaren Markups und deren Attribute definiert. Die DTD legt zudem fest wie die Elemente ineinander verschachtelt werden können. Beispielsweise, dass innerhalb der -Tags der Textkörper folgt. Hierbei ist für die Autoren der auf dieser DTD basierenden Dokumente natürlich eine hohe Disziplin erforderlich, sich an die festgelegten Regeln zu halten. Das Hauptaugenmerk bei der Verwendung von XML sollte also bei der Gestaltung der DTD liegen. Die definierten DTD-Elemente dann in eine korrekte Form innerhalb des XML-Dokuments zu bringen ist eher der leichtere zweite Schritt. Interne oder externe DTD Freigestellt ist, ob die Dokumenttyp-Definition innerhalb des Dokuments selbst oder als externe Datei untergebracht wird. Bei einer externen DTD spricht man auch von einer externen DTD-Untermenge. Wenn die DTD innerhalb des Dokuments untergebracht wird, steht die interne DTD-Untermenge am Anfang der Datei. Anhand der DTD ist eine spätere Überprüfung der Syntax durch den Parser möglich und erforderlich. Sofern ein validierender Parser
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (27 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
eingesetzt wird ist der Zugriff auf eine DTD unbedingt erforderlich. Der folgenden Hinweis auf eine externe DTD-Datei muss innerhalb jedes Dokuments eingefügt werden. Der Zusatz SYSTEM gibt an, dass es sich um eine externe Datei handelt. Diese muss sich in unserem Beispiel im gleichen Verzeichnis wie die Quelldatei befinden. Diese Deklaration gibt an, dass sich das Dokument auf die DTD "adressen.dtd" bezieht. Natürlich sind auch Bezüge auf andere Verzeichnisse möglich: Bei kürzeren DTDs bietet es sich oft an, diese direkt im XML-Dokument unterzubringen. Die großen Vorteile von XML, DTDs in einer ganzen Reihe von Dokumenten unterzubringen, gehen damit aber unweigerlich verloren oder fordern einen hohen Mehraufwand. Für eine interne DTD werden die einzelnen Definitionen im Prolog des XML in der DOCTYPE-Anweisung innerhalb eckiger Klammern angegeben. Ohne zunächst näher auf die einzelnen verwendeten Befehle einzugehen, konfrontieren wir Sie zunächst mit einem kleinen Beispiel. Zunächst folgt die externe DTD gespeichert unter dem Dateinamen "adressen.dtd" zur Definition einer Adresse. Vielleicht erkennen Sie anhand der einfachen Struktur schon den einen oder anderen Zusammenhang. Keine Sorge, wenn dem noch nicht so ist. Im weiteren Verlauf werden wir jedes Detail genau erklären. Mithilfe der erstellten DTD ließe sich das unten stehende Dokument mit externem Hinweis auf adressen.dtd erzeugen: Peter Meyer Waldweg 5 36756 Detmold file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (28 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Peter Meyer Waldweg 5 36756 Detmold ]> Wie Sie in unseren Beispielen schon feststellen konnten, besteht jede DTD aus einer Reihe von Deklarationen. Jede Deklaration ist von zwei Zeichengruppen eingeschlossen, die wir auch schon zur Delimitierung von Markups kennen (""). Übersicht: Schlüsselwörter Die folgenden Schlüsselwörter klassifizieren jeden Eintrag in der DTD: Definition eines neuen Markup-Befehls Definition von Attributen Definition von Entities Definition einer Datentyp-Notation Einfügen eines Kommentars Wie Sie bereits in unseren einleitenden Kapiteln erfahren haben, unterscheidet man zwischen logischen und physischen Strukturen. Und so kann man auch die Befehle, die in der DTD eingesetzt werden, in diese zwei Gruppen einteilen. Logische Strukturen lassen sich mithilfe der ELEMENT-Definition und den zugehörigen ATTLIST-Deklarationen darstellen. ENTITIY und NOTATION bilden die physischen Strukturen. In den folgenden Abschnitten werden wir alle Schlüsselwörter und deren zahlreiche Optionen detailliert erläutern.
3.4.2 Entity Definition Allgemeine Entities Entities sind uns schon aus HTML bekannt. Mit Ihrer Hilfe werden Sonderzeichen mithilfe von Abkürzungen definiert. Beispielsweise wird mit dem Entity © das Copyright-Zeichen "(c)" definiert. Im weiteren Verlauf des Dokuments kann dann statt des Sonderzeichens die vereinbarte Abkürzung eingesetzt werden. Entities sind in diesem Fall unbedingt notwendig, da der Zeichensatz der Textdatei nur 128 Zeichen enthält und in diesem keine landesspezifischen Sonderzeichen enthalten sind. Zusätzlich lassen sich Kürzel zur Verfügung stellen, die automatisch durch längere und häufig eingesetzte Zeichenfolgen ersetzt werden. Eine Entity-Deklaration in der DTD wird durch das Schlüsselwort ENTITY (übersetzt: Existenz) eingeleitet. Mit dem folgenden Beispiel weist man der Abkürzung "gw" den kompletten Namen zu: Möchte man diese Abkürzung innerhalb eines Dokuments verwenden, setzt man den vereinbarten Namen einfach als Entity ein: Der Autor dieses Dokuments ist &gw; Achten Sie bei der Definition von eigenen Entities auf die schon vorgegebenen Abkürzungen für den Zeichensatz. Man könnte Entities also als Deklaration von Abkürzungen für Zeichen oder Zeichenfolgen definieren. Wobei es natürlich von Ihnen abhängt, ob ein Entity wirklich eine »Abkürzung« ist.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (29 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Parameter Entity Eine weitere Unterscheidung kann zwischen den allgemeinen Entities und den so genannten Parameter Entities erfolgen. Während allgemeine Entities in der DTD definiert werden und erst im XML-Dokument in Verbindung mit dem Parser in Aktion treten, betreffen Parameter Entities nur die DTD selbst. Beim Prozess des Parsing werden diese Entities innerhalb der DTD durch den Ersetzungstext ausgetauscht. Der Unterschied zwischen allgemeinen und Parameter Entities besteht in der Syntax lediglich durch ein zugefügtes Prozentzeichen (»%«). Während in der Entity Definition das Prozentzeichen von Leerzeichen getrennt stehen muss, wird das Entity aufgerufen durch den Namen oder die Abkürzung des Entities mit vorangestelltem Prozentzeichen. Tauchen in einer DTD beispielsweise regelmäßig die gleichen Elementlisten auf, so können diese vorab als Entity definiert, später immer wieder aufgerufen werden.
Der Aufruf des Parameter Entity erfolgt im Dokument dann mit vorangestelltem Prozentzeichen und abschließendem Semikolon. Das Prozentzeichen hat außerhalb der DTD, also im XML-Dokument selbst verwendet, keine besondere Bedeutung. %gliederung; In der Praxis könnten solche Parameter Entities immer dann Verwendung finden, wenn häufig gleiche Zeichenketten verwendet werden. Die folgende Auflistung kann dann in der DTD ... ... ganz einfach durch das abkürzende Entity ersetzt werden: Oder auch als Ergänzung zu anderen Elementen: Parameter Entities lassen sich aber auch in einer weiteren Entity-Deklaration einsetzen: Rekursive Entity-Deklarationen, also Deklarationen, die sich selbst oder ein Entity aufrufen, das selbst mithilfe des aufrufenden Entities deklariert ist, sind verständlicherweise nicht möglich: Eine weitere Einschränkung gilt in Hinsicht auf die Ersetzung von Markup-Befehlen Entities durch Entities. Ein Start-Tag darf nicht in einem anderen Entity deklariert sein, wie das zugehörige End-Tag. Das folgende Beispiel ist also nicht korrekt: Auch leere Elemente, also Markups zu denen kein End-Tag gehört, lassen sich auf diese Weise nicht in Entities definieren. Interne und externe Entities Alle Entities, die wir bisher kennen gelernt haben, waren interne Entities. Das heißt der Ersetzungstext wird in das Dokument integriert. Neben dieser internen Variante existieren auch noch die externen Entities. Der Parser kann nicht jeden Datentyp verarbeiten und in das Dokument einfügen. Bei einem externen Entity erfolgt ein Verweis auf eine externe Datenquelle, beispielsweise ein weiteres XML-Dokument. Internes Entity:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (30 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Externes Entity: Hier wird der Parser das Wort &beschreibung; ersetzen durch den Inhalt der angegebenen Datenquelle. Bei externen Entities besteht aber das Problem, dass sich nicht jede Art von Daten so einfach in das bestehende Dokument einfügen lässt. Spätestens, wenn wir als externe Datenquelle eine binäre Grafikdatei angeben, stoßen wir auf Schwierigkeiten. In diesem Fall findet eine weitere Unterscheidung zwischen analysierten und nicht-analysierten Entities, also vom Parser zu verarbeitende oder nicht zu verarbeitenden Daten, statt. Die vordefinierten Entities wie beispielsweise < und > für die Zeichen "" zählen zu den internen Entities auch wenn sie eigentlich nicht intern deklariert werden. Alle internen Entities sind analysierte, d.h. vom Parser verarbeitete Entities. Der Unterscheidung von analysierten und nicht-analysierten Entities widmen wir uns im nächsten Abschnitt. Analysierte und nicht-analysierte Entities Man unterscheidet zwischen Entities, die vom Parser ausgewertet und analysiert (parsed) werden und nicht-ausgewerteten (unparsed) Entities. Ein Entity, das eine Abkürzung für eine Zeichenkette enthält, wird vom Parser analysiert und gegen die längere vollständige Zeichenkette oder das Sonderzeichen ersetzt. Der ersetzte Text wird damit zum integralen Bestandteil des Dokuments. Ein nicht-analysiertes Entity kann beliebigen Inhalts sein und wird vom Parser an die Anwendung weitergeleitet. Diese muss dann gewährleisten, dass sie die Daten in irgendeiner Form weiterverarbeitet oder anzeigt. Nicht-analysierte Entities sind beispielsweise Grafik- oder Sound-Ressourcen. Soll ein Dokument der Wohlgeformtheitsbeschränkung genügen, so ist es unbedingt erforderlich, dass ausschließlich Entities eingesetzt werden, die auch in der zugehörigen DTD definiert sind. Eine Ausnahme bilden die vorgegebenen Entities für die Zeichenreferenzen: "&",
"<",
">",
"'" und """.
Sehen wir uns im folgenden Beispiel einmal ein externes und nicht-analysierendes Entity genauer an. Es verweist auf eine externe Datei, in der Daten im EPS-Format vorliegen. Diese können natürlich nicht einfach in die bestehende XML-Datei eingefügt werden, da Sie in binärer Form vorliegen und keinerlei Markups zur Auswertung enthalten. Das Schlüsselwort NDATA gibt dem Parser den Hinweis, dass die im Entity enthaltenen Daten nicht verarbeitet werden sollen, weil es sich in der Regel um binäre Daten handelt. Zusätzlich muss noch der Datentyp der Datei angegeben werden, in diesem Fall EPS für Encapsulated PostScript. Mit diesen Datentypen werden wir uns noch einmal unter dem Stichwort Notation-Deklaration näher beschäftigen. In dieser Notation muss dem Parser mitgeteilt werden, wie die binären Daten zu behandeln sind, bzw. wie sie auf dem Bildschirm angezeigt werden können. Grafiken im Dokument In XML sind Entities unbedingt erforderlich, wenn externe Bilder- oder Sound-Dateien eingebunden werden. Wie wir schon gesehen haben, werden in diesem Fall externe, nicht-analysierte Entities eingesetzt. Für jede eingebundene Datei wird ein Entity deklariert, das den entsprechenden Verweis auf die Datei enthält. Deklaration einer Grafik im JPEG-Format und im GIF-Format: Eine Besonderheit ist beim Einsatz von nicht-analysierten Entities zu beachten: Diese dürfen innerhalb des XML-Dokuments nicht einfach in den Text eingesetzt werden, sondern benötigen ein Element in dem sie als Wert eines Attributs übergeben werden. Folgendes funktioniert also nicht:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (31 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Jetzt folgt ein Produktfoto: &produkt_1; ... und hier noch eins: &produkt_2; Das Entity muss also dem Attribut eines Elements als Wert übergeben werden. Der Wertebereich des Attributs muss vom Typ ENTITY sein. Daher kann auf Angabe der sonst das Entity kennzeichnenden Zeichen "&" und ";" verzichtet werden. Zusammenfassung Entities Entities können eine ganze Reihe von Bedeutungen und Funktionen haben. Einzig gemeinsam haben alle Entities, dass ein Name oder eine Bezeichnung einer Datenmenge zugeordnet wird. Unbedeutend ist dabei, ob diese zugewiesene Datenmenge aus einzelnen Zeichen besteht oder eine ganze Datei ist. Sobald der Parser auf ein in einem Entity definiertes Kürzel trifft, ersetzt er es durch die zuvor definierten Daten. Wir haben Ihnen die verschiedenen bisher erwähnten Entity-Typen noch einmal in einer Übersicht zusammengestellt: analysierte Entities
nicht-analysierte Entities
Der Inhalt der Entities wird vom Parser direkt weiterverarbeitet.
Der Inhalt der Entities wird vom Parser ohne weitere Bearbeitung zur Applikation weitergereicht.
allgemeine Entities
Parameter Entities
Werden für Ersetzungen innerhalb des XML-Dokuments genutzt.
Beziehen sich ausschließlich auf die DTD und finden im XML-Dokument keinen Einsatz.
interne Entities
externe Entities
Interne Entities werden innerhalb der DTD definiert. Externe Entities verweisen auf eine externe Datenquelle in der sich Beispielsweise die Ersetzung einer »Abkürzung« durch beispielsweise eine Grafik- oder Sound-Ressource befindet. eine Zeichenkette.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (32 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Abb. 3.38: Alle möglichen Kombinationen im Überblick. Obwohl es insgesamt drei verschiedene Unterscheidungen mit jeweils zwei Möglichkeiten gibt, existieren nicht insgesamt acht Kombinationsmöglichkeiten, sondern nur fünf. Alle fünf Kombinationen können Sie dem oben gezeigten Schaubild entnehmen.
3.4.3 Kommentare Innerhalb einer Document Type Definition können beliebige Kommentare eingefügt werden, um die Übersichtlichkeit und eine spätere Nachbearbeitung zu erleichtern.
Die Kommentare werden, analog zu HTML, delimitiert. Innerhalb eines Kommentars darf aus Kompatibilitätsgründen die Zeichenfolge »--« nicht vorkommen.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (33 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Der Text, der sich innerhalb der Kommentardefinition befindet, wird vom Parser nicht weiter ausgewertet, daher ist auch die Verwendung von Markups problemlos möglich. Der Parser kann allerdings optional eine Möglichkeit zur Darstellung der Kommentarzeilen bereitstellen.
3.4.4 Element Definition Das Element ist der wichtigste Bestandteil einer DTD. Es legt fest welche Markup-Befehle verwendet werden dürfen. Die Definition eines neuen Tag wird mit dem Stichwort ELEMENT gefolgt von einem Leerzeichen eingeleitet. Elementnamen Ein Elementname muss mindestens mit einem Buchstaben beginnen, zusätzlich kann er aber auch Zahlen enthalten. Außerdem sind einige weitere Interpunktionszeichen zulässig (".", "-", "_" und ":"). Sonst sind der Wahl des Elementnamens keine Grenzen insbesondere nicht der Länge gesetzt. Sie dürfen allerdings keinen Elementnamen in einer DTD doppelt verwenden. Namen, die mit der Zeichenkette "xml" beginnen, sollten im Hinblick auf kommende Entwicklungen keine Verwendung finden. Beispiele für mögliche gültige Elementnamen: "i" "Artikel:B-5000" "Auch_laengere_Elementnamen_sind_kein_Problem" Der Doppelpunkt kann zwar innerhalb eines gültigen Namens eingesetzt werden, die Spezifikation sieht ihn aber schon heute als Trennzeichen beispielsweise für Namensräume vor. Das bedeutet, dass das Zeichen in Zukunft eine andere Verwendung finden kann und bestehende Dokumente dann aktualisiert werden müssten. Semantische Tags XML setzt konsequent auf die Benutzung der so genannten semantischen Tags. In HTML ist es üblich physische Auszeichnungen wie (für »bold« = fett) oder (für den Titel) einzusetzen. Diese Tags machen durch ihren Namen deutlich, dass sie Formatierungshinweise oder Strukturelemente kennzeichnen. Semantische Tags wie enthalten Bezeichnungen, die etwas über den Inhalt des Dokuments aussagen. Sie dienen weniger der Darstellung oder der Dokumentstruktur, sondern der späteren Auswertung der Daten nach inhaltlichen also semantischen Gesichtspunkten. Inhalt eines Elements Elemente dienen dazu, dass mit ihrer Hilfe Text ausgezeichnet wird. Das geschieht durch die Umschließung mit einem Start-Tag und einem Schluss-Tag des Elements. Da diese Elemente einen Inhalt (den Text oder engl. »content«) haben, nennt man sie auch »Container«. 01.01.1999 In der DTD kann definiert werden, wie der Inhalt zwischen den beiden Markups gestaltet sein kann. Mithilfe des Schlüsselworts #PCDATA wird angegeben, dass der Inhalt des Elements aus beliebigen Zeichenfolgen bestehen darf. Um diese Eingaben noch genauer spezifizieren zu können, gibt es eine komplexere Deklaration für Elemente: Innerhalb der Klammern werden die möglichen Eingaben getrennt durch einen Balken angegeben. Hier sind für das Element entscheidung die Eingaben "ja", "nein", "j" und "n" möglich und gültig. Man kann diese Definition auch mit dem #PCDATA Schlüsselwort vermischen. Neben dem Inhalt "ja" oder "nein" ist jetzt auch jeder beliebige andere Text möglich. Leere Elemente Mit leeren Elementen sind Markup-Befehle gemeint, die für sich alleine stehen können und in die kein Text eingebunden ist. In HTML kennen wir beispielsweise das IMG-Tag, mit dem externe Bilder in das Dokument eingebunden werden. Alle
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (34 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
HTML-Befehle, die kein abschließendes Tag benötigen sind solche »leeren Elemente«. Im Gegensatz zu Elementen mit Inhalt wendet man auf leere Elemente den Begriff »Container« folglich nicht an. In XML muss die Schreibweise dieser leeren Markups etwas anders lauten. Zwei Schreibweisen sind alternativ zulässig. Entweder beendet man den Befehl ordnungsgemäß mit einem regulären Schluss-Tag oder man beendet das Start-Tag nicht wie üblich mit einem Größerzeichen, sondern mit der Zeichenfolge "/>". Element-Gruppen In den meisten Fällen besteht der Inhalt eines Elements nicht einfach nur aus Text, sondern weitere Markup-Befehle tauchen innerhalb eines äußeren Elements wieder auf. Das heißt der Inhalt eines Elements besteht aus weiteren Inhalten. Um eine Struktur festzulegen, muss man definieren welche Elemente innerhalb von anderen eingesetzt werden dürfen. Beispielsweise darf innerhalb des HTML-Markups kein oder -Befehl auftauchen, statt dessen erwartet man dort vielleicht ein oder -Tag. Um anzugeben welche Tags beispielsweise innerhalb von auftauchen dürfen - und in diesem Fall müssen - werden die einzelnen Elemente in Klammern nach dem übergeordneten Element angegeben: nachname (#PCDATA)> strasse (#PCDATA)> plz (#PCDATA)> ort (#PCDATA)> adresse (vorname, nachname, strasse, plz, ort)>
Auf das zugehörige XML-Dokument angewendet muss eine vollständige Angabe der Adresse also alle angegebenen Elemente enthalten:
Abb. 3.39: Die einzelnen Elemente als Baumstruktur dargestellt. Die Angabe der Elemente des Inhalts durch Kommata getrennt, legt nicht nur fest welche Elemente sich innerhalb des Markups
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (35 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
befinden dürfen, sondern auch in welcher Reihenfolge diese erscheinen müssen. Alternative Elemente
Um eine Unterscheidung zwischen Postfachadressen und Straßenadressen zu machen, könnte man entweder eine Angabe von oder von zulassen. Um diese Auswahlmöglichkeit zu bieten, gibt man beiden Alternativen in Klammern und mit einem Strich verbunden an. Es muss und darf also lediglich eins der beiden Elemente vorhanden sein. Die Verbindung einzelner Elemente mit einem Balken (»|«) bedeutet eine restriktive logische ODER-Verknüpfung. Das heißt nur eins der Elemente darf ausgewählt werden. Optionale Elemente
In den vorangegangenen Beispielen war es so, dass alle angegebenen Elemente zwingend erforderlich waren. In der Praxis ist es aber wahrscheinlicher, dass Sie nur vorgeben möchten welche Elemente optional enthalten sein können. Bei der Definition von HTML-Befehlen mithilfe einer DTD beispielsweise sind die meisten Elemente nicht zwingend erforderlich, sondern optional anzuwenden. Nur in welchem Kontext sie stehen müssen, ist zwingend vorgegeben. Um diese optionale Wahl zu kennzeichnen, wird dem entsprechend alternativen Element ein Fragezeichen angehängt. Das bedeutet, das Element kann entweder vorhanden sein oder darf genau einmal auftreten. In unserem Beispiel sind bis auf den zwingend erforderlichen Nachnamen alle anderen Angaben optional und können alternativ weggelassen werden. Listen Ein XML-Dokument wird in der Regel nicht nur aus einer Adresse, sondern aus beliebig vielen Adressen bestehen. Um das umschließende Element, das die gesamte Adressenliste kennzeichnet, zu definieren, müssen wir angeben, welche Elemente sich in der Liste befinden dürfen. Beliebig viele Elemente
Wir greifen hier also auf die zuvor deklarierte Definition der Adresse zurück und setzen diese in die Definition der Liste ein. Mit dem Beispiel haben wir festgelegt, dass ein -Element beinhalten muss. Allerdings bestehen die meisten Listen aus mehreren Adressen, dieses müssen wir noch festlegen. Das Sternchen hinter der Klammer bedeutet, dass die Liste beliebig viele Elemente des Typs enthalten darf. Die Liste darf sogar ganz leer sein. ... ...
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (36 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Mindestens ein Element
Möchten wir erzwingen, dass die Adresse beliebig viele, aber mindestens ein Element enthalten muss, kann das über ein angehängtes Pluszeichen erreicht werden. In der Kombination der vorangegangenen Funktionen könnte man die Struktur eines Buches betrachten. Es besteht aus einer Reihe von Kapiteln, wobei es schon mindestens ein Kapitel sein sollte. Neben Kapiteln erfolgt eine weitere Untergliederung in beliebig viele Absätze: Um in unserem obigen Beispiel zuzulassen, dass eine Person aus dem Adressenregister mehrere Vornamen erhalten darf, können wir dieses Element mit einem Sternchen versehen. Gemischter Inhalt Der Inhalt eines Elements besteht nicht nur aus Text oder weiteren Elementen, sondern er kann auch aus beiden Bestandteilen zugleich bestehen. In diesem Fall spricht man von gemischtem Inhalt. Als Beispiel nehmen wir uns den HTML-Befehl heran. Dieser kann sowohl direkte Texteingaben, aber auch eine Vielzahl von Elementen enthalten. Die Anzahl der möglichen Elemente haben wir hier aus verständlichen Gründen etwas verkürzt. Aber das Prinzip des gemischten Inhalt wird deutlich. Hier steht Text ohne jede Formatierung ... und hier eine Überschrift 1. Ordung Element-Deklarationen mit gemischtem Inhalt müssen grundsätzlich mit der Angabe des Schlüsselworts #PCDATA beginnen und erst dann dürfen die weiteren einzelnen Elemente aufgezählt werden. Außerdem müssen die einzelnen Elemente mit einer restriktiven ODER-Verknüpfung (»|«) verbunden sein und mit einem Sternchen geschlossen werden. Falsche Deklarationen: Die Unterscheidung des Inhalts nach Daten, Elementen und gemischtem Inhalt ist insbesondere deshalb wichtig, da für gemischte Inhalte eine Ausnahme gilt. Für Elemente gemischten Inhalts kann die Reihenfolge der untergeordneten Inhalte nicht festgelegt werden. Lediglich welche Elemente enthalten sein dürfen wird definiert. Da diese Unterscheidung auch bei Elementen mit Textinhalt nicht festgelegt werden kann, wird die Bezeichnung gemischter Inhalt (mixed content) eigentlich (ganz korrekt) auch für diesen Datentyp angewendet. Eine kleine Übersicht über die Möglichkeiten die Elemente zu definieren, die innerhalb eines Elements als Inhalt auftauchen dürfen, gibt die folgende Tabelle: Zeichen
Bedeutung
()
Ein oder mehrere Inhaltstypen werden immer in Klammern gesetzt. Auch innerhalb der Klammern lassen sich weitere Gruppen in Klammern setzen.
,
Einzelne mit einem Komma verbundene Typen sind mit der logischen Vernüpfung UND verbunden und sind alle erforderlich.
|
Einzelne mit einem Strich verbundene Typen, sind mit der logischen Verknüpfung ODER miteinander verbunden und sind optional einzusetzen.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (37 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
?
Das Fragezeichen hinter einer Elementbezeichnung definiert ein optionales Element. Alternativ kann auf das Element verzichtet werden.
*
Ein Sternchen deutet an, dass beliebig viele Elemente, also auch Null, eingefügt werden dürfen.
+
Das Pluszeichen bedeutet, dass beliebig viele Elemente größer Null, eingefügt werden dürfen.
Zwei Schlüsselwörter erweitern die Möglichkeiten, die Inhalte eines Elements festzulegen. Mit ANY werden alle Inhalte innerhalb eines Elements, also sowohl Text als auch beliebige Elemente, zugelassen. Mit dem reservierten Namen EMPTY werden leere Elemente, also Elemente ohne Inhalt, gekennzeichnet. Ein Beispiel für ein solches Element mit beliebigem Inhalt ist das Markup
, das einen Absatz markiert.
Das -Tag zum Einfügen von Grafiken in eine Website ist ein typisches Beispiel für ein leeres Element. Beachten Sie, dass leere Elemente in XML anders als in HTML besonders gekennzeichnet sind, um sie von einem einfachen Start-Tag zu unterscheiden.
3.4.5 Attribut Definition Elemente können durch Attribute weitere Optionen enthalten. So enthalten beispielsweise viele HTML-Tags Attribute, die die Ausrichtung des Elements bestimmen. Eine allgemeine Attribut-Deklaration besteht aus dem Schlüsselwort ATTLIST, dem Elementnamen, dem das Attribut zugeordnet werden soll, dem Namen des Attributs und dem Wertetyp. Man unterscheidet zwischen drei verschiedenen Attributtypen, die wir im folgenden Abschnitt erläutern werden: ● Zeichenketten ● Aufzählungen ● Schlüsselwörter (»Token«) Treten im Wert eines Attributs Entitiy-Abkürzungen auf, so ersetzt der Parser die Entities durch den deklarierten Ersetzungstext und gibt den kompletten Attributwert erst dann an die Anwendung weiter. Required / Implied Zusätzlich zum Datentyp lässt sich über den reservierten Namen #REQUIRED (erforderlich) noch ergänzen, ob die Angabe eines Attributs zwingend erforderlich ist. Wird #IMPLIED (impliziert) angegeben, dann muss ein Wert nicht unbedingt angegeben werden. Eventuell wird das Anwendungsprogramm, sofern nicht angegeben, einen Wert für dieses Attribut ermitteln. Beispielsweise lassen sich bei einer übermittelten Grafik Breite und Höhe des Bildes aus den Bilddaten erkennen, sie können, müssen aber nicht zusätzlich angegeben werden. Im Beispiel ist eine Angabe des Typs der Telefonnummer unbedingt erforderlich:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (38 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
Ein »empfohlenes« aber nicht unbedingt anzugebendes Attribut: In HTML ist die Benutzung von Anführungszeichen für die Kennzeichnung von Werten meist reine Nebensache. Man kann sie einsetzen, wenn nicht führt das aber auch zu keinen Problemen. XML verhält sich in diesem Punkt etwas strenger: Der Wert eines Attributs muss immer in Anführungszeichen stehen! Vorgabewerte Jedem Attribut kann per Definition ein Wert vorgegeben werden (default), den das Attribut annimmt, wenn kein anderer Wert angegeben ist. Ein Vorgabewert kann auch mit dem Schlüsselwort #FIXED zu einem »festen« Vorgabewert gemacht werden. In diesem Fall kann das Attribut keinen anderen Wert annehmen. Wird ein Wert zugewiesen, so muss dieser mit dem Vorgabewert übereinstimmen. Aber auch in dem Fall, dass dem Attribut kein Wert zugewiesen wird, erhält es den Vorgabewert. Zeichenketten (CDATA) Wir kennen schon aus der Definition eines Elements den Datentype #PCDATA. Dieses reservierte Wort ist die Abkürzung für »parsed character data«, also vom Parser analysierte und weiterzuverarbeitende Daten. Das Gegenstück zu #PCDATA ist der CDATA-Typ (»character data«). Mit ihm werden Daten deklariert, die vom Parser nicht weiterverarbeitet werden, sondern direkt und ohne Änderung die Applikation erreichen. Parsed character data setzt man ein, wenn Daten Markup-Befehle enthalten, die vom Parser umgesetzt werden sollen. Für die Werte von Attributen macht es wenig Sinn, diese mit Markups zu versehen und vom Parser bearbeiten zu lassen. Daher verwendet man zur Deklaration immer den Typ CDATA für Attribute, die eine beliebige Zeichenkette als Wert enthalten dürfen..
Aufzählung Neben der Eingabe von beliebigen Textdaten als Wert für ein Attribut, lassen sich auch eine Reihe von Werten (eine Aufzählung) vorgeben aus denen ein Wert auszuwählen ist. Typische Beispiele aus HTML sind die Angaben für die Ausrichtung: hier lässt sich zwischen "left", "middle" und "right" wählen. In unserem Beispiel erstellen wir für eine Adresse ein Attribut, das aussagt, ob es sich um eine private Adresse handelt oder nicht. Eingesetzt in das XML-Dokument, muss der Wert des Attributs natürlich in Anführungszeichen angegeben werden. In diesem Fall ist ein gültiger Wert für das Attribut nur "ja" oder "nein". Groß- und Kleinschreibung wird auch hier unterschieden. Für den Fall, dass das Attribut in die XML-Datei gar nicht angegeben wird, kann man eine Voreinstellung (»default«-Wert) file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (39 von 56) [12.02.2001 16:44:19]
Kapitel 3 Einführung XML
vornehmen. Die gewünschte Auswahl wird in Anführungszeichen an die Deklaration angefügt. Schlüsselwörter Es existieren mehrere Attribut-Typen, die zusammengefasst als »tokenized types« bezeichnet werden. Diese Typen besitzen die reservierten Namen: ENTITY ID IDREF NMTOKEN NOTATION
(ENTITIES) (IDREFS) (NMTOKENS) (NOTATIONS)
Bis auf das erste Schlüsselwort "ID" existiert also von allen weiteren Typen auch der Plural. Dieser findet immer dann Verwendung, wenn einem Attribut gleichzeitig mehrere Werte eines Typs übergeben werden sollen. ● ID Für jedes Element eines Dokuments kann ein ID-Attribut angegeben werden, um eine eindeutige Bezeichnung dieses Elements zu erzeugen. Das kann insbesondere dann wichtig sein, wenn man mit einer Script-Sprache auf ein bestimmtes Element der Seite zugreifen möchte. Jede ID darf demzufolge nur einmal existieren. Sollten in einem XML-Dokument zwei Elemente mit gleicher ID auftreten, so tritt ein Fehler auf.
●
Im Element adresse wird ein Attribut Namens id und mit dem Typ ID angelegt. IDREF Mit der ID Referenz (IDREF) verweist man auf die ID eines anderen Elements. Auf diese Weise lassen sich Verknüpfungen von Daten innerhalb eines Dokuments realisieren. Sollte zur angegebenen Referenz kein Element existieren, das diesen Wert in seiner ID enthält, dann zeigt der Parser einen Fehler an. Über die Verknüpfungen zwischen verschiedenen Elementen könnte man im Beispiel die verwandtschaftlichen Beziehungen innerhalb einer Adressendatei speichern. Über die Pluralform IDREFS kann gleichzeitig eine ganze Liste von Verknüpfungen in einem Wert übergeben werden. Die einzelnen Verknüpfungen werden durch Leerzeichen voneinander getrennt. ...
●
ENTITY Möchte man eine Datenquelle als externes Entity einbinden, so kann man die Abkürzung des Entity nicht einfach direkt in den Quellcode eingeben. Das Entity muss immer als Wert eines Attributs übergeben werden. Dieses Attribut ist vom Typ ENTITY.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (40 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Zunächst wird das Entity und das Attribut quelle des Elements bild definiert. Das Entity wird dann im XML-Dokument dem Attribut als Wert übergeben.
●
●
Auch in diesem Fall dient die Pluralform ENTITIES zur Übergabe mehrerer Entity-Namen getrennt durch Leerzeichen. NMTOKEN Ein CDATA-Abschnitt kann jede beliebige Art von Daten annehmen. Sonderzeichen und nicht darstellbare Zeichen sind ebenso zugelassen wie gewöhnlicher Text. Ähnlich verhält es sich mit dem Attribut-Typ NMTOKEN. Ein Attribut des Typs NMTOKEN kann auch eine Vielzahl verschiedener Zeichen aufnehmen, mit der einzigen Ausnahme, dass für die Auswahl der Zeichen die allgemeinen Namenskonventionen gelten. Das heißt der Wert des Attributs kann nur eine Zeichenkette enthalten, die gleichzeitig einen gültigen Element-Namen darstellt. Mithilfe der Pluralform NMTOKENS lassen sich mehrere Namen getrennt mit Leerzeichen als Wert übergeben. NOTATION Möchte man den Wert einer Notation in einem Attribut übergeben, so steht hierfür der Wertetyp NOTATION zur Verfügung. Notationen werden immer dann eingesetzt, wenn der Datentyp eines externen Entity zu definieren ist. Beispielsweise sind "GIF", "JPEG" oder "EPS" gültige Bezeichnungen für eine Notation. In der Notation definieren wir einen Typ "gif" und einen Pfad zur Anwendung, mit denen unser Bild angezeigt werden kann. Im XML Dokument wird dann dieser definierte Typ als Wert des Attributs übergeben: Beachten Sie, dass in unserem Beispiel die Bilddaten selbst noch nicht mit übergeben wurden. Diese Übergabe muss über ein weiteres Attribut erfolgen. Auch die Pluralform ist in diesem Fall mit NOTATIONS definiert. Mehrere Notationen können mit Leerzeichen getrennt angegeben werden.
3.4.6 Datentyp Notation In der Notation werden Datenformate definiert auf die bei der Anzeige oder Verarbeitung von binären Daten verwiesen werden kann. In der Notation ist festgelegt, mit welcher Anwendung externe Daten, die nicht zur Verarbeitung mit dem Parser bestimmt sind, behandelt werden sollen. Eine Notation könnte festlegen, was die Anwendung mit Daten beispielsweise der folgenden Formate anfangen soll: ● Grafik ● (GIF, BMP, JPEG, etc.) ● Sound ● (WAV, MID, etc.) ● Video ● (AVI, MPEG, etc.) ● Texte ● (PDF, HTML, TXT, etc.) Diese Formate werden in der Datentype Notation innerhalb der DTD deklariert. Hier einige Beispiele wie die Deklaration zu verwenden ist: htm PUBLIC "-//W3C//DTD HTML 3.2//EN"> gif87a SYSTEM "GIF"> doc SYSTEM "winword.exe"> xls SYSTEM "Microsoft Excel 9.0">
Neben der Option SYSTEM für Zugriffe auf Hilfsapplikationen, die über eine URL zugewiesen werden, kann für öffentlich file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (41 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
zugängliche Definitionen auch PUBLIC als Schlüsselwort gewählt werden. Das Problem bei der Verwendung von Notationen ist zurzeit noch, dass die Struktur des übergebenen Wertes noch nicht standardisiert ist. Sie können also vom Programmnamen bis zum URL-Pfad alle möglichen Informationen angeben. Was dann daraus gemacht wird und wie die Werte interpretiert werden ist einzig Sache der Anwendung. So lange diese wichtige Schnittstelle noch nicht genormt ist, ist die Verwendung der Notation immer abhängig von der zugehörigen Applikation.
3.4.7 Bedingte Abschnitte Manchmal kann es notwendig sein bestimmte Abschnitte einer DTD vom Parsing auszuklammern. Für diesen Fall können so genannte bedingte Abschnitte (conditional sections) in eine DTD eingebaut werden. Allerdings lassen sich bedingte Abschnitte ausschließlich in externen und nicht in internen Document Type Definitions einrichten. Wird ein Abschnitt mit dem Schlüsselwort IGNORE gekennzeichnet, so werden diese Zeilen einfach ignoriert und nicht vom Parser verarbeitet. ]]> Das Gegenstück zu IGNORE lautet INCLUDE. Ein mit INCLUDE eingeleiteter Abschnitt wird bei der Verarbeitung berücksichtigt. ]]> Ein Beispiel für den Einsatz solcher bedingten Abschnitte, ist das Einfügen von Kommentaren in ein Dokument. In einem Fall möchten Sie diese vielleicht bei der Ausgabe mit berücksichtigen und später bei der endgültigen Präsentation der Daten sollen diese Kommentare wieder verschwinden. Nun wäre es äußerst unpraktisch, wenn Sie jedesmal das gesamte Dokument durchgehen und alle INCLUDE-Abschnitte in INGNORE-Anweisungen umwandeln müssten. Für diesen Fall gibt es eine etwas elegantere Lösung indem man Parameter-Entities einsetzt. Externe DTD »dokument.dtd« In einer externen DTD werden die Abschnitte statt mit den Anweisungen mithilfe von zwei Parameter-Entities markiert. Diesen Entities werden dann die gewünschten Werte INCLUDE und IGNORE zugewiesen. ]]> ]]> Wird diese DTD angewendet, so wird der komplette Text inklusive der Kommentare ausgegeben. Der zweite Abschnitt, der dafür sorgt, dass die Kommentare wegfallen, wird aufgrund des Attributs IGNORE vom Parser übergangen. Möchte man später zu dieser Ausgabemöglichkeit greifen, muss man keine Zeile der externen DTD ändern, sondern man führt diese Änderungen einfach in der internen DTD durch. Man tauscht also die Werte IGNORE und INCLUDE aus und erhält damit die gewünschte Ausgabeform. Dabei macht man sich die Tatsache zunutze, dass Definitionen von Entities in einer internen DTD immer die gleichlautenden Definitionen in der externen DTD überschreiben. ]> file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (42 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
3.4.8 Besondere Attribute Leerraum Leerzeichen oder Leerraum (engl. White Space) ist sehr einfacher Inhalt eines Dokuments. Dennoch kann er gerade, wenn Sie mithilfe von Leerzeichen etwas »Übersicht« in Ihr Dokument gebracht haben, von nicht unerheblicher Bedeutung sein. Zu Definition des Leerraums gehören insgesamt vier unsichtbare und unscheinbare, aber wichtige Zeichen: ● Leerzeichen ● Wagenrücklauf ● Zeilenvorschub ● Tabulator Die Behandlung von Leerraum ist in XML genauso schonungslos wie in HTML. Jede Stelle, an der mehr als ein Leerzeichen vorkommt, wird von überschüssigen Leerzeichen befreit und erst dann vom Parser weitergegeben. Manchmal kann es notwendig sein wichtigen Leerraum so zu erhalten wie er eingegeben wurde. Diesen wichtigen Leerraum bezeichnet man als signifikant. Um dem Parser mitzuteilen wann Leerraum signifikant und wann insignifikant ist, deklarieren Sie ein neues Attribut des Typs: xml:space Das Attribut kann die Werte »default« und »preserve« annehmen. Der voreingestellte Wert, also die oben beschriebene Vorgehensweise lässt sich über das Schlüsselwort »default« erreichen. Soll signifikanter White Space gerettet und erhalten werden, wählen Sie »preserved«. Auf das folgende Beispiel angewandt, ergibt sich eine Ausgabe, in der Leerzeichen innerhalb des -Markups erhalten bleiben. Wort Wort Wort Wort Identifikation der Sprache Das Attribut xml:lang wird eingesetzt, um die verwendete Sprache eines Dokuments oder eines Abschnitts und der Attribute eines Elements zu definieren. xml:lang Ähnlich wie xml:space wird auch xml:lang als Attribut definiert. Gültige Werte für das Attribut enthält der NMTOKEN-Typ. Die voreingestellten Werte können überschrieben werden und bei jedem Aufruf des Attributs verändert werden:
Englisch
Englisch (USA) Englisch (United Kingdom) Deutsch Deutsch (Deutschland) Deutsch (Schweiz)
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (43 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Eine Übersicht über die verwendeten Sprachencodes finden Sie im Anhang unter der Norm ISO 639.
3.5 XML Beschreibung Nachdem Sie im vorangegangenen Abschnitt erfahren haben, wie man eine Document Type Definition deklariert, erläutern wir nun wie die definierten Markups in einem XML-Dokument eingesetzt werden können. Wir wenden uns jetzt also von der DTD ab zum eigentlichen XML-Dokument.
3.5.1 Entity-Referenzen Wird innerhalb des XML-Dokuments auf in der DTD deklarierte Entities verwiesen, so spricht man von einer Entity-Referenz. Das Einfügen von analysierten Entities in den Quelltext haben wir schon erwähnt. Die Entity-Bezeichnung wird mit einem kaufmännischen Und ("&") eingeleitet und mit einem Semikolon (";")abgeschlossen. Etwas aufwendiger ist das Einfügen von nicht-analysierten Entities in den Quelltext. Diese werden in der Regel eingesetzt, um beispielsweise Grafiken in das Dokument einzufügen. Eine Grafik in HTML lässt sich vergleichsweise einfach einfügen: Nicht-analysierte Entities dürfen nicht einfach in den Text eingefügt werden. Sie benötigen ein Element, dem sie als Wert eines Attribut mitgegeben werden Der Wertebereich des Attributs muss als ENTITY deklariert werden. Für das Element wurde das Attribut quelle vom Type ENTITY definiert. Im XML-Dokument wird das Entity logo als Wert übergeben. Dabei müssen nicht wie sonst üblich die Zeichen »&« und »;« angegeben werden.
3.5.2 Elemente Dieser Abschnitt behandelt zunächst den Einsatz von Elementen innerhalb eines XML-Dokuments. Die benutzen Markups müssen aber vorher in einer zugehörigen DTD definiert werden, darüber klärt Sie dann der Abschnitt über die Erstellung einer eigenen Document Type Definition auf.
Abb. 3.40: Ein Element besteht aus Start- und End-Tag, die den Inhalt umschließen. Die korrekte Definition eines Elements ist also das Zusammenspiel zwischen Start- und End-Tag und dem eingeschlossenen Inhalt. Die in HTML noch übliche Gleichsetzung von Tag und Element ist also nicht richtig und sollte gerade in XML auseinandergehalten werden. Als Ausnahme existieren auch Elemente ohne Inhalt.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (44 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Abb. 3.41: Korrekte Verschachtelung von Elementen Falsche Verschachtelung von Elementen Eine falsche Verschachtelung von Elementen liegt vor, wenn ein äußeres Tag noch vor dem inneren Tag geschlossen wird. Korrekte Verschachtelung von Elementen Bei richtiger Verschachtelung der Elemente ergibt sich eine hierarchische Baumstruktur der einzelnen Elemente. Zur richtigen Verschachtelung gehört auch, dass ein äußeres Wurzelelement existiert, dass alle inneren Elemente umschließt. Die richtige Verbindung der Elemente ist ein Kriterium für Wohlgeformtheit.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (45 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Abb. 3.42: Die meisten XML-Editoren, wie das Microsoft XML Notepad erzeugen automatisch wohlgeformten Quellcode.
3.5.3 Attribute Die Deklaration von Attributen in einer Document Type Definition haben wir in den vorangegangenen Abschnitten ausführlich erläutert. Jetzt geht es darum diese Attribute im XML-Dokument zu nutzen. Welchen Wert ein Attribut überhaupt enthalten darf, bestimmt in erster Linie der definierte Typ des Attributs. Attribut-Typ
Wertebereich
CDATA
Alle Zeichen
ID
Eindeutige Bezeichnung des einzelnen Elements.
IDREF
Verweis auf die ID eines Elements.
IDREFS
Verweis auf die IDs mehrerer Elemente.
ENTITY
Verweis auf ein Entity.
ENTITIES
Verweis auf mehrere Entities.
NMTOKEN
Gültige Namensbezeichnung.
NMTOKENS Mehrere gültige Namensbezeichnungen. Beispiele:
3.5.4 Stylesheets referenzieren Über eine Processing Instruction kann man dem Parser mitteilen, dass dem Dokument zusätzlich noch eine Stylesheet-Definition zugehört. Diese kann entweder vom Typ XSL oder CSS sein. Sie wird in jedem Fall innerhalb des Dokument referenziert: In dem Sonderfall, dass gleichzeitig ein XSL- und CSS-Stylesheet im XML-Dokument referenziert ist, wird automatisch das XSL-Stylesheet bevorzugt behandelt.
3.6 XML Data Island Dieser Abschnitt behandelt die Möglichkeiten, XML-Quellcode auch innerhalb eines HTML-Dokuments einzusetzen. Es besteht die Möglichkeit innerhalb des HTML-Codes eine so genannte XML Dateninsel anzulegen. Diese Dateninsel wird durch zwei umschließende XML-Tag markiert. Innerhalb der Dateninsel muss sich ein wohlgeformtes XML-Dokument befinden. Alle aus XML bekannten Funktionen wie Processing Instructions oder DOCTYPE Deklarationen sind zugelassen. Meier 12345 Alternativ muss der XML-Quellcode nicht intern im HTML-Dokument enthalten sein, sondern kann extern ausgelagert sein. In diesem Fall erfolgt lediglich ein Verweis auf das XML-Dokument:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (46 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Wichtig ist in jedem der beiden Alternativen, dass man dem XML-Element eine eindeutige ID zuweist. Mithilfe dieser ID kann man auf den Inhalt der Dateninsel zugreifen: adresse.documentNode.childNodes.item(1).nodeValue Aus diesem Aufruf erhält man beispielsweise das Element "12345" als Ergebnis.
3.7 XML-Dokumente im Browser anzeigen Der Zugriff auf XML-Datenquellen innerhalb eines HTML-Dokuments und der Anzeige im Browser erfolgt mithilfe von JavaScript-Befehlen. Der Browser muss dazu einen installierten Parser aufweisen. Von Microsoft wird ein XML-Parser als ActiveX-Objekt angeboten und lässt sich damit leicht in die Microsoft Internet Explorer 4.0 und 5.0 integrieren. Um auf ein XML-Dokument zugreifen zu können, muss zunächst im HTML-Dokument ein XML Document Object eingerichtet werden. Dieses wird mithilfe eines neuen ActiveX Objekts mit der Programm ID "microsoft.xmldom" erreicht. var xml = new ActiveXObject ("microsoft.xmldom"); Dem gesamten Dokument ist jetzt das Objekt xml zugewiesen worden. Die Variable xml, die als Inhalt das Dokumenten-Objekt enthält, ermöglicht uns erst den Zugriff auf die komplexe Datenstruktur des Dokuments. Nachdem das neue Objekt erstellt ist, kann auf die Daten zugegriffen werden, aber es können auch Veränderungen am Objekt durchgeführt werden. Dann muss als nächster Schritt das neue Objekt mit Inhalt gefüllt werden, dazu wird ein XML-Dokument geladen und gleich an das Objekt übergeben. Dabei sollte lediglich auf korrekte Schreibweise der URL geachtet werden. xml.load("MeinDokument.xml"); Um das Wurzelelement des XML-Dokuments herauszubekommen, wird die Eigenschaft »dcoumentNode« in einer neuen Variable gespeichert. var docRoot = xml.documentNode; Das vollständige JavaScript-Programm: var indent_array = new String (" "); var str = ""; var xml = new ActiveXObject("microsoft.xmldom"); xml.load ("pdcxml.xml"); var docroot = xml.documentNode; output_doc(docroot, 0); function output_doc(node, intents) { var i; if (node.nodeType == 0) // 0 ist die Element-Wurzel { document.all(results").insertAdjacentText ("BeforeEnd", indent_array.substring(0,(4 * indents)) + "" + "\n"); if (node.childNodes != null) { for (i = 0 ; i < node.childNodes.length ; i++) output_doc(node.childNodes.item(i), (indents + 1)); document.all ("results").insertAdjacenText file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (47 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
("BeforeEnd"), indent_array.substring(0, (4 * indents)) + "" + "\n"); } else if (node.nodeType == 1) { document.all("results").insertAdjacentText ("BeforeEnd", indent_array.substring(0, (4 * indents)) + "\"" + elem.text + "\"\n"); } else alert ("Unbekannter Element-Typ: " + node.node.Type); } Bei der Verwendung solcher Skripte ist es wichtig, dass der Browser mindestens JavaScript in der Version 1.2 unterstützt. Der untenstehenden Tabelle können Sie die JavaScript-Fähigkeiten der einzelnen Versionen entnehmen: Browser
JavaScript 1.0 JavaScript 1.1 JavaScript 1.2 JavaScript 1.3
NS Navigator 2.0 x NS Navigator 3.0 x
X
NS Navigator 4.0 x
X
x
NS Navigator 4.5 x
X
x
MSI Explorer 4.0 x
X
x
MSI Explorer 5.0 x
X
x
x
MSI Explorer 3.0 x
x
3.8 Erweiterte XML-Syntax 3.8.1 Hypertext Links Eine der wesentlichen Eigenschaften von Hypertext ist die Möglichkeit Verknüpfungen mit anderen Dokumenten oder Textstellen zu erstellen. Dieser wichtige Abschnitt taucht erst jetzt in diesem Buch auf, da die Erstellung und Deklaration von Links sich in XML wesentlich umfangreicher und flexibler verhält als in HTML und gewisse Grundkenntnisse in XML notwendig sind. In HTML lässt sich ein Hyperlink relativ schnell und unkompliziert einbinden: Link Bisher liegen diese Erweiterungen zu XML zwar erst im Entwurf vor. Aber die seit März 1998 im Umlauf befindlichen Vorschläge werden bestimmend für die Hyperlink-Fähigkeiten von XML sein. Die Hyperlink-Definition wird häufig auch als Extensible Linking Specification oder »XML Spezifikation Teil 2« benannt, da sie in Zukunft sicherlich voll in die XML-Definition einfließen wird. Allerdings kann man auch davon ausgehen, dass diese Entwürfe noch gewissen Änderungen unterliegen. Der XML-Standard ist zwar offiziell verabschiedet, bis jedoch alle nachgelagerten technologischen Erweiterungen den Status der offiziellen Verabschiedung erlangen werden noch einige Monate vergehen. Aktuelle Informationen über die Aktivitäten und Fortschritte der Linking-Sprache erhalten Sie im Internet unter: http://www.sil.org/sgml/xll.html http://www.w3.org/TR/WD-xml-link Aufgrund des geringen Funktionsumfangs und der eingeschränkten Flexibilität der HTML Hyperlinkfunktionen hat man diese nicht einfach übernommen, sondern sich an den Fähigkeiten von SGML orientiert. XML Linking Language (XLL)
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (48 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Es existieren zwei parallele Linking-Entwürfe (»Working Drafts«) für XML: ● Xlink Diese lassen sich noch einmal unterteilen in Links mit einfachem und erweitertem Funktionsumfang. Diese Unterteilung erleichtert die Handhabung und lässt zu, dass sich einfache Links ähnlich wie in HTML schnell und flexibel verwenden lassen. ❍ Einfache Xlinks Entsprechen ungefähr den Hyperlinkfähigkeiten von HTML. ❍ Erweiterte Xlinks Diese erweiterten Links können nicht nur auf ein Dokument sondern auf mehrere Quellen verweisen. Es lassen sich Links zu Daten einrichten, die selbst keine Linkfunktion unterstützen. Neu ist auch die Einrichtung von so genannten »bidirectionalen« Links, d.h. Links, die nicht nur vom Dokument zur Datenquelle verweisen, sondern auch in die andere Richtung von den Daten zum Dokument. ● Xpointer Sind noch wesentlich flexibler als erweiterte Links mit Xlink. Mit ihrer Hilfe kann man nicht nur auf Dokumente und Dokumententeile zugreifen, sondern auf einzelne Objekte der Seite. Mit Xpointer lassen sich exakte Bereiche eines XML-Dokuments beschränken. An beide Entwürfe sind Eve Maler (von ArborText) und Steve DeRose (von der Inso Cooperation) maßgeblich beteiligt. Grundlagen für die Entwicklung der Funktionsvielfalt der Linking-Befehle waren: ● HTML: Die dort eingesetzte Art der Adressierung einer Website (URL) wurde übernommen. ● HyTime: (HyperMedia/Time-based Structuring Language) Ermöglicht Adressdefinitionen und Spezifizierung verschiedener Datentypen. ● TEI P3: (Text Encoding Initiative Guidelines) Definiert eine formale Syntax, um auf einzelne Datenobjekte einer Seite sehr präzise zuzugreifen. Grundsätzlich sollte ein Hyperlink zumindest mit den folgenden Fähigkeiten oder Attributen ausgestattet sein: ● Automatisches Laden des Link oder Starten der Reaktion nur auf einen Mausklick des Anwenders. ● Eine Zeichenkette, die den Link beschreibt und eventuell auch als anklickbares Element dient. ● Befehle, die an den Browser weitergegeben werden, wie mit dem neu geladenen Dokument zu verfahren ist: ❍ Einsetzen des Inhalts in die aktuelle Seite. ❍ Ersetzen der aktuellen Seite. ❍ Die Seite in einer neuen Instanz des Browsers öffnen (neues Fenster). Terminologie Vorab einige Begriff, die in den offiziellen Vorschlägen zum Standard immer wieder auftauchen: Begriff
element tree
Link linking element Locator resource sub-resource
Bedeutung Repräsentiert die Struktur eines Dokuments. Alle Objekte einer Seite lassen sich in diese Baumstruktur einordnen und ermöglichen so den Zugriff auf einzelne Elemente, Inhalte und Attribute. Eine deklarierte Beziehung oder Verbindung zwischen zwei oder mehr Objekten. Das Element, das den Link beschreibt und damit den eigentlichen Hyperlink darstellt. Ein Attribut des Links, das angibt auf welche Quelle oder Quellen der Link verweist (Definition des Sprungziels). Eine Datenquelle, auf die ein Link gelegt werden kann. Möglicher Wert eines Sprungziels. Unterteilung der Datenquelle (resource) in weitere Gliederungen. Gibt sehr präzise das Ziel eines Link wieder.
Ein Link, den man gleichzeitig von der Sprungmarke und vom Sprungziel in beide Richtungen multidirectional link verfolgen kann. traversal
Die Aktion, die ausgelöst wird, sobald der Anwender den Link betätigt oder der Link automatisch ausgelöst wird. In der Regel erfolgt der direkte Zugriff auf die Datenquelle.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (49 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
out-of-line link
Ein Link, dessen Inhalt sich nicht direkt in der im Attribut übergebenen Adresse befindet, sondern der beispielsweise den Browser anweist an anderer Stelle nach den Links zu suchen. In der Regel setzt man solche Links ein, wenn eine Verknüpfung nicht nur mit einem sondern mit mehreren Datenquellen stattfindet.
Interne Verknüpfungen Eine erste Möglichkeit Elemente einer Seite miteinander zu verknüpfen haben Sie schon kennengelernt: Der Verweis über das IDREF-Attribut auf eine eindeutig festgelegte ID. Die Fähigkeiten dieser Funktion besteht allerdings eher daraus Beziehungen zwischen verschiedenen Objekten einer Seite herzustellen. Für eine vollständige Implementation eines Link fehlen noch wichtige Elemente. Xlink Einfache Links Die Möglichkeiten der einfachen Link-Funktion entsprechen nahezu denen, die uns auch ein HTML-Link bietet. Zur Unterscheidung zwischen »einfachen« und »erweiterten« Links wird der Wert "simple" als Attribut übergeben. Über das Attribut xlink:form wird angegeben, um welche Art von Link es sich handelt (erweitert oder einfach). Die Angabe eines Werts ist unbedingt erforderlich ("#REQUIRED"). Wenn Sie nur »einfache« Links zulassen möchten, können Sie den Wert des Attributs als "simple" fixieren. Link auf die Microsoft Homepage In einem weiteren Arbeitspapier zur XML-Linking Sprache wurde der Vorschlag aufgebracht, dass die Bezeichnung eines Links statt durch xml:link durch xlink:form zu erfolgen hat. Achten Sie also auf die aktuellen Veröffentlichungen des W3C. Wir verwenden hier die aktuelle Form, vielleicht taucht in dem einen oder anderen Dokument, das Sie im Internet finden, aber noch die alte Schreibweise auf. Die Adressangabe erfolgt in XML parallel zu HTML nach RFC 1738 in der Schreibweise einer URI (Uniform Resource Identifier). Also: http://www.domain.de/seite.htm Sollte die Seite unter der gleichen Adresse zu erreichen sein, wie das Hauptdokument aus dem der Link aufgerufen wird, reicht natürlich auch die Angabe der Seite aus: seite.htm Ähnlich wie in HTML lassen sich auch Verknüpfungen auf Teile eines Dokuments legen. Diese Verweise werden nach dem Doppelkreuz (»#«) angegeben. Der Unterschied zu HTML liegt hier in der Angabe dieser präzisen sub-resource. Denn der Datentyp eines solchen Sprungziels muss ein Xpointer sein. Taucht eine Bezeichnung nach dem Doppelkreuz auf, die kein Xpointer ist, so wird automatisch angenommen, dass es sich um den Attributwert einer Element-ID handelt. file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (50 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Link auf die Microsoft Homepage, Absatz 10 Die Möglichkeiten eines einfachen Link werden im Xlink Vorschlag kurz definiert: ● Der Link wird an einem seiner Verknüpfungsenden definiert. Also von der Definition des Link oder vom Sprungziel aus. ● Der Anwender kann die Verknüpfung nur von einem dieser beiden Enden verfolgen. ● Die Aktion, die durch den Link ausgelöst wird, wird in der Regel vom Browser gesteuert. Er bestimmt in welchem Fenster oder Frame das Dokument erscheint und verwaltet eine »Go-Back« Liste. Ein einfacher Link wird normalerweise im aktuellen Browserfenster angezeigt und ersetzt das vorhergehende Dokument. Eventuell bietet der Browser dem Anwender an, den Link in einem neuen Fenster zu öffnen. ● Der Link ruft direkt die verknüpfte Quelle auf. Auch der einfache Xlink darf schon eine ganze Reihe von weiteren Attributen enthalten. Zunächst eine komplette Auflistung der möglichen Attribute und darauf folgend eine Erläuterung zu den einzelnen Attributen und deren Verwendung:
#FIXED "simple" #REQUIRED
CDATA CDATA
(true|false)
#IMPLIED #IMPLIED "true"
Locator: ●
href Der Locator definiert über eine Zeichenkette eine Datenquelle als Sprungziel. Jeder Link muss mindestens eine solche Ressource definieren. Er enthält die Adressangabe des Link.
Link Semantics: ●
inline Das Attribut inline kann die Werte »wahr« (true) oder »falsch« (false) annehmen. Es gibt Auskunft darüber, ob es sich um einen inline-Link handelt (voreingestellter Wert) oder um einen »out-of-line«-Link. Ein inline-Link enthält die Spungadresse direkt im href-Attribut. Beim out-of-line-Link befindet sich die Adressangabe dagegen in einem im Linkelement eingeschlossenen Element.
Remote-Resources:
Die Informationen, die im Abschnitt Remote-Resources behandelt werden, sind in der Regel für die weiterverarbeitende Empfänger-Applikation gedacht. Beispielsweise könnte ein Browser diesen Wert verarbeiten und dem Anwender in Form von zusätzlichen Funktionen zur Verfügung stellen. ● role Optional wird der Software-Anwendung die Bedeutung und Funktion des Link mitgeteilt. Links können verschiedene Beziehungsgeflechte zwischen Daten-Objekten widerspiegeln. Um die Rolle eines Link im Dokument zu speichern und beispielweise mitzuteilen, dass es sich um eine Hintergrundinformation zum Thema handelt, kann dieses Attribut angewendet werden. Diese Option gilt allerdings nur für die erweiterten Links. Bei einfachen Links wird für das Attribut role automatisch ein Wert vorgegeben. Bei inline-Links ist dann Alternativ das Attribut content-role zu verwenden. file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (51 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML ●
title Der Titel eines Link gibt dem Anwender Auskunft über die Bedeutung und den Inhalt der Verknüpfung. Eine Applikation sollte diese Daten auslesen und dem Anwender als sichtbare Bezeichnung des Link zur Verfügung stellen.
●
Diese Option gilt nur für erweiterte Links. Bei einfachen Links wird für das Attribut title automatisch ein Wert vorgegeben. Bei inline-Links ist dann alternativ das Attribut content-title zu verwenden. show Über das Attribut show kann die Anwendung veranlasst werden das neu geöffnete Dokument im Browser auf bestimmte Art und Weise zu behandeln: embed Das Dokument wird in den Textkörper des vorhandenen XML-Dokuments eingefügt und zwar an der Stelle an der sich der Link befindet. replace Die neue Datenquelle ersetzt in der Zeit in der ein Link aktiv ist das aktuelle Dokument und tritt an dessen Stelle. Die vorherige Datenquelle wird abgelöst.
●
new Eine neue Instanz der Applikation, beispielsweise ein neues Browserfenster, wird geöffnet. Die neue Datenquelle wird in diesem Fenster unabhängig vom vorherigen Kontext angezeigt. actuate Bestimmt den Intervall der Aktualisierung der neuen Datenquelle. auto Die Datenquelle wird automatisch aktualisiert. Also sobald ein Link aktiviert wird, startet der Übertragungsprozess. Alle automatisch angeforderten Datenquellen werden in der Reihenfolge des Aufrufs übertragen.
●
user Der Anwender muss die Datenquelle manuell aktualisieren. Das heißt die Applikation sollte den Benutzer darauf hinweisen, dass eine externe Datenquelle geöffnet wird. Nur mit ausdrücklicher Zustimmung, beispielsweise über ein eingeblendetes Dialogfenster, wird die Datenquelle tatsächlich angefordert und geöffnet. behavior Neben den vorgegebenen Attributen zur Steuerung des Verhaltens der Anwendung mit der neu angeforderten Datenquelle, kann über behavior eine Zeichenkette übergeben werden, in der der Autor weitere nicht genormte Instruktionen zum Verhalten übermittelt.
Local-Resources:
Wurde der Link als inline-Link angelegt, so können weitere Angaben über die lokale Datenquelle gemacht werden. Einfache Links sind in der Regel immer als inline-Link definiert. Die beiden Attribute content-role und content-title ersetzen in inline-Links die Attribute role und title. ● content-role
●
Optional wird der Software-Anwendung die Bedeutung und Funktion des Link mitgeteilt. content-title Der Titel eines Link gibt dem Anwender Auskunft über die Bedeutung und den Inhalt der Verknüpfung. Eine Applikation sollte diese Daten auslesen und dem Anwender als sichtbare Bezeichnung des Link zur Verfügung stellen.
Als Beispiel für die Verwendung eines einfachen Link folgt jetzt die Definition eines HTML-ähnlichen Link unter Einsatz einiger oben genannter Optionen. CDATA CDATA (true|false) CDATA CDATA
#FIXED "simple" #REQUIRED "true" #IMPLIED #IMPLIED>
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (52 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
Infos über Bill Gates Erweiterte Links Die beeindruckendsten neuen Funktionen der erweiterten Links sind die Verbindung eines Link mit einer Vielzahl von Datenquellen, die alle gleichzeitig auf dem Bildschirm aktualisiert werden können. Um einen Link zum erweiterten Link zu klassifizieren muss zumindest das Attribut xlink:form den Wert "extended" erhalten. Ob Sie diesen Wert fest zuweisen, als Voreinstellung übergeben oder erst im Element festlegen bleibt dabei Ihnen überlassen: Jedes Element, das ein Attribut mit der Bezeichnung xlink:form enthält, wird vom Parser automatisch als Link vom Typ Xlink erkannt. Bisher haben Sie zwei Werte kennengelernt, die dem Attribut übergeben werden können. In der folgenden Tabelle finden Sie noch weitere Optionen. Wert
Bedeutung
"simple"
Einfacher Link.
"extended"
Link mit erweitertem Funktionsumfang.
"locator"
Das Kindelement eines erweiterten Link.
"group"
Eine Gruppe von erweiterten Links.
"document" Ein Dokument, das eine »group« enthält. Mithilfe des erweiterten Link ist es möglich eine Verknüpfung nicht nur mit einem Dokument, sondern mit mehreren Datenquellen zugleich aufzubauen. Gelöst wird dieses Feature indem ein Hauptelement (extended) und ein entsprechendes Kindelement (locator) definiert wird. extended Dieses Element enthält die äußere Definition des Link. In das Element werden die Kindelemente eingesetzt. locator In das Element extended werden beliebig viele Elemente des Typs locator eingesetzt. Diese Kindelemente enthalten die eigentlichen Links. Zunächst die Definition des äußeren Links extended und seine Attribute:
CDATA #FIXED "extended" (true|false) "true" CDATA #IMPLIED CDATA #IMPLIED CDATA #IMPLIED
Jetzt wird das Kindelement locator definiert, dieses enthält als Einziges ein href-Attribut zur Angabe der Link-Ressource:
CDATA #FIXED "locator" CDATA #REQUIRED CDATA #IMPLIED
Beide Elemente ineinander verschachtelt ergeben einen erweiterten Link:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (53 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
XPointer Xlink mit seinen einfachen und erweiterten Links bietet uns schon zahlreiche Möglichkeiten auf externe Dokumente zu verweisen und eine Website zu verknüpfen. Xpointer können aber noch präziser auf die Struktur des Dokuments reagieren und Verknüpfungen auf einzelne Elemente setzen. Es existieren verschiedene Möglichkeiten auf Elemente einer Seite zuzugreifen: Absolute Verweisausdrücke, relative Verweise und Verweise auf Attribute, Zeichenketten und Bereiche. ● Absolute Verweisausdrücke Die Suche wird anhand von vier Schlüsselwörtern gesteuert. ● root() Die Suche beginnt mit dem Wurzelelement eines Dokuments. ● origin() Die Suche beginnt an der Suche im Element von der aus der Link gelegt wurde. ● id(Wert) Beginnt mit der Suche in dem Element, das ein Attribut Namens ID mit dem angegebenen Wert enthält. ● html(Wert) Startet die Suche in dem Element, das ein Attribut Namens NAME enthält und das mit dem angegebenen Wert übereinstimmt.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (54 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML ●
●
● ●
relative Verweisausdrücke ❍ child Direkte Nachfahren der Verweisquelle wird gesucht. ❍ descendant Beliebige Nachfahren innerhalb der Verweisquelle werden gesucht. ❍ ancestor Vorfahren der Verweisquelle werden gesucht. ❍ preceding Beliebige Elemente, die sich vor der Verweisquelle befinden, werden gesucht. ❍ following Beliebige Elemente, die sich hinter der Verweisquelle befinden, werden gesucht. ❍ psibling Gesucht werden Geschwister der Verweisquelle (gleiches Elternelement), die sich vor der Verweisquelle befinden. ❍ fsibling Gesucht werden Geschwister der Verweisquelle (gleiches Elternelement), die sich hinter der Verweisquelle befinden. Argumente für relative Verweisausdrücke ❍ #element Identifiziert ein Element ❍ #pi Sucht nach einer Processing Instruction ❍ #comment Sucht nach einem Kommentar ❍ #text Sucht nach Zeichendaten ❍ #cdata Sucht nach Zeichendaten in CDATA-Abschnitten ❍ #all Durchsucht alle Elemente, die oben genannt wurden. Verweisausdrücke für Zeichenketten Verweisausdrücke für Bereiche
3.8.2 Namensräume Ein Problem mit Namensräumen folgt immer dann, wenn Dokumente zu erstellen sind, die Teile von anderen XML-Dokumenten einsetzen. In diesem Fall kann es dazu kommen, dass Namen doppelt vergeben sind, weil vielleicht mehrere Autoren an den Dokumenten gearbeitet haben. Wenn diese nicht koordiniert miteinander arbeiten oder fremde Dokumente genutzt werden, kann es leicht zu solchen Überschneidungen kommen. Immer dann, wenn gleiche Namen für Elemente verschiedenen Typs vergeben wurden, treten Probleme auf. Gerade im Hinblick auf die größere Verbreitung von öffentlich zugänglichen Dokumenten-Definitionen wird eine Lösung dieses Konflikts immer drängender. Zurzeit entsteht ein Entwurf des W3C, der diese Probleme lösen soll. Es geht dabei darum, für häufig vorkommende Elemente standardisierte Namen und Deklarationen zu vergeben. Beispielsweise könnte ein Element zur Preisauszeichnung in Online-Shops definiert werden und von weiteren Autoren weiterverwendet werden. Gerade für den Austausch von Daten wären solche einheitlichen Auszeichnungen von Vorteil. Man könnte dann beispielsweise einer Suchmaschine den Auftrag erteilen, ein bestimmtes Produkt zu einem niedrigen Preis zu suchen. Sollten sich alle Online-Shops an die gleiche Dokumenttyp-Deklaration halten, würde das kein Problem darstellen. Die Suchmaschine durchsucht die Artikelbezeichnungen nach dem gewünschten Produkt und findet im Preiselement den passenden Verkaufspreis.
Palm Pilot III 699 DM 7,80
Ein anfänglicher Vorschlag zur Lösung des »Namenproblems« sah vor, ein Bezeichnungsschema über die Processing Instruction einzubinden. Im Folgenden wird erst eine interne Namensdefinition geladen und dann ein externes Schema hinzugezogen:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (55 von 56) [12.02.2001 16:44:20]
Kapitel 3 Einführung XML
In der XML-Datei wird die Unterscheidung zwischen den Namen vorgenommen, indem der definierte Name für den Namespace mit einem Doppelpunkt dem Namen des Elements vorangestellt wird. Eine komplettes XML-Dokument könnte dann wie folgt aussehen: Palm Pilot III 3COM Deutschland 699 DM 7,80 Es gab allerdings bis heute noch keine Einigung auf einen einheitlichen Standard der Bezeichnung von Namensräumen. Man sollte aber mit Blick auf die Zukunft bei der Verwendung von Doppelpunkten in den eigenen Namensbezeichnern sparsam sein, sonst steht bei Verabschiedung des Standards eine größere Umstellung an.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap3.html (56 von 56) [12.02.2001 16:44:20]
Kapitel 4 Die vollständige XML-Referenz
Kapitel 4 Die vollständige XML-Referenz 4.1 Extended Backus-Naur Form (EBNF) 132 4.2 XML-Definition 132 4.3 Behandlung von Entities und Referenzen durch einen XML-Prozessor 151 4.4 Wohlgeformtheitsbeschränkung 152 4.5 Gültigkeit 153 4.6 Document Object Model 153
4.1 Extended Backus-Naur Form (EBNF) Die Definitionen der offiziellen XML-Referenz sind in der EBN-Form abgelegt. Eine EBNF-Definition besteht aus den folgenden Elementen: [Nummer] Bezeichnung ::= Definition Beispiel für die Definition eines Kommentars in der EBN-Form: [15] Comment ::= '' Ausdruck
Folgende Zeichen sind gültig ... ... alle Zeichen innerhalb des angegeben Intervalls.
[a-z]
... alle Zeichen außerhalb des angegebenen Intervalls.
[^a-z]
... alle Zeichen außer den genannten.
[*abc] "Zeichen" 'Zeichen'
... die angegebene Zeichenkette. ... die angegebene Zeichenkette.
Muster A? A B A | B
Kurz
Bedeutung
Optional
Die Benutzung des definierten Symbols ist optional.
UND
Die Symbole müssen in der genannten Reihenfolge vorkommen.
ODER
Entweder muss das Symbol A oder B eingesetzt werden.
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap4.html (1 von 20) [12.02.2001 16:44:30]
Kapitel 4 Die vollständige XML-Referenz
A - B A+ A*
OHNE
Das Symbol A mit der Ausnahme B muss eingesetzt werden.
Einfach oder mehrfaches
Das Symbol muss mindestens einmal, darf aber auch öfter vorkommen.
Gar nicht, einfach oder mehrfach
Das Symbol muss nicht vorkommen, darf aber auch einmal oder öfter auftauchen.
4.2 XML-Definition Die folgende XML-Referenz entspricht der Empfehlung des W3C vom 10. Februar 1998 zum offiziellen Standard der Extensible Markup Language Version 1.0. Die jeweils angegebenen Referenznummern entsprechen der jeweiligen Deklaration des Standards in der EBNF-Form. Im Zweifelsfalle kann man also diese Deklaration zu Rate ziehen.
4.2.1 Terminologie Die offizielle Deklaration der XML-Standards folgt einer ganz eigenen sprachlichen Terminologie. Eine Erläuterung dieser Terminologie ist selbst Bestandteil der Deklaration. Die einzelnen Fachbegriffe und ihre Erläuterungen finden Sie im folgenden Abschnitt: may (darf) Dokumente und XML-Prozessoren, die sich an die Spezifikationen halten, müssen sich nicht so verhalten wie beschrieben, können es aber. must (müssen/nicht dürfen) Konforme XML-Parser und Dokumente müssen sich so verhalten wie beschrieben (oder dürfen sich nicht so verhalten). error (Fehler) Ein Fehler tritt bei Verletzung der Spezifikation auf. Diesen leichten Fehler darf die Anwendung oder der Parser anzeigen, er muss aber nicht die Bearbeitung abbrechen. fatal error (kritischer Fehler) Ein XML-Prozessor muss diesen Fehler erkennen und dem Anwendungsprogramm melden. Sobald ein kritischer Fehler auftaucht, darf der Prozessor die normale Arbeit nicht fortsetzen. at user option (benutzeroptional) Die Anwendungs-Software muss dem Benutzer die Möglichkeit geben auf benutzeroptionale Ereignisse zu reagieren. Der Anwender entscheidet dann, welche Option ausgewählt wird. validity constraint (Gültigkeitsbeschränkung)
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap4.html (2 von 20) [12.02.2001 16:44:30]
Kapitel 4 Die vollständige XML-Referenz
Verletzungen der Gültigkeitsregeln sind Fehler. Diese müssen dem Prozessor gemeldet werden. Verletzungen der Gültigkeit sind allerdings nur leichte Fehler. well-formed constraint (Wohlgeformtheitsbeschränkung) Verletzungen der Wohlgeformtheit sind kritische Fehler und müssen zur sofortigen Reaktion des Parsers führen. Er darf seine normale Bearbeitung nicht weiterführen, sondern muss den kritischen Fehler behandeln. match (passen) Zeichenketten oder Namen:
Beim Vergleich von Zeichenketten oder Namen müssen beide identisch sein, um zu passen. Es wird keine Umwandlung zwischen Groß- und Kleinschreibung durchgeführt. Zeichenketten und Regeln der Grammatik:
Eine Zeichenkette passt zu einer grammatischen Regel, wenn er zur Sprache gehört, die durch die Produktion erzeugt wird. Inhalt und Inhaltsmodell:
Das Element passt zu einer Deklaration, wenn es laut den Gültigkeitsbeschränkungen als »gültiges Element« beschrieben wird. for compatibility (aus Kompatibilitätsgründen) Einige Eigenschaften von XML wurde nur aus dem Grund eingeführt, damit XML zu SGML kompatibel bleibt. for interoperability (zwecks Zusammenarbeit) Diese Empfehlung dient dazu, dass XML-Dokumente sich von existierenden SGML-Prozessoren verarbeiten lassen.
4.2.2 Dokumente Dokument Definition
Ein Datenobjekt ist dann ein Dokument, wenn es mindestens aus einem Prolog und einer Anzahl von Elemente besteht.
Hinweise
Es muss mindestens ein Wurzelelement vorhanden sein, dass alle anderen Elemente umschließt.
Schüsselwort Xml Referenz
[1]
Beispiele:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap4.html (3 von 20) [12.02.2001 16:44:30]
Kapitel 4 Die vollständige XML-Referenz
Hier steht der Text ... Zeichenbereich Definition
Gültige Zeichen für ein analysiertes Entity sind eine Folge von Zeichen gemäß ISO/IEC 10646.
Hinweise
Die Verwendung von Kompatibilitätszeichen sollte vermieden werden.
Referenz
[2]
Leerraum Definition
Leerraum (white space) besteht entweder aus einem Leerzeichen, Wagenrücklauf, Zeilenvorschub oder Tabulator.
Hinweise
Mehr als ein aus Leerraum bestehendes Zeichen hintereinander wird bei der Ausgabe in der Anwendung, wie bei HTML standardmäßig, auf maximal ein Zeichen gekürzt.
Referenz
[3]
Definition
Mithilfe des Attributs xml:space kann die Verarbeitung des so genannten Leerraums näher bestimmt werden.
Hinweise
Zur näheren Bestimmung der Verarbeitung übergeben Sie dem Attribut entweder den Wert default oder preserve.
Schlüsselwort xml:space Beispiele:
Definition
Übergeben Sie dem Attribut xml:space den Wert default, wenn Sie die Voreinstellung des Processors zur Verarbeitung von Leerzeichen verwenden möchten. In der Regel wird der XML-Prozessor dann wie oben beschrieben Leerräume entfernen.
Hinweise
Es bleibt dem Prozessor bei dieser Einstellung frei überlassen Leerräume darzustellen oder zu entfernen.
Schlüsselwort default Beispiele:
file:///C|/Eigene Dateien/Texte/E-Books/XML/Kap4.html (4 von 20) [12.02.2001 16:44:30]
Kapitel 4 Die vollständige XML-Referenz
Definition
Möchten Sie ähnlich wie mit dem HTML-Befehl Leerräume bewusst zur Darstellung und Gestaltung verwenden, dann setzen Sie den Wert preserve ein.
Hinweis
Diese Funktion wird beispielsweise verwendet, wenn Sie Programmquellcode darstellen möchten.
Schlüsselwort preserve Beispiele: Namen und Token Eine Name oder Token ist eine gültige Bezeichnung beispielsweise für ein Markup oder einen Attributnamen. Ein gültiger Name muss mit einem Buchstaben anfangen. Erlaubt Definition sind zusätzlich Interpunktionszeichen, Buchstaben, Ziffern, Unterstriche und Bindestriche. Hinweise
Die Buchstaben XML am Anfang eines Namens (in Klein- und Großbuchstaben), sowie die Verwendung des Doppelpunkts sollte möglichst vermieden werden.
Referenz
[4] bis [8]
Beispiele: Literale Ein Literal ist eine Zeichenkette, die in Anführungszeichen angegeben ist. In der Regel geben Literale den Wert eines Attributs wieder. Ein Literal darf sich nicht in den Definition gleichen Anführungszeichen befinden, die zur Begrenzung der Zeichenkette eingesetzt werden. Hinweise
Ein externer Bezeichner (SystemLiteral) kann auch analysiert werden, ohne nach einem Markup zu suchen.
Referenz
[9] bis [13]
Beispiele: