kurze Verständnisfrage
hh
- xsl
0 MudGuard
0 hh
1 Thomas J.S.0 hh
Oh man, heute hagelt es wieder Fragen bei mir ;-(
Ich habe einen Knoten, der entweder so <Text/> oder so <Text></Text> oder so <Text>etwas text</Text> vorkomment. Ich moechte nun mit Xpath anweisung nur auf letzteren Knoten "zielen". nun meine Frage, warum ist
"Root[Text/text() != '']" nicht gleich "Root[not(Text/text() = '')]" ?? Oder wie gehe ich sicher, dass ich alle leeren Knoten ausschliesse?
Gruß,
Holger
PS: text() ist noch(?) nicht in den XPath-Funktionen bei selfhtml.org aufgeführt
Hi,
"Root[Text/text() != '']" nicht gleich "Root[not(Text/text() = '')]"
Wenn ich mich nicht irre:
Das erste wählt ein Root-Element aus, das ein Text-Element enthält, das irgendeinen nichtleeren Text enthält.
Das zweite wählt ein Root-Element aus, daß nicht ein Text-Element enthält, das keinen Text enthält.
1. <Root><Text></Text></Root>
2. <Root><Text>bla</Text></Root>
3. <Root></Root>
Das erste müßte 2. auswählen, das zweite 2. und 3.
cu,
Andreas
Vielen Dank,
hat geholfen und Wissen ist gewachsen ;-)
Hallo,
Ich habe einen Knoten, der entweder so <Text/> oder so <Text></Text> oder so <Text>etwas text</Text> vorkomment. Ich moechte nun mit Xpath anweisung nur auf letzteren Knoten "zielen". nun meine Frage, warum ist
"Root[Text/text() != '']" nicht gleich "Root[not(Text/text() = '')]" ??
Root[Text/text() != '']: hier wird vergleichst du den text()-Knoten, wenn das Element leer ist, gibt es aber keinen text()-Knoten. Du testest explizit das Vorhandensein eines text-Knoten.
Root[not(Text/text() = '')]: hier vergleichst du ob in einem Text dessen text()-Knoten leer sei, dass kann aber auch dann sein, wenn das Elemente leer ist (sprich wenn es keinen text()-Knoten hat: der Test ergibt dann 0 bzw. eben "leer")
bei:
<data>
ergibt ein Vergleich mit data[text/text() != ''] bzw. mit data[not(text/text() = '')] folgende Trefferquote:
Oder wie gehe ich sicher, dass ich alle leeren Knoten ausschliesse?
Root[Text != '']
PS: text() ist noch(?) nicht in den XPath-Funktionen bei selfhtml.org aufgeführt
Weil text() ebenso wie node(), comment() und processing-instruction() keine Funktion, sondern ein Knotentest ist. text() selektiert alle Textknoten an der relevanten Achse, so wie node() alle Knoten an der relevanten Achse selektiert.
Grüße
Thomas
Besten Dank,
perfekt, ich fuehle mich erleuchtet. Vielen Dank!! Auch für das hier, http://forum.de.selfhtml.org/?t=137157&m=891007 werde ich ausprobieren.
Gruß, H.