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

XslTransform, classe

Mise à jour : novembre 2007

REMARQUE : cette API est maintenant obsolète.

Transforme les données XML à l'aide d'une feuille de style XSLT (Extensible Stylesheet Language for Transformations).

Espace de noms :  System.Xml.Xsl
Assembly :  System.Xml (dans System.Xml.dll)

[ObsoleteAttribute("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202")]
public sealed class XslTransform
/** @attribute ObsoleteAttribute("This class has been deprecated. Please use System.Xml.Xsl.XslCompiledTransform instead. http://go.microsoft.com/fwlink/?linkid=14202") */
public final class XslTransform
public final class XslTransform

Remarque :

La classe XslTransform est obsolète dans le .NET Framework version 2.0. La classe XslCompiledTransform est le nouveau processeur XSLT. Pour plus d'informations, consultez Utilisation de la classe XslCompiledTransform et Migration depuis la classe XslTransform.

XslTransform prend en charge la syntaxe XSLT 1.0. La feuille de style XSLT doit utiliser l'espace de noms http://www.w3.org/1999/xsl/transform.

Des arguments supplémentaires peuvent également être ajoutés à la feuille de style en utilisant la classe XsltArgumentList. Cette classe contient des paramètres d'entrée pour la feuille de style et des objets d'extension qui peuvent être appelés à partir de la feuille de style.

Pour transformer des données XML :

  1. Créez un objet XslTransform.

  2. Utilisez la méthode Load afin de charger la feuille de style pour la transformation. Cette méthode a plusieurs surcharges et peut charger une feuille de style en utilisant XmlReader, XPathNavigator, IXPathNavigable ou une URL avec l'emplacement du fichier.

  3. Utilisez la méthode Transform pour transformer les données XML. Cette méthode a plusieurs surcharges et peut gérer différents types de données d'entrée et de sortie. Vous pouvez également spécifier un XsltArgumentList contenant des arguments supplémentaires à utiliser comme données d'entrée pendant la transformation.

Considérations sur la sécurité

Lorsque vous créez une application qui utilise la classe XslTransform, vous devez prendre en compte les éléments suivants et leurs conséquences :

  • Les objets d'extension sont activés par défaut. Si un objet XsltArgumentList contenant des objets d'extension est passé à la méthode Transform, ceux-ci sont utilisés.

  • Les feuilles de style XSLT peuvent inclure des références à d'autres fichiers et des blocs de script incorporés. Un utilisateur malveillant peut exploiter cette situation en vous fournissant des données ou des feuilles de style qui, lors de leur exécution, seront traitées par le système jusqu'à ce que l'ordinateur manque de ressources.

  • Avec des applications XSLT qui s'exécutent dans un environnement d'approbation mixte, une feuille de style peut être usurpée. Par exemple, un utilisateur malveillant peut charger un objet avec une feuille de style nuisible et le remettre à un autre utilisateur qui appelle par la suite la méthode Transform et exécute la transformation.

Il est possible d'atténuer ces problèmes de sécurité en refusant les objets XslTransform, les feuilles de style XSLT ou les sources de données XML émanant de sources non fiables.

Prise en charge de scripts

Cette classe prend en charge les scripts incorporés en utilisant l'élément msxsl:script.

Dans la version 1.1 du .NET Framework, la preuve de la feuille de style détermine les autorisations accordées aux scripts incorporés.

  • Si la feuille de style a été chargée à partir d'un URI (Uniform Resource Identifier), l'URI est utilisé pour créer la preuve. Cette preuve inclut l'URI avec son site et sa zone.

  • Si la feuille de style a été chargée en utilisant une autre source, vous pouvez fournir la preuve en passant un objet System.Security.Policy.Evidence à la méthode Load. Sinon, l'assembly du script bénéficie d'une confiance totale.

Appelants d'un niveau de confiance moyen : L'autorisation UnmanagedCode est requise pour compiler le script incorporé. L'autorisation ControlEvidence est requise pour fournir Evidence à la méthode Load. Une exception SecurityException est levée si l'appelant n'a pas les autorisations nécessaires. Pour plus d'informations, consultez System.Security.Permissions.SecurityPermission et System.Security.Permissions.SecurityPermissionFlag.

L'élément msxsl:script a les exigences suivantes :

  • L'élément msxsl:script doit appartenir à l'espace de noms urn:schemas-microsoft-com:xslt. La feuille de style doit inclure la déclaration de l'espace de noms xmlns:msxsl=urn:schemas-microsoft-com:xslt.

  • L'élément msxsl:script peut inclure un attribut language qui spécifie le langage de script à utiliser. L'attribut language doit avoir une des valeurs suivantes : C#, CSharp, VB, VisualBasic, JScript ou JavaScript. Étant donné que le nom du langage ne respecte pas la casse, JavaScript et javascript sont valides. Si un attribut language n'est pas spécifié, JScript est utilisé par défaut.

  • L'élément msxsl:script doit inclure un attribut implements-prefix qui contient le préfixe représentant l'espace de noms associé au bloc de script. Cet espace de noms doit être défini dans la feuille de style. Une feuille de style peut inclure plusieurs blocs de script regroupés par espace de noms. Il ne peut pas y avoir des blocs de script en plusieurs langues dans le même espace de noms. Les blocs de script peuvent appeler une fonction définie dans un autre bloc de script, à condition que les blocs de script se trouvent dans le même espace de noms. Le contenu d'un bloc de script est analysé conformément aux règles et à la syntaxe du langage de script (fourni par l'attribut language). Par exemple, dans un bloc de script C#, les commentaires sont préfixés par les caractères //. Les commentaires doivent être du contenu XML valide.

Note Il est recommandé d'encapsuler les blocs de script dans une section CDATA.

 <msxsl:script implements-prefix='xy' language='C#'>
   <![CDATA[
   // Add code here.
   ]]>
 </msxsl:script>

Les fonctions peuvent être déclarées dans l'élément msxsl:script. Le tableau suivant montre les espaces de noms qui sont pris en charge par défaut.

Espaces de noms pris en charge

Description

System

Classes système.

System.Collection

Classes de collection.

System.Text

Classes de gestion du texte.

System.Xml

Classes XML principales.

System.Xml.Xsl

Classes XSLT.

System.Xml.XPath

Classes XPath (XML Path Language).

Les arguments fournis et les valeurs de retour définies par les fonctions du script doivent correspondre à l'un des types W3C (World Wide Web Consortium) indiqués ci-dessous. Le tableau suivant détaille le mappage entre les types W3C, XPath ou XSLT, et les classes .NET correspondantes.

Type W3C

Classe .NET équivalente

Chaîne (XPath)

System.String

Booléen (XPath)

System.Boolean

Nombre (XPath)

System.Double

Fragment d'arborescence de résultat (XSLT)

System.Xml.XPath.XPathNavigator

Ensemble de nœuds (XPath)

System.Xml.XPath.XPathNodeIterator

Si la fonction du script utilise un des types numériques suivants : Int16, UInt16, Int32, UInt32, Int64, UInt64, Single ou Decimal, ces types sont convertis en Double, lequel correspond au nombre du type W3C XPath.

Une exception est levée lorsqu'une fonction appelée ne peut pas convertir le résultat de l'argument en un des types requis.

Remarque :

msxsl:script et msxsl:node-list sont les seules fonctions de l'espace de noms urn:schemas-microsoft-com:xslt prises en charge par la classe XslTransform.

XslTransform a la possibilité d'utiliser un code Common Language Runtime (CLR) comme mécanisme d'extension. Pour ce faire, une instance d'une classe est passée à la classe XslTransform et ses méthodes publiques appelées dans une feuille de style XSLT. Les méthodes qui sont définies avec le mot clé params, qui permet de passer un nombre non spécifié de paramètres, ne fonctionnent pas correctement dans ce scénario. Pour plus d'informations, consultez params (Référence C#).

Pour plus d'informations, consultez Transformations XSLT avec la classe XslTransform.

TopicLocation
Comment : transformer des données XML dans le contrôle serveur Web XMLGénération d'applications Web ASP.NET dans Visual Studio
Comment : transformer des données XML dans le contrôle serveur Web XMLGénération d'applications Web ASP.NET dans Visual Studio
Comment : transformer des données XML dans le contrôle serveur Web XMLGénération d'applications Web ASP.NET

L'exemple suivant transforme le document XML spécifié et renvoie le résultat dans la console.

//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument mydata = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.Out);

//Transform the data and send the output to the console.
xslt.Transform(mydata,null,writer, null);


//Create a new XslTransform object.
XslTransform xslt = new XslTransform();

//Load the stylesheet.
xslt.Load("http://server/favorite.xsl");

//Create a new XPathDocument and load the XML data to be transformed.
XPathDocument myData = new XPathDocument("inputdata.xml");

//Create an XmlTextWriter which outputs to the console.
XmlWriter writer = new XmlTextWriter(Console.get_Out());

//Transform the data and send the output to the console.
xslt.Transform(myData, null, writer, null);


System.Object
  System.Xml.Xsl.XslTransform

Les objets XslTransform sont seulement thread-safe pour les opérations de transformation. Il n'est pas garanti que les autres opérations sont thread-safe. Vous devez également vérifier qu'aucune autre méthode n'est appelée sur l'objet pendant les opérations de chargement.

Windows Vista, Windows XP SP2, Windows XP Media Center Edition, Windows XP Professionnel Édition x64, Windows XP Starter Edition, Windows Server 2003, Windows Server 2000 SP4, Windows Millennium Edition, Windows 98

Le .NET Framework et le .NET Compact Framework ne prennent pas en charge toutes les versions de chaque plateforme. Pour obtenir la liste des versions prises en charge, consultez Configuration requise du .NET Framework.

.NET Framework

Pris en charge dans : 1.1, 1.0
Obsolète (avertissement du compilateur) dans 3.5
Obsolète (avertissement du compilateur) dans 3.5 SP1
Obsolète (avertissement du compilateur) dans 3.0
Obsolète (avertissement du compilateur) dans 3.0 SP1
Obsolète (avertissement du compilateur) dans 2.0
Obsolète (avertissement du compilateur) dans 2.0 SP1
Afficher: