Partager via


Paramètres XSLT

Des paramètres XSLT sont ajoutés à l'objet XsltArgumentList en utilisant la méthode AddParam. Un nom qualifié et un URI d'espace de noms sont associés à l'objet de paramètre à ce stade.

Pour utiliser un paramètre XSLT

  1. Créez un objet XsltArgumentList et ajoutez le paramètre à l'aide de la méthode AddParam.

  2. Appelez le paramètre à partir de la feuille de style.

  3. Transmettez l'objet XsltArgumentList à la méthode Transform.

Types de paramètres

L'objet de paramètre doit correspondre à un type W3C. Le tableau suivant illustre les types W3C correspondants, les classes Microsoft .NET Framework équivalentes (type) et précise si le type W3C est un type XPath ou XSLT.

Type W3C

Équivalent de classe .NET (type)

Type XPath ou XSLT

String

System.String

XPath

Boolean

System.Boolean

XPath

Number

System.Double

XPath

Result Tree Fragment

System.Xml.XPath.XPathNavigator

XSLT

Node*

System.Xml.XPath.XPathNavigator

XPath

Node Set

XPathNodeIterator

XPathNavigator[]

XPath

*Cela équivaut à une collection de nœuds contenant un seul nœud.

Si l'objet de paramètre n'est pas l'une des classes ci-dessus, il est converti selon les règles suivantes. Les types CLR numériques sont convertis en objet Double. Le type DateTime est converti en String. Les types IXPathNavigable sont convertis en XPathNavigator. XPathNavigator[] est converti en objet XPathNodeIterator.

Tous les autres types provoquent une erreur.

Exemple

L'exemple suivant utilise la méthode AddParam pour créer un paramètre destiné à contenir une date de remise calculée. La date de la remise correspond à 20 jours à partir de la date de la commande.

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

public class Sample

   public shared sub Main() 

      ' Create the XslCompiledTransform and load the style sheet.
      Dim xslt as XslCompiledTransform = new XslCompiledTransform()
      xslt.Load("discount.xsl")

      ' Create the XsltArgumentList.
      Dim argList as XsltArgumentList = new XsltArgumentList()

      ' Calculate the discount date.
      Dim orderDate as DateTime = new DateTime(2004, 01, 15)
      Dim discountDate as DateTime = orderDate.AddDays(20)
      argList.AddParam("discount", "", discountDate.ToString())

      ' Create an XmlWriter to write the output.             
     Dim writer as XmlWriter = XmlWriter.Create("orderOut.xml")

     ' Transform the file.
     xslt.Transform(new XPathDocument("order.xml"), argList, writer)
     writer.Close()

  end sub

end class
using System;
using System.IO;
using System.Xml;
using System.Xml.XPath;
using System.Xml.Xsl;

public class Sample {

   public static void Main() {

      // Create the XslCompiledTransform and load the style sheet.
      XslCompiledTransform xslt = new XslCompiledTransform();
      xslt.Load("discount.xsl");

      // Create the XsltArgumentList.
      XsltArgumentList argList = new XsltArgumentList();

      // Calculate the discount date.
      DateTime orderDate = new DateTime(2004, 01, 15);
      DateTime discountDate = orderDate.AddDays(20);
      argList.AddParam("discount", "", discountDate.ToString());

      // Create an XmlWriter to write the output.             
     XmlWriter writer = XmlWriter.Create("orderOut.xml");

     // Transform the file.
     xslt.Transform(new XPathDocument("order.xml"), argList, writer);
     writer.Close();

  }

}

Entrée

order.xml

<!--Represents a customer order-->
<order>
  <book ISBN='10-861003-324'>
    <title>The Handmaid's Tale</title>
    <price>19.95</price>
  </book>
  <cd ISBN='2-3631-4'>
    <title>Americana</title>
    <price>16.95</price>
  </cd>
</order>

discount.xsl

<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:param name="discount"/>
  <xsl:template match="/">
    <order>
      <xsl:variable name="sub-total" select="sum(//price)"/>
      <total><xsl:value-of select="$sub-total"/></total>
           15% discount if paid by: <xsl:value-of select="$discount"/>
     </order>
  </xsl:template>
</xsl:stylesheet>

Sortie

<?xml version="1.0" encoding="utf-8"?>
<order>
  <total>36.9</total>
     15% discount if paid by: 2/4/2004 12:00:00 AM
</order>

Voir aussi

Autres ressources

Transformations XSLT