XPath-Anfänger: XPath: Wie kann ich den Text zwischen zwei Knoten auslesen?

Hallo,
ich habe ein XML-Dokument mit der folgenden Struktur:

<AAA>
   <BBB id="0"/>
   Hallo
   <BBB id="5"/>
   Welt
   <BBB id="9"/>
</AAA>

Nun möchte ich einen Textknoten zwischen zwei bestimmten BBB-Knoten auslesen, deren id gegeben ist. Also zum Beispiel den Text zwischen dem BBB-Knoten mit der id 5 und dem mit der id 9.
Wie kann ich das anstellen?
Vielen Dank für Eure Hilfe!

  1. Hi!

    ich habe ein XML-Dokument mit der folgenden Struktur:

    <AAA>
       <BBB id="0"/>
       Hallo
       <BBB id="5"/>
       Welt
       <BBB id="9"/>
    </AAA>

    Ist das mit den leeren Elementen /so/ gewollt?

    off:PP

    --
    "You know that place between sleep and awake, the place where you can still remember dreaming?" (Tinkerbell)
  2. Hallo XPath-Anfänger,

    ich habe ein XML-Dokument mit der folgenden Struktur:

    <AAA>
       <BBB id="0"/>
       Hallo
       <BBB id="5"/>
       Welt
       <BBB id="9"/>
    </AAA>

    Hat diese Struktur einen besonderen Grund? Die Textknoten könnten IMHO sinnvoller innerhalb der BBB-Elemente platziert werden.

    Nun möchte ich einen Textknoten zwischen zwei bestimmten BBB-Knoten auslesen, deren id gegeben ist. Also zum Beispiel den Text zwischen dem BBB-Knoten mit der id 5 und dem mit der id 9.

    Machbar ist das durchaus, z. B. so:

    AAA//text()[preceding-sibling::BBB[@id='5'] and following-sibling::BBB[@id='9']]

    Zur Vermeidung der Umbrüche ggf. noch normalize-space(...) anwenden.

    Grüße,
    Thomas

    1. Hallo Thomas,
      vielen Dank für die schnelle Hilfe!

      Hallo XPath-Anfänger,

      »» ich habe ein XML-Dokument mit der folgenden Struktur:
      »»
      »» <AAA>
      »»    <BBB id="0"/>
      »»    Hallo
      »»    <BBB id="5"/>
      »»    Welt
      »»    <BBB id="9"/>
      »» </AAA>

      Hat diese Struktur einen besonderen Grund? Die Textknoten könnten IMHO sinnvoller innerhalb der BBB-Elemente platziert werden.

      Die XML-Dokumente, die ich verwende, habe ich nicht selbst erstellt, sondern so bekommen - ich hätte so etwas wie <BBB id="x">Hallo</BBB> eigentlich auch geschickter gefunden, und auch wesentlich einfacher mit XPath zu handhaben... aber zum Glück geht es ja auch so, also nochmals vielen Dank!