IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

XML/XSL et SOAP Discussion :

URL encode ?


Sujet :

XML/XSL et SOAP

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut URL encode ?
    Bonjour a tous,

    voila, j'ai un petit probleme avec le signe &.
    mon document xml contient un noeud du type :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <name> a & b </name>
    dans mon fichier xsl, je fais un :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    <td>
    <a>
           <xsl:attribute name="href">autre_page.jsp?name=<xsl:value-of select="name" /> </xsl:attribute>
           Link
    </a>
    </td>
    Cela pose donc un probleme pour mon a & b passe dans l'url...

    Comment pourrais-je remedier a ca ?

  2. #2
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Tu peux utiliser normalize-space() :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:attribute name="href">autre_page.jsp?name=<xsl:value-of select="normalize-space(name)" /> </xsl:attribute>

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    merci, les espaces sont bien convertis mais pas le signe &

  4. #4
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Dans ce cas il me semble que le problème n'est pas au niveau XSL, mais plutôt au niveau du fichier XML. Il faut transformer les caractères spéciaux par leur équivalent encodés pour que le document XML soit conforme.

    C'est le cas avec les < et > par exemple. As-tu testé ton fichier XML avec des < et des > ? Ca doit planter à coup sûr.

    Normalement, le caractère "&" devrait être remplacer par "&amp;".

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    dans mon fichier XML, j'arrive a avoir un noeud :
    et le lien fonctionne avec ce < (encode en %3C dans l'URL)

  6. #6
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Mais ton fichier XML n'est pas conforme. Et XSL travaille avec des fichiers conformes Surtout les fonctions comme normalize-space. Peut-être en cherchant la liste des fonctions, il y en a une qui répondre à ton besoin, mais je ne connais pas.

    J'ai peur de n'avoir aucune solution à te proposer, mise à part de revoir le script qui génère le XML pour qu'il génère un fichier conforme..
    Ou bien, passer une moulinette qui le rende conforme, au moins en transformant les caractères spéciaux par leurs équivalents encodés.

    Peut-être que quelqu'un d'autre a une idée ?

  7. #7
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Après recherche sur google, j'ai trouvé la fonction escape-uri() qui répond à ton besoin Donc un escape-uri(normalize-space(name)) devrait fonctionner !

  8. #8
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    merci, je suis en train d'y regarder. Cette fonction semble faire ce dont j'ai besoin mais c'est pour XSLT 2.0 (qui n'est pas encore une norme me semble-t-il) or mon fichier xsl est defini en XSLT 1.0 donc ca devrait poser pb non ?

  9. #9
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    Arg

    Dans ce cas peut-être un appel tout simple à la fonction string() au lieu de escape-uri(), mais je ne suis pas sûr

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    string() n'a pas fonctionne malheureusement (en tout cas merci pour ton aide kilvaiden)

    apres avoir cherche dans les trefonds des forums du net (si ca tombe, je n'ai pas vu ce qui est visible ^_^), j'ai trouve ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:urle="java.net.URLEncoder">
    puis on utilise ca comme ca :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <xsl:attribute name="href">autre_page.jsp?name=<xsl:value-of select="urle:encode(name,'UTF-8')" /></xsl:attribute>
    d'apres mes premiers essais, ca a l'air de fonctionner, mon & passe bien entre les pages.

    si quelqu'un pouvait me dire s'il connait une autre solution (ou un pb qu'il voit avec celle-ci), ce serait sympa.

  11. #11
    Membre Expert Avatar de KiLVaiDeN
    Profil pro
    Inscrit en
    Octobre 2003
    Messages
    2 869
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2003
    Messages : 2 869
    Par défaut
    C'est une solution interessante !

    Mais le problème est que le jour où tu ne pourras pas faire le lien avec la classe URLEncoder de java.net, ton xsl ne fonctionnera plus

    Mais si tu travailleras toujours en environnement Java, c'est une bonne solution !

  12. #12
    Expert confirmé
    Avatar de GrandFather
    Inscrit en
    Mai 2004
    Messages
    4 587
    Détails du profil
    Informations personnelles :
    Âge : 55

    Informations forums :
    Inscription : Mai 2004
    Messages : 4 587
    Par défaut
    Bonjour,

    il y a une chose qui me chiffonne, et KiLVaiDeN te l'a fait remarquer, c'est que si ton XML est vraiment comme ceci :
    aucune transformation ne pourrait avoir lieu, puisque le parsing de la source echouerait en amont (ton XML est mal formé).

    Quel est exactement le symptôme du problème ?
    FAQ XML
    ------------
    « Le moyen le plus sûr de cacher aux autres les limites de son savoir est de ne jamais les dépasser »
    Giacomo Leopardi

  13. #13
    Membre averti
    Profil pro
    Inscrit en
    Avril 2005
    Messages
    19
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2005
    Messages : 19
    Par défaut
    mea culpa, je viens de verifier...

    en fait, ma page JSP appelle un script PHP qui construit et affiche dans le browser un fichier XML (que j'analyse etc). Dans ce que j'avais a l'ecran, je voyais bien :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <name> a & b </name>
    c'est ce qui m'a fait dire que j'avais & a l'interieur du noeud. mais je viens de regarder le source de ce fichier XML affiche et j'ai bien :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    <name>a &amp; b</name>
    desole pour l'erreur.

Discussions similaires

  1. Caractère URL encodé
    Par djaize dans le forum Général Java
    Réponses: 2
    Dernier message: 16/12/2010, 18h28
  2. paramétrage d'url encoding sous IIS V6.0
    Par jmclej dans le forum IIS
    Réponses: 1
    Dernier message: 25/02/2010, 14h26
  3. paramétrage d'url encoding sous IIS V6.0
    Par jmclej dans le forum ASP.NET
    Réponses: 1
    Dernier message: 12/02/2010, 23h24
  4. les url encodées
    Par ithurts dans le forum Général JavaScript
    Réponses: 0
    Dernier message: 10/02/2010, 17h24
  5. [URL] Encoder une URL (requete Http)
    Par webspeak dans le forum Général Java
    Réponses: 14
    Dernier message: 29/03/2006, 10h47

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo