【发布时间】:2014-08-19 12:50:55
【问题描述】:
我有 XML,其中一些日期和日期时间字符串以某些特殊格式提供:
DDMMYYYYHHMM(24 小时格式的小时数)
我试图在 XSLT 中创建一个用户定义的函数,以便能够重新格式化这样的字符串(我知道如何在其他语言中执行此操作,但我还不知道如何在 XSLT 中执行此操作) .我的想法是这样的:
<xsl:value-of select="udf:reFormat('230820141345','DDMMCCYYHHmm','HH:mm:00')"/>
会导致:
13:45:00
和
<xsl:value-of select="udf:reFormat('230820141345','DDMMCCYYHHmm','CCYY-MM-DD')"/>
会导致:
2014-08-23
【问题讨论】:
-
我的第一个想法是在输入字符串中找到位于“CCYY”位置的内容,并将其放在输出字符串中的“CCYY”位置。在这种情况下,使用的字母(在格式字符串中)就没有那么重要了。
-
那是哪个版本的 XSLT 2.0?用户定义的函数听起来像 XSLT 2.0,在这种情况下,我将首先将输入格式
DDMMYYYYHHMM转换为xs:dateTime,对于进一步的格式化,我将使用内置的 w3.org/TR/xslt20/#format-date 函数。 -
这是我的备份计划。但是正在寻找一个更“灵活”的解决方案,因为在中间件中有很多日期时间转换挑战。它是 Sonic 中的 XSLT 2.0。
-
马丁的建议为什么不灵活?一旦您的日期类型为
xs:dateTime,就有许多有用的现有函数。 -
Martins 的回答绝对灵活!我看到的挑战是日期、时间和日期时间字段不统一,因此我需要单独处理每种类型以使其成为 XSLT 中的日期、时间或日期时间。之后,格式化的可能性就像我需要的那样灵活。但我试图消除在格式化之前先转换它的需要。就像我写的那样,这可能是我将使用的方法。
标签: xml xslt xml-parsing