Aufgabe 1: ========= Zusaetzlich zu pruefen: ---------------------- Attribut "nach" von Element "Weg" muss auf "Raum"-ID verweisen, nicht auf "Objekt"-ID. Aufgabe 2: ========= a) XML Schema hat viel mehr Datentypen. Z.B. gerade Attribut "Punkte" nur Zahlen in DTD nicht darstellbar. b) IDREF in DTDs verweist nur auf irgendein Element mit der ID, man kann nicht erzwingen, dass es z.B. ein Raum ist. In XML Schema gibt es Fremdschluessel. c) In DTDs gibt es keine Moeglichkeit, das Wurzelelement festzulegen. (Im Beispiel "Spiel"). Ein XML SChema kann man so strukturieren, dass man global nur ein Element definiert hat, was dann das Wurzelelement sein muss. Alternativ: Schluessel, die keine IDs sind (z.B. Zahlen, zusammengesetzte Schluessel). Aufgabe 3: ========= a) b) c) Aufgabe 5: ========= a) //Raum[Weg/@nach='Waldweg']/Text b) data(//Objekt[number(@Punkte) > //Objekt[@ID='Beeren']/number(@Punkte)]) c) (//Objekt)[1],(//Objekt)[last()] Aufgabe 6: ========= a) { for $r in //Raum let $a := count($r/Weg) order by $a descending, $r/@ID return }
{data($r/@ID)} {$a}