我需要转换11/14/2016 - 这是字符串数据类型。我需要使用XSLT 2.0将其转换为2016-11-14。请告诉我怎么办?我不想使用subString方法。我尝试了xslt 2.0中的format-date()函数,但没有成功。
答案 0 :(得分:0)
很抱歉,XSLT遵循ISO 8601,它应该是yyyy-mm-dd,因此subString将是您唯一的选择。
答案 1 :(得分:0)
你可以这样做。如果您不想使用子字符串,则可以使用tokenize
函数。
假设输入XML如:
<string>11/14/2016</string>
针对下面的样式表运行时:
<xsl:stylesheet
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:xs="http://www.w3.org/2001/XMLSchema"
exclude-result-prefixes="xs"
version="2.0">
<xsl:output omit-xml-declaration="yes"/>
<xsl:template match="/">
<xsl:variable name="target_string">
<xsl:value-of select="tokenize(string, '/')[last()]"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="tokenize(string, '/')[1]"/>
<xsl:text>-</xsl:text>
<xsl:value-of select="tokenize(string, '/')[2]"/>
</xsl:variable>
<date1>
<xsl:value-of select="xs:date($target_string)"/>
</date1>
<date2>
<xsl:value-of select="format-date(xs:date($target_string), '[MNn] [D], [Y]')"/>
</date2>
</xsl:template>
</xsl:stylesheet>
产生
<date1>2016-11-14</date1><date2>November 14, 2016</date2>