Hasso-Plattner-Institut Potsdam Operating Systems and Middleware Group at HPI University of Potsdam, Germany
Operating Systems and Middleware Group at HPI

Datenorientiertes XML

Sommersemester 2009

Martin v. Löwis

Die mündlichen Prüfungen finden am 30.7., 3.8., 6.10. und 7.10. im Raum A-1.2 statt. Die Einschreibung zur Prüfung erfolgt bei Frau Wagner, C-1.8.

Am 20.7. findet die Veranstaltung in HS2 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

  1. Course Overview (17.04.2009 16:52:28)
  2. XML Syntax (22.04.2009 15:39:14)
  3. Document Types (04.05.2009 13:19:02)
  4. Character Sets (04.05.2009 13:17:03)
  5. Namespaces (07.05.2009 14:40:51)
  6. Parser Interfaces: SAX (25.05.2009 11:36:34)
  7. Parser Interfaces: DOM (04.06.2009 10:26:53)
  8. XPath (04.06.2009 10:25:16)
  9. XSLT (04.06.2009 10:33:24)
  10. Bits and Pieces (15.06.2009 13:50:17)
  11. XML Infoset (15.06.2009 13:51:33)
  12. XML Schema (Part 1) (15.06.2009 13:58:11)
  13. XML Schema (Part 2) (17.06.2009 15:49:20)
  14. XML Schema (Part 3) (17.06.2009 15:54:35)
  15. Other Schema Languages (22.06.2009 14:56:51)
  16. XML Protocols: XML-RPC (06.07.2009 11:36:58)
  17. XML Protocols: SOAP (06.07.2009 11:38:59)
  18. MOF Tutorial
  19. Meta-Object Facility: Meta Classes (22.07.2009 15:22:31)
  20. XMI Presentation
  21. XML Signature and Encryption (22.07.2009 15:23:06)
  22. Atom (23.07.2009 17:24:41)

Übungsaufgaben

1. Aufgabe

Abgabetermin: 11. Mai

  1. 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.
  2. 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.
  3. 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: 25. Mai

Gegeben ist in allen Teilaufgaben die Datei 2002-05-01.xml die das XML-Modell für CWM (Common Warehouse Metamodel) definiert.
  1. Entwickeln Sie eine SAX-Anwendung (in einer Programmiersprache Ihrer Wahl), die die Zahl aller Klassen (Element Model:Class) ermittelt.
  2. 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.
  3. 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.

3. Aufgabe

Abgabetermin: 8. Juni

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 bis 3). 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

Präsentation: 22. Juni

Lösen Sie die gleichen Teilaufgabe wie in Aufgabe 2, jedoch unter Verwendung von XSLT. Verwenden Sie keine Prozessorerweiterungen, mit Ausnahme von Erweiterungen zur Ausgabe mehrerer Dateien; Funktionalitäten von XSLT 2 dürfen ebenfalls verwendet werden. Teilaufgabe c) wird wie folgt erweitert:

  • Generieren Sie neben den Dateien für die einzelnen Klassen auch Indexdateien
  • Generieren Sie in die Dateien auch Angaben über Attribute (Model:Attribute) und Referenzen (Model:Reference). etwa in tabellarischer Form. Geben Sie wenigstens jeweils den Namen sowie den Typnamen aus.

5. Aufgabe

Abgabetermin: 6. Juli

  1. 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.
  2. 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

6. Aufgabe

Abgabetermin: 20. Juli

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.