XML in der Entwicklung von Komponentensystemen
Martin v. Löwis
Prüfungstermine: 10.2, 11.2., 30.3., 31.3., 1.4.
Die Prüfungen finden in A-1.1 statt.
Mit der Sprache XML die Basissyntax für eine Familie von Sprachen gelegt,
die sich leicht definieren automatisch verarbeiten lassen. Aus diesem
Grund ersetzt XML in der Entwicklung von Komponentensystemen zunehmend
"traditionelle" Sprachen. In der Vorlesung werden zum einen die
Anwendungsgebiete (zusammen mit konkreten XML-Vokubularen), zum anderen
die Techniken zur Verarbeitung von XML vorgestellt.
Literatur
- Harold, Means: XML in a Nutshell, O'Reilly 2003
- van der Vlist: XML Schema, O'Reilly 2002
- Drake, Jones: Python & XML, O'Reilly 2001
- W3C: Extensible Markup Language (XML) 1.0,
W3C 2000
- W3C: XML Schema Specifications,
W3C
- Unicode Consortium:
Unicode
character database (Übersicht)
Vorlesungen
- Course Overview
- XML Syntax
- Document Types
- Character Sets
- Namespaces
- Parser Interfaces: SAX
- Parser Interfaces: DOM
- XPath
- XSLT
- Infoset
- XML Schema (Teil 1)
- XML Schema (Teil 2)
- XML Schema (Teil 3)
- Other Schema Languages
- XML-RPC
- SOAP
- WS Standards
- MOF Tutorial
- MOF Classes
- XMI Presentation
- XML Encryption
Übungsaufgaben
1. Aufgabe
Abgabetermin: 4. November
Punktzahl: 20
- Finden Sie 3 HTML-Dokumente auf einem
HPI-Webserver(*.hpi.uni-potsdam.de), die
kein well-formed XML sind. Geben Sie für jedes Dokument ein
Fragment an, welches die XML-Syntax verletzt, sowie die XML-
Syntaxregel, die verletzt wird.
- Finden Sie 2 Dokumente auf dem HPI-Webserver, die
zwar well-formed aber nicht valid XML sind. Geben Sie wiederum
ein Fragment des Dokuments an sowie das validity constraint,
welches von diesem Dokument verletzt wird.
- Definieren Sie einen Dokumenttyp,
der zur Beschreibung einer Menge von Studenten verwendet werden
kann, für die ihr Name, ihre Matrikelnummer sowie die Menge
der von ihnen besuchten Lehrveranstaltungen bekannt ist.
Bilden Sie weiterhin ein Dokument, dass diesem Typ entspricht.
2. Aufgabe
Abgabetermin: 18. November
Punktzahl: 20
Gegeben ist in allen Teilaufgaben die Datei
ad-2001-02-03.xml
die das XML-Modell für CWM (Common Warehouse Metamodel) definiert.
- Entwickeln Sie eine SAX-Anwendung (in einer Programmiersprache
Ihrer Wahl), die die Zahl aller Klassen (Element Model:Class) ermittelt.
- Entwickeln Sie eine SAX-Anwendung (evtl. in Erweiterung der
Lösung von Teil a), die den Namen der Klasse mit den meisten
Attributen (Member-Elemente Model:Attribute) ermittelt.
- Entwickeln Sie eine SAX-Anwendung, die für jede Klasse eines ausgewählten
Pakets (etwa Model:Package name="Instance") eine HTML-Seite generiert wird,
in der der Name der Klasse, die Namen der Basisklassen (referenziert
über supertypes=) sowie das
Attribut annotation aufgeführt wird; die Basisklassennamen
sollten Hyperlinks auf die Seiten der Basisklassen sein.
Abgabetermin: 3. Dezember
Punktzahl: 20
Lösen Sie die gleichen Teilaufgaben wie in Aufgabe 2, jedoch unter Verwendung einer DOM-Implementierung. Sollte die DOM-Implementierung die Auswertung von XPath-Ausdrücken unterstützen, können Sie davon Gebrauch machen; ansonsten sind nur Standard-DOM-Operationen erlaubt (Level 1 oder 2).
Achten Sie in Teilaufgabe c) darauf, keine ungültigen Links auf Basisklassen zu generieren (generieren Sie also lediglich den Klassennamen der Basisklasse, falls die HTML-Seite für die Basisklasse nicht ebenfalls im gleichen Generierungslauf erzeugt wird).
Abgabetermin: 17. Dezember
Punktzahl: 20
Lösen Sie die gleichen Teilaufgaben wie in Aufgabe 2, jedoch unter Verwendung von XSLT.
Verwenden Sie keine Prozessor-Erweiterungen, mit Ausnahme von Erweiterungen zur Ausgabe mehrerer Dateien.
Teilaufgabe c) wird wie folgt erweitert:
- Generieren Sie neben den Dateien für die einzelnen Klassen auch Indexdateien
- Generieren Sie in die Datei auch Angaben über jedes Attribut (Model:Attribute) und jede
Referenz (Model:Reference), etwa in tabellarischer Form. Geben Sie für jedes Attribut
und jede Referenz wenigstens den Namen, den Namen des Typs, sowie die Dokumentation
aus (sofern vorhanden).
- Integrieren Sie in das Stylesheet einen Betriebsmodus, in dem sämtliche Pakete
in HTML transformiert werden.
Für die dritte Aufgabe hat Kai Köhne seine Lösung als
Beispiellösung zur Verfügung gestellt.
Abgabetermin: 20. Januar
Puntzahl: 20
- Erläutern Sie die Begriffe schema component,
ur-type, particle, initial value,
normalized value, assessment,
strict assessment, lax assessment,
valid restriction sowie PSVI im Zusammenhang
mit XML Schema.
- Defineren Sie ein Schema für
ad-2001-02-03.xml. Schränken Sie
dieses Schema derart ein, dass
- nur Elemente und Attribute erlaubt sind, die in dem Dokument
auch auftreten,
- die Werte von xmi.id im gesamten Dokument eindeutig sein müssen,
- die Werte von supertypes sich nur auf definierte xmi.id-Werte
beziehen können,
- die Werte von Model:StructuralFeature.multiplicity auf geeignete
Weise nur aus positiven Zahlen und logischen Werten bestehen dürfen,
- die Attribute scope, visibility und isChangeable nur die im
Dokument verwendeten Werte annehmen können
- die Werte von supertypes nur Klassen und die Werte von type nur
sich nur auf Klassen oder Model:DataType-Elemente beziehen dürfen
Die Musterlösung für diese Aufgabe (entwickelt von Jan Karstens)
besteht aus zwei Teilen: den unqualifizierten Elementen
und den qualifizierten Elementen. Der letzte
Teil der Aufgabe ist unlösbar, da der key-Mechanismus es nicht erlaubt,
Forderungen an Listentypen zu stellen.
6. Aufgabe
Punktzahl: 0
Entwickeln Sie einen Klienten für den
Fortune Web Service
(Dokumentation).
Ermitteln Sie, welche SOAP-Nachrichten ausgetauscht werden, und vergleichen
Sie diese mit der WSDL-Spezifikation.