使用XSLT在Attribute中的格式化日期

时间:2011-06-08 19:00:39

标签: xslt

我正在考虑将一个标题标签添加到具有来自属性的格式化日期的元素。输入值是DateTime UTC格式,我需要以“漂亮的格式”输出。

我有一个转换价值的模板。但是,当将值放入属性时,我无法弄清楚如何调用此模板。

  <xsl:template name="formatDate">
    <xsl:param name="dateTime" />
    <xsl:variable name="date" select="substring-before($dateTime, 'T')" />
    <xsl:variable name="year" select="substring-before($date, '-')" />
    <xsl:variable name="month" select="substring-before(substring-after($date, '-'), '-')" />
    <xsl:variable name="day" select="substring-after(substring-after($date, '-'), '-')" />
    <xsl:value-of select="concat($month, '-', $day, '-', $year)" />
  </xsl:template>

3 个答案:

答案 0 :(得分:1)

<xsl:attribute name="title">
  <xsl:call-template name="formatDate">
    <xsl:with-param name="dateTime" select="@lastReported" />
  </xsl:call-template>
</xsl:attribute>

答案 1 :(得分:1)

如果您打算重复使用相同的值,您也可以这样做:

<xsl:variable name="title">
  <xsl:call-template name="formatDate">
    <xsl:with-param name="dateTime" select="@lastReported" />
  </xsl:call-template>
</xsl:variable>

<dummy titile="{$title}"/>

答案 2 :(得分:1)

如果您使用的是XSLT 2.0,则可以跳过一起调用模板并使用format-dateTime()

<foo title="{format-dateTime(@lastReported,'[M]-[D]-[Y]')}"/>