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

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : février 2008
    Messages : 14
    Points : 13
    Points
    13

    Par défaut concaténer chemin et contenu d'un tag

    Bonjour,
    j'ai des dans mon xsl des variables qui sont ainsi:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    <xsl:variable name="racine_f" select="/f" />
    <xsl:variable name="langue" select="$racine_f/@langue"/>
    <xsl:variable name="labels" select="document(concat('../api/label_api', $langue, '.xml'))"/>
    le fichier défini par $labels contient différent tag avec du contenu texte pour chacune des langues. Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <static_labels>
    ...
    <lab57>Montant actuel</lab57>
    <lab58>dès le</lab58>
    <toto>TEST</toto>
    ...
    </static_labels>
    et j'y fais en principe appel ainsi dans mon xsl
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="$labels/static_labels/lab56"/>
    Dans certain cas, j'aimerai pouvoir récupérer le contenu d'un tag de mon xml pour aller récupérer le bon label dans mon fichier $labels
    Par exemple, j'ai le tag <message>toto</message> dans mon xml et j'aimerai à ce moment aller récupérer le label correspondant soit $labels/static_labels/toto dans mon fichier de labels

    J'ai essayé sans succès, plusieurs choses de ce genre
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <xsl:for-each select="./message">  
      <P class="message">
          <xsl:value-of select="concat($labels, '/static_labels/',.)"/>
      </P>
    </xsl:for-each>
    Des suggestions ?

    Merci d'avance pour l'aide
    Bonne journée
    Gaëlle

  2. #2
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 236
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 236
    Points : 2 165
    Points
    2 165

    Par défaut

    On ne peut pas compter sur le xslt propre étalé par w3c recommendation les foctionnalités noyaux que les moteurs conformes doient supporter. Pourtant, il existe des fonctionnalités d'extension implémentées pour certaines réalisations de référence, comme saxon...
    https://www.saxonica.com/html/docume...functions.html

    En gros, on définit le namespace d'extensibilité dans la racine:
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
        xmlns:saxon="http://saxon.sf.net/"
        exclude-result-prefixes="saxon"
    >

    Et puis, dans votre cas, on fait comme ça:
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="saxon:evaluate($labels/static_labels/lab56") />
    ou pour l'autre cas:
    Code xslt : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="saxon:evaluate(concat($labels, '/static_labels/',.))"/>

    Bien entendu, saxon n'est pas la seule d'avoir ce genre d'extension.

  3. #3
    Modérateur

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

    Informations forums :
    Inscription : septembre 2004
    Messages : 11 542
    Points : 19 596
    Points
    19 596

    Par défaut

    Ou, sans extension,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of select="$labels/static_labels/*[name() = current()]"/>
    Juste prendre les éléments de <static_label> dont le nom est égal au contenu de la balise en cours.
    N'oubliez pas de consulter les FAQ Java et les cours et tutoriels Java

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    février 2008
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 37
    Localisation : Suisse

    Informations forums :
    Inscription : février 2008
    Messages : 14
    Points : 13
    Points
    13

    Par défaut

    Merci beaucoup pour vos réponses.
    J'ai opté pour la deuxième solution qui fonctionne très bien !

  5. #5
    Membre chevronné
    Inscrit en
    octobre 2011
    Messages
    1 236
    Détails du profil
    Informations forums :
    Inscription : octobre 2011
    Messages : 1 236
    Points : 2 165
    Points
    2 165

    Par défaut

    Très bien. Si "la deuxième option" marche pour vous, ça veut dire que j'avais mal compris la question. Tant pire pour moi !

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

Discussions similaires

  1. Récupérer un chemin-cible contenu dans une variable
    Par Myrrdin dans le forum ActionScript 1 & ActionScript 2
    Réponses: 14
    Dernier message: 04/07/2010, 12h24
  2. Récuperer les info contenu dans les tags mp3
    Par Salsaboy60 dans le forum IHM
    Réponses: 2
    Dernier message: 07/04/2009, 01h58
  3. [JDOM] Récuperer tout le contenu d'un tag
    Par laminoo dans le forum XML
    Réponses: 2
    Dernier message: 18/03/2009, 17h48
  4. Réponses: 7
    Dernier message: 23/03/2007, 18h49
  5. [langage]Retirer le contenu d'un tag
    Par argister dans le forum Langage
    Réponses: 6
    Dernier message: 26/06/2005, 23h40

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