xslt中时间转换函数format-date的问题

visual_alan 2006-04-24 03:37:44
xml文件如下:
<?xml version="1.0" encoding="gb2312"?>
<?xml-stylesheet type="text/xsl" href="samples.xslt" ?>
<Association>
<nowDate xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="datetime">2006-4-24</nowDate>
<Info>
<newsLink>index.asp?modelname=gjfw_detail&recno=31046</newsLink>
<newsTitle>美国空军为SDB增量Ⅱ项目拨款近2.9亿美元</newsTitle>
<newsTime xmlns:dt="urn:schemas-microsoft-com:datatypes" dt:dt="datetime">2006-04-20 14:35:06</newsTime>
</Info>
</Association>

xslt文件:
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:dt="urn:schemas-microsoft-com:datatypes">

<xsl:template match="/">
<TABLE align="left" cellpadding="3">
<xsl:for-each select="Association/Info">
<TR>
<TD>
*
</TD>
<TD align="left">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./newsLink" />
</xsl:attribute>
<xsl:value-of select="./newsTitle" />
</xsl:element>
</TD>
<TD>[
<xsl:value-of xmlns:ms="urn:schemas-microsoft-com:xslt" select="ms:format-date(./newsTime, 'yyyy-MM-dd')"/>
]</TD>
</TR>

</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>

用transformNode方法解析,没有问题。
直接在浏览器内输入 xml文件名提示错误:
名称空间 'urn:schemas-microsoft-com:xslt' 不包含函数 'format-date'。 -->ms:format-date(./newsTime, 'yyyy-MM-dd')<--
请大家帮忙
...全文
881 8 打赏 收藏 转发到动态 举报
AI 作业
写回复
用AI写文章
8 条回复
切换为时间正序
请发表友善的回复…
发表回复
iChov 2006-08-22
  • 打赏
  • 举报
回复
msxml4 sdk里已经指出了这个函数,并且示例也是这么做的,为什么还提示没有这个函数呢?
没有为什么还要写进sdk?
是是非非 2006-04-28
  • 打赏
  • 举报
回复
这是为什么?用script就没有问题,请帮解释一下解析执行的原理

原理和原因在这句里面已经说明
>>>>>名称空间 'urn:schemas-microsoft-com:xslt' 不包含函数 'format-date'。

为什么用Script没问题,是因为它没有这个函数,那我们自己写一个函数给加进去
就这么着
greatqn 2006-04-27
  • 打赏
  • 举报
回复
function formatDate(dte){
var s ;
s= "2006-04-27T09:46:41.357";
s = dte;
return s.substring(0,10);
};

为什么是错的呢。。。
visual_alan 2006-04-26
  • 打赏
  • 举报
回复
ok.谢谢,再问,
第一贴中:
用transformNode方法解析,没有问题。
直接在浏览器内输入 xml文件名提示错误:
名称空间 'urn:schemas-microsoft-com:xslt' 不包含函数 'format-date'。 -->ms:format-date(./newsTime, 'yyyy-MM-dd')<--

这是为什么?用script就没有问题,请帮解释一下解析执行的原理
是是非非 2006-04-25
  • 打赏
  • 举报
回复
这个是JavaScript的语法了,你参考一下JavaScript的手册
visual_alan 2006-04-25
  • 打赏
  • 举报
回复
谢谢了,我觉得基本上可以了,不过,
function formatDate(dte){
return dte;
};
这个dte怎么没有substring方法呢
是是非非 2006-04-24
  • 打赏
  • 举报
回复
<?xml version="1.0" encoding="gb2312" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:ms="urn:schemas-microsoft-com:xslt"
xmlns:dt="urn:schemas-microsoft-com:datatypes"
xmlns:extra="urn:extra-functions">
<msxml:script xmlns:msxml="urn:schemas-microsoft-com:xslt" language="JavaScript" implements-prefix="extra">
function formatDate(dte){
return dte;
};
</msxml:script>

<xsl:template match="/">
<TABLE align="left" cellpadding="3">
<xsl:for-each select="Association/Info">
<TR>
<TD>
*
</TD>
<TD align="left">
<xsl:element name="a">
<xsl:attribute name="href">
<xsl:value-of select="./newsLink" />
</xsl:attribute>
<xsl:value-of select="./newsTitle" />
</xsl:element>
</TD>
<TD>[
<xsl:value-of select="extra:formatDate(./newsTime)"/>
]</TD>
</TR>

</xsl:for-each>
</TABLE>
</xsl:template>
</xsl:stylesheet>
是是非非 2006-04-24
  • 打赏
  • 举报
回复
http://www.stylusstudio.com/xsllist/200304/post81280.html

8,909

社区成员

发帖
与我相关
我的任务
社区描述
XML/XSL相关问题讨论专区
社区管理员
  • XML/XSL社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧