Delen via


XSLT-parameters

XSLT-parameters worden aan de XsltArgumentList toegevoegd met behulp van de AddParam methode. Een gekwalificeerde naam- en naamruimte-URI zijn op dat moment gekoppeld aan het parameterobject.

Een XSLT-parameter gebruiken

  1. Maak een XsltArgumentList object en voeg de parameter toe met behulp van de AddParam methode.

  2. Roep de parameter aan van het stijlblad.

  3. Geef het XsltArgumentList object door aan de Transform methode.

Parametertypen

Het parameterobject moet overeenkomen met een W3C-type. In de volgende tabel ziet u de bijbehorende W3C-typen, de equivalente Microsoft .NET-klassen (type) en of het W3C-type een XPath-type of XSLT-type is.

W3C-type Equivalente .NET-klasse (type) XPath- of XSLT-type
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

*Dit komt overeen met een knooppuntset die één knooppunt bevat.

Als het parameterobject niet een van de bovenstaande klassen is, wordt het geconverteerd volgens de volgende regels. CLR-numerieke typen (Common Language Runtime) worden omgezet naar Double. Het DateTime type wordt geconverteerd naar String. IXPathNavigable typen worden geconverteerd naar XPathNavigator. XPathNavigator[] wordt geconverteerd naar XPathNodeIterator.

Alle andere typen veroorzaken een fout.

Voorbeeld

In het volgende voorbeeld wordt de AddParam methode gebruikt om een parameter te maken voor het opslaan van berekende kortingsdatum. De kortingsdatum wordt berekend op 20 dagen vanaf de orderdatum.

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

Invoer

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>

Uitvoer

<?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>  

Zie ook