Parametry XSLT

Do metody AddParam se XsltArgumentList přidají parametry XSLT. Kvalifikovaný název a identifikátor URI oboru názvů jsou v daném okamžiku přidruženy k objektu parametru.

Použití parametru XSLT

  1. Vytvořte XsltArgumentList objekt a přidejte parametr pomocí AddParam metody.

  2. Volání parametru ze šablony stylů

  3. XsltArgumentList Předejte objekt metoděTransform.

Typy parametrů

Objekt parametru by měl odpovídat typu W3C. Následující tabulka uvádí odpovídající typy W3C, ekvivalentní třídy Microsoft .NET (typ) a zda je typ W3C typu XPath nebo XSLT.

Typ W3C Ekvivalentní třída .NET (typ) Typ XPath nebo 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

*Toto je ekvivalentem sady uzlů, která obsahuje jeden uzel.

Pokud objekt parametru není jednou z výše uvedených tříd, převede se podle následujících pravidel. Číselné typy modulu CLR (Common Language Runtime) se převedou na Double. Typ DateTime je převeden na String. IXPathNavigable typy jsou převedeny na XPathNavigator. XPathNavigator[] je převeden na XPathNodeIterator.

Všechny ostatní typy vyvolá chybu.

Příklad

Následující příklad používá metodu AddParam k vytvoření parametru, který bude uchovávat počítané datum slevy. Datum slevy se vypočítá na 20 dnů od data objednávky.

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

Vstup

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>

Výstup

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

Viz také