我正在尝试在文件末尾生成一些带有时间戳的日志文件。生成文件名的代码是:
<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>