【发布时间】:2018-04-24 03:40:46
【问题描述】:
我需要转换 2016 年 11 月 14 日 - 这是字符串数据类型。我需要使用 XSLT 2.0 将其转换为 2016-11-14。请让我知道如何进行?我不想使用 subString 方法。我尝试了 xslt 2.0 中的 format-date() 函数,但没有成功。
【问题讨论】:
标签: xslt-2.0
我需要转换 2016 年 11 月 14 日 - 这是字符串数据类型。我需要使用 XSLT 2.0 将其转换为 2016-11-14。请让我知道如何进行?我不想使用 subString 方法。我尝试了 xslt 2.0 中的 format-date() 函数,但没有成功。
【问题讨论】:
标签: xslt-2.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>
【讨论】:
很抱歉,XSLT 遵循 ISO 8601,应该是 yyyy-mm-dd,所以 subString 将是您唯一的选择。
【讨论】: