XML in der Entwicklung von Komponentensystemen
Wintersemester 2003-2004Martin v. Löwis
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
Vorlesungen
- Course Overview
- XML Syntax
- Document Types
- Character Sets
- Namespaces
- Parser Interfaces: SAX
- Parser Interfaces: DOM
- XPath
- XSLT
- XML Schema Part 1
- XML Schema Part 2
- XML Schema Part 3
- Other Schema Languages
- Packaging and Deployment in CCM
- XML-RPC
- SOAP
- MOF Tutorial
- MOF Classes
- XMI Presentation
- SCORM
Übungsaufgaben
1. Aufgabe
Abgabetermin: 5. 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 Informationen 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.
2. Aufgabe
Abgabetermin: 19. November
Punktzahl: 20
Gegeben ist in allen Teilaufgaben die Datei All.xml (basierend auf All.dtd, komprimiert in All.zip), die die Klassenbibliothek von ECMA .NET definiert.- Entwickeln Sie eine SAX-Anwendung (in einer Programmiersprache Ihrer Wahl), die die Zahl aller Klassen (Element Type) ermittelt.
- Entwickeln Sie eine SAX-Anwendung (evtl. in Erweiterung der Lösung von Teil a), die den Namen der Klasse mit den meisten Methoden (Member-Elemente mit dem MemberType "Method") ermittelt.
- Entwickeln Sie eine SAX-Anwendung, die für jede Klasse eines Pakets (etwa Library="Reflection") eine HTML-Seite generiert wird, in der der Name der Klasse, die Namen der Basisklassen sowie die Docs-Element-Dokumentation aufgeführt wird; die Basisklassennamen sollten Hyperlinks auf die Seiten der Basisklassen sein.
3. Aufgabe
Abgabetermin: 3. Dezember
Punktezahl: 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).
4. Aufgabe
Abgabetermin: 17. Dezember
Punktezahl: 20
Lösen Sie die gleichen Teilaufgaben wie in Aufgabe 2, jedoch unter Verwendung einer XSLT-Implementierung. Verwenden Sie keine Prozessor-Erweiterungen, mit Ausnahme von Erweiterungen zur Dateiausgabe.Achten Sie in Teilaufgabe c) darauf, auch die see-Elemente in der Dokumentation auf geeignete Weise in die HTML-Dokumentation zu übernehmen, und die Formatierung von code-Blöcken beizubehalten.
Musterlösungen: Teil a, Teil b, Teil c.
5. Aufgabe
Abgabetermin: 14. Januar
PunktezahL 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.
- Definieren Sie ein XML Schema für All.xml, welches als gültige Dokumente nur
Dokumente erlaubt, die auch der DTD
folgen und zusätzlich folgende Einschränkungen enthält:
- Klassennamen sind Bezeichner.
- Die Basisklassen und die implementierten Interfaces müssen im gleichen Dokument definiert sein.
- Der Wert des Excluded-Elements muss 0 oder 1 sein.
- Definieren Sie ein Schema für Dokumente entsprechend Aufgabe 1c). Definieren Sie für eine Programmiersprache Ihrer Wahl Klassen, die Werte dieses Schemas aufnehmen können. Implementieren Sie (unter Verwendung von Werkzeugen Ihrer Wahl) einen Parser, der ein Schema-konformes Dokument einliest und daraus ein Objekt der zuvor definierten Klassen erzeugt.