Exécuter un script vb.net lors d'une transformation xslt (v2)

Soyez le premier à donner votre avis sur cette source.

Vue 11 588 fois - Téléchargée 303 fois

Description

Lors d?un précédent post (http://www.aspfr.com/codes/EXECUTER-SCRIPT-VB-NET-LORS-TRANSFORMATION-XSLT_34008.aspx), j?avais montré comment exécuter du script vb.net lors d?une transformation Xslt. Cette source fonctionne toujours sur le framework 2.0 en utilisant le contrôle web « xml ».
Par contre si vous faites votre transformation à la main (ce qui est mon cas en ce moment? merce OpenXML), la sécurité par défaut ne permet pas d?exécuter les scripts. Dans la fonction GetXSLTransform, le bout de chose qui change par rapport à une transformation standard est le suivant :

Dim vXsltSettings As XsltSettings = New XsltSettings()
vXsltSettings.EnableScript = True
vXslt.Load(vXsltDocument, vXsltSettings, Nothing)

Je sais que je ne suis pas super clair? que ceux qui sont intéressés par cette technique me comprendront je pense ;-)

Source / Exemple :


'Fonction réaliser la tranformation xslt

    Public Shared Function GetXSLTransform(ByVal pXmlDocument As XmlDocument, ByVal pXslFile As String) As String

        'On charge le fichier XSL dans un XmlDocument 
        Dim vXsltDocument As XmlDocument = New XmlDocument()
        vXsltDocument.Load(pXslFile)

        'Création du lecteur XML 
        Dim vXsltDocumentReader As XmlNodeReader = New XmlNodeReader(pXmlDocument)

        'Création du transformateur XSLT  
        Dim vXslt As XslCompiledTransform = New XslCompiledTransform()
        Dim vXsltSettings As XsltSettings = New XsltSettings()
        vXsltSettings.EnableScript = True

        vXslt.Load(vXsltDocument, vXsltSettings, Nothing)

        'là où sera enregistré la transformation 
        Dim vStringBuilder As StringBuilder = New StringBuilder()

        'paramètre d'écriture du fichier transformé 
        Dim vXmlWriterSettings As XmlWriterSettings = New XmlWriterSettings()

        'paramètre un peu spécial, consultez msdn 
        vXmlWriterSettings.ConformanceLevel = ConformanceLevel.Auto

        Dim vXmlWriter As XmlWriter = XmlWriter.Create(vStringBuilder, vXslt.OutputSettings)

        vXslt.Transform(vXsltDocumentReader, Nothing, vXmlWriter, New XmlUrlResolver())

        Return vStringBuilder.ToString()

    End Function

'Feuille Xslt

<?xml version="1.0" encoding="UTF-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:msxml="urn:schemas-microsoft-com:xslt" xmlns:mafonction="urn:gadgaillcorporation:mafonction">
	<xsl:output method="html"/>
	<xsl:template match="root">
		<xsl:apply-templates select="name"/>
	</xsl:template>
	<xsl:template match="name">
		<xsl:value-of select="mafonction:Hello(string(.))"/><br/>
	</xsl:template>
	
	<msxml:script language="vb" implements-prefix="mafonction">
		<![CDATA[
		Public Function Hello(pName as String) as string
			return "Bonjour " & pName
		End Function
		]]>
	</msxml:script>
	
</xsl:stylesheet>

Conclusion :


PS : La source de la fonction est de poppyto (http://www.csharpfr.com/codes/TRANSFORMATION-XSLT-NET_33721.aspx).
En fait, c'est cool de faire Intégrateur ;-)

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

cs_DeathAngel
Messages postés
117
Date d'inscription
vendredi 12 avril 2002
Statut
Membre
Dernière intervention
13 avril 2007
-
Salut tikrimi,

Juste une chose : Merci
C'est exactement ce que je cherchais, au commentaire près ^O^

@peluche
DA
apxa
Messages postés
188
Date d'inscription
mercredi 15 mai 2002
Statut
Membre
Dernière intervention
25 avril 2009
-
Iop,
Peux-tu expliquer le bout de code : xmlns:mafonction="urn:gadgaillcorporation:mafonction"
Ton code est très bien mais n'est pas fonctionnel a cause de :
Impossible de trouver le script ou l'objet externe qui implémente le préfixe 'urn:gadgaillcorporation:mafonction'

Have Fun ;)

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.