Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Az XSLT-paramétereket a rendszer hozzáadja a XsltArgumentListAddParam metódushoz. A paraméterobjektumhoz akkor egy minősített név és névtér URI van társítva.
XSLT-paraméter használata
Hozzon létre egy objektumot XsltArgumentList , és adja hozzá a paramétert a AddParam metódussal.
Hívja meg a paramétert a stíluslapról.
Adja át az XsltArgumentList objektumot a Transform metódusnak.
Paramétertípusok
A paraméterobjektumnak W3C-típusnak kell lennie. Az alábbi táblázat a megfelelő W3C-típusokat, az azzal egyenértékű Microsoft .NET-osztályokat (típust) és azt mutatja be, hogy a W3C-típus XPath- vagy XSLT-típus-e.
| W3C-típus | Egyenértékű .NET-osztály (típus) | XPath vagy XSLT típus |
|---|---|---|
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 |
*Ez egyenértékű egy csomópontkészlettel, amely egyetlen csomópontot tartalmaz.
Ha a paraméterobjektum nem a fenti osztályok egyike, akkor az a következő szabályok szerint lesz konvertálva. A rendszer a közös nyelvi futtatókörnyezeti (CLR) numerikus típusokat konvertálja Double. A DateTime típust a rendszer átalakítja String. A(z) IXPathNavigable típusok XPathNavigator típusra lesznek konvertálva. Az XPathNavigator[] átalakítva .XPathNodeIterator
Minden más típus hibát jelez.
példa
Az alábbi példa a AddParam metódus használatával hoz létre egy paramétert a számított kedvezménydátum tárolásához. A kedvezmény dátuma a rendelés dátumától számított 20 nap.
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
Bemenet
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>
Kimenet
<?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>