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 :

PI dans une variable XSL [XSLT 1.0]


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 23
    Points
    23
    Par défaut PI dans une variable XSL
    Bonjour,

    Est-il possible, dans une transformation en 2 passes, de définir dans la feuille XSL de la première passe, une variable dont la valeur est une PI. Exemple :

    <xsl:variable name="nbthinsp">
    <xsl:processing-instruction name="nbthinsp">

    </xsl:processing-instruction>
    </xsl:variable>

    Avec ces instructions, je souhaite que <xsl:value-of select="$nbthinsp"/> retourne la chaîne de caractères <?nbthinsp?> de sorte que, lors de la seconde passe, cette chaîne soit interprétée comme une PI. Ainsi, dans la feuille XSL de la seconde passe, on a :

    <xsl:template match="processing-instruction('nbthinsp')">
    <!-- Ici les instructions de la PI -->
    </xsl:template>

    Avec cette définition de la variable, sa valeur est vide. Cependant, il n'est pas possible d'écrire, pour la première passe :

    <xsl:variable name="nbthinsp" select="'&lt;?nbthinsp?&gt;'"/>

    car alors, le texte en sortie de la première passe est &lt;?nbthinsp?&gt;, avec les entités, qui ne seront résolues qu'à la seconde passe.

    Merci d'avance pour votre aide,

    haro2011

  2. #2
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    value-of sert à insérer la représentation texte de quelque chose.

    Si tu veux insérer des nœuds tels que, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="$nbthinsp"/>

  3. #3
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par thelvin Voir le message
    value-of sert à insérer la représentation texte de quelque chose.

    Si tu veux insérer des nœuds tels que, c'est

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:copy-of select="$nbthinsp"/>
    Merci pour ta réponse.

    C'est bien la représentation textuelle de la variable que je veux insérer. Le problème est que cette représentation doit contenir les caractères <? au début et ?> en fin pour que la chaîne complète soit une PI dans le texte de sortie. C'est ce que je ne sais pas faire.

  4. #4
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Autrement dit, ce n'est pas la représentation textuelle que tu veux.

    Utilise ce que je te montre avant de te plaindre.

  5. #5
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par thelvin Voir le message
    Autrement dit, ce n'est pas la représentation textuelle que tu veux.

    Utilise ce que je te montre avant de te plaindre.
    1) Je ne me plains pas, je précise ce que je tente de réaliser ;
    2) ce que tu montres ne marche pas mieux : résultat vide, comme l'exemple que je donnais dans mon premier post ;
    3) j'espère que ma façon de m'exprimer ne masque pas la courtoisie que je voudrais mettre dans mes rapports aux autres.

  6. #6
    Modérateur

    Profil pro
    Inscrit en
    Septembre 2004
    Messages
    12 567
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2004
    Messages : 12 567
    Points : 21 633
    Points
    21 633
    Par défaut
    Citation Envoyé par haro2011 Voir le message
    1) Je ne me plains pas, je précise ce que je tente de réaliser ;
    Soit. Mais vu que ma solution fait quelque chose qui me semble être ce que tu cherches, j'ai pensé que tu ne l'avais même pas essayée. Ce qui me déplaît.

    Par ailleurs, pour éviter ça, il suffit de dire "j'ai tenté <truc> comme tu me l'as dit et ça fait <machin>." C'est toi qui es à la recherche de quelque chose. Tu es censé communiquer sur ce que tu tentes, tes essais, réussites, échecs...

    Citation Envoyé par haro2011 Voir le message
    2) ce que tu montres ne marche pas mieux : résultat vide, comme l'exemple que je donnais dans mon premier post ;
    ?

    Ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
     
      <xsl:variable name="nbthinsp">
        <xsl:processing-instruction name="nbthinsp"/>
      </xsl:variable>
     
      <xsl:template match="/">
        <root>
          <xsl:copy-of select="$nbthinsp"/>
        </root>
      </xsl:template>
     
    </xsl:stylesheet>
    doit produire ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <root><?nbthinsp?></root>
    et c'est le cas chez moi. Pas chez toi ?
    Tu as quoi, <root/> ?

    Citation Envoyé par haro2011 Voir le message
    3) j'espère que ma façon de m'exprimer ne masque pas la courtoisie que je voudrais mettre dans mes rapports aux autres.
    Aucunement. Tu es très courtois, aucun soucis de ce côté-ci.

    Un peu bref techniquement, peut-être, ce qui m'a un peu induit en erreur. Et du coup je n'ai pas fait grand cas de la courtoisie moi-même. C'est dans ma nature. Ça peut déplaire, mais d'un autre côté je suis là à communiquer sur des questions XSLT.

  7. #7
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Encore moi,

    Tout d'abord, je reconnais que mes explications ne sont pas claires. Le cas qui m'occupe est complexe et je ne voulais pas entrer dans les détails pour respecter les règles du forum. Ceci dit, je ne suis pas un ingrat et je reconnais ton dévouement et ta disponibilité. Désolé de t'avoir agacé.

    Ta proposition fonctionne parfaitement, mais pas dans mon cas qui nécessite d'autres explications. Je vais travailler un peu plus pour tenter de résoudre ce problème et je t'en dirai davantage plus tard, après avoir pris le temps de la réflexion.

    Quoi qu'il en soit, merci encore pour ton aide et ta patience. Je ne manquerai pas de te solliciter.

  8. #8
    Membre à l'essai
    Homme Profil pro
    Enseignant
    Inscrit en
    Juillet 2011
    Messages
    17
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2011
    Messages : 17
    Points : 23
    Points
    23
    Par défaut
    Le problème est donc résolu.

    Je faisais une erreur que la réponse de Thelvin a corrigée. Je voulais à toute force que la variable $nbthinsp soit initialisée avec une *chaîne de caractères*, ce qui explique mon obstination à y voir un *texte* à placer dans le fichier de sortie à l'aide de <xsl:value-of ...>. Or, cette variable étant initalisée avec <?nbthinsp?>, un appel de PI donc, elle devait être utilisée avec <xsl:copy-of ...>.

    Désolé pour tout ce bruit du à mon ignorance. Merci encore à Thevin.

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

Discussions similaires

  1. Récupération d'une variable javascript dans une feuille XSL
    Par drakkar64 dans le forum XML/XSL et SOAP
    Réponses: 3
    Dernier message: 21/08/2008, 18h56
  2. [XSL] Somme dans une variable globale ?
    Par yazman dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/01/2008, 12h37
  3. [XSL] Stocker un jeu de noeud dans une variable
    Par Blustuff dans le forum XSL/XSLT/XPATH
    Réponses: 9
    Dernier message: 22/06/2007, 14h01
  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, 19h39
  5. Réponses: 7
    Dernier message: 23/01/2006, 12h53

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