Entrées dans la classe XslCompiledTransform

La méthode Transform accepte trois types d'entrées pour le document source : un objet qui implémente l'interface IXPathNavigable, un objet XmlReader qui lit le document source ou un string URI.

Notes

La classe XslCompiledTransform conserve l'espace blanc par défaut. Elle respecte ainsi la section 3.4 de la recommandation du W3C sur XSLT 1.0.

Interface IXPathNavigable

L'interface IXPathNavigable est implémentée dans les classes XmlNode et XPathDocument. Ces classes représentent un cache en mémoire de données XML.

  • La classe XmlNode se base sur le DOM (Document Object Model) et comprend des fonctionnalités de modification.

  • La classe XPathDocument est une banque de données en lecture seule basé sur le modèle de données XPath. XPathDocument est la classe recommandée pour la transformation XSLT. Elle offre des performances plus rapides par rapport à la classe XmlNode.

Notes

Les transformations s'appliquent à l'ensemble du document. En d'autres termes, si vous passez dans un autre nœud que le nœud racine du document, cela n'empêche pas le processus de transformation d'accéder à tous les nœuds dans le document chargé. Pour transformer un fragment de nœud, vous devez créer un objet contenant uniquement le fragment de nœud et transférer cet objet à la méthode Transform. Pour plus d’informations, consultez Procédure : transformation d'un fragment de nœud.

L'exemple suivant utilise la méthode XslCompiledTransform.Transform pour transformer le fichier books.xml en fichier books.html à l'aide de la feuille de style transform.xsl. Vous trouverez les fichiers books.xml et transform.xsl dans la rubrique Procédure : effectuer une transformation XSLT à l'aide d'un assembly.

// Open books.xml as an XPathDocument.
XPathDocument doc = new XPathDocument("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(doc, writer);
' Open books.xml as an XPathDocument.
Dim doc As XPathDocument = New XPathDocument("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

'Execute the transformation.
transform.Transform(doc, writer)

Objet XmlReader

La méthode Transform charge à partir du nœud actuel de l'objet XmlReader via tous ses enfants. Vous pouvez donc utiliser une partie d'un document comme document de contexte. Après les retours de la méthode Transform, l'objet XmlReader est positionné sur le nœud suivant après la fin du document de contexte. Si la fin du document est atteinte, l'objet XmlReader est positionné à la fin du fichier.

L'exemple suivant utilise la méthode XslCompiledTransform.Transform pour transformer le fichier books.xml en fichier books.html à l'aide de la feuille de style transform.xsl. Vous trouverez les fichiers books.xml et transform.xsl dans la rubrique Procédure : effectuer une transformation XSLT à l'aide d'un assembly.

// Create a reader to read books.xml
XmlReader reader = XmlReader.Create("books.xml");

// Create a writer for writing the transformed file.
XmlWriter writer = XmlWriter.Create("books.html");

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform(reader, writer);
'Create a reader to read books.xml
Dim reader As XmlReader = XmlReader.Create("books.xml")

' Create a writer for writing the transformed file.
Dim writer As XmlWriter = XmlWriter.Create("books.html")

' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform(reader, writer)

String URI

Vous pouvez également spécifier l'URI du document source comme entrée XSLT. Un objet XmlResolver permet de résoudre l'URI. Vous pouvez spécifier l'objet XmlResolver à utiliser en le transférant à la méthode Transform. Si aucun objet XmlResolver n'est spécifié, la méthode Transform utilise un objet XmlUrlResolver par défaut sans informations d'identification.

L'exemple suivant utilise la méthode XslCompiledTransform.Transform pour transformer le fichier books.xml en fichier books.html à l'aide de la feuille de style transform.xsl. Vous trouverez les fichiers books.xml et transform.xsl dans la rubrique Procédure : effectuer une transformation XSLT à l'aide d'un assembly.

// Create and load the transform with script execution enabled.
XslCompiledTransform transform = new XslCompiledTransform();
XsltSettings settings = new XsltSettings();
settings.EnableScript = true;
transform.Load("transform.xsl", settings, null);

// Execute the transformation.
transform.Transform("books.xml", "books.html");
' Create and load the transform with script execution enabled.
Dim transform As XslCompiledTransform = New XslCompiledTransform()
Dim settings As XsltSettings = New XsltSettings()
settings.EnableScript = True
transform.Load("transform.xsl", settings, Nothing)

' Execute the transformation.
transform.Transform("books.xml", "books.html")

Pour plus d’informations, consultez Résolution de ressources externes lors du traitement XSLT.

Voir aussi