XPATH-Ausdruck mit not

esmeralda

Mitglied
Huhu,

mein Hirn bekommt mal wieder einen Knoten und ich komme keinen Schritt weiter. Ich habe folgenden XPATH Ausdruck in meinem Programm:

[XML](//word[@pos='Pgen'])[ancestor::node[not(@cat='NP')]][/XML]

Ich möchte damit alle word Knoten mit Attribut pos=Pgen finden, die als Vorfahren einen node-Knoten besitzen, dessen Attribut cat nicht gleich NP ist.

Stattdessen findet er aber alle Knoten word mit pos=Pgen und ignoriert den Rest. Die Abfrage ohne das not, um die Vorfahren mit cat=NP zu finden, hat geklappt. Was geht hier also schief? :bahnhof:

Ich hab auch bereits [XML](//word[@pos='Pgen'])[ancestor::node[@cat!='NP']][/XML] ausprobiert - klappt genauso wenig >_<.

Falls jemand sieht, was ich hier falsch gemacht habe, wäre ich über einen Lösungsvorschlag sehr dankbar :).
Ich geh dann mal den Kopf etwas gegen die Wand hauen, vielleicht bringt das ja noch eine Idee
 

musiKk

Top Contributor
Da ich gerade keine Muse besitze, mir eine Beispieldatei zu erstellen, orakle ich mal etwas. ;)
Zunächst mal können mehrere Prädikate gleich hintereinander geschrieben werden, da müssen keine runden Klammern dazwischen. Das wird aber sicher nicht der Fehler sein, ist reine Formsache.

Ich mir nicht sicher, ob das zweite Prädikat so funktioniert. Ein Prädikat ist ja wahr oder falsch, dort oben kommt aber eine Liste von Nodes heraus. Vielleicht muss sowas ran wie [c]//word[@pos='Pgen'][exists(ancestor::node[not(@cat='NP')])][/c] oder [c]//word[@pos='Pgen'][count(ancestor::node[not(@cat='NP')]) > 0][/c]. Ansonsten kann man das doch vielleicht auch andersrum aufziehen: [c]//node[not(@cat='NP')]//word[@pos='Pgen'][/c].

Wie gesagt, alles aus dem Kopf, vielleicht ist wider erwarten ja was dabei.

edit: Ich seh grad, wir hatten ja schonmal das Vergnügen mit so einem Dokument. ;)
 

esmeralda

Mitglied
Danke für die Ideen, werd es nachher mal versuchen einzubauen... Ja - wir hatten schon mal das Vergnügen ^_^ und wie immer bin ich dankbar für die Hilfe.
Das Ganze ist Teil meiner Diplomarbeit und das Programm hat mittlerweile über 4000 Zeilen. Mein Kopf raucht echt so langsam. In 2 1/2 Wochen ist Abgabe und es ist immer noch der Fehler im Programm. Das macht einen echt wahnsinnig ;(.

Ich hab auch mal einen Beispielsatz rausgesucht, der für die Abfrage brauchbar sein sollte.

Beispiel: word mit pos=Pgen und kein node-Vorfahre mit cat=NP
[XML]
<sentence id="998">
<node cat="err" func="--">
<word form="dou" func="-" morph="--" pos="ADVwh" />
<word form="ano" func="-" morph="--" pos="ITJ" />
</node>
<node cat="VPfin" func="--">
<node cat="VP" func="COMP">
<node cat="PP" func="ADJ">
<node cat="NPtmp" func="COMP">
<node cat="PPgen" func="ADJ">
<word form="tsuitachi" func="COMP" morph="--" pos="CDdate" />
<word form="no" func="HD" morph="--" pos="Pgen" />
</node>
<word form="suiyoubi" func="HD" morph="--" pos="NT" />
</node>
<word form="kara" func="HD" morph="--" pos="P" />
</node>
<word form="sassoku" func="ADJ" morph="--" pos="ADVtmp" />
<word form="irete" func="HD" morph="--" pos="Vte" />
</node>
<word form="ikimashou" func="HD" morph="u" pos="VAUXfin" />
</node>
<word form="." func="--" morph="--" pos="." />
</sentence>
[/XML]

Edit: Ach ja - und die Klammern um den ersten Ausdruck habe ich, weil der immer neu generiert wird. Da steht dann später ein längerer zusammengebauter Ausdruck drin.
 
Zuletzt bearbeitet:

esmeralda

Mitglied
Okay, ich hab nun alle vorgeschlagenen Varianten ausprobiert und leider ist die Lösung nicht dabei. Entweder es gibt nen Fehler oder es werden (meistens) einfach alle Knoten ohne die Einschränkung mit dem ancestor ausgewählt. :roll: Ich werde also weiter Google befragen und weiter ausprobieren. Das muss doch möglich sein, so eine Abfrage zu machen? Das wird doch keine so seltene Abfrage sein, oder?? :rtfm:. Das geht doch nicht an, das ich mein Programm wegen der einen Stelle nicht hin bekomme o_O

Edit: Ach ja - die Abfrage (//word[@pos='Pgen'])[ancestor::node[not(@cat='NP')]] funktioniert richtig - erst wenn ich einen Attributwert dazu gebe klappt es nicht mehr.
 
Zuletzt bearbeitet:

esmeralda

Mitglied
Sooo - hab jetzt einiges ausprobiert und scheinbar doch eine Lösung gefunden. Der XPath Ausdruck sieht nun folgendermaßen aus:

[XML](//word[@pos='Pgen'])[not(ancestor::node[@cat='NP'])][/XML]

Damit wird die richtige Anzahl an passenden Knoten gefunden und das Programm läuft weiter ^_^. Zwar hab ich nun an einer anderen Stelle einen weiteren Fehler gefunden, aber so langsam wirds wohl.

Noch mal Danke. Ich hoffe, meine Lösung hilft auch irgendwann jemanden weiter ;-)
 
Ähnliche Java Themen
  Titel Forum Antworten Datum
E Wieso liefert dieser XPATH-Ausdruck nicht die richtige Anzahl Treffer? XML & JSON 8
M XPath Ausdruck validieren XML & JSON 2
M JDOM und XPath, zu Element zugehörigen XPath-Ausdruck XML & JSON 5
F hilfe bei xpath-ausdruck XML & JSON 2
Kirby.exe Probleme mit XML XPATH Select XML & JSON 3
B XPath soll XML liefern XML & JSON 7
O XPATH Problem - Anfänger XML & JSON 4
M dom4j unberechtigte Invalid XPath expression XML & JSON 12
W XPath schreiben XML & JSON 1
P HTML XPath XML & JSON 1
S Ersatz für die veraltete Klasse XPath XML & JSON 1
C XPath: Alle Kinder in einer Schleife auslesen XML & JSON 2
P Xpath zugriff auf Attribute XML & JSON 3
P "XPath is deprecated" XML eclipse XML & JSON 3
G HtmlUnit XPath XML & JSON 5
D XPath-Query XML & JSON 2
I XPath Namensräume und auslesen einzelner Knoten XML & JSON 3
AMStyles XPATH Befehl SVG Java XML & JSON 2
G xpath: in Kindelement zwei Attribut-Werte auslesen XML & JSON 2
G xpath: Inhalt eines Kindelements auslesen XML & JSON 2
H ChildNode via XPath ansprechen XML & JSON 2
G JDOM - aus Children-Liste ein Child direkt ansprechen ohne XPath? XML & JSON 9
S Attribute von Elementen auslesen mit XPath XML & JSON 2
T Xpath & JDOM Element Pfad ausgeben XML & JSON 2
W XPath + Inhalt aus <td> XML & JSON 2
R XPath - frage zur Adressierung XML & JSON 3
reibi XPath XML & JSON 14
M xPath liefert leeres Nodeset XML & JSON 2
M Probleme mit XPath bei Java XML & JSON 5
W Element mit XPath @id ermitteln wenn nur ein teil der id bekannt ist XML & JSON 2
F XPath-Problem mit DOM4J XML & JSON 8
T XPath Problem: finden einer Node nach Attributswert XML & JSON 2
O XPATH gesucht XML & JSON 6
G XPATH-Frage XML & JSON 2
L Element manipulieren in einem DOMResult per XPath XML & JSON 10
P XPath und Namespaces XML & JSON 3
G XPath - replace function funktioniert nicht XML & JSON 3
N XPath Adressierung XML & JSON 7
F XPath frage XML & JSON 4
B Optionaler XPath pfad XML & JSON 2
B XPath frage XML & JSON 2
T Frage zu XQuery (XQJ) / XPath XML & JSON 2
P XPath Problem XML & JSON 2
S Problem mit XPath XML & JSON 4
T Mit XPATH finden und dann änder XML & JSON 2
T EXSD auslesen mit XPath und JDOM XML & JSON 8
G XPath gesucht für Tag mit konkretem Content XML & JSON 2
A XPath Problem XML & JSON 2
C XPath in JDOM klappt nicht XML & JSON 2
T Prbolem XPath XML & JSON 2
X Xpath, alle Element die mit "user" beginnen auswäh XML & JSON 2
loadbrain XPath Problem XML & JSON 2
M brauche große XML-Datei für XPath-Tests XML & JSON 4
F JDOM und XPath - Problem mit Namespace ohne Prefix XML & JSON 5
K java + xpath -> performanceproblem XML & JSON 9
H Xpath kindelemente auslesen XML & JSON 2
S Xml zurück in xpath wandeln XML & JSON 8
G Frage zu XPath XML & JSON 2
flashfactor Filtern mittels XPATH XML & JSON 4
M XSL/XPath - Nur ersten Wert mit selben Attribut XML & JSON 4
M XPath Problem im Zusammenhang mit document() XML & JSON 2
M Frag zu xsl:when beziehungsweise XPath XML & JSON 3
F JDom und XPath XML & JSON 12
C xpath funktioniert nicht XML & JSON 5
M XPATH und RSS (Problem namespaces) XML & JSON 7
P nochmal XPath :-) XML & JSON 22
P XPath . XML & JSON 2
T Rekursiver Verzeichniss Baum in XML & XPath XML & JSON 4
clemson xpath mit jdom XML & JSON 2
Wildcard xpath Parser XML & JSON 8

Ähnliche Java Themen

Neue Themen


Oben