2013-08-26 5 views
2

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

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

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

ответ

1

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

0

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

-1

у вас судимо что-то вроде этого вместо

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