我正在尝试将一些参数传递给XSLT样式表。我按照例子:Passing parameters to XSLT Stylesheet via .NET。
但我的转换页面没有正确显示值。
这是我的C#代码。我不得不添加自定义函数来执行某些算术,因为Visual Studio 2010不使用XSLT 2.0。
var args = new XsltArgumentList();
args.AddExtensionObject("urn:XslFunctionExtensions", new XslFunctionExtensions());
args.AddParam("processingId", string.Empty, processingId);
var myXPathDoc = new XPathDocument(claimDataStream);
var xslCompiledTransformation = new XslCompiledTransform(true);
// XSLT File
xslCompiledTransformation.Load(xmlReader);
// HTML File
using (var xmlTextWriter = new XmlTextWriter(outputFile, null))
{
xslCompiledTransformation.Transform(myXPathDoc, args, xmlTextWriter);
}
这是我的XSLT:
<xsl:template match="/">
<xsl:param name="processingId"></xsl:param>
..HTML..
<xsl:value-of select="$processingId"/>
我错过了什么吗?
答案 0 :(得分:15)
这是我的XSLT:
<xsl:template match="/"> <xsl:param name="processingId"></xsl:param> ..HTML.. <xsl:value-of select="$processingId"/>
我错过了什么吗?
是的,您错过了一个事实,即XSLT转换的调用者可以设置全局级参数的值 - 而不是模板级参数的值。
因此,代码必须是:
<xsl:param name="processingId"/>
<xsl:template match="/">
..HTML..
<xsl:value-of select="$processingId"/>
<!-- Possibly other processing here -->
</xsl:template>