begin process at 2008 08 08 21:37:41
1 223 607 membres
365 nouveaux aujourd'hui
14 230 membres club

Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum.
Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

DOTNET 2.0 TRANSFORMATION XSLT D'UN FICHIER XML (VB.NET)


Information sur la source

Description

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

  • ''' <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
''' <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
  • signaler à un administrateur
    Commentaire de poppyto le 18/04/2006 14:07:45 administrateur CS

    De rien ;o)

  • signaler à un administrateur
    Commentaire de pierrot123 le 30/05/2006 10:54:22

    slt, j'aimerai bien utiliser ta fonction mais Visual Studio 2005 ne reconnait pas les types :

    XslCompiledTransform
    ConformanceLevel
    XmlWriterSettings

    De plus, il me dit que "create" n'est pas un membre de la classe XmlWriter.

    Voila merci d'avance pour t réponses
    cho

  • signaler à un administrateur
    Commentaire de poppyto le 30/05/2006 10:59:58 administrateur CS

    >> Pierrot123

    Imports System.Xml
    Imports System.Xml.XPath
    Imports System.Xml.Xsl

  • signaler à un administrateur
    Commentaire de robcio35 le 28/03/2007 14:45:31

    Merci pour cette fonction très utile. Malheureusement elle ne fonctionne pas lorsque le XSL contient des references vers d'autres XSL. Exemple : <xsl:import href="screen_0.xsl"/>. Lorsque cette ligne de code se trouve dans le XSL, alors j'obtiens l'erreur : "System.Xml.Xsl.XslLoadException: XSLT compile error. An error occurred at (0,0). ---> System.Xml.XmlException: Resolving of external URIs was prohibited.". Comme je suis nouveau en ASP.NET 2.0 (mais déjà experimenté en ASP.NET 1.1), j'apprécierais un coup de main.

Ajouter un commentaire

Discussions en rapport avec ce code source

xml avec xslt par mohamed222222

fusionner 2 fichier xml avec un fichier xslt par mohamed222222

exception par mohamed222222

fichier xslt par mohamed222222

XSLT avec colonne XML inconnue par Sphaxs

xslt par mohamed222222

remplir un dropdownlist par mohamed222222

XML par Radwane37

lecteur XML string par videaste

Pub



Appels d'offres

CalendriCode

Août 2008
LMMJVSD
    123
45678910
11121314151617
18192021222324
25262728293031

VS Express FR Gratuit !

VS Express en français et 100% gratuit !

Téléchargements

Logiciels à télécharger sur le même thème :

Boutique

Boutique de goodies CodeS-SourceS