XSLT パラメーターは、AddParam メソッドを使用してXsltArgumentListに追加されます。 修飾名と名前空間 URI は、その時点でパラメーター オブジェクトに関連付けられます。
XSLT パラメーターを使用するには
XsltArgumentList オブジェクトを作成し、AddParam メソッドを使用してパラメーターを追加します。
スタイル シートからパラメーターを呼び出します。
XsltArgumentList オブジェクトを Transform メソッドに渡します。
パラメーターの型
パラメーター オブジェクトは W3C 型に対応する必要があります。 次の表は、対応する W3C 型、同等の Microsoft .NET クラス (型)、W3C 型が XPath 型か XSLT 型かを示しています。
W3C 型 | 同等の .NET クラス (型) | XPath または 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 |
*これは、1 つのノードを含むノード セットと同じです。
パラメーター オブジェクトが上記のクラスの 1 つでない場合は、次の規則に従って変換されます。 共通言語ランタイム (CLR) 数値型は、 Doubleに変換されます。 DateTime型はStringに変換されます。 IXPathNavigable 型は XPathNavigatorに変換されます。 XPathNavigator[] は XPathNodeIteratorに変換されます。
その他のすべての型でエラーがスローされます。
例
次の例では、 AddParam メソッドを使用して、計算された割引日を保持するパラメーターを作成します。 割引日は、注文日から 20 日として計算されます。
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
インプット
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>
アウトプット
<?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>
こちらも参照ください
.NET