2016-07-08 2 views
0

У меня есть переменная счетчика: <?xdoxslt:set_variable($_XDOCTX, ‘storeCounter’, 0)?>Как обновлять счетчик в BI Publisher для-каждого тега

я положил этот счетчик в наличии для каждого тега и надеюсь, что он будет возвращать время цикла:

<?for-each:G_1?> 
    <?xdoxslt:set_variable($_XDOCTX, 'storeCounter', xdoxslt:get_variable($_XDOCTX, 'storeCounter') + 1)?> 

Вот мой подробный отчет: enter image description here

и модель данных XML:

<output rootName="DATA_DS" uniqueRowName="false"> 
<nodeList name="data-structure"> 
<dataStructure tagName="DATA_DS"> 
<group name="G_1" label="G_1" source="test"> 
<element name="TY_SOH_TOT" value="TY_SOH_TOT" label="TY_SOH_TOT" dataType="xsd:double" breakOrder="" fieldOrder="1"/> 
<element name="LY_SOH_TOT" value="LY_SOH_TOT" label="LY_SOH_TOT" dataType="xsd:double" breakOrder="" fieldOrder="2"/> 
<element name="LLY_SOH_TOT" value="LLY_SOH_TOT" label="LLY_SOH_TOT" dataType="xsd:double" breakOrder="" fieldOrder="3"/> 
</group> 
</dataStructure> 
</nodeList> 
</output> 

Но он просто возвращает 1 как результат счетчика:

<?xdoxslt:get_variable($_XDOCTX, 'storeCounter')?> 

Итак, как сделать счетчик обновляется правильно?

+0

Синтаксис правильно. Это работает для меня. Если вы можете отправить мне полный xml и rtf, я могу проверить его: [email protected] –

ответ

0

Вы закрыли цикл for?

<?for-each:G_1?> 
    <?xdoxslt:set_variable($_XDOCTX, 'storeCounter', xdoxslt:get_variable($_XDOCTX, 'storeCounter') + 1)?> 
<?end for-each?> 

<?xdoxslt:get_variable($_XDOCTX, 'storeCounter')?> 

Распечатывает счет.

Если вам просто нужно количество, вы можете использовать <?count(G_1)?>, дает подсчет без зацикливания

+0

Да, я закрыл цикл тегом ''. Помимо счетчика мне также нужны некоторые вычисления в цикле. Я уточнил свой вопрос для получения более подробной информации о моем отчете. Пожалуйста, просмотрите его. –

+0

Не могли бы вы разместить xml? –

+0

Я загрузил xml в вопрос. Это xml, о котором вы упоминаете? –

1

Глядя на ваш новый XML, кажется, вам придется перебрать «элемент» вместо «группы». Перебор «группы» даст вам 0.

<?xdoxslt:set_variable($_XDOCTX, 'storeCounter', 0)?> 
<?for-each: element?> 
<?xdoxslt:set_variable($_XDOCTX, 'storeCounter', xdoxslt:get_variable($_XDOCTX, 'storeCounter') + 1)?> 
<?end for-each?> 
<?xdoxslt:get_variable($_XDOCTX, 'storeCounter')?> 

даст вам 3.

+0

Спасибо, с вашей помощью я видел первопричину :) –

Смежные вопросы