如果某些可能为null,如何在XSL中对不同的字段求和?

Kra*_*raz 2 xslt null xsl-fo sum

我有以下XSL:

    <xsl:value-of select='translate(format-number(
        Gaz/Baf/CH4
        + Gaz/Std/CH4
        + Gaz/Bsa/CH4
        + Gaz/Bbs/CH4
        + Gaz/Bhf/CH4
        + Gaz/Bin/CH4
        , "### ### ### ##0.######"),".",",")' />
Run Code Online (Sandbox Code Playgroud)

当我的所有物品都有价值时,总和很好地相加.但是,如果其中一个为null(<CH4 xsi:nil="true"/>),那么我的总和就变成了NaN.

到目前为止,我尝试添加一个新功能.但我们使用的pdf生成器不支持它.(System.Xml.Xsl.XslLoadException:'xsl:function'仍未实现)

我尝试添加一个C#函数来添加为XsltArgumentList.一个简单return value ?? 0;但我也得到一个例外:_System.Xml.Xsl.XslTransformException:没有管理具有Clr'Nullable`1'类型的扩展函数的参数或值_

现在我正在尝试使用a xsl:variable,但是我找不到它们为变量添加值的示例(一旦定义了变量静态吗?)

那么,有什么建议吗?

G. *_*man 5

我告诉我的学生使用谓词来过滤那些不是数字的成员.

因此,在XSLT 1中,我将使用以下内容,依据以下原则NaN!=NaN:

<xsl:value-of select='translate(format-number(
    sum( ( Gaz/Baf/CH4
         | Gaz/Std/CH4
         | Gaz/Bsa/CH4
         | Gaz/Bbs/CH4
         | Gaz/Bhf/CH4
         | Gaz/Bin/CH4 )[number(.)=number(.)] )
    , "### ### ### ##0.######"),".",",")' />
Run Code Online (Sandbox Code Playgroud)

在XSLT 2中,它会更优雅:

<xsl:value-of select='translate(format-number(
    sum( (Gaz/Baf/CH4
         | Gaz/Std/CH4
         | Gaz/Bsa/CH4
         | Gaz/Bbs/CH4
         | Gaz/Bhf/CH4
         | Gaz/Bin/CH4 )[. castable as xs:double] )
    , "### ### ### ##0.######"),".",",")' />
Run Code Online (Sandbox Code Playgroud)

(根据LarsH的观察修复;谢谢Lars.)