我必须做一个显示相同数据的报告摘要表。尝试使用xdoxslt:distinct_values对相同的值进行分组,但它不起作用,也不显示任何错误。
我现在拥有的:
001 - 1
002 - 1
001 - 1
我需要实现的目标:
001 - 2
002 - 1
要消除001的不同值,我使用下面的代码
[{
"id": 0,
"name": "Company1",
"logoUrl": "/lib/assets/company1-logo.png",
"location":{
"country": "USA",
"state": "California",
"city": "Napa"
},
"active": false
},
{
"id": 1,
"name": "Company2",
"logoUrl": "/lib/assets/company2-logo.png",
"location":{
"country": "Germany",
"state": "",
"city": "Berlin"
},
"active": false
},
{
"id": 2,
"name": "Company3",
"logoUrl": "/lib/assets/company3-logo.png",
"location":{
"country": "USA",
"state": "Michigan",
"city": "Detroit"
},
"active": false
}]
尝试使用下面的代码计算不同的值,但它不起作用
<?CwaProductCode[not(.=preceding::CwaProductCode)]?>
有什么建议吗?
答案 0 :(得分:0)
distinct_values将仅返回空格分隔的不同值列表。根据您的要求,您需要遍历每个不同的值并计算其实例。
我使用了这个xml:
<ROWSET>
<ROW>
<CwaProductCode>001</CwaProductCode>
</ROW>
<ROW>
<CwaProductCode>002</CwaProductCode>
</ROW>
<ROW>
<CwaProductCode>001</CwaProductCode>
</ROW>
<ROW>
<CwaProductCode>003</CwaProductCode>
</ROW>
</ROWSET>
这个BIP代码:
<?for-each-group:ROW;./CwaProductCode?>
<?CwaProductCode?><?'-'?><?count(current-group()/.)?>
<?end for-each-group?>
得到了这个输出:
001-2
002-1
003-1
答案 1 :(得分:0)
谢谢Ranjith!代码有效。
我编辑了代码并添加了if条件,如下所示(sumSub已在报告的顶部声明)
<?for-each-group:ROW;./CwaProductCode?>
<?if:CwaOrderType='UT Sales' and CwaChannel='Customer Portal'?>
<?CwaProductCode[not(.=preceding::CwaProductCode)]?>
<?count(current-group()/.)?>
<?xdoxslt:set_variable($_XDOCTX, 'sumSub', xdoxslt:get_variable($_XDOCTX,'sumSub')+count(current-group()/.))?>
CwaProductCode根据您的建议显示正确的结果。但计数会以某种方式显示结果,就好像没有添加过滤一样。