我想將日期時間轉換爲日期格式yyyy-MM-dd,因爲我使用xsd.exe工具xs:date數據類型會自動更改爲datetime數據類型,因爲.NET Framework中沒有類型完全匹配類型xs:date。XSLT轉換datetime到日期格式
但我不能讓它工作
<articles>
<article>
<articleid>48992</articleid>
<deliverydateasked>2009-01-29T00:00:00+01:00</deliverydateasked>
</article>
<article>
<articleid>48993</articleid>
<deliverydateasked>2009-01-30T00:00:00+01:00</deliverydateasked>
</article>
</articles>
試圖將XML轉換爲
<articles>
<article>
<articleid>48992</articleid>
<deliverydateasked>2009-01-29</deliverydateasked>
</article>
<article>
<articleid>48993</articleid>
<deliverydateasked>2009-01-30</deliverydateasked>
</article>
</articles>
我目前使用這個XSLT
<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform" version="1.0">
<xsl:template match="/">
<articles>
<xsl:apply-templates select="article">
</xsl:apply-templates>
</articles>
</xsl:template>
<xsl:template name="FormatDate">
<xsl:param name="DateTime" />
<xsl:variable name="date">
<xsl:value-of select="substring-before($DateTime,'T')" />
</xsl:variable>
<xsl:if test="string-length($date) != 10">
<xsl:value-of select="$DateTime"/>
</xsl:if>
<xsl:if test="string-length($date) = 10">
<xsl:value-of select="$date"/>
</xsl:if>
</xsl:template>
<xsl:template match="article">
<xsl:call-template name="FormatDate">
<xsl:with-param name="DateTime" select="deliverydateasked"/>
</xsl:call-template>
</xsl:template>
有誰知道一個好的xsl t轉型。
在此先感謝
我的代碼的輸出結果是
<articles />
關於「使用更直接的for-each」:http://gregbeech.com/blogs/tech/archive/2006/08/17/using-xsl-for-each-is-almost-always-wrong.aspx 。我投票從一開始就做好了。 :) – Tomalak 2009-01-29 07:31:51
從我個人的XSLT教學經驗來看,我強烈反對 - 因爲每一個都是一個可翻譯和易於理解的概念,如果有什麼是一個方便的跳板來解釋模板概念「現在你已經知道了,看看什麼這可以做!「 – annakata 2009-01-29 10:04:32