以某种可读格式在HTML中显示/输出日期的选项是什么。我的意思是,如果我只是显示date_last_activity的值,它看起来很奇怪:S 所以我的问题是,XSLT是否提供任何日期格式转换?
XML:
<date_last_activity format="MMDDCCYY">04132012</date_last_activity>
XLS模板:
<xsl:value-of select="date_last_activity"/>
HTML:
04132012
宁愿它看起来像04/13/2012 ......
我在XSLT上做了很多,我想可以制作“template”=&gt; formatDate ...但不知道从哪里开始:S
答案 0 :(得分:4)
此转化:
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="yes" indent="yes"/>
<xsl:template match="date_last_activity">
<xsl:value-of select=
"concat(
substring(.,
string-length(substring-before(@format, 'MM'))+1,
2
),
'/',
substring(.,
string-length(substring-before(@format, 'DD'))+1,
2
),
'/',
substring(.,
string-length(substring-before(@format, 'CCYY'))+1,
4
)
)"/>
</xsl:template>
</xsl:stylesheet>
应用于提供的XML文档时:
<date_last_activity format="MMDDCCYY">04132012</date_last_activity>
会产生想要的正确结果:
04/13/2012
将相同的转换应用于以下XML文档时:
<date_last_activity format="CCYYDDMM">20121304</date_last_activity>
产生相同的正确结果:
04/13/2012
答案 1 :(得分:1)
如果您需要在多个地方执行此操作,请在xsl中的某处创建命名模板
编辑:由于格式错误而未显示模板...
<xsl:template name="formats_date">
<xsl:param name="raw_date" />
<xsl:value-of select="concat( substring( $raw_date, 0, 2 ), '/', substring( $raw_date, 2, 2 ), '/', substring( $raw_date, 4 ) )" />
</xsl:template>
然后将其应用为
<xsl:call-template name="formats_date">
<xsl:with-param name="raw_date" select="date_last_activity" />
</xsl:call-template/>
否则你可以直接在你需要的地方做xsl:value-of concat ...的东西
答案 2 :(得分:1)
XSLT 2.0提供函数format-date()。但是,在使用之前,您需要将日期转换为ISO格式,YYYY-MM-DD,这可以使用concat和substring来完成。
如果你仍然坚持使用XSLT 1.0,那么www.exslt.org上有一个日期处理函数和模板库。