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,但是我找不到它们为变量添加值的示例(一旦定义了变量静态吗?)
那么,有什么建议吗?
我告诉我的学生使用谓词来过滤那些不是数字的成员.
因此,在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.)
| 归档时间: |
|
| 查看次数: |
1694 次 |
| 最近记录: |