Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1359 connectés 

  FORUM HardWare.fr
  Programmation
  XML/XSL

  probleme avec la fonction contains()

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

probleme avec la fonction contains()

n°1185607
lehic
Posté le 26-08-2005 à 17:15:42  profilanswer
 

Bonjour a tous,
Voila je suis confontré à un problème XPath. Dans mon fichier xsl je fais la selection suivante:
 
Policy[contains(Borrower/FirstName,’myFirstName’)] or je fais une erreur quelque part mais je n’arrive pas a trouver la solution.
 
Le problème est que cette selection se fait seulement sur mon 1er noeud ‘Borrower’ et pas sur les suivants.  
 
Ce qui veut dire que si mon premier noeud ‘Borrower’ a un noeud ‘FirstName’
egal a ‘myFirstName’ alors je vais récupérer un résultat mais si la valeur rechercher se trouve dans un noeud ‘Borrower’ suivants alors je ne récupère rien…
 
 Ce qui me semble étrange est que si je remplace la function contains par un simple ‘=’ alors le xsl me parcourt tous les noeuds ‘Borrower’, quelle est l’explication logique?
 
L’un de vous aurait-il une solution à une erreur de ma part.?
 
Merci d’avance

mood
Publicité
Posté le 26-08-2005 à 17:15:42  profilanswer
 

n°1186760
avander
Posté le 29-08-2005 à 10:31:23  profilanswer
 

Probablement encore une victime du pull-style...  
 
Difficile de répondre sans un exemple concrèt de se que tu veux réaliser ( xml, xsl réduit à leurs plus simple expression ET résultat escompté), je pense pas que la fonction contains() est faite pour être utilisé de la sorte...  
 
pourquoi pas faire qq chose de ce genre?  

   
    ...
    <xsl:apply-templates select="//Policy"/>
    ...
 
  <xsl:template match="Policy">
     <xsl:if test="contains(Borrower/FirstName,’myFirstName’)">
       ...
     </xsl:if>
  </xsl:template>


Message édité par avander le 29-08-2005 à 10:33:17
n°1186791
lehic
Posté le 29-08-2005 à 11:00:28  profilanswer
 

merci pour ton aide mais entre temps j'avais trouve reponse a mon probleme.
 
Merci bien

n°1186909
avander
Posté le 29-08-2005 à 11:59:51  profilanswer
 

Dans ce cas je pense que ça pourrait intéresser du monde...

n°1186912
lehic
Posté le 29-08-2005 à 12:02:13  profilanswer
 

Oui desole voici donc la reponse trouvee sur une mailing-list:
 
L'explication est simple :
 
La fonction xpath "contains" prend comme arguments deux parametres de type string, votre processeur commence doc par convertir la valeur Borrower/FirstName (de type node-set) en type string, pour cela, le processeur prend la valeur textuelle du premier noeud dans l'ordre préfixe des noeuds du document ce qui estplique que votre test ne réussisse que dans le cas ou c'est le premier element qui contient la sous-chaine.
 
(c.f. fonction string de la spec :
"A node-set is converted to a string by returning the string-value <http://www.w3.org/TR/xpath#dt-string-value> of the node in the node-set that is first in document order <http://www.w3.org/TR/xpath#dt-document-order>. " )
 
La solution est donc:
Policy[Borrower/FirstName[contains(.,'myFirstName')]]
 
Bonne continuation

n°1187571
avander
Posté le 30-08-2005 à 10:09:57  profilanswer
 

:jap:


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  XML/XSL

  probleme avec la fonction contains()

 

Sujets relatifs
Probleme avec espace membre...probleme avec Allegro
Problème de date avec vb et accessCSS probléme d'affichage entre Navigateurs
Problème CSS et Fiefoxfonction recursive
Probleme avec une variable dans un formulaire[JAVA] Problème de déplacement de fichiers
probleme de formulaire a envoyerProblème d'actualisation
Plus de sujets relatifs à : probleme avec la fonction contains()


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR