当前位置:  开发笔记 > 编程语言 > 正文

通过XSLT格式化XML格式的日期

如何解决《通过XSLT格式化XML格式的日期》经验,为你挑选了4个好方法。

当我使用XML序列化程序序列化a时DateTime,它使用以下格式编写:

2007-11-14T12:01:00

当通过XSLT样式表传递它以输出HTML时,我该如何格式化?在大多数情况下,我只需要约会,当我需要时间时,我当然不希望那里有"有趣的T".



1> AnthonyWJone..:

以下是一些可以使用的1.0模板: -


    
    
    
    
    
    



    
    

打电话给他们: -

    
        
    

    
        
    

其中xpath是具有标准日期时间格式的元素或属性的路径.


XSLT糟透了.你的解决方案很优雅,但我们当然不应该手工制作日期格式化程序.
@AnthonyWJones:这是一个严重的轻描淡写,XSLT 2.0在动态语言之外非常薄弱.其中大部分是Java,还有一些.NET.我们没有XSLT 2.0的libXSLT,否则会将XSLT带到少数几个浏览器中.一旦存在FOSS和高效的C/C++ XSLT 2.0库,并且具有相当小的跨平台依赖性,我们将看到浏览器支持.

2> Dirk Vollmar..:

在XSLT 1.0中,日期格式化并不容易.可能最优雅的方法是在C#中编写一个简短的XSLT扩展函数来进行日期格式化.这是一个例子:



  

  
    
  

  
    
      
    
  

有了这个输入文件


2007-11-14T12:01:00

你会得到


14.11.2007 

格式化日期的函数将日期值作为字符串和DateTime.ToString方法中描述的格式.使用.NET的DateTime结构,您可以免费解析任意XSD日期时间值(包括时区说明符),时区计算和本地化输出.

但是,请注意有一个警告(http://support.microsoft.com/kb/316775)与msxml脚本扩展:每次加载XSLT时,包含脚本代码的程序集将动态生成并加载到内存中.由于.NET运行时的设计,无法卸载此程序集.这就是为什么你必须确保你的XSLT只加载一次(然后缓存以供进一步重用).在IIS中运行时,这一点尤为重要.



3> rivy..:

约翰·沃克曼讨论了这个问题,在长度和在此给出了几种解决方案的讨论[1]在他的博客.基本上,解析各个日期组件并按您希望的顺序重新组合.对于您的情况,纯XSLT 1.0+版本将是:




















 

 

 

 

 
 



另一种格式(REPLACEs EUROPEAN FORMAT部分):



January
February
March
April
May
June
July
August
September
October
November
December
 
 
 
 
 
 

您可以以任何方式重新组合元素.

[1] http://geekswithblogs.net/workdog/archive/2007/02/08/105858.aspx @@ http://archive.is/4Hjep



4> 小智..:

抱歉评论这个旧线程,但对于其他人发现它像我一样你也可以使用javascript如果你使用MS变压器:

声明"msxsl"命名空间:

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

声明脚本的命名空间:

xmlns:js="urn:custom-javascript" 

(可选)省略输出中的前缀:

exclude-result-prefixes="msxsl js" 

所以你最终会得到一个像这样的xsl声明:


在msxsl:script元素中编写JavaScript:

 


调用您的JavaScript函数(使用XPath语法'.'表示'此节点'):


注意:在编写时,似乎没有(xsl)方式包含外部js文件(例如jquery库).这可以通过在转换之前解析xsl文件服务器端并将js文件内容作为字符串添加到CDATA部分来完成.我自己开始沿着这条路走下去但得出的结论是,如果你需要这个级别的功能,它可能会更好地放在管道的不同部分.

来源:http://dev.ektron.com/kb_article.aspx
?id = 482 ref:http://www.ibm.com/developerworks/xml/library/x-tipxsltjs/index.html

推荐阅读
农大军乐团_697
这个屌丝很懒,什么也没留下!
DevBox开发工具箱 | 专业的在线开发工具网站    京公网安备 11010802040832号  |  京ICP备19059560号-6
Copyright © 1998 - 2020 DevBox.CN. All Rights Reserved devBox.cn 开发工具箱 版权所有