我正在使用日期为YYYY-MM-DDTHH:MM:SS格式的XML文件,例如:
<NoteDate>2013-05-14T00:00:00</NoteDate>
我想将其转换为AUS日期格式 - DD / MM / YYYY - 作为我的XSL的一部分,当前进行如下原始导入:
<xsl:for-each select="Transactions">
<ROW MODID="" RECORDID="">
<COL><DATA><xsl:value-of select="Id"/></DATA></COL>
<COL><DATA><xsl:value-of select="NoteDate"/></DATA></COL>
<COL><DATA><xsl:value-of select="Reference"/></DATA></COL>
</ROW>
</xsl:for-each>
有没有办法可以将XSL中的NoteDate更改为所需的格式?
答案 0 :(得分:1)
使用此XSLT-1.0代码段:
<xsl:template match="/Transactions">
<xsl:for-each select="NoteDate">
<xsl:variable name="year" select="substring-before(.,'-')" />
<xsl:variable name="month" select="substring-before(substring-after(.,'-'),'-')" />
<xsl:variable name="day" select="substring-before(substring-after(substring-after(.,'-'),'-'),'T')" />
<Date><xsl:value-of select="concat($day,'/',$month,'/',$year)"/></Date>
</xsl:for-each>
</xsl:template>
<强>输出:强>
<Date>14/05/2013</Date>
随意将其改编为您自己的XML结构。
答案 1 :(得分:0)
由于您使用的是XSLT 1.0
,另一种方法是使用 XSLT扩展程序(EXSLT)。
为了使用扩展,您需要在XSLT中包含适当的命名空间。在这种情况下,由于我们正在格式化日期,我们将使用以下命名空间
xmlns:dt="http://exslt.org/dates-and-times"
使用函数 format-date ,可以实现所需的格式。
<formattedDate>
<xsl:value-of select="dt:format-date(NoteDate,'dd/MM/yyyy')" />
</formattedDate>
输出
<formattedDate>14/05/2013</formattedDate>