Transformer un xml par plusieur xslt consécutifs

Soyez le premier à donner votre avis sur cette source.

Snippet vu 8 386 fois - Téléchargée 31 fois

Contenu du snippet

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 / Exemple :


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.

A voir également

Ajouter un commentaire Commentaires
Messages postés
1
Date d'inscription
mercredi 29 septembre 2004
Statut
Membre
Dernière intervention
30 septembre 2004

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
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013

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

a+
Messages postés
473
Date d'inscription
mercredi 7 août 2002
Statut
Membre
Dernière intervention
10 juin 2015

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.
Messages postés
135
Date d'inscription
lundi 17 juin 2002
Statut
Membre
Dernière intervention
20 juillet 2013

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+

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.