XSLT 1.0 如何递增日期
更新:无法使用任何 EXSLT 扩展。 另外,我在两个不同的地方使用日期,我只想更新其中之一,而不是两者。
我需要在 XSLT 转换中增加一个日期。我正在使用 XSLT 1.0。
在源 XML 中,我有一个这样的日期
<XML>
<Date>4/22/2011 3:30:43 PM</Date>
</XML>
然后我需要在输出中添加 10 年。像这样
<Output>
<Odate>4/22/2011 3:30:43 PM</Odate>
<Cdate>4/22/2021 3:30:43 PM</Cdate>
</Output>
如何在 XSLT 1.0 中完成此操作。提前致谢。
UPDATE: Cannot use any EXSLT extensions.
Also I'm using date in two different places and I only want to update one of them and not both.
I need to increment a date in my XSLT transformation. I'm using XSLT 1.0.
In source XML I have a date like this
<XML>
<Date>4/22/2011 3:30:43 PM</Date>
</XML>
Then I need to add 10 years to the output. Like this
<Output>
<Odate>4/22/2011 3:30:43 PM</Odate>
<Cdate>4/22/2021 3:30:43 PM</Cdate>
</Output>
How this can be done in XSLT 1.0. Thanks in advance.
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
以下不是一般的日期算术实现,但可能足以增加年份部分:
The following is no general date arithmetic implementation but might suffice to increment the year part:
取决于您想要变得多么挑剔,例如 2004 年 2 月 29 日之后 10 年后的日期是哪一天?有许多有用的 XSLT 1.0 日期处理例程,您可以在 www.exslt.org 下载,我认为它们包括一个解析日期模板,它将您的美国格式日期转换为标准 ISO 日期,日期算术模板将允许您向 ISO 格式日期添加持续时间,以及将其转换回美国格式的格式日期函数。
Depends a little how pernickety you want to be, e.g. what's the date 10 years after 29 Feb 2004? There are a number of useful XSLT 1.0 date-handling routines you can download at www.exslt.org, I think they include both a parse-date template which will convert your US-format date into a standard ISO date, date arithmetic templates which will allow you to add a duration to an ISO-format date, and a format-date function that will turn it back into US format.
我在@Martin 的帮助下找到了它。我扩展了@Martin 的代码,并且仅在需要修改日期时才调用模板。
XSLT:
输出:
I have figured it with the help of @Martin. I extend on @Martin's code and only called the template when I need to modify the date.
XSLT:
Output: