2005-6-23 + 最近在学xslt,痛苦啊

痛苦是痛苦,不过还得学。下面把最近遇到的一些重要的东西记下来:
1.使用xslt进行转换的时候,1.1比1.0多了一个参数,从sdk文档上查的都是1.0的写法,不过那里有一个连接标明迁移到1.1要注意的问题。具体来说是多了一个XmlUrlResolver,一开始我都是老老实实的写
System.Xml.XmlUrlResolver res=new System.Xml.XmlUrlResolver();
tran.Transform(doc2,null,sw,res);
不过后来就学乖了,哈,这样一句就可以完成
tran.Transform(doc2,null,sw,null);
2.转换的结果要输出到流里。最后取得时候有些麻烦,不过一般就这么几种。
//直接输出到HTTP响应流
tran.Transform(xp,args,Response.Output,null);
//这个是把结果保存到基于StringBuilder的StringWriter
System.IO.StringWriter sw=new System.IO.StringWriter();
tran.Transform(doc2,null,sw,null);
这两个算是比较方便的做法
3.对一个xml文档的不同部分使用不同的xslt文档。这个比较麻烦的是,要把那一部分先读出来,然后加载到一个XmlDocument中。像下面这样
System.Xml.XmlNode table=list[i].SelectSingleNode("table");
System.Xml.XmlDocument doc2=new System.Xml.XmlDocument();
doc2.LoadXml(table.OuterXml);
tran.Transform(doc2,null,sw,null);
4.扩展对象的问题。这个问题真是让我痛苦了一下午,不过最后还是明白了,我估计可能是因为中午没有睡觉的原因,所以脑子的反应比较迟钝。XSLT 扩展对象通过AddExtensionObject 方法添加到XsltArgumentList。具体可以去看sdk文档。我觉得这是一种比较神奇的东西,它可以把xml文件和cs文件关联起来。这样你可以在程序集里处理数据,最后用xslt转换表现出来。我现在要做的东西就是这样来表现页面的,我觉得这样做的好处是可以加快页面处理速度,坏处是开发的时候太麻烦。
5.使用HttphandlerFactory来处理页面。接着上面的说,要先根据url加载相应的httphandler,还要加载对应的扩展对象。然后接下来是处理命名空间,加载合适的xslt,处理参数,最后把xml转换成xslt,这是现在我要工作的地方的基本处理过程。我觉得实在是太恐怖啦。

posted on 2006-07-05 18:43  Notus|南色的风  阅读(385)  评论(2编辑  收藏  举报