1. #1
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut XML/XSTL - Retirer des espaces d'une url au moment d'inscrire la valeur au <a href..>

    Bonjour,

    Je cherche à gérer automatiquement le retrait des espaces qui se trouvent dans l'url se trouvant dans un fichier xml. Évidemment, ces espaces rendent l'url invalides, mais nous souhaitons gérer ce cas sans corriger à la source. Je n'arrive pas à afficher correctement le lien au format html dans la balise <a href="... > ... </a>. Voir le template 'liensimple' tout en bas.

    Je vous remercie de votre aide.

    Voici un extrait du système :

    XML :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
     
    <?xml version="1.0" encoding="UTF-8"?>
    <note id="no23">
      <no>23</no>
      <alinea>Voir « Le bon usage : morceaux choisis », en ligne :
        <liensimple id="ls1" href="http://abc.blog. ca/2001/01/le-bon-usage-morceaux.html">http://abc.blog.
                ca/2001/01/le-bon-usage-morceaux.html
        </liensimple>
    (page consultée le 8 janvier 2001).
      </alinea>
    </note>
    XSLT :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
     
    <?xml version="1.0" encoding="UTF-8"?>
    <xsl:stylesheet version="1.0"
    xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
    <xsl:template match="/">
      <html>
      <body>
      <h2>Test note</h2>  
      <xsl:apply-templates/>  
      </body>
      </html>
    </xsl:template>
     
    <xsl:template match="note">
      <p>
        <xsl:apply-templates select="no"/>  
        <xsl:apply-templates select="alinea"/>
      </p>
    </xsl:template>
     
    <xsl:template match="no">
      No: <span style="color:#ff0000">
      <xsl:value-of select="."/></span>
      <br />
    </xsl:template>
     
    <xsl:template match="alinea">
      Alinea: <span style="color:#00ff00">
      <!-- <xsl:value-of select="."/> -->
          <xsl:if test="//liensimple">
            <xsl:apply-templates select="liensimple"/>
          </xsl:if>
        </span> 
      <br />
    </xsl:template>
     
    <xsl:template match="liensimple">
        <xsl:attribute name="href">
          <a href="{translate(., ' ','')}">
            <xsl:value-of select="translate(normalize-space(.),' ','')"/>
          </a>
         </xsl:attribute>
    </xsl:template>
     
    </xsl:stylesheet>

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 098
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 098
    Points : 18 782
    Points
    18 782

    Par défaut

    Hello, peux-tu nous montrer le document produit en appliquant ce XSLT sur ce XML ?
    Il me semble que cela devrait te mettre sur la voie.

    Le problème n'a juste rien à voir avec les espaces. Ça ne marche juste pas, avec ou sans espace.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  3. #3
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut html produit :

    Salut,
    Voici ce que la feuille de style génère à partir de ce fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    <html>
       <body>
          <h2>Test note</h2>
          <p>
             No: <span style="color:#ff0000">23</span><br>
             Alinea: <span style="color:#00ff00" href=""></span><br></p>
       </body>
    </html>
    Il manque tout le bloc de l'élément <a href> qui devrait être produit par le template "liensimple".

    Merci de votre support !

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    septembre 2004
    Messages
    11 098
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 098
    Points : 18 782
    Points
    18 782

    Par défaut

    Citation Envoyé par sebastienrenaud Voir le message
    Il manque tout le bloc de l'élément <a href> qui devrait être produit par le template "liensimple".
    Oui, mais où devrait-il être produit exactement, et comment ton code s'y prend-il pour que ce soit là et pas ailleurs ?

    Peux-tu nous parler de cet attribut href="" dans la balise <span> ? Il n'y a pas d'attribut href dans les balises <span>...
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  5. #5
    Membre expérimenté
    Inscrit en
    octobre 2011
    Messages
    1 001
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 001
    Points : 1 733
    Points
    1 733

    Par défaut

    Citation Envoyé par sebastienrenaud
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match="liensimple">
        <xsl:attribute name="href">
          <a href="{translate(., ' ','')}">
            <xsl:value-of select="translate(normalize-space(.),' ','')"/>
          </a>
         </xsl:attribute>
    </xsl:template>
    Ce template ne serait marché, jamais. Un attribut qui se contruit avec le constructeur xsl:attribute ne peut jamais contenir de structure d'enfant complexe. Un attribute n'est incapable de contenir une structure complexe.

    On peut essayer de le sauver comme ça ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:template match="liensimple">
       <a href="{translate(@href, ' ','')}">
         <xsl:value-of select="translate(@href,' ','')"/>
       </a>
    </xsl:template>

  6. #6
    Candidat au Club
    Homme Profil pro
    Consultant informatique
    Inscrit en
    décembre 2016
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : décembre 2016
    Messages : 3
    Points : 3
    Points
    3

    Par défaut Pointer directement sur la valeur de l'attribut @href

    Ça fonctionne en pointant directement sur l'attribut @href !

    La correction telle que proposée par Tsuji :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    <xsl:template match="liensimple">
       <a href="{translate(@href, ' ','')}">
         <xsl:value-of select="translate(@href,' ','')"/>
       </a>
    </xsl:template>
    Merci à vous tous ! Merci à Tsuji qui a trouvé ce qui n'allait pas.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [Debutant] notation des espaces dans une adresse
    Par DiVa dans le forum Débuter
    Réponses: 3
    Dernier message: 16/03/2006, 17h58
  2. [String] Ajouter des espaces à une chaine
    Par jake84 dans le forum java.util
    Réponses: 4
    Dernier message: 13/02/2006, 16h56
  3. [xml/xsl] Récuperer un parametre d'une url
    Par ekmule dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 06/12/2005, 14h59
  4. [CR] Générer des espaces pour une valeur champ
    Par newpress dans le forum SAP Crystal Reports
    Réponses: 2
    Dernier message: 17/02/2005, 17h43

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