CSDN首页 空间 新闻 论坛 Blog 下载 读书 网摘 搜索 .NET Java 视频 接项目 求职 在线学习 买书 程序员 通知
可用分押宝游戏火热进行中... 专题改版:Java Web 专题
CSDN社区
搜索 收藏 打印 关闭
CSDN社区 >  Web 开发 >  XML/SOAP

如何写这个XSLT?

楼主chinahuman(铁匠)2004-09-04 15:45:58 在 Web 开发 / XML/SOAP 提问

现在有一个XML文件,里面有一个字段为日期时间型的,比如为UpdateDateTimes  
  这时候我想只提取里面的日期和当前的日期的差值小于十天的来显示,这时候XSLT文档要怎么写呢? 问题点数:50、回复次数:6Top

1 楼zhaoxiaoyang(梅雪香@深圳)回复于 2004-09-04 18:28:03 得分 35

对XSL不是很了解,提两种办法参考吧  
  1.   XML动态生成,生成时只留下符合条件的记录  
  2.   解析时不要管日期,写到页面上后在body的onload事件里处理,将不合条件的隐藏  
   
  不知道合不合你的要求Top

2 楼chinahuman(铁匠)回复于 2004-09-05 18:09:40 得分 0

呵呵,我已经搞定了:)还是比较容易的。  
  看看我BLOG里面的吧  
  http://webuc.net/chinahuman/archive/2004/09/05/1910.aspxTop

3 楼chinahuman(铁匠)回复于 2004-09-05 18:19:41 得分 0

业务需要,导出了一个XML数据文件,要把它格式化成为一个按日期来分组显示的文件。格式化显示XML文件,最适用的就是XSLT来做为XML的显示模板。查遍了MSDN,发现需要用XPATH的函数来对里面的数据进行判断,根据需要来处理是否让这一组数据显示。所以在里面加入了<xsl:if   test="……">……</xsl:if>这样标记来做为一次过滤。因为XPATH里面并没有提供日期的处理函数,并且这个日期的判断比较复杂,所以我就自定义了一个函数来处理,为止,我引入了一个自己的命名空间   xmlns:user="http://mycompany.com/mynamespace",然后在这个空间里面定义自己的函数。好的,以下就是实现过程。  
  <?xml   version="1.0"   encoding="GB2312"?>  
  <xsl:stylesheet   version="1.0"  
              xmlns:xsl="http://www.w3.org/1999/XSL/Transform"  
              xmlns:msxsl="urn:schemas-microsoft-com:xslt"  
              xmlns:user="http://mycompany.com/mynamespace"><!--定义自己的命名空间,为下面的自己定义函数提供支持     -->  
  <msxsl:script   language="VBScript"   implements-prefix="user"><!--   引入命名空间,定义自已的函数   -->  
  <![CDATA[  
  function   CheckDate(nodelist)<!--   自定义函数-->  
  ……  
  end   function  
  ]]>  
  </msxsl:script>  
  <xsl:template   match="/">  
  <HTML>  
  </head>  
  <BODY>  
  <TABLE   id=   "table1"   border="1"   style=   "border-collapse:collapse"   width="650">  
                      <xsl:for-each   select="Updates/Update">  
            <xsl:if   test="user:CheckDate(string(DateTime))=1"><!--   根据返回的结果来判断显示还是不显示   -->  
                          <TR>  
                              <TD   width="100">文夹名</TD>  
            <TD   width="550"><xsl:value-of   select="FileName"   /></TD>  
                          </TR>  
  …………………………………………………………  
        </xsl:if>  
        </xsl:for-each>  
                  </TABLE>  
  </BODY>  
   
          </HTML>  
      </xsl:template>  
  </xsl:stylesheet>  
  在代码里面可以看到我先调用了string来转换了XML中DateTime节点的数据类型,因为XML节点中的数据类型可以说是一种变体类型,没有具体的类型,而在这里的脚本函数,即使原来是弱类型的,这时候也会变成强类型,只要数据类型不一致操作就会出错,变体类型的,在里面就没有办法处理,所以先转化成为string,然后在里面再转化成为日期,再做进一步的处理。  
  同时,发现在XSLT中定义操作的脚本函数时,要用  
  <![CDATA[  
  function   CheckDate(nodelist)  
  {  
  ……  
  }  
  ]]>  
  这样的形式把函数包围起来,不然会提示找不到函数。  
  附:  
  XPATH函数  
  Node   set   last(),   position(),   count(),   id(),   local-name(),   namespace-uri(),   name()    
  String       string(),   concat(),   starts-with(),   contains(),   substring-before(),   substring-after(),    
                    substring(),   string-length(),normalize-space(),   translate()    
  Boolean     boolean(),   not(),   true(),   false(),   lang()    
  Number       number(),   sum(),   floor(),   ceiling(),   round()    
  XSLT   1.0   additions   document(),   key(),   format-number(),   current(),   unparsed-entity-uri(),   generate-id(),   system-property()    
   
   
  Top

4 楼colee(冷面 ◎ 虚者神头)回复于 2004-09-06 09:20:36 得分 5

:)Top

5 楼qiozi(【悟】.欢希欢南换)回复于 2004-09-09 16:50:37 得分 5

^_^Top

6 楼agen10120216(agen)回复于 2004-09-14 00:30:14 得分 5

学习了Top

相关问题

  • 如何写这个XSLT?
  • 请问这个XSLT如何写?
  • 请教高手:该如何写这个xslt文件???
  • 如何为这个xml编写一个xslt
  • 请问这个xml如何编写xslt让它正常显示?
  • 急问:如何象写xml文件一样的写这个xslt文件???
  • 请问这个xml元素如何用xslt表示出来?
  • 请问这个xml元素如何用xslt表示出来?
  • 这个Sql 如何写?
  • 这个统计如何写?

关键词

得分解答快速导航

  • 帖主:chinahuman
  • zhaoxiaoyang
  • colee
  • qiozi
  • agen10120216

相关链接

  • Web开发类图书

广告也精彩

反馈

请通过下述方式给我们反馈
反馈
提问
网站简介|广告服务|VIP资费标准|银行汇款帐号|网站地图|帮助|联系方式|诚聘英才|English|问题报告
世纪乐知(北京)网络技术有限公司 版权所有, 京 ICP 证 020026 号
北京创新乐知广告有限公司 提供技术支持
Copyright © 2000-2007, CSDN.NET, All Rights Reserved
GongshangLogo