Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Ähnliche Dokumente
Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG IN SEMI-STRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Aufgabe 5.1: (a) Lösung:

XML exemplarisch. nach: André Bergholz, Extending Your Markup: An XML Tutorial IEEE Internet Computing, Jul./Aug. 2000, 74 79

Programmieren II. Einführung in XML. Vorlesung 13. Handout S. 1. Dr. Klaus Höppner. Hochschule Darmstadt Sommersemester 2010 XML JAXP SAX DOM

PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Projektseminar "Texttechnologische Informationsmodellierung"

XQuery - Generierung. Christoph Böhm. LN - Forschungsseminar Berlin,

2. Klausur Web-basierte Informationssysteme SS 2015

Web (Site) Engineering (WebSE)

DTDs und XML-Schema. Robert Tolksdorf Freie Universität Berlin Institut für Informatik Netzbasierte Informationssysteme

Einführung in XML. Arthur Brack FHDW Hannover. 1. Oktober 2009

2. Klausur Web-basierte Informationssysteme SS 2016

XML-Schema Datentypen

Programmieren II SAX. Beispiel-Schema kontakt.xsd SAX DOM. Dr. Klaus Höppner JAXB. Hochschule Darmstadt SS 2008

Dirk Ammelburger XML. Grundlagen der Sprache und Anwendungen in der Praxis HANSER

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN Kennnr. Matrikelnr. Familienname Vorname

Deklaration standalone="yes" Quelle:

Klausur zur Vorlesung Einführung in XML

Extensible Stylesheet Language Transformations XSLT

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

Übersicht. Web (Site) Engineering (WebSE) XML-Beispieldokument. Simple API for XML (SAX) [Pro] XML-Beispiel. Vorlesung 6: Tools und Programmierung

DTDs und XML- Schemata

XSLT XSL Transformations

WI/WE - WEB ENGINEERING

Klausur zur Vorlesung Einführung in XML

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XML Schema 2016 S h_da S Seite 1

Seminar Dokumentenverarbeitung

XSLT IDE AUTUMN SCHOOL

Übung 2: XML / XQuery

Transformation von XML-Dokumenten mit XSLT

1 Was ist XML? Hallo XML! Kommentare in XML 52

XML. Einführung, XML-Grundlagen und -Konzepte. XPath DTD. XQuery. XML-Schema XSLT XML-Grundlagen, -Sprachen, -Datenhaltungsfragen

XSLT XSL Transformations

Vorlesung Datenbanken II SS 2006

XML Schema S 2010/2011 a W _d Seite 1 h

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

Programmieren II. Annotationen (1/3) Vorlesung 6. Handout S. 1. Martin Schultheiß. Hochschule Darmstadt Sommersemester Annotationen XML JAXB

Matrikelnummer: Bitte Namen und Matrikelnummer auf jeder Seite der Vorgabe und allen Arbeitsblättern eintragen!

XML und Datenbanken Fortsetzung

artikel.dtd: Document Type Definition mit der Strukturbeschreibung artikel.xml: XML-Datei mit den durch Tags markierten Daten.

XSLT für SAP NetWeaver Process Integration. Transformationssprache für XML Dokumente

Aufgabe 2: Software-Architektur [35]

XML, XML-DTDs, und XML Schema

Inhalt des Moduls: Grundlagen. Vorlagen. Kontrollstrukturen. Ausgabestrukturen. Parameter und Variablen. Dateibasierte Auslagerung

1. Klausur Web-basierte Informationssysteme SS 2010

Beschreibung von Dokumenten mit DTDs

Document Type Definition (DTD)

Beuth Hochschule Verschiedene Bestandteile einer XML-Datei WS10/11

XML-Übersicht. Von HTML zu XML

XML-Übersicht. Von HTML zu XML. Nutzen von XML. Geschichte von XML. Eigenschaften von XML. Nutzen von XML (extensible Markup Language)

Wege zur Anzeige. XSL die extensible Stylesheet Language. Wege zur Anzeige. Folie 1. Institut für Dokumentologie und Editorik

Einführung. Hallo-Welt in XSLT

XSL Transformations (XSLT) Teil II

Aufgaben eines Codegenerators

Vorlesung XML und Datenbanken Klausur

Gruppe A Bitte tragen Sie sofort und leserlich Namen, Studienkennzahl und Matrikelnummer ein und legen Sie Ihren Studentenausweis

Datenbanksysteme. XML und Datenbanken. Burkhardt Renz. Sommersemester Fachbereich MNI Technische Hochschule Mittelhessen

Kurzeinführung in XML. Was ist XML? Well-formed u. gültiges XML Erste Anwendung in XML Externe DTD Attribute und Entities Datenausgabe mit XSL

XML Schema 2012/2013 S Seite 1 h_da W

Klausur Semistrukturierte Daten und XML Sommersemester 2011 Prof. Dr. Wolfgang May 14. Juli 2011, Uhr Bearbeitungszeit: 90 Minuten

XSL Transformation (XSLT) Teil II

Ruhr.pm XML-Daten verarbeiten mit XML::LibXML Autor: Datum:

XML Vorlesung FHA SS

Hauptseminar Informatik. Die Strukturierung von XML-Dokumenten mit Hilfe von DTDs und XML Schema

Repräsentation von Struktur

ER-Diagramm (10 Punkte)

DBE Übung 2. Übung 2: XML / XQuery

Document Type Definitions (DTDs)

extended Markup Language (XML)

Transkript:

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 24. 10. 2014 Kennnr. Matrikelnr. Familienname Vorname Arbeitszeit: 100 Minuten. Aufgaben sind auf den Angabeblättern zu lösen; Zusatzblätter werden nicht gewertet. Bitte tragen Sie Namen, Studienkennzahl und Matrikelnummer ein. Halten Sie Ihren Studentenausweis bereit. Aufgabe 1: (12) Betrachten Sie die folgende DTD Datei test.dtd: <!ELEMENT X ((X Y),(Y Z))> <!ELEMENT Y (#PCDATA Z)*> <!ELEMENT Z EMPTY> <!ATTLIST X ref IDREF #IMPLIED> <!ATTLIST Z key ID #REQUIRED> Betrachten Sie weiters die acht verschiedenen xml-dateien, die unten angeführt sind. Sie können davon ausgehen, dass alle folgenden xml-dateien wohlgeformt sind. Es geht also lediglich darum, ihre Gültigkeit bezüglich test.dtd zu entscheiden. Kreuzen Sie an, welche der folgenden xml-dateien gültig bezüglich test.dtd sind (nehmen Sie an, dass X als Wurzelelement spezifiziert ist): 1. <X/> gültig ungültig 2. <X><Y/><Y/></X> gültig ungültig 3. <X><Y/><Y><Z key="a"/></y></x> gültig ungültig 4. <X><Y/><Y><Z key="a"/><z key="a"/></y></x> gültig ungültig 5. <X><Y><Z key="a"/></y><y><z key="a"/></y></x> gültig ungültig 6. <X ref="a"><y>abc</y><z key="a"/></x> gültig ungültig 7. <X ref="b"><y>abc</y><z key="a"/></x> gültig ungültig 8. <X><X><Y/><Y/></X><Y/></X> gültig ungültig (Pro korrekter Antwort 1.5 Punkte, pro inkorrekter Antwort -1.5 Punkte, pro nicht beantworteter Frage 0 Punkte, für die gesamte Aufgabe mindestens 0 Punkte)

Aufgabe 2: Kreuzen Sie an, ob die folgenden Aussagen wahr oder falsch sind. (15) 1. HTML ist eine Weiterentwiclung von XML. wahr falsch 2. Ein (bezüglich eines Schemas) gültiges XML-Dokument muss auch wohlgeformt sein. wahr falsch 3. DTDs erlauben typischerweise eine exaktere Spezifikation als XML Schema. wahr falsch 4. Pro XML-Schema Datei ist maximal ein Target-Namespace erlaubt. wahr falsch 5. In XPath gilt (a,b)!= (b,c). wahr falsch 6. SAX Filter dürfen verschachtelt verwendet werden. wahr falsch 7. SAX-Parser benutzen intern einen DOM-Parser. wahr falsch 8. Bei XSLT wird pro Knoten maximal ein Template angewendet. wahr falsch 9. XQUERY ist eine W3C Recommendation. wahr falsch 10. JSON ist eine XML-Applikation. wahr falsch (Pro korrekter Antwort 1.5 Punkte, pro inkorrekter Antwort -1.5 Punkte, pro nicht beantworteter Frage 0 Punkte, für die gesamte Aufgabe mindestens 0 Punkte)

Die folgenden Aufgaben 3 7 beziehen sich auf das XML-Dokument kontrollgraph.xml, das Sie auf der letzten Seite dieser Prüfungsangabe finden. Aufgabe 3: (12) Vervollständigen Sie die XML Schema Datei kontrollgraph.xsd, sodass XML-Dokumente in der Gestalt von kontrollgraph.xml (siehe Anhang) bezüglich dieses Schemas gültig sind. Berücksichtigen Sie beim Erstellen des Schemas folgende Punkte: Das Element code beinhaltet beliebig viele if Elemente sowie beliebigen Text, und kann mit einen Attribut id versehen sein. Andererseits kann es als leeres Element mit einem Attribut ref verwendet werden (letzteres soll GOTO- Anweisungen im Code abbilden). Hinweis: Versuchen Sie die Struktur des code-elements, so gut wie möglich abzubilden. Eine exakte Spezifikation (falls das Attribut ref auftritt soll das Element leer sein) ist nur sehr umständlich zu realisieren und daher nicht gefordert. Elemente if haben ein verpflichtendes Attribut cond und 1 oder 2 Kindelemente code. Definieren Sie die Abhängigkeiten der Attributwerte ref und id als Schlüsselbeziehung. Hinweis: Da Attribut id nicht verpflichtend ist, kann das xsd:key Element hier nicht angewendet werden! Sollten bei bestimmten Elementen oder Attributen keine näheren Angaben bezüglich des genauen Typs vorgegeben sein, wählen Sie selbst einen sinnvollen Typ aus. Datei kontrollgraph.xsd: <!-- Sie haben auch noch auf der folgenden Seite Platz! --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xsd:element name="code" type="codetype"> <xsd:unique name="codekey"> <xsd:selector xpath=".//code"/> <xsd:field xpath="@id"/> </xsd:unique> <xsd:keyref name="codekeyref" refer="codekey"> <xsd:selector xpath=".//code"/> <xsd:field xpath="@ref"/> </xsd:keyref> </xsd:element> <xsd:complextype name="codetype" mixed="true"> <xsd:sequence minoccurs="0" maxoccurs="unbounded"> <xsd:element name="if" type="iftype"/> </xsd:sequence> <xsd:attribute name="id" type="xsd:string" use="optional"/> <xsd:attribute name="ref" type="xsd:string" use="optional"/> </xsd:complextype> <xsd:complextype name="iftype"> <xsd:sequence minoccurs="1" maxoccurs="2"> <xsd:element name="code" type="codetype"/> </xsd:sequence> <xsd:attribute name="cond" type="xsd:string" use="required"/> </xsd:complextype> </xsd:schema>

Datei kontrollgraph.xsd (Fortsetzung):

Aufgabe 4: (10) Betrachten Sie die folgenden XPath-Abfragen angewandt auf das Dokument kontrollgraph.xml (siehe Anhang). Falls als Ergebnis mehrere Knoten selektiert werden, trennen Sie die jeweiligen Ausgaben durch Leerzeichen. Falls der angegebene XPath Ausdruck keine Knoten selektiert, notieren Sie im entsprechenden Feld leere Ausgabe. Falls als Ergebnis code Knoten selektiert werden, geben Sie deren id Attribute an. Falls als Ergebnis eine Zahl ausgegeben wird, geben Sie diese an. Betrachten Sie dazu folgendes Beispiel: //code fehler main even odd Geben Sie nun die entsprechende Ausgaben der folgenden XPath-Abfragen an. count(//code) 9 //code[2] main count(//code/@ref) 2 //code[if] main count(//code[@id= main ]/*) 4

Aufgabe 5: (8) Betrachten Sie folgende-xquery Abfrage kontrollgraph.xq angewandt auf kontrollgraph.xml: for $id in //code/@id let $count := count(//code[@ref=$id]) where $count < 10 return element {$id {$count Geben Sie nun die Ausgabe von kontrollgraph.xq angewandt auf kontrollgraph.xml an. Die exakte Behandlung von Whitespaces ist dabei nicht relevant. <main>1</main> <fehler>0</fehler> <even>0</even> <odd>1</odd> Aufgabe 6: (10) Erstellen Sie ein XSLT-Stylesheet kontrollgraph.xsl, das angewandt auf Dokumente der Gestalt kontrollgraph.xml Code im C/Java-Stil erzeugt. Für das Dokument kontrollgraph.xml soll beispielsweise folgende Ausgabe erzeugt werden: if (x=0) { ausgabe: fehler else { ausgabe: ok if (x=1) { ausgabe: odd number if (x=2) { ausgabe: even number if (x=3) { ausgabe: odd number else { exit...

Das bedeutet also: if Elemente sollen durch folgenden Text ersetzt werden: if (condition) { erster Zweig else { zweiter Zweig wobei der Text else {zweiter Zweig nur ausgegeben werden soll, wenn auch wirklich ein zweiter Zweig vorhanden ist (d.h., ein zweites code Kindelement). Bei code Elementen mit ref Attribut soll die Verarbeitung beim code Element mit dem entsprechenden id Attribut fortgesetzt werden. Vervollständigen Sie hier das XSLT-Stylesheet kontrollgraph.xsl. Sie brauchen sich nicht um Whitespaces etc. zu kümmern. Datei kontrollgraph.xsl: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" version="1.0" encoding="utf-8"/> <xsl:template match="code[not(@ref)]"> <xsl:apply-templates/> </xsl:template> <xsl:template match="code[@ref]"> <xsl:apply-templates select="//code[@id=current()/@ref]"/> </xsl:template> <xsl:template match="if"> if ( <xsl:value-of select="@cond"/> ) { <xsl:apply-templates select="code[1]"/> <xsl:if test="code[2]"> else { <xsl:apply-templates select="code[2]"/> </xsl:if> </xsl:template> </xsl:stylesheet>

Aufgabe 7: (8) Vervollständigen Sie den folgenden SAX Handler, der angewandt auf Dokumente der Gestalt kontrollgraph.xml prüfen soll, ob es im Dokument Vorwärtsreferenzen gibt. Eine Vorwärtsreferenz ist ein code Element mit ref Attribut, das im Dokument früher (in Document Order) vorkommt als das code Element mit dem entsprechenden id Attribut. Beispielsweise kommt im Dokument kontrollgraph.xml das Element <code ref="odd">... früher vor als das Element <code id="odd">... und ist daher eine Vorwärtsreferenz. Für jede gefunden Vorwärtsreferenz soll der Wert des ref Attributs ausgegeben werden. Für das Dokument kontrollgraph.xml wird beispielsweise folgende Meldung ausgegeben: Vorwärtsreferenz: odd Um die genaue Formatierung der Ausgabe brauchen Sie sich nicht zu kümmern public class CheckForwardReferences extends DefaultHandler { Set ids = new Set<String>(); public void startelement(string uri, String localname, String qname, Attributes atts) throws SAXException { if ("code".equals(localname)) { if (atts.getindex("id")!= -1) { ids.put(atts.getvalue("id")); if (atts.getindex("ref")!= -1 &&!ids.contains(atts.getvalue("ref"))) { System.out.println("Vorwärtsreferenz: " + atts.getvalue("ref"));

Sie können diese Seite abtrennen! Datei kontrollgraph.xml: <code> <if cond="x=0"> <code id="fehler">ausgabe: fehler</code> <code id="main"> ausgabe: ok <if cond="x=1"> <code ref="odd"/> <if cond="x=2"> <code id="even">ausgabe: even number</code> <if cond="x=3"> <code id="odd">ausgabe: odd number</code> <code>exit</code> <if cond="true"> <code>exit</code> <!-- (never) do the loop --> <code ref="main"/> </code> </code> Gesamtpunkte: 75