XSLT Xp20 中的日期时间解析

DateTime Parsing in XSLT Xp20

我的日期字段如下

    <Input>
<date>08/26/2020</date>
</Input>

我需要像下面这样解析它

<date>2020-08-26</date>

我尝试在 XSLT 中使用以下 xpath 函数,但没有产生任何结果

xp20:format-dateTime(/Input/date,'[Y0001]-[M01]-[D01]')

这里有什么帮助吗??

您可以做的是,提取子字符串,然后根据需要重新加入它们。

<date><xsl:value-of select="concat(substring-after(substring-after(date/text(),'/'),'/'), '-', substring-before(date/text(),'/'), '-', substring-before(substring-after(date/text(),'/'),'/'))" /></date>

或者最好为此使用模板:

<xsl:template name="format_date">
        <xsl:param name="date" />
        <xsl:value-of select="concat( substring($date, 7, 2),'.',substring($date, 5, 2), '.', substring($date, 1, 4), ', ', substring($date, 9, 2),':',substring($date, 11, 2),'h' )" />
    </xsl:template>

并将日期作为参数传递 (with-param)。

这会给你想要的 <date>2020-08-26</date>

使用 replace 你可以重新排序组件,如果你想创建一个 XSLT/XPath xs:date,另外使用构造函数:

  <xsl:template match="date">
      <xsl:copy>
          <xsl:value-of select="xs:date(replace(., '([0-9]{2})/([0-9]{2})/([0-9]{4})', '--'))"/>
      </xsl:copy>
  </xsl:template>