Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/xslt/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
XSLT1.0如何在select条件下用0(零)替换空值或空白值_Xslt_Xslt 1.0 - Fatal编程技术网

XSLT1.0如何在select条件下用0(零)替换空值或空白值

XSLT1.0如何在select条件下用0(零)替换空值或空白值,xslt,xslt-1.0,Xslt,Xslt 1.0,如果nodevalue为空或为空,我希望将该值替换为0(零)。 问题是,在此计算中,如果任何nodevalue为空或为空,则会给出一个结果。e、 g.选择“10-2+5-2--4”按以下方式尝试: <xsl:call-template name="SetNetTemplate"> <xsl:with-param name="xyz" select="$node1value + $node2value

如果nodevalue为空或为空,我希望将该值替换为0(零)。 问题是,在此计算中,如果任何nodevalue为空或为空,则会给出一个结果。e、 g.选择“10-2+5-2--4”

按以下方式尝试:

<xsl:call-template name="SetNetTemplate">
<xsl:with-param name="xyz" select="$node1value
                                 + $node2value
                                 + $node3value
                                 - $node4value
                                 - $node5value
                                 - $node6value"/>
</xsl:call-template>


编辑

请注意,上述只是一个“可爱的小把戏”,旨在避免适当而直接的解决方案的冗长,从而实现这一点:

<xsl:with-param name="xyz" select="translate(number($node1value), 'aN', '0')
                                 + translate(number($node2value), 'aN', '0')
                                 + translate(number($node3value), 'aN', '0')
                                   ...
                                 - translate(number($node6value), 'aN', '0')"/>

在尝试将每个操作数作为数字处理之前,请将其转换为每个操作数。

尝试

<xsl:choose>
    <xsl:when test="number($node1value)">
        <xsl:value-of select="$node1value" />
    </xsl:when>
    <xsl:otherwise>
        <xsl:value-of select="0" />
    </xsl:otherwise>
</xsl:choose>

etc

对我来说,这很有效:

<xsl:with-param name="xyz" select="concat(0, $node1value)
                                 + concat(0, $node2value)
                                 + concat(0, $node3value)..."/>

我不想将0连接到我的数字。如果nodevalue为空或为空,我想将其替换为0。@ManishMawatwal恐怕您没有抓住要点:如果值为空(这是您想要的),则在值的左侧添加0将导致0,并且在值包含数字时不会产生任何效果。除非那个数字是负数——在这种情况下,这将完全爆炸(没有双关语,但无论如何有一个是很好的)。如果你在翻译中遗漏了一个0:
translate(number($node1value),'aN','00')
——需要额外的0来匹配aN中的N。@Barney不,这里没有遗漏任何东西。其想法是将“NaN”(而不是“aN”)中的“a”替换为0,并删除两个“N”字符,以便最终结果是单个0字符。你的版本会返回“000”。对-我明白了。是的,我的版本确实返回了“000”,它仍然是零,但没有你的那么简洁。这与上面迈克尔·凯给出的答案几乎相同,并且具有相同的限制。
number(concat('0',$nodeValue))