我想在XSL 1.0中格式化我的DateTime 2005-08-01T12:00:00。我尝试过使用子字符串函数,但'T'仍然来临。 我希望我的输出来这样的 -在xslt 1.0中格式化DateTime
<YEAR>2005</YEAR>
<MONTH>08</MONTH>
<DAY>01</DAY>
<HOUR>12<HOUR/>
<MINUTE>00<MINUTE/>
<SECOND>00<SECOND/>
如何写的这个片段和传入的值去掉“T”?
我想在XSL 1.0中格式化我的DateTime 2005-08-01T12:00:00。我尝试过使用子字符串函数,但'T'仍然来临。 我希望我的输出来这样的 -在xslt 1.0中格式化DateTime
<YEAR>2005</YEAR>
<MONTH>08</MONTH>
<DAY>01</DAY>
<HOUR>12<HOUR/>
<MINUTE>00<MINUTE/>
<SECOND>00<SECOND/>
如何写的这个片段和传入的值去掉“T”?
您可以使用子串函数。请记住,该字符串中的每个字符的索引从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>
很明显,您必须确保日期总是以相同的格式进行操作。
谢谢蒂姆......它工作完美。 – Kundan 2012-04-23 07:20:00
我很高兴能有所帮助。请注意,如果他们为你工作,你应该'接受'答案,以便其他可能在将来查看你的问题的人知道正确答案是什么。 – 2012-04-23 07:47:31
你的xslt是什么样的? – 2012-04-23 05:55:34
我认为你非常幸运能够得到这个问题的答案。就我个人而言,除非我能看到您的错误,否则我从不回答问题:我不想为人们编写代码,我想向他们展示他们出错的地方,以便他们从练习中学到一些东西。 – 2012-04-23 09:11:51