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] Passage de paramètre de xml


Sujet :

XSL/XSLT/XPATH XML

  1. #1
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut [XSLT] Passage de paramètre de xml
    Bonjour,

    Est-il possible de passer un paramètre d'un fichier xml à un fichier xsl associé ?

    Je génère un fichier xml dans un programme et suivant le choix fait à la visualisation, je voudrai voir seulement une partie du document

    Voici la liaison du fichier xml au fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <?xml-stylesheet type="text/xsl" href="PV2_TRRE.xsl?PrmIdBord=213"?>
    Voici la déclaration de la variable globale dans le fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:param name="PrmIdBord"/>
    Voici le template utilisant la variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    <xsl:template match="BlocBord">
    	<xsl:if test="current()/IdBord/@V=$PrmIdBord or $PrmIdBord=''" >
    		<table>
    			<tr class="trTitre">
    				<td></td>
    				<td>Type</td>
    				<td>Nature</td>
    				<td>Lignes</td>
    			</tr>
    		<xsl:apply-templates select="../Piece"/>
    		</table>
    		</td>
    	</xsl:if>
    </xsl:template>
    Je n'arrive pas à récupérer la valeur en gras (du fichier xml) dans le fichier xsl.
    Est-ce possible ?

    Merci

  2. #2
    Membre éprouvé Avatar de alain.couthures
    Profil pro
    Gérant
    Inscrit en
    Avril 2007
    Messages
    902
    Détails du profil
    Informations personnelles :
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Gérant

    Informations forums :
    Inscription : Avril 2007
    Messages : 902
    Points : 1 247
    Points
    1 247
    Par défaut
    En standard, un serveur HTTP se contente de retourner une feuille de style comme telle même si son nom est suivi de ?param=...

    Pour moi le seul moyen serait de faire générer au serveur la feuille de style en intégrant le paramètre voulu. Ce n'est pas particulièrement difficile à faire en intervenant sur la conf d'apache et en développant une page PHP à cet effet. Il suffit de charger la feuille, de repérer le paramètre avec XPath et d'y rajouter l'attribut select pour en faire une valeur par défaut, ce qui devrait suffire.
    Formulaires XForms sur tous navigateurs sans extension à installer (architecture XRX) : http://www.agencexml.com/xsltforms/

  3. #3
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    Merci pour la réponse mais je ne peux pas l'appliquer dans mon contexte.

    En fait, dans mon programme, je génère le fichier xml et ensuite je permet de le visualiser grâce à un document xsl. De plus j'affiche l'arbre du document, ce qui permet d'afficher seulement la partie que l'on veut. Et c'est pourquoi je voudrais passer en paramètre le prmIdBord qui correspond à la sélection pour afficher seulement celui là.
    Aussi, je ne l'utilise pas sur un serveur apache mais dans une application client-serveur

    Merci

  4. #4
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Tel que ta question est posé il semble y avoir une confusion.
    Quand on parle de passage de paramètre, on aprle d'une donnée qui n'est pas contenu dans le xml d'origine, d'ou passage par une page php,jsp,asp... pour passer l'info à la feuille XSLT.
    Hors dans ton exemple le "paramètre" est bien contenu dans le xml mais dans la processing-instruction , c'est ça ?
    Ce code est assez..etrange, chez moi la transformation est refusé pour chemin invalide.
    Maintenant , si tu peux rajouté ça dans le href, cela veut dire que tu peux modifier le xml non ?

  5. #5
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Re,

    Je vais essayer d'être plus clair
    Alors oui, je peux modifier l'entête du fichier xml pour la liaison au fichier xsl.
    Voici un aperçu du fichier xml :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    <?xml-stylesheet type="text/xsl" href="PV2_TRRE.xsl?IdBord='00004'"?>
    <Bordereau Id="00002"></Bordereau>
    <Bordereau Id="00003"></Bordereau>
    <Bordereau Id="00004"></Bordereau>
    <Bordereau Id="00005"></Bordereau>
    Voici un aperçu du fichier xsl :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
     
    <xsl:param name="PrmIdBord"/>
    ...
    <xsl:template match="BlocBord">
    	<xsl:if test="current()/IdBord/@V=$PrmIdBord or $PrmIdBord=''">
    		<table>
    			<tr class="trTitre">
    				<td></td>
    				<td>Type</td>
    				<td>Nature</td>
    				<td>Lignes</td>
    			</tr>
    		<xsl:apply-templates select="../Piece"/>
    		</table>
    		</td>
    	</xsl:if>
    </xsl:template>
    Je peux modifier la 1ère ligne en gras pour passer le paramètre idBord et la 2ème ligne en gras doit le lire pour afficher le bloc ou non

    Mon but est ici d'afficher seulement le bordereau dont l'id est "00002" en modifiant seulement l'entête du fichier xml

    Est-ce possible ?

    Merci

  6. #6
    Rédacteur

    Avatar de Erwy
    Homme Profil pro
    Développeur Web
    Inscrit en
    Novembre 2003
    Messages
    4 967
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : Administration - Collectivité locale

    Informations forums :
    Inscription : Novembre 2003
    Messages : 4 967
    Points : 10 927
    Points
    10 927
    Par défaut
    Citation Envoyé par barrique Voir le message

    Je peux modifier la 1ère ligne en gras pour passer le paramètre idBord et la 2ème ligne en gras doit le lire pour afficher le bloc ou non

    Mon but est ici d'afficher seulement le bordereau dont l'id est "00002" en modifiant seulement l'entête du fichier xml
    mon problème c'est que chez moi, une entête de ce type provoque une erreur
    href="PV2_TRRE.xsl?IdBord='00004'
    Donc je ne peux pas trop la coseiller.
    Par contre , si tu pouvais rajouter une autre Processing instruction ce sont les balises <?....?> il y a moyen que cela marche partout

    Est-ce possible ?

    Merci
    Si ce code marche chez toi et que tu veux le garder malgré le risque d'incohérence dans le futur, ou que tu peux rajouter une autre PI; la reponse est oui, mais pas via un paramètre mais simplement un xpath et un gros travail de traitement de chaine

    Tu peux en effet atteindre des processing-instruction via la fonction xpath processing-instruction()
    un
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    //processing-instruction()
    te les renverra toutes, par contre tu recuperera tout le texte entre les deux ? brutes de fonderie, a toi de retraiter

  7. #7
    Membre à l'essai
    Inscrit en
    Février 2005
    Messages
    15
    Détails du profil
    Informations forums :
    Inscription : Février 2005
    Messages : 15
    Points : 12
    Points
    12
    Par défaut
    Bonjour,

    En fait j'ai résolu le problème en générant dynamiquement le fichier xsl

    Merci pour votre aide

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

Discussions similaires

  1. [XSLT] Passage d'une image d'XML vers HTML
    Par LuNeLu dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 27/11/2007, 10h01
  2. [XSLT] Passage de paramètres
    Par eki27 dans le forum XSL/XSLT/XPATH
    Réponses: 1
    Dernier message: 06/11/2007, 08h25
  3. Réponses: 8
    Dernier message: 11/10/2006, 16h41
  4. [XSLT JS] Passage de paramètre
    Par GwiGwi dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 10/04/2006, 21h24
  5. [XSLT][Saxon]passage de paramètres à une template
    Par RB Greg dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 12/05/2005, 16h29

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