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>

XSLT参数传递问题——<xsl:text>返回空结果

test="$category=true"表示test="$category = child::true",除非您有一个名为"true"的元素,否则比较的结果将为false。我猜你指的是test="$category=true()",虽然写test="$category"更简单。

(我不太熟悉。net转换API,但我假设当AddParam()提供一个布尔值时,样式表看到的也是一个布尔值)。