零作为 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)">
测试变量是一个数字,包括。零。
我有以下问题: 我有以下代码:
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)">
测试变量是一个数字,包括。零。