Bagikan melalui


Parameter XSLT

Parameter XSLT ditambahkan ke XsltArgumentList menggunakan AddParam metode. Nama dan namespace layanan URI yang memenuhi syarat dikaitkan dengan objek ekstensi pada saat itu.

Untuk menggunakan parameter XSLT

  1. Buat XsltArgumentList objek dan tambahkan parameter menggunakan AddParam metode.

  2. Panggil parameter dari lembar gaya.

  3. Teruskan XsltArgumentList objek ke Transform metode.

Jenis parameter

Objek parameter harus sesuai dengan jenis W3C. Tabel berikut menunjukkan jenis W3C yang sesuai, kelas (jenis) Microsoft .NET yang setara, dan apakah jenis W3C adalah jenis JalurX atau jenis XSLT.

Jenis W3C Kelas .NET yang setara (jenis) Jenis XPath atau 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

*Ini setara dengan set simpul yang berisi satu simpul.

Jika objek parameter bukan salah satu kelas di atas, objek tersebut dikonversi sesuai dengan aturan berikut. Jenis numerik runtime bahasa umum (CLR) dikonversi menjadi Double. DateTime Jenis dikonversi menjadi String. IXPathNavigable jenis dikonversi menjadi XPathNavigator. XPathNavigator[] dikonversi menjadi XPathNodeIterator.

Semua jenis lainnya melemparkan kesalahan.

Contoh

Contoh berikut menggunakan AddParam metode untuk membuat parameter untuk menahan tanggal diskon terhitung. Tanggal diskon dihitung menjadi 20 hari sejak tanggal pesanan.

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

Input

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>

Output

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

Lihat juga