使用XSL格式化日期

时间:2016-01-18 20:05:01

标签: xslt

我有一个XSL文件,用于简化this XML。日期采用以下格式:2016-01-04T00:00:00我将其用于:

 <NEW_DATE><xsl:value-of select="doc:content/m:properties/d:NEW_DATE"/></NEW_DATE>

我想要做的是先将其修改为此格式:2016-01-04。这样,一旦它在我的数据库中,我就可以将它连接到另一个表格,日期格式化为这样。

我在下面做错了什么?

<NEW_DATE>
<xsl:value-of select="ms:format-date(doc:content/m:properties/d:NEW_DATE, 'YYYY-MM-DD')"/>
</NEW_DATE>

调用XSL的PHP​​文件正在生成这些错误:

XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function format-date bound to undefined prefix ms
XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 1 objects left on the stack.
XSLTProcessor::transformToXml(): runtime error: file xxx
XSLTProcessor::transformToXml(): XPath evaluation returned no result.
XSLTProcessor::transformToXml(): xmlXPathCompOpEval: function format-date bound to undefined prefix ms
XSLTProcessor::transformToXml(): xmlXPathCompiledEval: 1 objects left on the stack.
XSLTProcessor::transformToXml(): XPath evaluation returned no result.

1 个答案:

答案 0 :(得分:1)

函数ms:format-date()是Microsoft .NET Framework XSLT处理器中可用的扩展函数。显然你的处理器是不同的,所以改为使用纯XSLT 1.0表达式:

<xsl:value-of select="substring-before(doc:content/m:properties/d:NEW_DATE, 'T')"/>

即使在Microsoft环境中,您也必须声明ms:前缀:

xmlns:ms="urn:schemas-microsoft-com:xslt"

之后才能使用扩展功能。

相关问题