Bonjour,
J'en avais plein le dos du message "Xsl.XslTransform est obsolète " dans mon Visual Studio 2005 lors de mes transformations XSLT.
J'ai trouvé la solution en C# (merci poppyto).
Je l'ai donc codé en VB.NET avec une petite modification afin de retourner en résultat soit un document XML, soit un string selon la transformation effectuée, histoire de fabriquer du RTF ou un autre format non XML.
Source / Exemple :
''' <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)
'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
Conclusion :
La version original c# de poppyto sur
http://www.csharpfr.com/codes/TRANSFORMATION-XSLT-NET_33721.aspx.
Chez moi :
http://www.saizonou.info
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.