Transformer un xml par plusieur xslt consécutifs

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

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.