problème avec fonction xquery "get-param", solution dans une version "Strict"

View: New views
1 Messages — Rating Filter:   Alert me  

problème avec fonction xquery "get-param", solution dans une version "Strict"

by Madola Gérard Constantin :: Rate this Message:

Reply to Author | View Threaded | Show Only this Message

Bonjour,

Il y'a un problème avec le fonctionement actuel de get-param.
voici l'expresssion que cette fonction utilise pour récupérer les paramètres :

            if (contains(substring-before($doc, ':'),$name)) then
                normalize-space(substring-after($doc, ':'))
            else


Le problème est le suivant, si j'ai en entré  nodeName:Unnom

(contains(substring-before($doc, ':'),$name)) avec $name = "node" renvoie vrai !!!!! et c'est le mauvais paramètre qui est pris et qui écrase
celui recupéré auparavent.


Une solution simple est de remplacer "contains" par une égalité stricte ( = ou stringEquals).
Cette solution nécéssite de modifier la manière de selectioner un paramètre. En effet
le xpath d'entré est de la forme obl.*:*,obl.*:*,obl.*:*,obl.*:*
le séparateur est ",obl." (virgule + obl + point)
Pour récuperer la séquence de paramètre:valeur on utilise un tokenize(xpath,separateur).
tout les élements d'indince supérieur à 1 sont bien décomposés, le premier lui reste obl.*:
Un contains permet de pouvoir néanmoins recuperer la valeur, mais une égalité stricte ne poura pas.

C'est pourquoi, afin de ne pas pertuber le comportement précédent , j'ai dupliquer la fonction "getParam"
que j'ai renomé en "getParamStrict".
Pour pouvoir recuperer la totalité des paramètre en utilisant la version Strict, il faut rajouter
avant le "tokenize"  concat(',',$_xpath) => on ajoute une "," en première position du xpath afin d'avoir tout
les paramètre efctivement entouré d'un ",obl.".

il y'aura dorénavant deux fonctions disponibles pour recuperer les paramètres : getParam, et getParamStrict

Avez vous des remarques à faire ?