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 2010

Martin v. Löwis

Am 30.6. findet keine Vorlesung statt; sie wird auf den 5.7. 17:00 in Hörsaal 3 verlegt. Die Vorlesung am 12.7. findet in A-1.1 statt. Die Vorlesung am 14.7. ist auf den 16.7. 15:15 in Hörsaal 3 verlegt. Die Vorlesungen am 19.7. und 21.7. fallen aus.

Die mündlichen Prüfungen finden am 26.7., 7.10, und 8.10. in Raum A-1.2 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 (19.04.2010 12:04:16)
  2. XML Syntax (03.05.2010 14:44:41)
  3. Document Types (03.05.2010 14:45:09)
  4. Character Sets (03.05.2010 14:45:38)
  5. Namespaces (03.05.2010 14:46:01)
  6. Parser Interfaces: SAX (10.05.2010 14:03:13)
  7. Parser Interfaces: DOM (14.06.2010 13:53:58)
  8. XPath (14.06.2010 13:54:22)
  9. XSLT (14.06.2010 13:54:51)
  10. Bits and Pieces (14.06.2010 13:55:19)
  11. XML Infoset (14.06.2010 13:56:37)
  12. XML Schema (Part 1) (05.07.2010 14:10:33)
  13. XML Schema (Part 2) (05.07.2010 14:11:08)
  14. XML Schema (Part 3) (05.07.2010 14:11:40)
  15. Other Schema Languages (05.07.2010 14:10:01)
  16. XML Protocols: XML-RPC (05.07.2010 14:12:39)
  17. XML Protocols: SOAP (05.07.2010 14:46:37)
  18. MOF Tutorial
  19. Meta-Object Facility: Meta Classes (29.09.2010 19:57:17)
  20. XMI Presentation
  21. XML Signature and Encryption (29.09.2010 19:55:59)

Übungsaufgaben

1. Aufgabe

Vorstellung: 10. 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

Präsentation: 26. Mai

Verwenden Sie in den ersten 3 Teilaufgaben eine SourceForge-Export-Datei und für die letzte Teilaufgabe die Datei All.xml (basierend auf All.dtd, komprimiert All.zip).

  1. Entwickeln Sie eine SAX-Anwendung (in einer Programmiersprache Ihrer Wahl), die die Zahl der tracker_items ermittelt.
  2. Entwickeln Sie eine SAX-Anwendung (evtl. in Erweiterung der Lösung von Teil a), die das tracker_item mit den meisten followups ermittelt.
  3. Entwickeln Sie eine SAX-Anwendung, die eine Statistik generiert, die für jeden submitter eines tracker_items angibt, wie viele tracker_items er eingereicht hat.
  4. Entwickeln Sie eine SAX-Anwendung, die für jede Klasse eines gegebenen 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

Präsentation: 7. 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 d) 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: 21. 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 d) 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, MemberType "Field"), Referenzen (Model:Reference), Properties (MemberType "Property"), etwa in tabellarischer Form. Geben Sie wenigstens jeweils den Namen sowie den Typnamen aus.
  • Achten Sie bei der Übertragung von see-Elementen auf eine geeignete Übertragung in HTML, und sorgen Sie für die Beibehaltung der Formatierung von code-Elementen.

5. Aufgabe

Präsentation: 5. 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. 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.
  3. 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.
  4. Ermitteln Sie die Semantik von XSLT-Templates gleicher Priorität. Zitieren Sie dazu relevante Ausschnitte der Spezifikation (Wahlweise für XSLT 1.0 oder 2.0).
  5. Erläutern Sie den Unterschied zwischen den Elementen group und attributeGroup in XML Schema anhand der Spezifikation. Untersuchen Sie, warum es zwei separate Gruppierungsmechanismen gibt.

6. Aufgabe

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.