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

XSL/XSLT/XPATH XML Discussion :

[XSLT][XPATH] Utilisation de variable


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre éclairé Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut [XSLT][XPATH] Utilisation de variable
    Voilà en entrée j'ai ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <createTime type=datetime>20061026161707.0</createTime>
    Je veux cela en sortie:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <createTime>07-Nov-06 15:25:11</createTime>
    Pour obtenir ce résultat, j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
     <xsl:when test="@type='datetime'">
                     <xsl:variable name="date" select="current()"/>
                     <xsl:element name="{name()}">
                     <xsl:value-of select="substring($date, 7, 2)"/>-<xsl:call-template name="month"><xsl:with-param name="mon-num" select="substring($date, 5,2)"/></xsl:call-template>-<xsl:value-of select="substring($date, 3, 2)"/>*<xsl:value-of select="substring($date, 9, 2)"/>:<xsl:value-of select="substring($date, 11, 2)"/>:<xsl:value-of select="substring($date, 13, 2)"/>
                     </xsl:element>
                 </xsl:when>
    Maintenant serait-il possible d'utiliser une variable pour stocker chaque partie de la sortie? En fait mon problème est que si je fais par exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:value-of select="substring($date, 7, 2)"/>
    -
    <xsl:call-template name="month">
    Je me retrouve avec en sortie:
    " d'avance.

  2. #2
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    je suis étonné que :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="substring($date, 7, 2)"/>
    renvoi 07! car 07 ne commnce pas à la 7éme position.
    je vois pas trop ce qui t'mpeche de stocker chaque partie dans une variable et concatenet le tout à la fin pour avoir la sortie souhaité?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    <xsl:variable name="day" select="substring($date, 1, 2)"/>
    <xsl:variable name="month-num" select="substring($date, 3, 2)"/>
    etc....

  3. #3
    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
    @valal : il semblerait que dans l'exemple de be_tnt la sortie ne corresponde pas à l'entrée... Ca doit être pour vérifier qu'on suit bien.

    Sinon, tout comme valal : placer chaque "token" de la date dans une variable, et pour afficher la date complète utiliser la fonction XPath concat().
    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

  4. #4
    Membre éclairé Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    oups désolé J'ai vraiment besoin de vacances.
    En tout cas, vous suivez bien

    Si je comprends, je peux stocker chaque partie dans une variable et ensuite concaténer les tout, c'est ça?

    Est-ce que je peux avoir une seule variable et concaténer au fur et à mesure les différentes valeurs (comme on ferait en Java)? Désolé si mes questions sont un peu simpliste mais je débute en xslt ..... et j'avoue avoir un peu du mal

  5. #5
    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
    Citation Envoyé par be_tnt
    Si je comprends, je peux stocker chaque partie dans une variable et ensuite concaténer les tout, c'est ça?
    C'est exactement ça.
    Citation Envoyé par be_tnt
    Est-ce que je peux avoir une seule variable et concaténer au fur et à mesure les différentes valeurs (comme on ferait en Java)?
    Non, et c'est une spécificité que XSLT partage avec les langages fonctionnels, les variables sont immuables (immutable in english).
    Citation Envoyé par be_tnt
    Désolé si mes questions sont un peu simpliste mais je débute en xslt ..... et j'avoue avoir un peu du mal
    On est tous passé par là...
    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

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2005
    Messages
    847
    Détails du profil
    Informations forums :
    Inscription : Octobre 2005
    Messages : 847
    Par défaut
    Citation Envoyé par GrandFather
    @valal : il semblerait que dans l'exemple de be_tnt la sortie ne corresponde pas à l'entrée... Ca doit être pour vérifier qu'on suit bien.
    ah..là je comprends

    oui tu peux...mais c répétitititititf et pas nécessaire. par contre si tu veux réutiliser ta variable tu peux le faire mais une fois à la fin!

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:variable name="day" select="substring($date, 1, 2)"/>
    <xsl:variable name="month-num" select="substring($date, 3, 2)"/>
    etc....
    <xsl:variable name="resultat-final" select="concat($day,$month-num,$annee)"/>

  7. #7
    Membre éclairé Avatar de be_tnt
    Profil pro
    Inscrit en
    Novembre 2005
    Messages
    312
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Novembre 2005
    Messages : 312
    Par défaut
    okidoki

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

Discussions similaires

  1. [XSLT] Utilisation de variable dynamique
    Par stujava dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 23/10/2009, 08h16
  2. Réponses: 3
    Dernier message: 09/12/2008, 16h48
  3. [XSLT]comment utiliser xsl:if avec une variable
    Par dbill dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 22/08/2007, 13h23
  4. [xslt][xpath]Utilisation des attributs XML
    Par Little_flower dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 15/05/2007, 12h42
  5. [XSLT][XPATH ] Portée d'une variable locale
    Par be_tnt dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 15/11/2006, 15h39

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