2013-08-26 61 views
2

我想創建一個循環,遞增一個變量,然後在一些xsl代碼中使用該變量。下面是我使用的增加計數器代碼:如何在BI Publisher中使用xsl代碼內的xdoxslt變量?

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

的問題是,在「彙總」表,Column6值被分裂時,有超過1列2的分組。

回答

1

我發現了一個解決辦法,我寧願一個更優雅的解決方案,但至少它的工作原理。我所做的是讓最後一列基本上是一個「幽靈」欄(沒有欄位也沒有邊框)。然後我在第5列中插入了一個有兩列的表格。放在桌子前後的標籤。在表格中,我列出了第5列的值,以及第6列中所需的總和。這並不完美,有一些小的格式問題。如果有人有任何建議,我寧願更好的解決方案。

0

您不能在同一上下文中將xdofx語句與XSL表達式混合使用。

-1

有你tryed這樣的事情,而不是

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