Re: Injection de XSL pour execution

Stephane Bonhomme <[email protected]> Thu, 15 Nov 2007 21:11:41 +0100
Newsgroups gmane.text.xml.french.tech
Message-ID <1195157501.32643.18.camel@citrouille>
Le jeudi 15 novembre 2007 à 16:46 +0100, Philippe PRADOS a écrit :
> Bjr,
> Je cherche à permet à un fichier XML d'indiquer un extrait XSLT, puis 
> dans une feuille XSLT, je souhaite prendre l'extrait du flux XML et 
> l'exécuter.
> Par exemple,
> je souhaite que dans la feuille XML, on puisse indiquer un truc genre :
> <MonTag>
> <xsl:attribute name="abc">Valeur</xsl:attribute>
> </MonTag>
> 

peut être le plus simple est d'utiliser un namespace différent de xsl
(dans mon exemple ,"http://xxx/proc") mais traité de façon particulière
(et générique par votre feuille de style), cela fonctionne parfaitement
pour la génération d'éléments et d'attributs :

xml source:

<racine xmlns:proc="http://xxx/proc">
   <MonTag>
    <proc:attribute name="abc" value="Valeur"/>
   </MonTag>
</racine>

et dans votre xsl :

<xsl:template match="proc:attribute">
  <xsl:attribute name="{@name}">
     <xsl:value-of select="@value"/>
  </xsl:attribute>
</xsl:template>

Le tour est joué ! Vous pouvez bien sur faire la meme chose avec des
éléments. Bien sur il y a une limitation, les balises du xml source
doivent contenir des valeurs explicites, et non des expressions xpath
(xslt 1.0 ne supporte pas l'évaluation dynamique d'expressions xpath -
il faut utiliser exslt -si votre processeur le supporte- ou xslt 2.0
pour ce faire).

En espérant avoir répondu à votre question.

S.


> Puis dans la feuille XSLT, je souhaite extraire le contenu de <MonTag/> 
> et l'exécuter. Est-ce possible ?
> 
> Salutations
> 
> Philippe PRADOS
> 
> --
> Devenez redacteur <XML>fr et contribuez au developpement du
> xml francophone (http://xmlfr.org/infos/redacteurs/) !
> 
> Liste de diffusion "[email protected]" (http://xmlfr.org).
> 
> Cette liste est a votre disposition pour discuter en francais de 
> tout sujet technique lie a XML.
> 
> Pour resilier votre abonnement, envoyez un message contenant 
> la commande "unsubscribe" a [email protected]
> (mailto:[email protected]?Subject=unsubscribe)
> 
-- 
   Stéphane Bonhomme           --           Exselt Services

Formations, Conseil et Réalisations en Ingénierie Documentaire,
            Technologies Web et Logiciels Libres
     [email protected]   -   http://www.exselt.com
        04 57 39 30 78        /      06 88 57 27 08