Summe String-Länge von zwei verschiedenen Knoten mit XPath-Summe zwei Knoten String-Länge

StackOverflow https://stackoverflow.com/questions/7828091

  •  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!

War es hilfreich?

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]
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top