2010-12-01 37 views
19

Étant donnéObtenir un sous-chaîne d'un attribut dans XPATH

<foo> 
    <bar baz="Hello, World!"> 
</foo> 

Comment puis-je tous, mais les 4 derniers caractères de @baz? Un de mes tentatives était:

/foo/bar/@baz[substring(., 0, -4)] 
+1

Bonne question, +1. Voir ma réponse pour la seule solution correcte jusqu'à présent. :) –

Répondre

17

Utilisation:

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-3) 

Prenez note de la 3 dans l'expression.

Ce qui suit est faux:

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4) 

parce que cela renvoie les 5 derniers caractères de la valeur de chaîne de l'attribut baz.

3

qui est en fait pas si mal, mais IIRC ne substring pas comme indices négatifs. J'ai essayé

substring(/foo/bar/@baz, string-length(/foo/bar/@baz)-4) 

Qui m'a donné le résultat attendu.

6

essayez ceci: substring-before(/foo/bar/@baz,"rld!")

+0

C'est vraiment simple, merci. – Rao