【问题标题】:BI Publisher conditional sorting issueBI Publisher 条件排序问题
【发布时间】:2015-04-27 20:01:14
【问题描述】:

我无法让 BI Publisher 根据我的参数进行排序。数据模型中的参数名称是 SORTBY,有两个选项(NAME,BIRTH_DATE)。这些值来自数据模型中与结果集中的字段名称匹配的“值列表”。我希望报表按用户选择的字段排序。

下面是我在 RTF 模板中使用 BI Pub 标签的代码:

<?param@begin:SORTBY?>
<?for-each:G_1?>
<?if:SORTBY='NAME'?>
  <?sort:NAME;'ascending';'text'?>
<?end if?>
<?if:SORTBY='BIRTH_DATE'?>
  <?sort:BIRTH_DATE;'ascending';'text'?>
<?end if?>

这是从 Microsoft Word 导出的相关结果 xsl-fo:

<xsl:for-each select=".//G_1" xdofo:ctx="3">
  ...
  <xsl:if test=".//SORTBY = 'NAME'" xdofo:ctx="3">
    <xsl:sort select="(.//NAME)[1]" order="ascending" data-type="text"/>
  </xsl:if>
  <xsl:if test=".//SORTBY = 'BIRTH_DATE'" xdofo:ctx="3">
    <xsl:sort select="(.//BIRTH_DATE)[1]" order="ascending" data-type="text"/>
  </xsl:if>
  ...
</xsl:for-each>

【问题讨论】:

    标签: xslt obiee bi-publisher


    【解决方案1】:

    通过一些对等编程,我的一位同事找到了答案。 for-each 不喜欢在里面有一个 if(或一个选择)。因此,您必须将参数分配给变量并在排序中使用该变量。

    在for循环之外:

    <?xdoxslt:set_variable($_XDOCTX,'Order',SORTBY)?>
    

    for循环:

    <?for-each:G_1?>
    <?sort:./*[name() = xdoxslt:get_variable($_XDOCTX,'Order')];'ascending';'text'?>
    

    【讨论】:

    • 要清楚,我相信声明应该是你不能有条件地应用排序。当然,您可以在 for-each 中设置条件(如果、选择/何时)格式。但是您不能有条件地应用排序。提出的解决方案很好,这里也有介绍:stackoverflow.com/questions/16695538/…
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2023-02-08
    • 2011-11-06
    • 2015-01-16
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多