我最近将我的XSL从版本1.0更改为版本2.0以添加一些更改。我需要为以下行添加SUM函数:
<xsl:sequence select="sum (/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:WOACTIVITY/(ns0:ESTLABCOST + ns0:ESTMATCOST))"/>
这导致我得到错误: XML-23006 :(错误)值与所需类型
不匹配在以下行中:
<xsl:value-of select="/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:LBRCOSTOUT + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:SERVICECOST + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:MATLCOSTIN + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:MATLCOSTOUT + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:TOOLCOSTIN + /ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet/ns0:WORKORDER/ns0:PLUSDESTCONTROL/ns0:PLUSDESTVERSION[ns0:ESTVERSION=$VERSION]/ns0:PLUSDACGDETAIL/ns0:TOOLCOSTOUT"/>
我使用的样本数据如下:
<LBRCOSTOUT>0.0</LBRCOSTOUT>
<SERVICECOST>0.0</SERVICECOST>
<MATLCOSTIN>260.36</MATLCOSTIN>
<MATLCOSTOUT>0.0</MATLCOSTOUT>
<TOOLCOSTIN>0.0</TOOLCOSTIN>
<TOOLCOSTOUT>0.0</TOOLCOSTOUT>
这是因为XSL 2.0的输入更强?我有什么方法可以解决这个问题?
答案 0 :(得分:0)
您传递给sum()
的XPath无效:
/ns0:PublishZXQPPWORKORDER/ns0:ZXQPPWORKORDERSet
/ns0:WORKORDER/ns0:WOACTIVITY/(ns0:ESTLABCOST + ns0:ESTMATCOST))
^
注意到的(
不属于那里。
我也不确定您为什么要从sum()
的输出创建序列,或者稍后如何在代码中使用此序列,但如果您的更改在语法上错误,没别的。