Cette documentation est archivée et n’est pas conservée.

Transformations XSLT avec la classe XslTransform

.NET Framework 1.1

Les transformations XSLT (Extensible Stylesheet Language Transformation) ont pour but de transformer le contenu d'un document XML source en un autre document dont le format ou la structure est différente. Il s'agit par exemple de la transformation d'un document XML en un document HTML pour une utilisation sur un site Web ou en un document qui contient uniquement les champs requis par une application. Ce processus de transformation est spécifié par la recommandation XSL Transformations (XSLT) Version 1.0 du W3C qui se trouve à l'adresse www.w3.org/TR/xslt. Dans le .NET Framework, la classe XslTransform située dans l'espace de noms System.Xml.Xsl est le processeur XSLT qui implémente les fonctionnalités de cette spécification. Certaines fonctionnalités n'ayant pas été implémentées à partir de la recommandation XSLT Version 1.0 du W3C sont répertoriées dans Sorties à partir de XslTransform. La figure suivante illustre l'architecture de transformation du .NET Framework.

Architecture de transformation

La recommandation XSLT utilise XPath pour sélectionner des parties d'un document XML, où XPath est un langage de requête utilisé pour accéder aux nœuds d'une arborescence de document. Comme illustré dans le diagramme, l'implémentation .NET Framework de XPath est utilisée pour sélectionner des parties de XML dans plusieurs classes telles que XmlDocument, XmlDataDocument et XPathDocument. XPathDocument est un magasin de données XSLT optimisé qui fournit des transformations XSLT performantes lorsqu'il est utilisé avec XslTransform.

Le tableau suivant répertorie les classes généralement utilisées lors de l'utilisation de XslTransform et de XPath et de leur fonction.

Classe ou interface Function
XPathNavigator API qui fournit un modèle de style curseur pour naviguer dans un magasin ainsi qu'une prise en charge de requête XPath. Elle ne permet pas de modifier le magasin sous-jacent. Pour effectuer des modifications, utilisez la classe XmlDocument.
IXPathNavigable Interface qui fournit une méthode CreateNavigator à une classe XPathNavigator pour le magasin.
XmlDocument Permet la modification de ce document. Cette classe implémente l'interface IXPathNavigable, autorisant des scénarios de modification de documents où des transformations XSLT sont ultérieurement requises. Pour plus d'informations, consultez Entrée XmlDocument dans XslTransform.
XmlDataDocument Classe dérivée de XmlDocument. Elle établit une passerelle entre les mondes relationnels et XML en utilisant un DataSet pour optimiser le stockage de données structurées dans le document XML selon les mappages spécifiés sur le DataSet. Elle implémente l'interface IXPathNavigable, autorisant des scénarios où des transformations XSLT peuvent être effectuées sur des données relationnelles extraites d'une base de données. Pour plus d'informations, consultez Intégration de XML aux données relationnelles et à ADO.NET.
XPathDocument Classe optimisée pour le traitement XslTransform et les requêtes XPath, elle fournit un cache très performant en lecture seule. Elle implémente l'interface IXPathNavigable et représente le magasin par défaut à utiliser pour les transformations XSLT.
XPathNodeIterator Permet la navigation dans des groupes de nœuds XPath. Toutes les méthodes de sélection XPath sur XPathNavigator retournent une classe XPathNodeIterator. Plusieurs classes XPathNodeIterator peuvent être créées sur le même magasin, chacune représentant un groupe sélectionné de nœuds.

L'exemple de code suivant charge une feuille de style XSL, lit un fichier intitulé books.xml dans une classe XPathDocument et effectue une transformation des données sur un fichier fictif intitulé myStyleSheet.xsl, en envoyant le résultat mis en forme à la console.

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

Public Class Sample
    Private filename As [String] = "mydata.xml"
    Private stylesheet As [String] = "myStyleSheet.xsl"

    Public Shared Sub Main()
        Dim xslt As New XslTransform()
        xslt.Load(stylesheet)
        Dim xpathdocument As New XPathDocument(filename)
        Dim writer As New XmlTextWriter(Console.Out)
        writer.Formatting = Formatting.Indented

        xslt.Transform(xpathdocument, Nothing, writer, Nothing)
    End Sub 'Main
End Class 'Sample
[C#]
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public class Sample 
{
    private const String filename = "mydata.xml";
    private const String stylesheet = "myStyleSheet.xsl";

    public static void Main() 
    {
    XslTransform xslt = new XslTransform();
    xslt.Load(stylesheet);
    XPathDocument xpathdocument = new
    XPathDocument(filename);
    XmlTextWriter writer = new XmlTextWriter(Console.Out);
    writer.Formatting=Formatting.Indented;

    xslt.Transform(xpathdocument, null, writer, null);    
    }
}

Voir aussi

Implémentation du processeur XSLT par la classe XslTransform | Implémentation de comportements discrétionnaires dans la classe XslTransform | XPathNavigator dans les transformations | XPathNodeIterator dans les transformations | Entrée XPathDocument dans XslTransform | Entrée XmlDataDocument dans XslTransform | Entrée XmlDocument dans XslTransform | XslTransform | XslTransform, membres

Afficher: