零作为 XslCompiledTransform 中的值被忽略

Zero is ignored as a value in XslCompiledTransform

我有以下问题: 我有以下代码:

private void ApplyTransform(XsltArgumentList arguments, out string output) 
{
    using (StringWriter stringWriter = new StringWriter()) 
    {
        XmlTextWriter xmlTextWriter = new XmlTextWriter(stringWriter);
        m_xslTransform.Transform(m_rootNode, arguments, xmlTextWriter);
        xmlTextWriter.Close();
        output = stringWriter.ToString();
    }
}

其中一个参数为零(双零),我希望在输出 XML 中看到它,但该参数根本不存在于 XML 中。

XSL 部分:

  <xsl:if test="$Argument">
    <xsl:attribute name="Argument">
      <xsl:value-of select="$Argument" />
    </xsl:attribute>
  </xsl:if>

你能告诉我我错过了什么吗?

如果 $Argument 是一个数字并且它等于零,那么

中的测试
<xsl:if test="$Argument">

returns 错误。参见:http://www.w3.org/TR/xpath/#function-boolean


编辑:

您可以使用

<xsl:if test="string($Argument)">

测试变量是否为空,或者:

<xsl:if test="number($Argument)=number($Argument)">

测试变量是一个数字,包括。零。