Remarque
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de vous connecter ou de modifier des répertoires.
L’accès à cette page nécessite une autorisation. Vous pouvez essayer de modifier des répertoires.
Les paramètres XSLT sont ajoutés à l’utilisation XsltArgumentList de la AddParam méthode. Un nom qualifié et un URI d’espace de noms sont associés à l’objet de paramètre à ce moment-là.
Pour utiliser un paramètre XSLT
Créez un XsltArgumentList objet et ajoutez le paramètre à l’aide de la AddParam méthode.
Appelez le paramètre à partir de la feuille de style.
Passez l’objet XsltArgumentList à la Transform méthode.
Types de paramètres
L’objet de paramètre doit correspondre à un type W3C. Le tableau suivant présente les types W3C correspondants, les classes Microsoft .NET équivalentes (type) et indique si le type W3C est un type XPath ou XSLT.
| Type de l'W3C | Classe .NET équivalente (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 à un jeu de nœuds qui contient un seul nœud.
Si l’objet paramètre n’est pas l’une des classes ci-dessus, il est converti en fonction des règles suivantes. Les types numériques CLR (Common Language Runtime) sont convertis en Double. Le DateTime type est converti en String. IXPathNavigable les types sont convertis en XPathNavigator. XPathNavigator[] est converti en XPathNodeIterator.
Tous les autres types génèrent une erreur.
Exemple :
L’exemple suivant utilise la AddParam méthode pour créer un paramètre pour contenir la date de remise calculée. La date de remise est calculée sur 20 jours à partir de la date de commande.
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();
}
}
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
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>