Step1数据系统技术(2.XML+XSLT的页面生成机制)


在本系统之中,网站的主体页面并不是通过普通的aspx返回方式返回的,而是采用一种XML+XSLT的形式,来自生成,这是我个人比较喜欢的方式,这种方式在这个系统之中有着更好的优势,我现在将优势列举几条:

  1.完整的实现数据和表现形式的分离,数据完全在XML文件之中实现,而页面的表现的形式完全用XSLT实现,这样使程序的结构清晰简单,易于维护;

  2.可以随意的选择将结果输出到文件或者Response;

  3.XSLT可以自动的压缩HTML代码,生成紧凑,不易阅读而不影响浏览器解析的代码,你在XSLT文件之中的注释也不会显示到客户端,除非你特意指明;

  4.XSLT允许相互调用,这样就可以实现比较容易更新和维护的架构;

  5.XSLT要实现网站完全换肤非常容易,容易到你可能觉得他们设计XSLT就是用来做换肤,可以将网站变成一个风格完全不同的网站,而不是普通的CSS换肤就是换一个颜色主体而已。

  缺点也要列举一条(相当重要):XSLT使用的人可能不是太多,学习起来也有一定的难度,这个是最大的障碍。

  使用xml+XSLT来架构网站是很清晰的,首先创建一个XmlDocument对象,然后再通过规范的格式向XML之中填充数据,再打开XSLT文件,通过该XSLT文件转化XML,并将结果直接输出到Response即可,以下是XSLT输出的代码:

1protected void saveFile(XmlDocument xml,string xsltFile)
2{
3  XslTransform xslt=new XslTransform();
4  xslt.Load(Server.MapPath(XsltFilePath)+xsltFile);
5  xslt.Transform(xml,null,Response.OutputStream,null);
6  writer.Close();
7}

  关于如何将数据填充到XML数据之中,不是本文要讲述的内容,不过,我可以提供一种思路,那就是使用SQL语句之中的For Xml语句,方法是在你的查询语句之后添加 for xml auto语句段,这样SQL Server返回的数据将是XML节点形式,然后你使用如下函数将返回结果导入到你的XML节点之中:

1    protected void GetXmlBySql(XmlNode xmlNode,string sql,SqlConnection conn)
2    {
3      SqlCommand sqlCommand=new SqlCommand(sql,conn);
4      XmlTextReader xmlTextReader=(XmlTextReader)sqlCommand.ExecuteXmlReader();
5      xmlTextReader.Normalization=true;
6      try
7      {
8        while(!xmlTextReader.EOF)
9        {
10          XmlNode tempXmlNode=xmlNode.OwnerDocument.ReadNode(xmlTextReader);
11          if(tempXmlNode!=null)
12            xmlNode.AppendChild(tempXmlNode);
13        }
14      }
15      catch(Exception e){}
16      xmlTextReader.Close();
17      sqlCommand.Dispose();
18    }


« 
» 
快速导航

Copyright © 2016 phpStudy | 豫ICP备2021030365号-3