XSLT参数传递问题——返回空结果
本文关键字:返回 结果 text xsl 参数传递 问题 XSLT | 更新日期: 2023-09-27 18:03:04
下面是我的代码,我正在传递Xslt参数&检查参数是否为真,然后xslt:text应该返回,但我没有得到任何值。我是xslt的新手。
string filename = "tmp.xml";
string stylesheet = "result.xslt";
protected void Page_Load(object sender, EventArgs e)
{
//Create the XslTransform and load the stylesheet.
XslCompiledTransform xslt = new XslCompiledTransform();
xslt.Load(stylesheet);
//Load the XML data file.
XPathDocument doc = new XPathDocument(filename);
XsltArgumentList obj = new XsltArgumentList();
bool category = ConfigurationManager.AppSettings["Code"].Contains("Software");
obj.AddParam("category", "", category);
//Create an XmlTextWriter to output to the console.
StringWriter sw = new StringWriter();
XmlTextWriter writer = new XmlTextWriter(sw);
writer.Formatting = Formatting.Indented;
//Transform the file.
xslt.Transform(doc, obj, writer, null);
writer.Close();
}
——的结果。XSLT文件----
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:msxsl="urn:schemas-microsoft-com:xslt"
xmlns:user="urn:my-scripts">
<xsl:param name="category" />
<xsl:template match="data">
<xsl:if test="$category=true">
<xsl:text>Software is avilable.</xsl:text>
</xsl:if>
</xsl:template>
</xsl:stylesheet>
------ tmp.xml文件-------------
<?xml version="1.0" encoding="utf-8" ?>
<data>
<circle>
<radius>12</radius>
</circle>
<circle>
<radius>37.5</radius>
</circle>
</data>
test="$category=true"
表示test="$category = child::true"
,除非您有一个名为"true"的元素,否则比较的结果将为false。我猜你指的是test="$category=true()"
,虽然写test="$category"
更简单。
(我不太熟悉。net转换API,但我假设当AddParam()提供一个布尔值时,样式表看到的也是一个布尔值)。