BI Publisher报表的XSL月末功能

时间:2018-07-19 17:08:16

标签: xml xslt rtf peoplesoft bi-publisher

我正在使用BI Publisher工具以Microsoft Word创建报告,该工具使用XSL创建PDF。数据是通过Peoplesoft中的SQL查询创建的,然后将其导出到XML文件中。当有一个XML字段为空('')时,我希望报告用当天的当月最后一天填充该字段。

我看到XSL为此提供了功能

{omega**2/k**2: a + b*c + b, omega**4/k**4: b + c, omega**6/k**6: a*b*c, 1: a + b}

http://www.xsltfunctions.com/xsl/functx_last-day-of-month.html

我不确定如何在当前的XSL中实现此功能。我想通了如何显示今天的日期

<xsl:function name="functx:last-day-of-month" as="xs:date?"
              xmlns:functx="http://www.functx.com">
  <xsl:param name="date" as="xs:anyAtomicType?"/>

  <xsl:sequence select="
   functx:date(year-from-date(xs:date($date)),
            month-from-date(xs:date($date)),
            functx:days-in-month($date))
  "/>    
</xsl:function>

是否有将XSL <?format-date:xdoxslt:sysdate_as_xsdformat();'Short'?> 与今天的日期的XSL字段一起使用?我在网上的任何地方都找不到很好的例子。

我可以使用case语句重写SQL查询,但是在Peoplesoft中这样做非常繁琐,而使用XSL进行此更改将使我的生活变得更加轻松。我对XSL的工作原理了解不多,所以有什么用。

1 个答案:

答案 0 :(得分:0)

functx函数是一个外部库,您可以下载here。将此文件放在同一目录中,并在XSLT文件中至少包含以下两行(至少version="2.0")。

<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" 
    xmlns:functx="http://www.functx.com" 
    version="2.0">
  <xsl:import href="functx-1.0-doc-2007-01.xsl" />
...

现在,您可以在XSLT文件中使用functx:...函数。
例如,要使用current-date(),请使用

<xsl:value-of select="current-date()" />

并获得last-day-of-month(...)的使用

<xsl:value-of select="functx:last-day-of-month(xs:date('2018-07-19'))" />
  

总有没有可以将XSL functx:month-last-of-month与今天的日期的XSL字段一起使用?我在网上的任何地方都找不到很好的例子。

将二者结合使用以获得last-day-of-month()current-date()使用

<xsl:value-of select="functx:last-day-of-month(current-date())" />