K_Reverter的网页开发记录

要么不做,要么就当作艺术品来做!

导航

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        }

posted on 2007-11-29 00:04  K_Reverter  阅读(730)  评论(4编辑  收藏  举报