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] Repasser une sortie XSL dans la même feuille en appliquant des règles différentes


Sujet :

XSL/XSLT/XPATH XML

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut [XSLT] Repasser une sortie XSL dans la même feuille en appliquant des règles différentes
    Bonjour,

    J'ai une feuille XSL qui me produit en sortie une structure XML classique
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <root>
      <tag1>
        <tag1.1>val1</tag1.1>
        <tage1.2>val2</tag1.2>
      </tag1>
      <tag2 />
    </root>
    J'aimerai passer ce résultat dans d'autres règles qui vont traiter toutes les balises de cette structure, donc quelque chose du genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    <xsl:template match='/'>
        	<xsl:apply-templates />
    </xsl:template>
     
    <xsl:template match="*">
        // mon traitement
    </xsl:template>
    Seulement, je voudrais pouvoir faire la première transformation (qui produit la structure XML), et la seconde transformation (qui repasse toutes les balises du résultat précèdent), en utilisant une seule feuille XSL.

    Vous savez comment faire ?

    Merci.

  2. #2
    Membre Expert
    Avatar de polymorphisme
    Homme Profil pro
    Publishing
    Inscrit en
    Octobre 2009
    Messages
    1 460
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Publishing
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Octobre 2009
    Messages : 1 460
    Par défaut
    Bonjour,

    tu peux utiliser la notion de "mode".

    Pour la mettre en oeuvre, il suffit d'ajouter l'attribut mode avec une première valeur à toutes les règles que tu souhaite appliquer à tes éléments lors de ton "premier passage". Ensuite, c'est la même chose avec les règles consacrées à un "second passage". Enfin, pour appliquer les règles d'un mode désigné à tes éléments, tu peux utiliser par exemple <xsl:apply-templates select="expression XPath" mode="nom du mode"/>.

    Bon courage

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut
    Intéressant ce concept de "mode", je ne connaissais pas.
    Je vais regarder dans cette direction, merci.

    Je te tiens au courant

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut
    Je devrais pouvoir faire avec ça, mais j'ai rencontré un autre problème en essayant de la mettre en oeuvre.

    Mon première transformation ne produit pas une structure XML "réelle".
    En fait, c'est simplement un "<xsl:value-of select="substring-after(...)" /> donc cela produit une chaine.
    Mais compte tenu du document en entrée, le contenu de la chaine produite est similaire à la structure d'un document XML.

    Problème : cela reste quand même une chaine
    Autrement dit, j'ai une erreur si j'essais d'appliquer les templates après ma première transformation, puisque je n'ai pas un node-set.

    Y'aurait il un moyen de transformer ma chaine en node-set ?
    Autrement dit, de parser ma chaine et à chaque fois que je rencontre "<tag>val</tag>", le remplacer par "<xsl:element name='tag'>val</xsl:element>"

  5. #5
    Membre Expert
    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
    Par défaut
    C'est possible en xsl-t 2.0 de faire des variables contenant un node-set et donc d'appliquer des templates dessus ensuite.
    C'est souvent possible également en xsl-t 1.0 mais avec des instructions spécifique au processeur.

    Ci dessous un exemple avec xalan :
    http://www.developpez.net/forums/d92...imaux-virgule/

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Octobre 2006
    Messages
    167
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2006
    Messages : 167
    Par défaut
    J'utilise Xalan qui ne prend en charge que XSLT 1.0.
    Mais en utilisant l'astuce du lien que tu m'as fournit, ça fonctionne.

    Merci.

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

Discussions similaires

  1. Comptage dans la même table mais avec des conditions différentes
    Par V i n c e n t dans le forum Langage SQL
    Réponses: 3
    Dernier message: 10/08/2010, 14h12
  2. [XSLT][JSP]Interpréter une commande XSL dans une JSP
    Par anas.eh dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 27/10/2008, 09h34
  3. [Débutant] [XSLT] CSS et XSL dans le même document
    Par sidahmed dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 24/09/2007, 03h52
  4. [XSLT]passer une variable js dans une instruction xsl
    Par ounours dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 12/04/2007, 18h39
  5. [XSLT] Comment inclure une balise xsl dans une balise html
    Par sylsau dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 13/10/2006, 09h33

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