获取xsl中的当前时间戳并将其传递给xml属性

时间:2014-11-19 07:30:43

标签: php xml xslt

我的项目是关于php的。我需要使用XSL模板创建cXML文件。

我是XSL的新手,到目前为止我已经用Google搜索并创建了一个输出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">

由于

1 个答案:

答案 0 :(得分:2)

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

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