XSLT 2.0中的日期字符串:使用xs:date时出错

时间:2015-02-27 18:14:12

标签: xml xslt xslt-2.0

我的xml中有以下字符串:

<birthday>1968-05-30 23:00:00.0 UTC</birthday>

我需要将其转换为日期(CET)。所以基本上我想以某种方式解析这个String到一个日期时间,加1小时,然后检索日期。

但我已经失败了只是将其解析为日期:

xs:date(fn:substring(birthday,1,10)) 

失败并显示错误

  

FORG0001:日期无效&#34;&#34; (太短)

但是xs:date('1968-05-30')工作正常。

尝试使用xs:time(fn:substring(birthday,12,8))检索时间时出现类似错误。

我做错了什么?

(使用Saxon 9)

2 个答案:

答案 0 :(得分:0)

尝试:

<xsl:value-of select="xs:date(xs:dateTime(translate(substring(birthday, 1, 19), ' ', 'T')) + xs:dayTimeDuration('PT1H'))"/>

demo

答案 1 :(得分:0)

感谢您的评论。

问题解决了......相当令人尴尬,但我收到了错误,因为在我的输入XML中我没有注意到我有没有生日的伙伴节点(公司的情况 - 这是也被建模为合作伙伴)。 因此错误正确地说&#34;无效日期&#34;&#34; (太短)&#34;。它只是没有确切地说:/

经验教训:在将String转换为Date之前,请验证String不为空且不为null;)