xslt current-dateTime()在文件名中不起作用

时间:2016-12-19 10:48:03

标签: datetime xslt

我正在尝试在文件末尾生成一些带有时间戳的日志文件。生成文件名的代码是:

<xsl:variable name="timestamp" as="xs:string" select="f:transformDateTimeForFilename(current-dateTime())" />

<xsl:result-document href="logs_{$type}_{$timestamp}.xml"/>

函数f:transformDateTimeForFilename用于删除gerenated日期时间中的:.+

生成的日志文件名应该是logs_txt_2016-12-19T110104825.xml,但我得到的是logs_txt_.xml。最奇怪的是代码在本地单元测试中运行良好,但是一旦我在Windows服务器上运行该程序,时间戳就消失了,没有生成错误日志。

感谢任何提案。

更新详情:

日志文件在模板内生成:

<xsl:template name="makeLogs">
    <xsl:param name="logNodes"      as="element(l:Log)*"/>
    <xsl:param name="type"          as="xs:string"      />

    <xsl:variable name="timestamp" as="xs:string" select="f:transformDateTimeForFilename(current-dateTime())"/>

    <xsl:result-document href="logs_{$type}_{$timestamp}.xml" >
      ....
    </xsl:result-document>
</xsl:template>

<xsl:function name="f:transformDateTimeForFilename" as="xs:string">
    <xsl:param name="dateTime" as="xs:dateTime"/>

    <xsl:variable name="dateTimeStringWithoutTimeZone" as="xs:string" select="substring-before(string($dateTime), '+')"/>

    <xsl:sequence select="replace($dateTimeStringWithoutTimeZone, '[:.]', '')"/>

</xsl:function>

0 个答案:

没有答案