Klausur XML 30.2286 Bitte Namen und Matrikelnummer auf jeder Seite der Vorgabe und allen Arbeitsblättern eintragen! Themenbereich XML und XML/Schema Beantworten Sie an Hand des beiliegenden XMLSchema Dokuments (Seite 4) folgende Fragen: Das XMLSchema Dokument (Seite 4) enthält Fehler. Markieren Sie die Fehler, die die Validität des Dokuments verletzen mit V und diejenigen, die die Wellformedness verletzen mit W und machen Sie am Rand einen Korrekturvorschlag. (3 Punkte) Auf Seite 7 oben wird ein Element (textselection) definiert, das auf zwei anonymen Typen basiert. Formulieren Sie die Definition so um, dass nur noch benannte Typen verwendet werden. (3 Punkte) Auf Seite 7 unten wird ein komplexer Typ und eine Ableitung dazu definiert. Ist das ein valider Ausschnitt aus einer Schemadefinition? Begründen Sie Ihre Entscheidung. (2 Punkte) XML Schema unterstützt zur Modularisierung von Schemabeschreibungen die Sprachelemente import und include. Worin besteht der Unterschied? (2 Punkt) Neue komplexe Typen können in XMLSchema durch die restriction abgeleitet werden. Nennen Sie mindestens zwei erlaubte Restriktionsmechanismen. (2 Punkte) Welche Design Patterns für XML Schemata kennen Sie, und charaktersieren Sie sie. (4 Punkte) Themenbereich NameSpaces Wieviele unterschiedliche Vokabulare (Namespaces) sind in dem Dokument auf Seite 6 definiert? (1 Punkt) Worin unterscheidet sich der Default Namespace von einem benannten Namespace? (2 Punkt) Blatt 1
Themenbereich Xpath Verwenden Sie für die folgenden Adressen das XML-Dokument auf Seite 6 Benennen Sie die Bestandteile des folgenden XPath Ausdrucks: /descendant-or-self::segmentinformation[contains(attribute::topicid, //svt:topic[1]/@topicid)] (2Punkt) Zählen Sie die Ergebnismenge der folgenden Adresse auf? /md:madcow//*[1] (4 Punkt) Welches Ergebnis ergibt die folgende Adresse? //md:annotationbody//md:contents[contains(@id,"1")] or //md:annotationbody//md:contents[contains(@id,"2")] (1 Punkt) Die Datei auf Seite 6 habe den Namen MADCOW.xml. Welches Ergebnis liefert die folgende XQuery: xquery version "1.0"; declare namespace xsi = "http://www.w3.org/2001/xmlschema-instance"; declare default element namespace "Annotation"; element root { for $V1 in doc("./madcow.xml")//attachments/*[contains(.,"xml")] return element A {$V1/../../@id} } (2 Punkt) Themenbereich XSLT Das Stylesheet auf Blatt 8 wird auf das XML-Dokument (Seite 6) angewendet und es entsteht ein XML-File. Schreiben Sie dieses XML-Dokument auf. (3 Punkte) Skizzieren Sie eine Transformation, die folgende Information aus dem XML-Dokument Seite 6 zusammenstellt: o Name des Autors (author), o Titel (title) und o Den letzten Textinhalt (textcontent) (4 Punkte) Blatt 2
Beurteilung 0-14 Punkte: Note 5 26-28 Punkte: Note 2,7 29-31 Punkte: Note 2,3 15-19 Punkte: Note 4 32-34 Punkte: Note 2,0 20-21 Punkte: Note 3,7 35-36 Punkte; Note 1,7 22-23 Punkte: Note 3,3 37-38 Punkte: Note 1,3 24-25 Punkte: Note 3,0 39-40 Punkte: Note 1,0 Blatt 3
XMLSchema - Dokument <?xml version="1.0" encoding="utf-8"?> <!-- edited with XMLSpy v2016 rel. 2 sp2 (http://www.altova.com) by Wolfgang Putz (FH-Darmstadt) --> <xs:schema xmlns:xs="http://www.w3.org/2001/xmlschema" xmlns:kl="urn:h_da:ws2015" targetnamespace="urn:h_da:ws2015" elementformdefault="qualified" attributeformdefault="unqualified"> <xs:element name="bestell" type="kl:bestelltype"/> <xs:element name="preis"> <xs:complextype> <xs:attribute name="waehrung" type="xs:string" use="optional" default="eur"/> <xs:attribute name="wert" type="xs:decimal"/> </xs:element> <xs:complextype name="bestelltype"> <xs:choice> <xs:group ref="kl:lieferundrechnung"/> <xs:element name="einfacheadresse" type="kl:adresse"/> <xs:element name="item" type="kl:itemtype" maxoccurs="unbounded"/> </xs:choice> <xs:complextype name="adresse"> <xs:element name="ort" type="xs:string"/> <xs:element name="plz" type="xs:int"/> <xs:element name="name" type="kl:personname"/> <xs:element name="liefer"> <xs:group name="lieferundrechnung"> <xs:element name="lieferungan type="kl:adresse"/> <xs:element name="rechnungan" type="adresse"/> </xs:group> </xs:element> Blatt 4
<xs:complextype name="personname" abstract="true"> <xs:element name="anrede" minoccurs="0"/> <xs:element name="vorname" maxoccurs="unbounded"/> <xs:complextype name="extendedname"> <xs:complexcontent> <xs:extension base="kl:personname"> <xs:element name="nachname"/> </xs:extension> <xs:complextype name="itemtype"> <xs:element name="name"/> <xs:element ref="kl:preis"/> </xs:schema> Blatt 5
XML-Dokument für XPath und XSLT <?xml version="1.0" encoding="utf-8"?> <md:madcow xmlns:md="urn:annotation" xsi:schemalocation="urn:annotation D:\projects\DELOS\Annotation.xsd" xmlns:xsi="http://www.w3.org/2001/xmlschema-instance" xmlns ="urn:annotation" kind="withcontent" media="text"> <md:metadata> <md:author>ferro697702212</md:author> <md:title> Eine weitere Annotation </md:title> <md:creationdate>18/11/2009 10.26.09</md:creationDate> <md:modificationdate>18/11/2015 10.26.09</md:modificationDate> <md:sourcehttp>687474703a2f2f7777772e676f6f676c652e69742f</md:sourcehttp> <md:type>example</md:type> <md:public>true</md:public> </md:metadata> <annotationbody xmlns="urn:annotation"> <contents id="1"> <textcontent>das ist ein Beispieltext für eine Annotation</textContent> <attachments> <attachedimage> file:://a/b/c</attachedimage> </attachments> </contents> <contents id="2"> <md:textcontent> Eine weitere Annotation </md:textcontent> <attachments> <attachedaudio>http://www.h_da.de/xml/test.mp3</attachedaudio> </attachments> </contents> <textselection> <path>body/center/form/table[2]/tbody/tr[2]/td/font/label[3],23,6</path> <contentref>1</contentref> </textselection> </annotationbody> </md:madcow> Blatt 6
Information zu Teilaufgabe XML/ XML Schema Punkt 2 <xs:element name="textselection"> <xs:complextype> <xs:element name="path" type="xs:string"/> <xs:element name="color" minoccurs="0"> <xs:simpletype> <xs:restriction base="xs:string"> <xs:enumeration value="yellow"/> <xs:enumeration value="green"/> <xs:enumeration value="light blue"/> <xs:enumeration value="orange"/> <xs:enumeration value="fucsia"/> </xs:restriction> </xs:simpletype> </xs:element> <xs:element name="contentref" type="xs:string" minoccurs="0"/> </xs:element> Information zu Teilaufgabe XML/ XML Schema Punkt 3 <xs:complextype name="tt1"> <xs:simplecontent> <xs:extension base="xs:string"> <xs:attribute name="a1" type="xs:integer" use="required"/> <xs:attribute name="a2" type="xs:integer" use="optional"/> </xs:extension> </xs:simplecontent> <xs:complextype name="tt2"> <xs:simplecontent> <xs:restriction base="tt1"> <xs:attribute name="a1" use="prohibited"/> </xs:restriction> </xs:simplecontent> Blatt 7
XSLT Stylesheet <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/xsl/transform" xmlns:kl="urn:annotation"> <xsl:output method="xml" version="1.0" encoding="utf-8" indent="yes"/> <xsl:template match="/"> <xsl:element name= Annotation > <xsl:for-each select="//kl:contents"> <xsl:element name= ID > <xsl:attribute name="id"> <xsl:value-of select="@id"/> </xsl:attribute> <xsl:element name="attachments"> <xsl:value-of select="kl:attachments/*"/> </xsl:element> <xsl:if test="@id = //contentref "> <xsl:element name="xpath"> <xsl:value-of select="../kl:textselection/kl:path"/> </xsl:element> </xsl:if> </xsl:element> </xsl:for-each> </xsl:element> </xsl:template> </xsl:stylesheet> Blatt 8