XSLT-paraméterek

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

  1. Hozzon létre egy objektumot XsltArgumentList , és adja hozzá a paramétert a AddParam metódussal.

  2. Hívja meg a paramétert a stíluslapról.

  3. 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>

Lásd még