2

我正在尝试创建一个递增变量的循环,然后在一些 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

问题在于,在“总计”表中,当分组中有超过 1 个 Column2 时,Column6 值被拆分。

4

3 回答 3

1

我找到了一种解决方法,我更喜欢更优雅的解决方案,但至少它有效。我所做的是使最后一列基本上是一个“幽灵”列(没有字段也没有边界)。然后我在 column5 中插入了一个包含两列的表。放置在表格前后的标签。在表中,我将 column5 的值和所需的总和放在 column6 中。它并不完美,存在一些小的格式问题。如果有人有任何建议,我希望有更好的解决方案。

于 2014-06-05T17:54:04.250 回答
0

您不能在同一上下文中混合使用 xdofx 语句和 XSL 表达式。

于 2013-09-20T18:33:40.103 回答
-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>
于 2013-10-10T14:18:57.373 回答