BI Publisher条件排序问题

时间:2015-04-27 20:01:14

标签: xslt obiee bi-publisher

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

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

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

1 个答案:

答案 0 :(得分:0)

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

在for循环之外:

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

For loop:

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