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

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

PRÜFUNG IN SEMI-STRUKTURIERTE 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 IN SEMI-STRUKTURIERTE 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

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

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

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

Android will doch nur spielen XML

XML und Datenbanken Fortsetzung

Extensible Stylesheet Language Transformations XSLT

Projektseminar "Texttechnologische Informationsmodellierung"

2. Klausur Web-basierte Informationssysteme SS 2015

Seminar Dokumentenverarbeitung

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

XSLT IDE AUTUMN SCHOOL

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

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

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)

2a) Rekursion (zugeschnitten auf Anfrage) (C) Prof. E. Rahm Universität Leipzig

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

XML Schema vs. Relax NG

Web (Site) Engineering (WebSE)

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

XML Schema 2016 S h_da S Seite 1

2. Klausur Web-basierte Informationssysteme SS 2016

XSL Transformation. Eine praxisorientierte Einführung Philip Heck

Vorlesung Datenbanken II SS 2006

Web Technologien XML, XQuery, XPath und XSLT

XSLT XSL Transformations

XML Schema 2015 S h_da S Seite 1

Klausur zur Vorlesung Einführung in XML

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

XSD - XML Schema Definition

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

Transformation von XML-Dokumenten mit XSLT

Aufgabe 1 XML-Schema. <?xml version="1.0" encoding="utf-8"?> <xs:schema xmlns:xs=" elementformdefault="qualified"

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

XSL Transformations (XSLT) Teil II

Vorlesung XML und Datenbanken Klausur

Aufgabe 5.1: (a) Lösung:

XSLT vs. STX STX. Streaming Transformation for XML. Jan Krueger

XSLT XSL Transformations

9. Fortgeschrittene Techniken

<B1>Skript</B1> Skript zur Vorlesung Auszeichnungssprachen Stand: September 2016

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

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

Document Type Definition (DTD)

XML für Medientechnologen

Herbstsemester Januar Datenbanksysteme II

Einführung. Hallo-Welt in XSLT

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

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

Agenda. 1. Was können wir mit XSLT alles machen? 1. Beispiele: 1. Webseiten 2. Textprozessierung 3. Datenbankabfragen

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

Klausur zur Vorlesung Einführung in XML

D#32058 Spezifikation UPOC DM V2

Einführung in XML. Präsenzveranstaltung zur E-Learning-Veranstaltung. Sommersemester Prof. Dr. Klaus-Peter Fähnrich Dr.

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

Kritik von HTML. Multimedia-Technik XML. Syntax von XML-Dokumenten. Extensible Markup Language (XML) reine Strukturbeschreibung

Vor allem in Internetanwendungen erfreut sich xml großer Akzeptanz XML ist heute eine universelle Datenbeschreibungssprache Validierend mit

XML Schema 2012/2013 S Seite 1 h_da W

Einführung in XML. Seminarunterlage. Version 3.05 vom

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

XML. Teil 5: XML-Schemas. Abteilung Informatik WS 02/03

XML-Schema Datentypen

Deklaration standalone="yes" Quelle:

Document Type Definitions (DTDs)

Nonstandard Datenbanken

XSL Transformation (XSLT) Teil II

XML Vorlesung FHA SS

XSL Transformations (XSLT) Teil I

XML Vorlesung ETHZ SS XML Vorlesung ETHZ, Sommersemester

Transkript:

Gruppe A PRÜFUNG AUS SEMISTRUKTURIERTE DATEN 184.705 1. 12. 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 A ((A B),C?,B)> <!ELEMENT B (#PCDATA A C)*> <!ELEMENT C EMPTY> <!ATTLIST A key ID #REQUIRED> <!ATTLIST C choice (a b c d) #IMPLIED> 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 A als Wurzelelement spezifiziert ist): 1. <A/> gültig ungültig 2. <A key="a"><b><c/></b><b>xyz</b></a> gültig ungültig 3. <A key="a"><b/><b><a key="b"><b/><b/><b/></a></b></a> gültig ungültig 4. <A key="a"><b/><c choice="e"/><b/></a> gültig ungültig 5. <A key="a"><b><c choice="a"/></b><c choice="b"/><c choice="c"/></a> gültig ungültig 6. <A key="a"><a key="b"><b/><b/></a><c/><b/></a> gültig ungültig 7. <A key="a"><b/><b><a key="a"><b/><b/></a></b></a> gültig ungültig 8. <A key="a"><b/><b/></a> 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. DTD steht für Data Type Definition. wahr falsch 2. Für jedes XML Dokument gilt: pro Element sind maximal 2 Kind-Elemente erlaubt. wahr falsch 3. XML Schemas erlauben typischerweise eine exaktere Spezifikation als DTDs. wahr falsch 4. In einem XML-Schema kann xsd:attribute ein Kind-Element von xsd:simpletype sein. wahr falsch 5. Der XPath Ausdruck./../* eq. liefert in jedem Knoten (außer der Wurzel) wahr. wahr falsch 6. Das DOM ist eine W3C Recommendation. wahr falsch 7. Bei einem Push Parser wird das XML-Dokument mehrmals durchlaufen. wahr falsch 8. Bei XSLT werden (mittels XPath) Knoten ausgewählt, auf die ein Template angewendet wird. wahr falsch 9. XSLT ist hauptsächlich eine imperative Programmiersprache. wahr falsch 10. XQuery erlaubt keine rekursiven Funktionsdeklarationen. 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 schach.xml, das Sie auf der letzten Seite dieser Prüfungsangabe finden. Aufgabe 3: (12) Vervollständigen Sie die XML Schema Datei schach.xsd zur Speicherung von Spiel-Eröffnungen, sodass XML-Dokumente in der Gestalt von schach.xml (siehe Anhang) bezüglich dieses Schemas gültig sind. Berücksichtigen Sie beim Erstellen des Schemas folgende Punkte: Das Element schach beinhaltet mindestens ein eröffnung Element. Jedes eröffnung Element hat ein Attribut name und genau ein Kindelement weiß. Elemente weiß haben gemischten Inhalt und potentiell mehrere Kindelemente schwarz. Elemente schwarz sollen keinen gemischten Inhalt haben und maximal ein Kindelement weiß besitzen. Definieren Sie die Attribute der Elemente weiß und schwarz entsprechend. Hinweise: Nutzen Sie attributegroup um Schreibaufwand zu sparen. 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 schach.xsd: <!-- Sie haben auch noch auf der folgenden Seite Platz! --> <xsd:schema xmlns:xsd="http://www.w3.org/2001/xmlschema"> <xs:element name="schach"> <xs:complextype> <xs:sequence> <xs:element name="eröffnung" maxoccurs="unbounded"> <xs:complextype> <xs:sequence> <xs:element name="weiß" type="weiß_typ"/> </xs:sequence> <xs:attribute name="name" type="xs:string" use="required"/> </xs:complextype> </xs:element> </xs:sequence> </xs:complextype> </xs:element> <xs:complextype name="weiß_typ" mixed="true"> <xs:sequence> <xs:element name="schwarz" type="schwarz_typ" minoccurs="0" maxoccurs="unbounded"/> </xs:sequence> <xs:attributegroup ref="zug"/> </xs:complextype> <xs:complextype name="schwarz_typ"> <xs:sequence> <xs:element name="weiß" type="weiß_typ" minoccurs="0"/> </xs:sequence> <xs:attributegroup ref="zug"/> </xs:complextype>

Datei schach.xsd (Fortsetzung): <xs:attributegroup name="zug"> <xs:attribute name="von" type="xs:string" use="required"/> <xs:attribute name="nach" type="xs:string" use="required"/> <xs:attribute name="schlägt" type="xs:boolean"/> </xs:attributegroup> </xs:schema>

Aufgabe 4: (10) Betrachten Sie die folgenden XPath-Abfragen angewandt auf das Dokument schach.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 weiß oder schwarz Knoten selektiert werden, geben Sie deren nach Attribute an. Betrachten Sie dazu folgendes Beispiel: //weiß c4 d4 c4 e4 f3 b5 Geben Sie nun die entsprechende Ausgaben der folgenden XPath-Abfragen an. //schwarz[@von= c7 ] c5 //schwarz[@nach= f6 ]/preceding-sibling::* c5 e5 //schwarz[@nach= d5 ]//* c4 c4 e6 //schwarz[@nach= e6 ]/ancestor::* d4 d5 c4 //schwarz[ancestor::weiß[@nach= e4 ]] e5 c6

Aufgabe 5: (8) Betrachten Sie folgende-xquery Abfrage schach.xq angewandt auf schach.xml: let $zug := (//schwarz //weiß) for $feld in distinct-values($zug/@nach/string()) where starts-with($feld, c ) or starts-with($feld, e ) order by $feld return <feld name="{$feld" count="{count($zug[@nach=$feld])"/> Geben Sie nun die Ausgabe von schach.xq angewandt auf schach.xml an. Die exakte Behandlung von Whitespaces ist dabei nicht relevant. <feld name="c4" count="3"/> <feld name="c5" count="1"/> <feld name="c6" count="1"/> <feld name="e4" count="1"/> <feld name="e5" count="2"/> <feld name="e6" count="1"/> Aufgabe 6: (10) Erstellen Sie ein XSLT-Stylesheet schach.xsl, das angewandt auf Dokumente der Gestalt schach.xml die Zugfolge ausgibt. Für das Dokument schach.xml soll beispielsweise folgende Ausgabe erzeugt werden: == Englische Eröffnung == c2-c4 c7-c5 == Damengambit == d2-d4 d7-d5 c2-c4 d5-c4 == Spanische Eröffnung == e2-e4 e7-e5 g1-f3 b8-c6 f1-b5

Das bedeutet also: Für jede eröffnung soll der Name ausgegeben werden (davor und danach durch == abgegrenzt) Für jeden Zug von weiß soll das von Attribut und nach Attribut (getrennt durch -) ausgegeben werden. Nach jedem Zug von Weiß soll das Zeichen ausgegeben werden, und die Verarbeitung bei dem ersten Schwarz-Kindelement fortgesetzt werden Für jeden Zug von schwarz soll das von Attribut und nach Attribut (getrennt durch -) ausgegeben werden. Nach jedem Zug von Schwarz soll ein Zeilenumbruch ( ) ausgegeben werden Vervollständigen Sie hier das XSLT-Stylesheet schach.xsl. Datei schach.xsl: <xsl:stylesheet version="2.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform"> <xsl:output method="text" encoding="utf-8"/> <xsl:template match="eröffnung"> <xsl:text> == </xsl:text> <xsl:value-of select="@name"/> <xsl:text> == </xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="weiß"> <xsl:value-of select="@von"/> <xsl:text>-</xsl:text> <xsl:value-of select="@nach"/> <xsl:text> </xsl:text> <xsl:apply-templates select="schwarz[1]"/> </xsl:template> <xsl:template match="schwarz"> <xsl:value-of select="@von"/> <xsl:text>-</xsl:text> <xsl:value-of select="@nach"/> <xsl:text> </xsl:text> <xsl:apply-templates/> </xsl:template> <xsl:template match="text()"/> </xsl:stylesheet>

Aufgabe 7: (8) Vervollständigen Sie den folgenden SAX Handler, der angewandt auf Dokumente der Gestalt schach.xml für jede eröffnung die Anzahl der Züge von weiß zählen soll (d.h. die Anzahl der weiß Nachfahren). Für das Dokument schach.xml wird beispielsweise folgende Meldung (auf die Standardausgabe) ausgegeben: Englische Eröffnung: 1 Damengambit: 2 Spanische Eröffnung: 3 Um die genaue Formatierung der Ausgabe brauchen Sie sich nicht zu kümmern public class CountTotals extends DefaultHandler { int count; String current; public void startelement(string uri, String localname, String qname, Attributes atts) throws SAXException { if ("eröffnung".equals(localname)) { current = atts.getvalue("name"); count = 0; if ("weiß".equals(localname)) { count++; public void endelement(string uri, String localname, String qname) throws SAXException { if ("eröffnung".equals(localname)) { System.out.println(current, count);

Sie können diese Seite abtrennen! Datei schach.xml: <schach> <eröffnung name="englische Eröffnung"> <weiß von="c2" nach="c4"> Englische Symmetrievariante: <schwarz von="c7" nach="c5"/> Sizilanisch im Anzuge: <schwarz von="e7" nach="e5"/> Neutraler Entwicklungszug: <schwarz von="g8" nach="f6"/> </eröffnung> <eröffnung name="damengambit"> <weiß von="d2" nach="d4"> <schwarz von="d7" nach="d5"> <weiß von="c2" nach="c4"> Angenommenes Damengambit: <schwarz von="d5" nach="c4" schlägt="true"/> Abgelehntes Damengambit: <schwarz von="e7" nach="e6"/> </schwarz> </eröffnung> <eröffnung name="spanische Eröffnung"> <weiß von="e2" nach="e4"> <schwarz von="e7" nach="e5"> <weiß von="g1" nach="f3"> <schwarz von="b8" nach="c6"> <weiß von="f1" nach="b5"/> </schwarz> </schwarz> </eröffnung> </schach> Gesamtpunkte: 75