在 xsl 中获取当前时间戳,并在 xml 属性中传递它


Get current timestamp in xsl and pass it in xml attribute

我的项目在php上。我需要使用 XSL 模板创建 cXML 文件。

我对XSL

很陌生,到目前为止,我已经用谷歌搜索并创建了一个输出cXML的XSL模板,我的代码如下。

<?xml version="1.0" encoding="ISO-8859-1"?>
<files>
<file filename="Order_%Y%%m%%d%%h%%i%%s%.xml">
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform" xmlns:date="http://exslt.org/dates-and-times" extension-element-prefixes="date">
<xsl:output method="xml" indent="yes"/>
<xsl:template match="/">
<xsl:for-each select="orders/order">
<xsl:variable name="created_at_timestamp" select="created_at_timestamp" />
<cXML lang="en-US" payloadID="{created_at_timestamp}" timestamp="">
<Header><From><Credential domain="NetworkID"><Identity>Enterprises</Identity></Credential></From>
<To><Credential domain="NetworkID"><Identity>xxx</Identity></Credential></To>
<Sender><Credential domain="NetworkID"><Identity>xxx Enterprises</Identity>
</Credential><UserAgent>Enterprises</UserAgent></Sender></Header>
</cXML>
</xsl:for-each>
</xsl:template>
</xsl:stylesheet>
</file>
</files>

现在我需要知道如何在cXML属性时间戳中输出当前时间戳,具体来说。

<cXML lang="en-US" payloadID="{created_at_timestamp}" timestamp="TIME_STAMP_HERE">

我通过谷歌搜索尝试了很多方法,如果我在"中使用纯文本,所有内容都只输出纯文本。对于 EX:如果我使用函数 current-dateTime(),它会像这样输出。

<cXML lang="en-US" payloadID="{created_at_timestamp}" timestamp="current-dateTime()">

任何人都可以帮我在我的cXML属性中输出当前时间戳吗?其他参数工作正常。

编辑预期输出为<cXML lang="en-US" payloadID="xxx" timestamp="2014-11-07T12:00:13-04:00">

谢谢

XSLT 1.0 中没有 current-dateTime() 函数,我相信 PHP 正在使用这个函数。要么在运行时将当前日期时间作为参数传递给样式表,要么使用 libxslt 处理器支持的 EXSLT date:date-time() 扩展函数:

<cXML lang="en-US" payloadID="xxx" timestamp="{date:date-time()}">