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.
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.