Tom Wieczorek: XPath: Nodes mit unterschiedlichen Namen auswählen?

Beitrag lesen

Hallo allerseits,

folgendes Problem anhand eines Beispiels:

<a>
  <b>foo</b>
  <b>bar</b>
  <c>bla</c>
  <unwanted>Böse Daten ;)</unwanted>
  <b>baz</b>
</a>

Ich habe ein MS XML 3.0 DOMDocument und möchte nun über die selectNodes-Methode an alle b's und c's in a ran. Wie geht das (mit dem MS XML Parser 3.0)? Wichtig ist vor allem die Reihhenfolge der Elemente, so dass 2 XPath-Abfragen à la "a/b" und "a/c" nicht funktionieren. Ich könnte nun alle childNodes durchlaufen und den baseName überprüfen, aber ich bin mir sicher, dass es auch eine nette XPath-Variante gibt. Setze mich erst seit kurzem mit diesem Thema auseinander und wäre daher auch dankbar für Links zu XML/XPath und Konsorten, die nicht so sehr auf XSLT fokussiert sind.

Ich habe da was von der XPath-Funktion name() gelesen und dachte mir, dass vielleicht folgendes funktionieren könnte: "a/*[name() = 'b' or name() = 'c']" Aber hierbei erklärt der MS-Parser mir, dass die Funktion name() unbekannt ist (was er übrigens von jeder Funktion behauptet).

Danke für Eure Hilfe!

Ciao
Tommy