【问题标题】:How do I use an xdoxslt variable inside xsl code, in BI Publisher?如何在 BI Publisher 中的 xsl 代码中使用 xdoxslt 变量?
【发布时间】:2013-08-26 14:22:14
【问题描述】:

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

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

【问题讨论】:

    标签: xml xslt publisher bi-publisher


    【解决方案1】:

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

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        【解决方案3】:

        您是否尝试过类似的方法

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

        【讨论】:

          猜你喜欢
          • 2022-06-13
          • 1970-01-01
          • 2011-10-08
          • 2011-07-11
          • 1970-01-01
          • 2014-06-03
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          相关资源
          最近更新 更多