如何使用msxsl转换日期:format-date()

时间:2013-04-16 15:14:11

标签: xslt-1.0

每次尝试使用msxsl:format-date(@testDate, 'MM-dd-yyyy')转换日期时 我得到一个空字符串...

但是,如果我只是致电<xsl:value-of select="AcessDate"/>,那么我的确会得到一个约会......我错过了什么?这不是说我没有通过X-PATH导航到正确的元素?

<?xml version="1.0" encoding="utf-8"?>
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
    xmlns:msxsl="urn:schemas-microsoft-com:xslt" exclude-result-prefixes="msxsl"
>
<xsl:for-each select="//SelectFairWarningInformationResult">
  <!--<xsl:variable name="AccessDate" select="AcessDate"/>-->
  <xsl:value-of select="msxsl:format-date(@test, 'MM-dd-yyyy')"/> | <xsl:value-of select="Acess"/> | <xsl:value-of select="PatName"/> | <xsl:value-of select="PatFName"/> | <xsl:value-of select="PatID"/> | <xsl:value-of select="UID"/> | <xsl:value-of select="ULName"/> | <xsl:value-of select="UFName"/>  | View Record&#10;
</xsl:for-each>

1 个答案:

答案 0 :(得分:1)

如果你使用像Saxon 9或AltovaXML或XmlPrime这样的XSLT 2.0处理器来格式化日期值,你可以而且应该使用XSLT 2.0定义的format-date function

您没有向我们展示前缀msxsl在您的代码中绑定的URI,但我假设您正在尝试使用Microsoft XSLT 1.0处理器MSXML 6支持的专有扩展功能。我不希望其他XSLT供应商支持该功能,特别是XSLT 2.0处理器,因为XSLT 2.0标准支持模式xs:datexs:dateTime数据类型,并且还具有相应的格式化功能。 / p>

使用XSLT 2.0我认为您可以使用format-date(@test, "[M01]-[D01]-[Y0001]")。以此为例,您可能需要调整,我担心我不知道msxsl:format-date的详细信息。