我正在尝试在XSL 1.0中格式化我的DateTime 2005-08-01T12:00:00。我尝试使用子字符串函数,但是' T'还在来。 我希望我的输出像这样 -
<YEAR>2005</YEAR>
<MONTH>08</MONTH>
<DAY>01</DAY>
<HOUR>12<HOUR/>
<MINUTE>00<MINUTE/>
<SECOND>00<SECOND/>
如何撰写此片段并删除&#39; T&#39;来自传入的价值?
答案 0 :(得分:3)
您可以使用子字符串功能。请记住,字符串中每个字符的索引从1开始而不是0.因此,要获得年份,您将执行此操作(假设您当前位于日期元素上)
<YEAR><xsl:value-of select="substring(., 1, 4) " /></YEAR>
这是完整的XSLT
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output method="xml" indent="yes" />
<xsl:template match="date">
<date>
<YEAR><xsl:value-of select="substring(., 1, 4) " /></YEAR>
<MONTH><xsl:value-of select="substring(., 6, 2) " /></MONTH>
<DAY><xsl:value-of select="substring(., 9, 2) " /></DAY>
<HOUR><xsl:value-of select="substring(., 12, 2) " /></HOUR>
<MINUTE><xsl:value-of select="substring(., 15, 2) " /></MINUTE>
<SECOND><xsl:value-of select="substring(., 18, 2) " /></SECOND>
</date>
</xsl:template>
<xsl:template match="@*|node()">
<xsl:copy>
<xsl:apply-templates select="@*|node()"/>
</xsl:copy>
</xsl:template>
</xsl:stylesheet>
应用于以下XML
<dates>
<date>2005-08-01T12:00:00</date>
</dates>
以下是输出
<dates>
<date>
<YEAR>2005</YEAR>
<MONTH>08</MONTH>
<DAY>01</DAY>
<HOUR>12</HOUR>
<MINUTE>00</MINUTE>
<SECOND>00</SECOND>
</date>
</dates>
显然,您必须确保日期始终以相同的格式实现。