BI Publisher 条件排序问题
BI Publisher conditional sorting issue
我无法让 BI Publisher 根据我的参数进行排序。数据模型中的参数名称是SORTBY,有两个选项(NAME, BIRTH_DATE)。这些值来自数据模型中的 "list of values",与结果集中的字段名称相匹配。我希望报告按用户选择的字段排序。
下面是我在 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>
通过一些对等编程,我的一位同事找到了答案。 for-each 不喜欢内部有 if(或 choose)。因此,您必须将参数分配给变量并在排序中使用该变量。
for 循环外:
<?xdoxslt:set_variable($_XDOCTX,'Order',SORTBY)?>
For 循环:
<?for-each:G_1?>
<?sort:./*[name() = xdoxslt:get_variable($_XDOCTX,'Order')];'ascending';'text'?>
我无法让 BI Publisher 根据我的参数进行排序。数据模型中的参数名称是SORTBY,有两个选项(NAME, BIRTH_DATE)。这些值来自数据模型中的 "list of values",与结果集中的字段名称相匹配。我希望报告按用户选择的字段排序。
下面是我在 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>
通过一些对等编程,我的一位同事找到了答案。 for-each 不喜欢内部有 if(或 choose)。因此,您必须将参数分配给变量并在排序中使用该变量。
for 循环外:
<?xdoxslt:set_variable($_XDOCTX,'Order',SORTBY)?>
For 循环:
<?for-each:G_1?>
<?sort:./*[name() = xdoxslt:get_variable($_XDOCTX,'Order')];'ascending';'text'?>