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 !

TRANSFORMER UN XML PAR PLUSIEUR XSLT CONSÉCUTIFS


Information sur la source

Catégorie :VB.NET Source .NET ( DotNet ) Niveau : Débutant Date de création : 25/09/2003 Date de mise à jour : 25/09/2003 16:31:42 Vu : 5 931

Note :
5 / 10 - par 1 personne
5,00 / 10

  • 1

  • 2

  • 3

  • 4

  • 5

  • 6

  • 7

  • 8

  • 9

  • 10

Commentaire sur cette source (4)
Ajouter un commentaire et/ou une note

Description

Si Vous êtes adepte du xml, il faut utiliser un langage sous-jacent. Le .net s'y prette assez bien.
Voici un code source qui permet d'appliquer plusieurs xsl consécutifs à une source xml.
 

Source

  • Imports System.Xml
  • Public Class XMLTransformer
  • Private m_XSLPathfile
  • 'XML source et cible
  • Private m_XMLDocument As XmlDocument
  • Private m_XMLTarget As XmlDocument
  • Public Property XSLPathFile() As String
  • Get
  • Return m_XSLPathfile
  • End Get
  • Set(ByVal Value As String)
  • m_XSLPathfile = Value
  • End Set
  • End Property
  • Public Property XML() As String
  • Get
  • Return m_XMLTarget.OuterXml
  • End Get
  • Set(ByVal Value As String)
  • m_XMLTarget = New XmlDocument()
  • m_XMLTarget.LoadXml(Value)
  • End Set
  • End Property
  • Public Function Transform(ByVal XSLFileName As String, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
  • Dim xsl As Xsl.XslTransform
  • Dim xmlpath As XPath.XPathNavigator
  • Dim result As XmlReader
  • xsl = New Xsl.XslTransform()
  • xsl.Load(m_XSLPathfile & "\" & XSLFileName)
  • xmlpath = m_XMLTarget.CreateNavigator
  • result = xsl.Transform(xmlpath, args)
  • Dim temp As String = ""
  • Do While result.Read()
  • temp = temp & result.ReadOuterXml
  • Loop
  • m_XMLTarget.LoadXml(temp)
  • End Function
  • Public Function Transform(ByVal XSLFileName As String, ByVal output As System.IO.TextWriter, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
  • Dim xsl As Xsl.XslTransform
  • Dim xmlpath As XPath.XPathNavigator
  • Dim result As XmlReader
  • xsl = New Xsl.XslTransform()
  • xsl.Load(m_XSLPathfile & "\" & XSLFileName)
  • xmlpath = m_XMLTarget.CreateNavigator
  • xsl.Transform(xmlpath, args, output)
  • xsl = Nothing
  • End Function
  • Protected Overrides Sub Finalize()
  • m_XMLTarget = Nothing
  • MyBase.Finalize()
  • End Sub
  • Public Sub New()
  • End Sub
  • Public Sub New(ByVal xml As String)
  • Me.XML = xml
  • End Sub
  • End Class
Imports System.Xml

Public Class XMLTransformer
    Private m_XSLPathfile

    'XML source et cible
    Private m_XMLDocument As XmlDocument
    Private m_XMLTarget As XmlDocument

    Public Property XSLPathFile() As String
        Get
            Return m_XSLPathfile
        End Get
        Set(ByVal Value As String)
            m_XSLPathfile = Value
        End Set
    End Property

    Public Property XML() As String
        Get
            Return m_XMLTarget.OuterXml
        End Get
        Set(ByVal Value As String)
            m_XMLTarget = New XmlDocument()
            m_XMLTarget.LoadXml(Value)
        End Set
    End Property


    Public Function Transform(ByVal XSLFileName As String, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
        Dim xsl As Xsl.XslTransform
        Dim xmlpath As XPath.XPathNavigator
        Dim result As XmlReader

        xsl = New Xsl.XslTransform()
        xsl.Load(m_XSLPathfile & "\" & XSLFileName)
        xmlpath = m_XMLTarget.CreateNavigator

        result = xsl.Transform(xmlpath, args)

        Dim temp As String = ""

        Do While result.Read()
            temp = temp & result.ReadOuterXml
        Loop
        m_XMLTarget.LoadXml(temp)
    End Function

    Public Function Transform(ByVal XSLFileName As String, ByVal output As System.IO.TextWriter, Optional ByVal args As Xsl.XsltArgumentList = Nothing) As String
        Dim xsl As Xsl.XslTransform
        Dim xmlpath As XPath.XPathNavigator
        Dim result As XmlReader

        xsl = New Xsl.XslTransform()
        xsl.Load(m_XSLPathfile & "\" & XSLFileName)
        xmlpath = m_XMLTarget.CreateNavigator

        xsl.Transform(xmlpath, args, output)
        xsl = Nothing
    End Function


    Protected Overrides Sub Finalize()
        m_XMLTarget = Nothing

        MyBase.Finalize()
    End Sub

    Public Sub New()

    End Sub
    Public Sub New(ByVal xml As String)
        Me.XML = xml
    End Sub
End Class

Conclusion

Si vous générez un html ou un xml avec plusieurs noeud de bases, mon code ne marche pas. Ce n'est pas très difficile à corriger.
 

Commentaires et avis

signaler à un administrateur
Commentaire de tresorsdevie le 26/09/2003 12:26:09

salut excuse mon ignorance
peut tu m'expliquer en 2 mot ce qu'est le XSLT

car je m'interresse au xml en vb.net et n'ai jamais entendu parler du xslt , donc je n'arrvive pas a comprendre l'utilité de ta source qui a l'air interressante

a+

signaler à un administrateur
Commentaire de Warny le 26/09/2003 14:15:01

Salut,
Le xsl-t est un langage sous-ensemble du xml qui permet de trasformer des données dans un xml vers un xml dont la structure est différente ou vers un autre langage à balise (comme le html)
Tu trouveras des explications en français sur le site du WWW consortium (http://xmlfr.org/w3c/TR/xslt/)
Le XSLT est un excelent complément aux L4G parce qu'il ne s'interresse qu'au traitement et la transformation des données et permet d'écrire en peu de ligne des processus qui seraient immenses et peu maintenables dans un langage classique.

signaler à un administrateur
Commentaire de tresorsdevie le 26/09/2003 20:17:37

oki , merci pour ces explications , en effet c'est tres interessant
je vais tester

a+

signaler à un administrateur
Commentaire de stephami le 30/09/2004 17:08:28

Pardon pour mon ignorance,mais tu donnes le code source de quelque chose qui si j'ai bien compris permet de récupérer un document XML à partir d'un document XML auquel on applique du XSLT c'est bien ça?

Si oui dans ce cas cela m'intéresse mais comment puis-je me débrouiller avec le code source que tu proposes?

Merci d'avance

Ajouter un commentaire



Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,671 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.