Bouts de codes de Landry SAÏZONOU - Webmaster

DotNet 2.0 transformation XSLT d'un fichier XML

Cette fonction permet de transformer un document XML via un fichier xslt.
Elle retourne en résultat soit un document XML, soit un string selon la transformation effectuée.
J'ai modifié le code C# que j'ai récupéré sur http://www.csharpfr.com/ afin de l'avoir en VB.net et pour qu'il permette de renvoyer autre chose que du XML.

''' <summary>
''' Transformation XSLT d'un fichier XML
''' </summary>
''' <param name="reader">Le document XML a transformer</param>
''' <param name="XSL_Filename">L'URI serveur du fichier xslt de transformation</param>
''' <param name="Retour">type d'objet renvoyé par la fonction - Valeur : XML,TEXT</param>
Public Function GetTransformXSLTFile(ByVal reader As XmlDocument, ByVal XSL_Filename As String, Optional ByVal Retour As String = "XML") As Object
        'On charge le fichier XSL dans un XmlDocument
        Dim XSLTDocument As XmlDocument = New XmlDocument()
        XSLTDocument.Load(XSL_Filename)

        'Création du lecteur XML
        Dim XSLTDocumentReader As XmlNodeReader = New XmlNodeReader(reader)

        'Création du transformateur XSLT    
        Dim xslt As XslCompiledTransform = New XslCompiledTransform()
        xslt.Load(XSLTDocument, Nothing, Nothing)
        'utiliser : xslt.Load(XSLTDocument, XsltSettings.TrustedXslt, Nothing) pour activer la fonction document dans le xslt    

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

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

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

        'xslt.OutputSettings correspond aux paramètres <xsl:output> dans votre fichier XSL
        'veillez à bien spécifier la sortie en html <xsl:output method="html" /> autrement
        'c'est "xml" par défaut et les balises vides (exemple <div></div>) seront transformées
        'en (</div>)
        Dim htmlDoc As XmlWriter = XmlWriter.Create(TransformOutput, xslt.OutputSettings)
        xslt.Transform(XSLTDocumentReader, Nothing, htmlDoc, New XmlUrlResolver())

        If Retour = "XML" Then
            'On charge le fichier XMLstring dans un XmlDocument
            Dim XmlDoc As XmlDocument = New XmlDocument()
            XmlDoc.InnerXml = TransformOutput.ToString()
            Return XmlDoc
        Else
            Return TransformOutput.ToString()
        End If

    End Function


Valid XHTML 1.0 Transitional Valid CSS!