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

Bibliothèques et frameworks PHP Discussion :

[XSL] Envoyer du code XSL depuis XML


Sujet :

Bibliothèques et frameworks PHP

  1. #1
    Membre à l'essai
    Profil pro
    Dev PHP
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Dev PHP

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut [XSL] Envoyer du code XSL depuis XML
    Bonjour

    J'ai un fichier XSL qui met en forme des données XML, et j'aimerais passer du code XSL depuis XML.

    En gros je voudrais passer ceci:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    // Variable PHP
    $chaine = "<a><xsl:attribute name=\"href\">javascript:void(accueil(\"\",\"\"))</xsl:attribute></a>";
     
    // Données XML
    <balise1>
         <donnees>".$chaine."</donnees>
    </balise1>
    J'arrive à le récupérer dans mon fichier XSL avec un <xsl:value-of>, mais il prend ça comme du texte et me l'affiche en "dur".

    Y'a t-il une balise spécifique à utiliser, ou bien est-ce impossible ?

    Je vous remercie!

  2. #2
    Expert éminent sénior

    Profil pro
    Inscrit en
    Juin 2002
    Messages
    6 152
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2002
    Messages : 6 152
    Points : 17 778
    Points
    17 778
    Par défaut
    Pourriez-vous détailler comment s'emboite le tout ? Ce que vous utilisez (code), etc ? Parce que l'"exemple" donné fait penser à deux simples chaînes de caractères hors de tout contexte.


  3. #3
    Membre à l'essai
    Profil pro
    Dev PHP
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Dev PHP

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Oui bien sûr, j'ai donc un composant métier qui récupère les données d'un article à partir d'une base de données, ainsi que l'arborescence des catégories de l'article, afin de "revenir en arrière".

    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
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
     
    <?php
     
    Header('content-type: text/xml');
    include('../include/sql.inc.php');
     
    function recuperation()
    {
    	global $connexion;
    	$requete = "SELECT * FROM articles WHERE art_num='".$_REQUEST['artnum']."';";
    	$result = pg_query($connexion, $requete);
    	$tab = pg_fetch_array($result);
    	return $tab;
    }
     
    function afficher_liens_categories($categorie)
    {
        global $connexion;
        $requete="SELECT * FROM CATEGORIES WHERE code_categorie = '$categorie' AND NOT (code_categorie = '_sans_categorie_' OR code_categorie = '_categorie_temp_'  OR  categorie_affichage='0')";
        $result_cat=pg_query($connexion, $requete);
        $chaine = "";
        while ($lcat=pg_fetch_array($result_cat)) {
    		$chaine = "<a><xsl:attribute name=\"href\">javascript:void(accueil(\"$lcat[code_categorie]\",\"\",\"\"))</xsl:attribute>" . $lcat["categorie"] . "</a>" . $chaine;
            if ($lcat["categorie_parent"]<>"") {
                $chaine = " > " . $chaine;
                $tmp = "= '" . $lcat["categorie_parent"] . "'";
                $requete="SELECT * FROM CATEGORIES WHERE code_categorie $tmp AND NOT (code_categorie = '_sans_categorie_' OR code_categorie = '_categorie_temp_'  OR  categorie_affichage='0')";
                $result_cat=pg_query($connexion, $requete);
            }
        }
        return $chaine;
    }
     
    $data = recuperation();
    $chaine = afficher_liens_categories($data['categorie']);
     
     
    echo("<?xml version=\"1.0\" encoding=\"ISO-8859-15\"?>");
    echo("	<!DOCTYPE xml [
    		<!ELEMENT article (art_num,art_designation,arborescence)>
    		<!ELEMENT art_num (#PCDATA)>
    		<!ELEMENT art_designation (#PCDATA)>
    		<!ELEMENT arborescence (#PCDATA)>
    		] >");
     
    echo("	<xml>
    			<article>
    				<art_num>".$data['art_num']."</art_num>
    				<art_designation>".$data['art_designation']."</art_designation>
    				<arborescence>".$chaine."</arborescence>
    			</article>
    		</xml>
    	");
     
    ?>

    Je voudrais utiliser le code xsl ($chaine) en retour de la fonction afficher_liens_categories() pour qu'il soit utilisable dans mon xsl (je l'envoie grâce à la balise <arborescence>) :

    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
     
    <?xml version="1.0" encoding="ISO-8859-15" ?>
    <xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
    <xsl:template match="article">
    <html>
    	<head>
    		<title></title>
    	</head>
    	<body>
    		<div><xsl:attribute name="align">left</xsl:attribute><xsl:attribute name="class">article</xsl:attribute>
    		<xsl:text>&#xA0;Catégorie : </xsl:text><xsl:value-of select="arborescence" />
    		</div>
    	</body>
    </html>
    </xsl:template>
    </xsl:stylesheet>

    En résultat, lorsque je parse le XML, j'obtiens à l'affichage :

    Catégorie : <a><xsl:attribute name="href">javascript:void(accueil("CAT1","",""))</xsl:attribute>Categ1</a> > <a><xsl:attribute name="href">javascript:void(accueil("CAT2","",""))</xsl:attribute>Categ2</a> > <a><xsl:attribute name="href">javascript:void(accueil("CAT3","",""))</xsl:attribute>Categ3</a>

    Alors que je devrais avoir de beaux liens

    Merci.

  4. #4
    Membre à l'essai
    Profil pro
    Dev PHP
    Inscrit en
    Février 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Âge : 36
    Localisation : France

    Informations professionnelles :
    Activité : Dev PHP

    Informations forums :
    Inscription : Février 2007
    Messages : 14
    Points : 11
    Points
    11
    Par défaut
    Entre temps j'ai réussi à contourner le problème, pour ceux qui seraient intéréssés.

    J'ai réussi à faire passer mon code HTML "$chaine" en remplaçant, dans les données XML ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <arborescence>".$chaine."</arborescence>
    En cela :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <arborescence><![CDATA[$chaine]]></arborescence>
    Dans mon fichier XSL, j'ai du utiliser le "disable-output-escaping" afin qu'il ne me vire pas mes balises HTML.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    <xsl:value-of disable-output-escaping="yes" select="arborescence" />
    Et j'ai dû également changer mes guillemets doubles par des simples dans mes "href" (pour que tout soit compris par FireFox).

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

Discussions similaires

  1. creer formulaire depuis xml ( avec xsl )
    Par sknano dans le forum Langage
    Réponses: 0
    Dernier message: 10/06/2011, 11h36
  2. [XSL-FO] Générer un PDF depuis une source XML
    Par Ildegarde dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 25/01/2010, 14h03
  3. generer xsl depuis xml avec balises inconues ?
    Par cedre dans le forum XSL/XSLT/XPATH
    Réponses: 7
    Dernier message: 24/06/2003, 09h00
  4. [XSL] Application d'un XSL pour produire un XSL... help
    Par Greedo dans le forum XSL/XSLT/XPATH
    Réponses: 4
    Dernier message: 22/05/2003, 11h30
  5. [xsl] Ajouter 1 élément à la page xml
    Par ametisse dans le forum XSL/XSLT/XPATH
    Réponses: 3
    Dernier message: 10/03/2003, 12h15

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