XSL BI Publisher每次循环打印空白行

时间:2018-12-18 14:54:34

标签: xml xslt foreach rtf bi-publisher

我的BI Publisher RTF模板中有一个for-each循环,用于在XML输出中重复组。当没有数据存在时,我仍然需要for-each循环来输出空白表行。有点像for-each循环的例外。有可能吗?

XML输出:

<LIST_G_BOX_18_TO_20> 
 <G_BOX_18_TO_20>
  <SD_CODE></SD_CODE>
  <ASSIGNMENT_ACTION_ID5>2090950796</ASSIGNMENT_ACTION_ID5>
  <PAYROLL_ACTION_ID5>30381586</PAYROLL_ACTION_ID5>
  <TAX_UNIT_ID4>120</TAX_UNIT_ID4>
  <LOCALITY_NAME1>Euclid(OH)</LOCALITY_NAME1>
  <STATE_ABBREV>OH</STATE_ABBREV>
  <W2_LOCAL_WAGES>34.43</W2_LOCAL_WAGES>
  <W2_LOCAL_INCOME_TAX>.98</W2_LOCAL_INCOME_TAX>
 </G_BOX_18_TO_20>
<LIST_G_BOX_18_TO_20> 

每个环

<?for-each:G_BOX_18_TO_20[W2_LOCAL_WAGES>0]?>
   <?if:position()!=1?><?STATE_ABBREV?>
  <?W2_LOCAL_WAGES?>
  <?W2_LOCAL_INCOME_TAX?>
  <?    xdofx:substr(LOCALITY_NAME1,1,decode(instr(LOCALITY_NAME1,'(',1),'0',length(LOCALITY_NAME1)+1,instr(LOCALITY_NAME1, '(', 1)) - 1)?>
 <?end if?>
 <?end for-each?>

当元素-G_BOX_18_TO_20不存在数据时的XML输出示例:

<LIST_G_BOX_18_TO_20>
</LIST_G_BOX_18_TO_20>

1 个答案:

答案 0 :(得分:1)

选项1

在循环中的第二行之前,在表中添加第二行。将这些条件之一应用于该新行,以便在满足条件时出现。

条件A:检查LIST元素中是否没有记录

<?if:LIST_G_BOX_18_TO_20 and LIST_G_BOX_18_TO_20="?><?end if?> 

条件B:检查列表项元素是否不存在

<?if:not(G_BOX_18_TO_20)?><?end if?>

选项2

此方法在知道一些其他详细信息之前应用,因此可能对其他人有所帮助。将条件从for-for中取出,并在不满足条件时对所有不想显示的字段进行if声明。

<?for-each:G_BOX_18_TO_20?>
   <?if:position()!=1?><?STATE_ABBREV?>
  <?if:W2_LOCAL_WAGES>0?><?W2_LOCAL_WAGES?><?end if?>
  <?if:W2_LOCAL_WAGES>0?><?W2_LOCAL_INCOME_TAX?><?end if?>
  <?if:W2_LOCAL_WAGES>0?><?xdofx:substr(LOCALITY_NAME1,1,decode(instr(LOCALITY_NAME1,'(',1),'0',length(LOCALITY_NAME1)+1,instr(LOCALITY_NAME1, '(', 1)) - 1)?><?end if?>
 <?end if?>
<?end for-each?>