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 :

XSL: Tester le nom d'un fichier


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut XSL: Tester le nom d'un fichier
    Bonjour à tous,

    J'ai pour mon entreprise une modification à faire sur un script Xsl. Le bout de code concerné est le suivant:

    <xsl:template match="asset">
    <xsl:choose>
    <xsl:when test="@media_type='img'">
    <center><img>
    <xsl:attribute name="hspace">5</xsl:attribute>
    <xsl:attribute name="vspace">5</xsl:attribute>
    <xsl:attribute name="src">../../images/<xsl:value-of select="translate(location,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')" /></xsl:attribute>

    <xsl:attribute name="align">center<!--xsl:apply-templates select="@align"/--></xsl:attribute>
    </img></center>
    </xsl:when>
    </xsl:choose>
    </xsl:template>
    Il faut ajouter une condition qui dit que, lorsque je rencontre une image GIF dont les 2 caractères précédants le "." sont "_e" (par exemple "image_e.gif)", il n'applique plus:
    <xsl:attribute name="src">../../images/<xsl:value-of select="translate(location,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')" /></xsl:attribute>
    mais à la place:

    <xsl:attribute name="src">../../images/e/<xsl:value-of select="translate(location,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')" /></xsl:attribute>
    Le problème étant que je n'ai aucune idée de comment tester ce nom de fichier.

    Merci d'avance pour votre aide

  2. #2
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Salut,
    Ben avec un xsl:if et un ends-with() ça devrait aller :
    http://www.zvon.org/xxl/XSL-Ref/Tuto...tions/sm4.html

  3. #3
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Super pour le end-with !

    Par contre dans un xsl:if ça ne passe pas...

  4. #4
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Ben montre nous ton code, non?

  5. #5
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    <xsl:template match="asset">
    <xsl:choose>
    <xsl:when test="@media_type='img'">
    <center><img>
    <xsl:attribute name="hspace">5</xsl:attribute>
    <xsl:attribute name="vspace">5</xsl:attribute>

    <xsl:if test="location=ends-with('_e.gif')">
    <xsl:attribute name="src">../../images/e/<xsl:value-of select="translate(location,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')" /></xsl:attribute>
    </xsl:if>
    <xsl:else>
    <xsl:attribute name="src">../../images/<xsl:value-of select="translate(location,'ABCDEFGHIJKLMNOPQRSTUVWXYZ','abcdefghijklmnopqrstuvwxyz')" /></xsl:attribute>
    </xsl:else>

    <xsl:attribute name="align">center<!--xsl:apply-templates select="@align"/--></xsl:attribute>
    </img></center>
    </xsl:when>
    </xsl:choose>
    </xsl:template>

  6. #6
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="ends-with(location,'_e.gif')">

  7. #7
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    L'éditeur me retourne que "ends-width" est une fonction XSL inconnue mais ça devrait fonctionner, c'est le principal .

    Désolé mais je n'y connais pas grand chose en Xsl, voir presque rien...

    Merci

  8. #8
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    En fait non, ca ne marche pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="ends-with(location,'_e.gif')">
    Le ends-with encapsulé dans un xsl:if n'est pas reconnu comme une commande xslt valide.

    Quelqu'un aurait une autre piste ?

  9. #9
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    Sisi, cette solution doit marcher.
    Si tu fais un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="ends-with(location,'_e.gif')"/>
    ca retourne quoi?
    Et simplement :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="location"/>
    ?

    Si le ends-with passe toujours pas, essaie en déclarant cette espace de nom :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    xmlns:fn="http://www.w3.org/2005/xpath-functions"
    (cf http://www.w3.org/TR/xpath-functions...space-prefixes )
    puis utilise
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="fn:ends-with(location,'_e.gif')"/>
    Note que c'est sensible à la case.

  10. #10
    Membre à l'essai
    Inscrit en
    Juin 2009
    Messages
    29
    Détails du profil
    Informations personnelles :
    Âge : 39

    Informations forums :
    Inscription : Juin 2009
    Messages : 29
    Points : 21
    Points
    21
    Par défaut
    Le ends-with passe effectivement dans un xsl:value-of.

    C'est dans le xsl:if qu'il n'est pas reconnu.

    Ce qui est embêtant vu que ce ends-with doit faire parti d'une condition, et donc d'un xsl:if, à moins qu'il existe une autre solution ?

    Parce que si je me contente de mettre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="fn:ends-with(location,'_e.gif')"/>
    il ne sera pas dans une condition et donc ne réalisera pas le test requis ?

  11. #11
    Membre expérimenté
    Profil pro
    Inscrit en
    Septembre 2006
    Messages
    1 466
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2006
    Messages : 1 466
    Points : 1 610
    Points
    1 610
    Par défaut
    C'est juste pour voir quelle chaine de caractère il te renvoie et faire un test d'égalité avec............................................................................ donc merci de ne pas me répondre.

    Si ça renvoie 'true'
    Peut être qu'il vaut mieux ecrire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:if test="'true'=ends-with(location,'_e.gif')">

Discussions similaires

  1. [Batch] Tester si nom de fichier ne commence pas par une chaîne
    Par v1cent dans le forum Scripts/Batch
    Réponses: 4
    Dernier message: 30/10/2013, 15h40
  2. Tester format nom fichier
    Par Nako_lito dans le forum C#
    Réponses: 18
    Dernier message: 13/09/2011, 15h24
  3. [XSL] Tester si la valeur est un entier dans un xml
    Par MrMaze dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 23/07/2003, 04h35
  4. Recuperer le nom d'un fichier
    Par elvivo dans le forum C
    Réponses: 5
    Dernier message: 27/12/2002, 15h44
  5. Peut on tester l'existence d'un fichier ?
    Par Alamassepointcom dans le forum Flash
    Réponses: 2
    Dernier message: 10/10/2002, 12h10

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