在VS中使用XSLT处理XML

by Rwatermoon on 01月 11, 2010

在做下FTP载站的时候,发现贼寇给我的数据库中的Description的字段是一段资源介绍的XML,形式如下:


  <译名>职业杀手
  <片名>Contract Killers
  <年代>2008
  <国家>美国
  <类别>动作
  <语言>英语
  <字幕>英文/中文
  4.9/10 (208 votes)
  http://www.imdb.com/title/tt1001548
  <文件格式>X264 + AAC
  <视频尺寸>640x352
  <片长>90 min
  <导演>Justin B. Rhodes
  <主演>Frida Show ...  Jane (as Frida Farrell)
           Nick Mancuso ...  Witkoff
           Rhett Giles ...  Pernell
           Christian Willis ...  Lars
           G. Anthony Joseph ...  Monoven
           Steve Boergadine ...  Winston Scott
           Wolf Muser ...  Targonsky
           Lee Sherman ...  Alex
           Paul Cram ...  Chuck Dittmer
           Justin Smith ...  Rick
           rest of cast listed alphabetically:
           David Bermejo ...  Banker
           Julia Denton ...  Lindsay (as Julia Denton Francis)
           Jamie Marie Roebuck Joseph ...  Restaurant patron
           Elizabeth Judith ...  Waitress
           Jillian Kinsman ...  Aide 1
           Chase Link ...  FBI Agent
           Russell D. Mercier ...  Swat Officer
           Randy Molnar ...  White Hat CEO
           Randy Robinson ...  SWAT Team Leader
           Marc Shapins ...  FBI Agent
           Kim R. Smith ...  FBI Agent
           Leander Suleiman ...  Petrona
           Valensky Sylvain ...  Aide 2
           Brewier Welch ...  Subordinate FBI Agent
  <简介>
一个CIA的杀手试图摆脱她的合同过上正常的生活,但最终杀手系统还是追踪到并设计陷害她,她不得不走上曾经试图摆脱的复仇之路……

为了能把XML信息直接的显示出来,我选择使用XSLT处理这段XML,XSLT 是一种用于将 XML 文档转换为 XHTML 文档或其他 XML 文档的语言。关于XSLT请参考XSLT入门

首先我们需要一个类来把XML交给XSLT处理:

 public static class XSLTViewExtensions
    {
        public static void  RenderXML(this ViewPage page
        , XmlDocument xmlDocument
        ,  string  XSLTPath,
        Dictionary< string , string > xslArgParams)
    {
        ViewContext context  =  page.Html.ViewContext ;
         XsltArgumentList xslArgs  = new  XsltArgumentList() ;
        if  (xslArgParams !=null)
         {
             foreach  ( string  key  in  xslArgParams.Keys)
             {
                xslArgs.AddParam(key,  null ,xslArgParams[key]) ;
             }
        }
        XslCompiledTransform t  = new  XslCompiledTransform() ;
         t.Load(XSLTPath) ;
         t.Transform(xmlDocument, xslArgs,
            context.HttpContext.Response.Output) ;
     }
    }

然后在页面使用RenderXML方法:

            XDocument xdoc = XDocument.Load(new StringReader(item.Description));
            XElement xe = xdoc.Element("Root");
            var x = (from e in xe.Elements()
                     where e.Name == "简介"
                     select e).FirstOrDefault();

最后我们需要按照自己的需求定制XSLT文件:

简单的说XSLT可以把 XML 源树转换为 XML 结果树,通过XPath 在 XML 文档中进行导航,把一种XML文件转换成另一种XML文件,例如我就需要把上面XML中的标签去掉,然后在每个标签内容之间添加一些HTML标记。

转换用的XSLT文件:






  
  

  
  

    

      

        
          <xsl:value-of select="/Root/译名"/>
        


      

      
        
译名:
片名:
年代:
地区:
类别:
语言:
字幕:
IMDB评分:
IMDB链接:
文件格式:
视频尺寸:
文件大小:
片长:
导演:
主演:
简介:

如上所示,我通过匹配Root结点,然后用取得结点内容,在template中的任何内容都会被输出到结果,所以我们把需要的HTML标签添加了进去。

效果如下:
xslt

如此就完成了XML的解析与现实,XSLT其实还有很多可以发掘的地方,XPath也是一种灵活的语言,希望有兴趣的同学欢迎和我一起学习探讨……

{ 0 comments }

给FTP服务器装上IIS

by realh on 01月 11, 2010

为接下来的下载站做铺垫
决定先在ftp.njnu.edu.cn放一个介绍FTP的页面
之前处于性能考虑,FTP服务器上除了一个FTP Server,基本就没装别的应用程序了

IIS,即Internet Information Services(Internet信息服务),简单的说,IIS是一个Web服务器,可以让一台电脑可以以HTTP方式被访问。

服务器环境:Windows Server 2008 Standard SP2

于是着手开始在服务器上安装IIS7.0
1、安装
在服务器资源管理器中,选择左边的“角色”,接着“添加角色”
看到“添加角色向导”,
开始之前:全是废话,略过
服务器角色:选择“Web服务器(IIS)”,在弹出的提示框中点击添加必须的功能
Web 服务器(IIS) -> 角色服务:选择“应用程序开发”,在弹出的提示框中点击添加必须的功能
确认:直接点击完成即可
安装···比较慢,过后弹出服务器资源管理器,相关的选项已被选上

2、添加网站
打开IIS管理器,添加网站
应用程序池选择DefaultAppPool
AddSite

填写相关项目,确定

3、上传网站
开了个VisualStudio,随便写了点东西,上传到刚刚填写的网站目录下
Home

试着访问下http://ftp.njnu.edu.cn,搞定

是不是很简单,喜欢折腾的童鞋装个虚拟机玩玩吧

{ 0 comments }

.Net快速入门之基础篇

01月 11, 2010

给网协的新成员讲.net编程,这算是第二讲吧。
主要内容是.Net的基础数据类型,考虑到参加讲座的以计院的同学为主,另外两位地科院的同学也学过VB,也就顺带把语句,操作符,表达式,分支,循环给介绍了一下。
最后,当场做了一个练习,一个简单的八卦图形的绘制。
之前事情比较多,所以准备比较仓促
只做了这么一个演示程序

练习的要求当然没那么高,不需要实现动画暂停功能。
动画由一个按钮的点击事件触发,代码:
private void btnStart_Click(object sender, EventArgs e)
{
//初始化Graphisc对象
Graphics gph = CreateGraphics();
//设定初始角度,半径,圆心
int r = Height / 6;
Point center = new Point( Width /2, Height /2 );
//设定两种画刷
Brush brushWhite = new SolidBrush(Color.White);
[...]

Read the full article →

扬帆周年

01月 11, 2010

  不得不承认,小四月效率真高,抢在贼寇前面把扬帆周年的活动发布了————移步仙林七七八八
  12月2日下午,南师官方论坛扬帆一周年新闻发布会于仙林校区J1—227举行。校团委薛峰老师,信息化管理规划处东一舟老师,网络管理处赵楠老师出席了此次新闻发布会。另各院学生会主席,各学生代表,www.xl7788.com仙林7788资讯站主编也积极参加了此次新闻发布会。
  发布会伊始,主持人首先介绍了到场的各位嘉宾,代表扬帆论坛对各位到场的学生代表表示了热烈欢迎。
  接下来,扬帆论坛的管理员、来自07级地理信息系统的高英健同学对扬帆论坛的概况做了大致的介绍。包括扬帆论坛的前身,bbs.njnu.edu.cn.域名的正式启用,以及扬帆正式开放的历程。其中,高英健同学对论坛版块功能分类的介绍,以及类似与校内SNS的应用的演示,吸引了在场老师和同学的眼球—扬帆论坛不仅仅是一个校园内分享资源与信息的论坛组织,更是一个人文气息浓重学习与娱乐兼而有之的交互平台。
  而论坛背后的技术人员,来自07级教育技术专业的孙旭豪同学对论坛的软硬件环境和核心技术的介绍,更是赢来掌声不断。论坛技术以“三高”见长于其他学校论坛——高性能的服务器,高效的处理速度、高质量的机房、高速度的网速。而V6.innu.cn的教育资源的优质访问又让扬帆访问速度更胜一筹。孙旭豪同学又指明论坛采用的 Discuss系统,不仅仅拥有卓越的访问速度,强大的负载能力;更有着标准化的构架,大众化的界面;还拥有周密的安全部署,便捷的扩展功能。最后,他说道,论坛的原创功能之一—FTP资源共享平台更是为南师学子分享获取便利的学习娱乐资源带来了福音。
  本想懒一下,直接抄过来的,可是这稿子显然不适合咱们官方博客的风格————至少和贼寇的风格相去甚远,而且侧重点也不一样————还是由我来补充一下吧:
  扬帆周年的活动,自Windows7 Party结束后,我们就开始筹备了。
  对于活动的形式,我们几位扬帆的旗舰,为此也争论了很久。直到两周前,才拍板定下了这个新闻发布会的形式。
  之前又有一些波折,时间推迟了一周,错过了11月24日这个周年的日子···
  活动的前一天,我们的指导老师陈老师,也是扬帆的创始人,偶感风寒,因而不能够来到现场来和大家一起展望扬帆的未来,真是可惜···
  新闻发布会的过程,小四月已经叙述地很到位了,贼寇也就不再赘述了,下面爆照吧。
参加发布会的人们

小小姐隆重登场,发布会正式开始

巴叔叔认真讲解扬帆发展历程

SUN老师介绍论坛的一些技术及创新

两位论坛高管同台答疑解惑

贺报们

Read the full article →

Hello world!

01月 11, 2010

Welcome to WordPress. This is your first post. Edit or delete it, then start blogging!

Read the full article →
</