Цикл XSL BI Publisher For-Each печатает пустые строки - PullRequest
0 голосов
/ 18 декабря 2018

В моем шаблоне RTF BI Publisher есть повторяющийся цикл для повторяющихся групп в выводе 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 LOOP

<?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?>

Пример вывода XML, когда нет данных для элемента - G_BOX_18_TO_20:

<LIST_G_BOX_18_TO_20>
</LIST_G_BOX_18_TO_20>

1 Ответ

0 голосов
/ 20 декабря 2018

Опция 1

Добавьте в таблицу вторую строку перед той, которая у вас есть в цикле.Примените одно из этих условий к этой новой строке, чтобы оно появилось при выполнении условия.

Условие A: проверьте, нет ли записей в элементе LIST

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

Условие B: проверьтеесли элемент LIST ITEM не существует

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

Опция 2

Это применимо до того, как вы узнаете некоторые дополнительные детали, поэтому другим может быть полезно знать,Уберите условие из for-each и сделайте его оператором 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?>
...