XPath SuchQuery - Alle Element inkl. Root

unrealzero_php

Erfahrenes Mitglied
Hallo zusammen

Ist es mit XPath möglich eine Suchquery so zusammenzustellen, dass ich beispielsweise auf dem dritten Knotenpunkt einen Attributwert suchen kann und als Ergebnis erhalte ich den gesamte Baum?

Anbei mein Versuch...bei dieser Suche wird mir wieder der komplette Baum angezeigt mit allen anderen Datensätzen.

PHP:
$query = '/selection/origin/regions/wine[@id="_234"]/parent::*'

In diesem Beispiel möchte ich lediglich den Wein mit der ID 234 zurückgeben aber mit dem kompletten Baum:

Code:
<selection>
    <origin country="Argentinien">
        <regions region="Mendoza">
            <wine id="_234">
                <item_number>31321</item_number>
                <name>Chardonnay Mendoza</name>
                <appellation>Alamos Wines of Catena</appellation>
                <type>Weisswein</type>
                <year>2006/08</year>
                <capacity>75 cl</capacity>
                <volume>14.0</volume>
                <price>11.85</price>
                <consumption_to>2012</consumption_to>
                <service_temperature_of>8</service_temperature_of>
                <service_temperature_to>10</service_temperature_to>
                <described>/described>
                <grape>
                    <sort quota="">Chardonnay</sort>
                </grape>
            </wine>
        </regions>
    </origin>
</selection>

Wie muss ich die Suche anpassen bzw. ist so etwas überhaupt möglich?
 
Hallo zusammen

Ist es mit XPath möglich eine Suchquery so zusammenzustellen, dass ich beispielsweise auf dem dritten Knotenpunkt einen Attributwert suchen kann und als Ergebnis erhalte ich den gesamte Baum?

Anbei mein Versuch...bei dieser Suche wird mir wieder der komplette Baum angezeigt mit allen anderen Datensätzen.

PHP:
$query = '/selection/origin/regions/wine[@id="_234"]/parent::*'

In diesem Beispiel möchte ich lediglich den Wein mit der ID 234 zurückgeben aber mit dem kompletten Baum:
Welche Knoten möchtest du jetzt als Ergebnis erhalten? Den Wurzelknoten? Oder den wine Knoten mit der id = _234?

Oder alle Knoten dazwischen?

Gruß
 
Am liebsten den Wurzelnoten inkl. aller Knoten dazwischen so wie im Beispiel angegeben.
Du hast aber ein Teildokument angegeben und keine Knotenmenge. Evtl. solltest du mal erklären wozu deine Abfrage gut sein soll...
Code:
//node()[descendant-or-self::wine[@id='_234']]
Mit dem vorigen Code erhälst du eine Knotenmenge in dem das selection, das origin, das regions und das wine Element aus dem Testdokument enthalten sind.

Gruß
 
Zurück