XSLT 1.0 获取当前日期时间
我的 XML 文件中有一个节点包含以下内容:
我希望将此行替换为当前日期,然后时间使用与上面所示相同的格式。
YYYY-MM-DDTHH:MM:SSZ
该节点位于声明为“x”的命名空间内
I have a node in my XML file containing the following:
<Apple>2011-12-01T16:33:33Z</Apple>
I wish to take this line and replace it with the current date and time using the same format as shown above.
YYYY-MM-DDTHH:MM:SSZ
The node is within a namespace declared as 'x'
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您最好将当前数据作为输入 / xsl:param 传递给模板。
XSLT 的目标是成为纯粹的函数式语言;也就是说,所有模板/函数都应符合以下条件:如果使用不会引起副作用的参数调用纯函数,则结果相对于该参数列表是恒定的(有时称为引用透明性),即,如果使用相同的参数再次调用纯函数,将返回相同的结果(这可以启用缓存优化,例如记忆)。
尽管对此有一些解决方法(如InfantPro'Aravind'指出),不建议做这样的事情;如果这样做,您就会破坏 XSLT 最重要的好处之一。
You'll better pass the current data as an input / xsl:param to the template.
The XSLT aims to be purely functional language; that is, all templates / functions should conform to e.g. the following condition: If a pure function is called with parameters that cause no side-effects, the result is constant with respect to that parameter list (sometimes called referential transparency), i.e. if the pure function is again called with the same parameters, the same result will be returned (this can enable caching optimizations such as memoization).
Although there are workarounds on this (as InfantPro'Aravind' pointed out), it is not recommended to do such things; by doing it, you're ruining one of the most significant XSLT benefits.
单独使用 XSLT 1.0 不可能使用 DateTime .. 在类似的情况下,我借助了脚本编写 .. (C#)
示例 XML:
示例 XSLT:
结果输出:
该脚本可能驻留在同一个文件中(就像我在我的文件中一样 )示例 XSLT 代码)或者如果触发 XSLTransformation 的代码是 C#,则在调用位置移动相同的代码:)
Playing with DateTime is not possible with XSLT 1.0 alone .. In a similar situations I took help of scripting .. (C#)
Sample XML:
Sample XSLT:
Resulting Output:
The script may reside in a same file (like I have it in my sample XSLT code) or if the code triggering XSLTransformation is C# then move the same code in the calling place :)
最好从 XML 引擎传递当前日期时间。在
xsl:stylesheet
中声明
,并传递来自处理器的值。It's better to pass current datetime from your XML engine. Declare
<xsl:param name="current-datetime"/>
in yourxsl:stylesheet
, and pass the value from processor.