我也弄过一个类似的,在录入数据库的同时生成一个xml文档放在服务器上,文件名用ID表示,在数据库中只存ID,标题,作者等信息。如果是象这里这样的,因为回复是不定的(可能增加),所以有两种方法:
要不存两套,也就是说数据库中也有回复内容,在回复时重新生成新的每个主题的相应的xml文件。
要不在每次回复时,读出相应的xml文件,解析,重新加上新的回复内容,再生成新的xml文件。只有最后一种方法用到了解析xml,其它的方法都不用解析器,只要约定xml的格式即可。显示时用xsl显示即可。

解决方案 »

  1.   

    我也弄过一个类似的,在录入数据库的同时生成一个xml文档放在服务器上,文件名用ID表示,在数据库中只存ID,标题,作者等信息。如果是象这里这样的,因为回复是不定的(可能增加),所以有两种方法:
    要不存两套,也就是说数据库中也有回复内容,在回复时重新生成新的每个主题的相应的xml文件。
    要不在每次回复时,读出相应的xml文件,解析,重新加上新的回复内容,再生成新的xml文件。只有最后一种方法用到了解析xml,其它的方法都不用解析器,只要约定xml的格式即可。显示时用xsl显示即可。
      

  2.   

    :) 咦??? 这下可以重复发帖了:)一个bug
      

  3.   

    xsl下到客户端了吗?
    是用微软的东西进行的转换吧?
      

  4.   

    再问一下如果用java实现好像转换是在服务器端进行吧。BTW,这个新版论坛确实每次回复完后都要自己刷新一下。
      

  5.   

    再问一下如果用java实现好像转换是在服务器端进行吧。BTW,这个新版论坛确实每次回复完后都要自己刷新一下。
      

  6.   

    不用了,IE本身可以解析XML的,只要用一个xsl文件指定显示样式即可。用MS的也可以呀,比如javascript来可以解析的,但现在好象没有解析,因为在这里它只是用来代替html而已,并不是用来做数据交换,所以用浏览器本身的解析即可,不需要我们在程序中解析了。java用解析器实现的是在服务器端,如果用jsp输出xml格式的文件(设置contentType)也可以实现与此类似的功能。xml是下到客户端了,xsl也并不多(在缓存里),所以重新显示时不用再连服务器,速度会快很多,但是不能即时更新。
      

  7.   


    刚才出错,我发现了这里的数据很可能存了两套。一套在数据库中,另外在回复时生成xml文件,所以它根本没用到解析器。我回个帖,在出现添加完成时刷新,这样,不会显示你新增的内容。不管刷新几次都出不来,但是如果你再回一个帖子,这下两次回复的内容都出来的:)因为当时,回复被加入数据库中但是没有即时更新xml文件,你再回复,它会在新的回复加入数据库后,重新生成xml,这样你全部的回复都出来了。
      

  8.   

    我觉得xml好像也没我想象中那么完美
      

  9.   

    to sharetop(天生不笨) :为何要采取两套数据呢?是为了提高速度吗?
      

  10.   

    采用xml是为了数据的可维护性
      

  11.   


    我也不知道为什么?因为不是我做的:)不过做成两套,还是有好处的。一方面可以不用自己去解析xml文件然后再加上新的内容,你想回复页是可能会新增内容的,所以肯定要修改,你想读数据库生成xml比解析xml再加上新节点再保存下来在实现上方便另一方面,安全些呀。
      

  12.   

    有什么疑问么?<?xml:stylesheet type='text/xsl' href='/expert/Xsl/2.xsl'?>
      

  13.   

    才用了服务器端解析和客户端解析2种方法。
    论坛的很多页面都是使用的xml,只不过是服务器端解析的。至于数据,数据库和xml保存了2套。
      

  14.   


    原来ghj1976是CSDN的人:)
      

  15.   

    xml 和 java 他们结合得很好,速度也很快
    很有前途!!!
      

  16.   

    ghj1976(蝈蝈俊.net) :如果是在服务器端解析为何不直接解析成xml?
      

  17.   

    错了,应该是为何不直接解析成html?
    不好意思:P
      

  18.   


    代蝈蝈回答:这里是在客户端解析的,其实解析这个XML的是你自己的IE。
      

  19.   

    有意思,将来会不会出现针对CSDN的第三方工具呢?
      

  20.   

    说点题外话,想问问“摇滚java”
    "郁闷"是什么样的感觉?
    描述一下?
      

  21.   

    说不定是用c#做的?
    还有,本身的xml说不定也是微软的
    不是通用的。大家看xml源码了吗?
      

  22.   

    其实关键是CSDN的数据库性能不好,不得不生成两套文件!另外测试……
      

  23.   

    new vision is not better than old one.
      

  24.   

    不是网速的问题,是在本地更新的只有你发的留言。
    其他的都没有改变,没有看到分了好多frame吗?
    不支持netscape,那么应该肯定是微软的一系列东东了!
      

  25.   

    不支持netscape只能说明这个xslt是针对ie写的,但是这个xml是用什么生成的就和这个无关了。不过可以肯定的是绝对不是用java做的,没看见动态页面都是asp么?他们数据库和操作系统用的都是微软的东西,以后再升级的时候应该是用asp.net或更新的技术来做了。哪时候谁还记得java呀。
      

  26.   

    <Reply>
    only XML + XSL
    </Reply>
    Test
      

  27.   

    直接用XML+XSL的优点是省去服务器生成表示代码,由客户端生成。
    客户段很容易得到纯数据,不用再在HTML里提取数据,也即容易处理数据。
    你也可以用它的XML加你的XSL生成你自己的叶面。
      

  28.   

    这个论坛是还是用asp操作数据库的。
    每次内容变化是asp把数据写入库,同时生成一个静态xml文件,在用那个xsl解释格式。还有好多帧,刷新好烦。
      

  29.   

    说起这个话题也有点郁闷。前年下半年的时候我们试图用微软的 XMLParser 组件来做 asp + xml 的东西。当时最郁闷的事情就是微软的组件本身还没真正做好——很多bug。其次郁闷的事情是依然还有很多用户在用ie4的浏览器!
        于是,同样采用xml技术,却有需求导致解决方法不一样。
        为什么要采用xml?    当时认为可以利用xml保存纯数据的方式,实现方便的改版。所以开始的技术思路是数据入库(方便检索),同时通过写文本文件的方法build一个静态的xml文件。这样就达到了第一个目的。
        为什么要build静态文件?    这是因为使用静态的文件可以减小数据库的压力,同时,单纯的静态文件访问(web)这一层可以通过对WebServer实现负载均衡的方式来提高整个系统的负载能力和提高单台服务器的性能和利用率(对于动态的数据访问——比如一些商务逻辑或者运算逻辑——和数据库难以实现负载均衡,系统的真正的瓶颈在这里)。所以,其实在xml流行以前,已经有很多bbs和新闻发布系统采用发布静态文件的方式供用户访问。bbs如最早的火鸟,后来流行过的韩国的一个bbs等等。用静态文件对于用户来说,还有一个很大的好处:cache 。所以,是否是静态文件和使用xml没有关系。
        对于第一个目的来说,采用了xml之后,还存在矛盾。第一,如果把数据build成xml放在服务器端,而让用户的浏览器配合制定的xsl去解释成html(xhtml),最大的问题是很多用户的浏览器不支持——这个问题只能靠时间解决;第二,如果在服务器端build的时候,将xml解释成html,最后保存html,这样就不用受用户的浏览器版本限制,可问题又来了:首先,当你需要改版的时候,更改了xsl,必须将那部分内容重新build一遍(如果不用xml实现数据与表现层分离,只能依靠自己定义的模板或者借助SSI技术,但是远远没有用xml方便)。虽然这样做是可以理解的,但是如果采用第一种思路,只需要改了xsl,用户基本就能看到最新的内容。而且,服务器端解释成html,不得不依赖一个功能和体系结构比较完整的内容管理系统来实现;其次,xml解释器的问题,当时使用微软的xml解释器,在我们的开发用机w2k(来自msdn宇宙版)的系统下运行正常,当拿到对外服务器(w2k单独买的)无论如何无法正常工作,让我们检查了很久都不行,后来换到nt的服务器上才能运行,但是还存在很多问题——也只能靠时间解决。
    呵呵,时间解决了浏览器和解释器的问题之后,我们的内容管理系统也做出来了。最后,综合考虑到一个产品的市场对象和客户特点,我们的内容管理系统采用j2ee架构。但是,这并不表明只有java和xml才是亲戚,当然,也不像楼上某位朋友说的要采用.net和c#。
        作为一个产品化的内容管理系统,采用j2ee主要方便各种用户群,以及用户的千奇百怪的系统结构。另外,无论是服务器端解释还是客户端解释都可以在管理系统的支持下方便的选择。
    针对提问者问题总结一下:[讨论]csdn新版论坛的xml技术是如何实现的?
      数据存储:用数据库保存数据,方便实现后期查询和与其他系统的挂接;
      用户访问核数据存储:用xml的特性保存数据,方便实现数据与表现层和业务罗基层的分离;
      用户访问:用xsl配合解释xml,在客户端端浏览器实现,方便表现层与数据分离。
      技术实现:xml、xsl、DataBase、asp/aspx/jsp + 相应平台的的xml parser
      样例:http://www.enews.com.cn/article/200202/20020210060465_1.xml    呵呵,看着大家好像都没得分,是不是给我来点?哈哈,我很少发言,这两天来看看发现这个expert系统很像以前我们在教育热线做的Expert专家系统,所以来玩玩。顺便,向编程同道问好!
      

  30.   

    <?xml:stylesheet type='text/xsl' href='/expert/Xsl/2.xsl'?>
    使用xsl显示xml阿。
      

  31.   

    不错,新技术也用上了,看了看使用的XSLT,还算比较简单基本的运用,是IE5可以支持范围内的,XSLT再复杂一点就需要在页面解析XML了,否则就需IE6。在服务器端解析XML->HTML所花的代价,在访问量如此大的网站是不可想象的。