Summe String-Länge von zwei verschiedenen Knoten mit XPath-Summe zwei Knoten String-Länge
-
27-10-2019 - |
Frage
Hallo Leute, der folgende XPath scheint nicht zu funktionieren.
//FullName[sum(string-length(FirstName) | string-length(LastName))>= 30]
Fehler: Ausdruck muss an einen Knotensatz bewertet werden.
XML Snippet
<FullName>
<FirstName>somereallylongfirstnameguy</FirstName>
<LastName>somereallylonglasttnameguyabcdefghijklmnopqrstuv</LastName>
</FullName>
Ich weiß, dass die Summenfunktion die Zahl zusammenfasst und die String -Länge Zahlen zurückgibt.
Der folgende Ausdruck funktioniert gut:
//FullName[string-length(FirstName) >= 1]
Jede Hilfe wäre geschätzt, danke!
Lösung
Das sum()
Funktion erwartet einen Knotensatz, was Sie versuchen, mit Ihrem zu versorgen string-length()
Anrufe, aber das scheitert. sum()
scheint hier nicht die entsprechende Funktion zu sein.
Sie können entweder die Längen direkt im Prädikat hinzufügen:
//FullName[string-length(FirstName)+string-length(LastName) >= 30]
Oder Sie können zuerst Concattenate verwenden und dann die Länge erhalten:
//FullName[string-length(concat(FirstName,LastName)) >= 30]
Oder wenn Ihr Snippet für alle repräsentativ ist FullName
Elemente, betrachten Sie einfach die Länge des gesamten Textknoteninhalts des Kontextknotens wie folgt:
//FullName[string-length() >= 30]
Andere Tipps
Wenn die Anzahl der Namen variieren kann (z. B. mittlere Initil, Orefix, Suffix usw.), ist es im Allgemeinen nicht möglich, die gesuchte Summe mit einem einzelnen XPath 1.0 -Ausdruck zu erhalten.
In XPath 2.0 ist dies möglich:
//FullName[sum(*/stringlength()) ge 30]