Как использовать переменную xdoxslt внутри кода xsl в BI Publisher?

Я пытаюсь создать цикл, который увеличивает переменную, а затем использует эту переменную внутри некоторого кода xsl. Вот код, который я использую для увеличения счетчика:

<?xdoxslt:set_variable($_XDOCTX, ‘counter’, 0)?>

<?for-each-group:$g2;./STATUS?>
<?sort:current-group()/STATUS;'ascending';data-type='text'?>
<?xdoxslt:set_variable($_XDOCTX, ‘counter’, xdoxslt:get_variable($_XDOCTX, ‘counter’) 
   + count(xdoxslt:distinct_values(current-group()/ACTION)))?>
<?end for-each-group?>

Следующий код выведет нужный мне номер:

<xsl:value-of select="xdoxslt:get_variable($_XDOCTX, ‘counter’)"/>

Итак, я знаю, что цикл работает, и переменная имеет правильный номер. Однако мне нужно использовать переменную в следующем коде:

<xsl:attribute name="number-rows-spanned"  xdofo:ctx="block">
<xsl:value-of select="xdoxslt:get_variable($_XDOCTX, ‘counter’)"/>
</xsl:attribute>

Когда я использую этот код, я получаю следующую ошибку:

java.lang.NumberFormatException: For input string: ""

Я также пробовал:

<xsl:variable name="rowcount" select="xdoxslt:get_variable($_XDOCTX, ‘counter’)"/>
<xsl:attribute name="number-rows-spanned"  xdofo:ctx="block">
<xsl:value-of select="$rowcount"/>
</xsl:attribute>

Это приводит к той же ошибке. Есть ли обходной путь, который позволит мне использовать переменную таким образом, или мне просто нужно найти альтернативное решение?

Это отчет, который я пытаюсь создать:

Group by Column1

    Group by Column2

        Column3    | Column4    | column5   | Column6
        Group Left | Group Left | Group Left | Number

    End Group by Column2

   Totals

        Column3    | Column4    | column5   | Column6
        Group Left | Group Left | Group Left | sum()

End Group by column1

Проблема заключается в том, что в таблице «Итоги» значения столбца 6 разделяются, когда в группе более 1 столбца 2.


person Angel    schedule 26.08.2013    source источник


Ответы (3)


Я нашел обходной путь, я бы предпочел более элегантное решение, но, по крайней мере, оно работает. Что я сделал, так это сделал последний столбец в основном «призрачным» столбцом (без поля и без границ). Затем я вставил таблицу с двумя столбцами в столбец5. Теги размещаются до и после таблицы. В таблице я помещаю значение для столбца 5 и сумму, которая мне нужна, для столбца 6. Это не идеально, есть небольшие проблемы с форматированием. Я бы предпочел лучшее решение, если у кого-то есть предложения.

person Angel    schedule 05.06.2014

Вы не можете смешивать операторы xdofx с выражениями XSL в одном и том же контексте.

person Sergio    schedule 20.09.2013

вы пробовали что-то подобное вместо этого

<xsl:variable xdofo:ctx="incontext" name="myRowCount" select="xdoxslt:get_variable($_XDOCTX, 'counter')"/>
<xsl:attribute name="number-rows-spanned"  xdofo:ctx="block">
    <xsl:value-of select="$myRowCount"/>
</xsl:attribute>
person GELR    schedule 10.10.2013