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

Xslt 1.0 如何使用msxsl:format-date()转换日期,xslt-1.0,Xslt 1.0,每次我尝试使用msxsl:format-date(@testDate,'MM-dd-yyyy')转换日期时 我得到一个空字符串 然而,如果我只是打电话给,那么我确实得到了一个约会。。。我错过了什么?我不是没有通过X-PATH导航到正确的元素吗 <?xml version="1.0" encoding="utf-8"?> <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

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

然而,如果我只是打电话给
,那么我确实得到了一个约会。。。我错过了什么?我不是没有通过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>

|| | | | | | |查看记录
;

如果使用诸如Saxon 9或AltovaXML或XmlPrime之类的XSLT 2.0处理器来格式化日期值,则可以并且应该使用XSLT 2.0定义的格式

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


使用XSLT2.0,我认为可以使用
格式化日期(@test,“[M01]-[D01]-[Y0001]”
。以这个为例,您可能需要调整,我恐怕不知道
msxsl:format date
做什么的细节。

如果您使用像Saxon 9或AltovaXML或XmlPrime这样的XSLT 2.0处理器来格式化日期值,那么您可以并且应该使用XSLT 2.0定义的格式

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


使用XSLT2.0,我认为可以使用
格式化日期(@test,“[M01]-[D01]-[Y0001]”
。以这一点为例,您可能需要调整,我恐怕不知道
msxsl:format date
的具体功能。

我会给您一点提示。但是是的,它是微软的专有名称空间。。。我会更新我的问题以反映这一点。您是否真的使用了Microsoft XSLT处理器(如MSXML 6)来支持该扩展功能?我分别用IE10测试了样式表,IE10使用MSXML 6,日期被格式化(例如
04-15-2013
)。您的问题标记为XSLT 2.0,Microsoft没有XSLT 2.0处理器。对于现有的,我不确定它们是否支持该功能。我还使用Microsoft的XslCompiledTransform在.NET中进行了测试,它似乎也支持该功能。你知道,我不确定。我可以发誓是2.0。但是我需要再检查一遍。我会给你一分。但是是的,它是微软的专有名称空间。。。我会更新我的问题以反映这一点。您是否真的使用了Microsoft XSLT处理器(如MSXML 6)来支持该扩展功能?我分别用IE10测试了样式表,IE10使用MSXML 6,日期被格式化(例如
04-15-2013
)。您的问题标记为XSLT 2.0,Microsoft没有XSLT 2.0处理器。对于现有的,我不确定它们是否支持该功能。我还使用Microsoft的XslCompiledTransform在.NET中进行了测试,它似乎也支持该功能。你知道,我不确定。我可以发誓是2.0。但我需要再次检查。您需要告诉我们您使用或想要使用哪个XSLT处理器。您需要告诉我们您使用或想要使用哪个XSLT处理器。