如何在XSLT文件中以dd/mm/yyyy格式显示日期?
解决XSLT中日期格式转为dd/mm/yyyy的问题
没问题!你用EXSLT的ex:date-time()得到的是YYYY-MM-DDZ格式的日期,要转换成dd/mm/yyyy其实很简单——只需要拆分日期的各个部分,再按目标格式重新拼接就行。
这里给你两种实现方式,都是基于EXSLT扩展的:
方法一:直接处理ex:date-time()的返回值
先提取掉末尾的Z,再拆分年、月、日字段,最后用concat组合成目标格式:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex"> <xsl:template match="/"> <!-- 提取不带Z的纯日期字符串(YYYY-MM-DD) --> <xsl:variable name="formatted-date-part" select="substring(ex:date-time(), 1, 10)"/> <!-- 拆分日、月、年 --> <xsl:variable name="day" select="substring($formatted-date-part, 9, 2)"/> <xsl:variable name="month" select="substring($formatted-date-part, 6, 2)"/> <xsl:variable name="year" select="substring($formatted-date-part, 1, 4)"/> <!-- 拼接成dd/mm/yyyy格式 --> <xsl:value-of select="concat($day, '/', $month, '/', $year)"/> </xsl:template> </xsl:stylesheet>
方法二:用ex:date()简化步骤
如果你的XSLT处理器支持ex:date()函数(它直接返回YYYY-MM-DD格式,不需要手动截掉Z),代码可以更简洁:
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:ex="http://exslt.org/dates-and-times" extension-element-prefixes="ex"> <xsl:template match="/"> <xsl:variable name="raw-date" select="ex:date()"/> <xsl:value-of select="concat(substring($raw-date,9,2), '/', substring($raw-date,6,2), '/', substring($raw-date,1,4))"/> </xsl:template> </xsl:stylesheet>
注意事项
要确保你的XSLT处理器(比如Saxon、Xalan)已经启用了EXSLT日期扩展,有些环境需要手动配置才能使用这些扩展函数哦。
内容的提问来源于stack exchange,提问作者snehamayi senapati
相关产品推荐
相关产品推荐

