12/12/2008

Gedanken und Probleme zu und mit XPath

Nota bene


Beim Lernen von XPath, bin ich (im Nachhinein gesehen) nicht sehr intelligent vorgegangen: Zunächst hatte ich im XML in a Nutshell das Kapitel angefangen durchzuarbeiten, währenddessen die XML-Spiele aufgemacht und das mitgelieferte Stylesheet (ohne große Erfahrung mit XSLT) versucht zu erweitern. Das alles hat enorm viel Zeit und Motivation verschlungen, da ich mich noch nicht auskannte und Dinge nur halb oder gar nicht lösen konnte. Nach 4h Arbeit ohne merklichen Fortschritt brachte ich einmal eine ausgeborgte DVD zurück und überlegte, wie ich weiter machen sollte.
Nach ein bisschen Gehirnakrobatik folgende nota bene an mich selbst:
"Zuerst lernen, dann trainieren und schlussendlich neues erschaffen!" bzw. "Hirn einschalten, bevor du was tust!".

Nach einer halben Stunde ging es weiter, nun mit "zuerst Kapitel lesen" und dann mit dem XPath-Tool herumspielen.

Viel Besser.

XML Technologies - WOHOO!


Von den Spielen und den XML Technologies allgemein, bin ich absolut begeistert! Eine wirklich super Idee, wie man das eLearnining-mäßig aufbereiten kann.
Der Einzige Wermutstropfen war für mich, dass mir das rot hervorgehobene Ergebnis nicht sofort ins Auge gefallen ist (v.a. bei Ergebnissen mit nur einem Knoten). Wäre toll, wenn man das noch fett machen könnte.

Ressourcen


Als Unterlage habe ich vor allem XML in a Nutshell verwendet. Bei den verschiedenen Achsen, waren aber die VO-Unterlagen (v.a. wegen den schönen Diagrammen) um einiges besser, soll heißen verständlicher.
Als dritte Quelle kann ich die Mozilla Developer Seite zu XPath empfehlen. Die bieten mit Werkzeugen, wie XPather auch nette Tools für das Offline-Arbeiten mit XPath an.

Die in den Literatur-Angaben angegebene Seite zvon.org, kann ich im Bezug auf XPath nur eingeschränkt empfehlen, da sie meiner Meinung nach einige Dinge (z.B. id()) nicht behandelt.

Workaround


Eine Schlussbemerkung zur Verwendung von id(): Diese Funktion erlaubt es einem einen Knoten mit einem Attribut, dessen Wert in der DTD als ID angegeben wurde, als Ausgangsknoten zu wählen.
Das Problem bei der Anwendung ist nun aber, dass viele XML-Prozessoren (so auch unser XML Technologies und Mozilla Firefox, der expat verwendet) keine externen DTDs auswerten und somit die id()-Funktion nicht funktioniert.
Dies umgeht man einfach, indem man die Definition des Elements mit einer ID in die innere DTD-Teilmenge verschiebt.
Am Beginn der XML-Datei steht dann also folgendes:

<!DOCTYPE benutzer SYSTEM "1.dtd" [
<!ELEMENT buch (titel, untertitel, ISBN, kapitel*)>
<!ATTLIST buch autoren IDREFS #REQUIRED>

<!ELEMENT autor (#PCDATA)>
<!ATTLIST autor gebDat NMTOKEN #REQUIRED
geschlecht (m | w) #REQUIRED
id ID #REQUIRED
>
]>

Danke Martin Honnen für den Hinweis.

12/08/2008

Fortschritt

Wir haben uns heute bei Becky zu einer Marathonsitzung von 6 Stunden getroffen. Den Großteil des Hirnschmalzes (und der Zeit) hat die signifikante Verbesserung unseren (sagen wir einmal) bis jetzt sehr bescheiden Architekturkonzepts verschlungen. Dabei war uns vor allem der Entwurf von Werner Robitza, Florian Schwarz und Milena Stefanovic sehr hilfreich.
Danke, an dieser Stelle.

Ich denke dieses kollaborative Brainstorming hat uns allen eine klarere Idee von dem vermittelt, was wir eigentlich machen wollen.
Zu guter letzt noch die Vorlage ausgefüllt und einen übergenialen Namen (mit drei Bedeutungen) gefunden: "iContact".

Auf, auf, zur Implementierung!

"If man had more of a sense of humor, things might have turned out differently."
Stanisław Lem