Partager via


Transformations XSLT avec la classe XslTransform

RemarqueRemarque

La classe XslTransform est obsolète dans le .NET Framework version 2.0.Vous pouvez effectuer des transformations XSLT (Extensible Stylesheet Language Transformation) à l'aide de la classe XslCompiledTransform.Pour plus d'informations, voir Utilisation de la classe XslCompiledTransform et Migration depuis la classe XslTransform.

Le but des transformations XSLT est de transformer le contenu d'un document XML source en un autre document différent par son format ou sa structure (par exemple, transformer du code XML en HTML afin de l'utiliser sur un site Web ou le transformer en un document contenant uniquement les champs requis par une application). Ce processus de transformation est spécifié par la recommandation du World Wide Web Consortium (W3C) sur XSLT version 1.0 accessible à 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 du W3C sur XSLT 1.0 sont répertoriées dans Sorties à partir de XslTransform. La figure suivante illustre l'architecture de transformation du .NET Framework.

Vue d'ensemble

Architecture de transformation

Architecture de transformation XSLT

La recommandation XSLT utilise XML Path Language (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. Un objet XPathDocument est un magasin de données XSLT optimisé qui fournit des transformations XSLT performantes lorsqu'il est utilisé avec l'objet XslTransform.

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

Classe ou interface

Fonction

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 le modifier, utilisez la classe XmlDocument.

IXPathNavigable

Interface qui fournit une méthode CreateNavigator à un objet XPathNavigator pour le magasin.

XmlDocument

Permet la modification de ce document. Cette classe implémente l'objet IXPathNavigable, autorisant des scénarios de modification de documents où des transformations XSLT sont ultérieurement requises. Pour plus d'informations, voir Entrée XmlDocument dans XslTransform.

XmlDataDocument

Classe dérivée de l'objet XmlDocument. Elle établit une passerelle entre les mondes relationnels et XML en utilisant un objet DataSet pour optimiser le stockage de données structurées dans le document XML selon les mappages spécifiés sur l'objet 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, voir Intégration de XML aux données relationnelles et à ADO.NET.

XPathDocument

Classe optimisée pour le traitement de l'objet 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 collections de nœuds XPath. Toutes les méthodes de sélection XPath sur l'objet XPathNavigator retournent une classe XPathNodeIterator. Plusieurs objets XPathNodeIterator peuvent être créés sur le même magasin, chacune représentant une collection de nœuds sélectionnée.

Extensions de MSXML XSLT

Les fonctions msxsl:script et msxsl:node-set sont les seules extensions de Microsoft XML Core Services (MSXML) XSLT prises en charge par la classe XslTransform.

Exemple

L'exemple de code suivant charge une feuille de style XSLT, lit un fichier nommé mydata.xml dans un objet XPathDocument et effectue une transformation des données sur un fichier fictif nommé 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
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

Référence

XslTransform

Concepts

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