Um diese Technik benutzen zu können, muss man schon ein wenig mit XPath vertraut sein. Man kann hierzu entweder die komplette XPath-Spezifikation lesen, aber das ist ein recht trockener Stoff. Für den Anfang sollen hier einige einfache XPath-Ausdrücke analysiert werden. Hier der Ausdruck aus Abbildung A:
Dieser Ausdruck besteht aus zwei Teilen. Zuerst wird festgelegt, welche Werte ausgegeben werden sollen, als zweites gibt es einen Filter (in eckigen Klammern), der die ausgegebenen Daten einschränkt. Der erste Ausdruck liefert einen Pfad durch die XML-Datei zu den gesuchten Daten. Listing C zeigt einen kleinen Auszug aus dem XML-Äquivalent der Daten im DataSet.
Die Auslassungen zeigen natürlich, wo ein Großteil zusätzlicher Daten fehlt. Der Ausdruck /OrderData/Employees/LastName sucht nach LastName-Elementen die Kinder von Employees-Elementen sind, die wiederum Kinder von OrderData-Elementen sind, die sich auf der Root-Ebene der XML-Datei befinden. Wie man sehen kann, liefert dies einen Pfad zu den gewünschten Elementen (ganz ähnlich wie bei einem Verzeichnispfad auf der Festplatte) – daher der Name XPath.
Für sich alleine genommen, würde diese Ausdruck alle LastName-Elemente aus der gesamten XML-Datei ausgeben. Der zweite Teil des Ausdrucks, [../Orders/OrderDetails/ProductID=27], filtert den Ausdruck, so dass nur bestimmte LastName-Elemente ausgegeben werden. Dieser Ausdruck besagt, dass beim Eltern-Element des LastName-Elements begonnen werden soll (angegeben durch die zwei Punkte) und dann abwärts die Elemente Orders, OrderDetails und ProductID durchlaufen werden sollen. Dann sucht der Ausdruck nach ProductID-Elementen, deren Wert 27 ist. Der LastName (aus dem ersten Teil des Ausdrucks) wird nur ausgegeben, wenn die ProductID 27 gefunden wurde.
XPath unterstützt auch eine Auswahl von Filter-Funktionen wie im folgenden Ausdruck:
Eine deutsche Übersetzung dieses Ausdrucks könnte lauten: „Gib die Nachnamen aller Mitarbeiter aus, deren Nachname mit D beginnt.“ Man kann diesen Ausdruck sogar noch etwas vereinfachen:
Hier bezieht sich der einzelne Punkt innerhalb der Funktion starts-with auf den aktuellen Knoten, d. h. auf den gerade untersuchten LastName.
Zu den weiteren Filter-Funktionen gehören contains (die untersucht, ob ein String einen anderen enthält), last (die das letzte Element einer Collection ausgibt), string-length (die die Anzahl der Zeichen in einem String ausgibt) und substring (die einen Teilstring eines Strings ausgibt).
Neueste Kommentare
1 Kommentar zu XPath zum Abrufen von Infos aus einer Jet-Datenbank
Kommentar hinzufügenVielen Dank für Ihren Kommentar.
Ihr Kommentar wurde gespeichert und wartet auf Moderation.
Kopie??
Diesen Artikel hab ich doch schon auf http://www.builder.com gelesen… nur eben in englisch….