Chinaunix首页 | 论坛 | 博客
  • 博客访问: 15830
  • 博文数量: 9
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 135
  • 用 户 组: 普通用户
  • 注册时间: 2014-03-16 16:12
文章分类
文章存档

2014年(9)

我的朋友

分类: C#/.net

2014-03-21 21:55:52

  在asp.net 2.0中,对XML的应用大为增强,而在XSLT处理方面,也提供了新的功能。本文将简单对asp.net 2.0中XSLT的使用作简单的说明,当然本文假定读者有一定的XSLT的基础知识。

  在asp.net 2.0中,XSLT方面有如下的转变和新功能:

  ·XslCompiledTransform - 实际上是.NET 1.0的 XslTransform ,但提供了更好的性能支持,也支持之前.net 1.0下的应用的顺利迁移.

  ·XsltArgumentList - 允许向XSLT中传递参数或者对象

  XsltCompileException - 当通过loa()方法加载XSL文档时发生错误时产生的异常。

  XsltException - 当在对XSL文档进行解析时发生错误时产生的异常。

  先来看个简单的例子,该例子从NORTHWIND数据库中拿出数据,以XML格式展示,再以XSLT格式转换,其中XSLT代码如下:

  

  

  

  






Simple XSLT Transformation





  

  

  

  

  


  

  


  

  center

  












  然后其展示的ASPX代码为:

  <%@ Page Language="C#" %>

  <%@ Import Namespace="System.Data.SqlClient" %>

  <%@ Import Namespace="System.Xml" %>

  <%@ Import Namespace="System.Xml.Xsl" %>

  <%@ Import Namespace="System.Xml.XPath" %>

  <%@ Import Namespace="System.Web.Configuration" %>


  其中注意我们先用xmlreader读取数据库提出来的数据(以xml auto的方式),然后载入xsl文件,再用xslcompiledtransform类进行转换,其中用xpathdocument是为了性能的提升。注意这里用xslcompiledtransform取代了.net 1.1中的xslttransform,运行结果如下图

点击放大此图片


  还可以向XSLT中传入参数或对象,先看如何向其传入参数,比如要改变上例的背景颜色,则可以这样写XSLT

  

  

  

  

  






Passing Parameters to an XSLT Style Sheet





  

  

  

  

  


  

  


  

  


  

  center

  












  要注意的是其中的是:

  

  

  以这样的形式指定了backgroundcolor是一个参数,而在XSLT的一开始,以的方式,为backgroundcolor设定了一个值为蓝色,这样则为使的背景颜色bgcolor=blue,实现将输出数据的每一行变为蓝色的效果。

  当然,在上面的例子中,我们是已硬编码的方式设置xslt的参数,一般来说,应该在asp.net 页面中进行设置。而在asp.net 2.0中,可以使用XsltArgumentList类来向XSLT中传递参数,具体使用方法如下:

  <%@ Page Language="C#" %>

  <%@ Import Namespace="System.Data.SqlClient" %>

  <%@ Import Namespace="System.Xml" %>

  <%@ Import Namespace="System.Xml.Xsl" %>

  <%@ Import Namespace="System.Xml.XPath" %>

  <%@ Import Namespace="System.Web.Configuration" %>


  在上面的代码中,要留意的是,首先实例化了DateTimeConverter类,然后通过XsltArgumentList的AddExtensionObject方法,增加其扩展对象,其中用"urn:DateTimeConverter"的方式,指明了其扩展对象的别名。运行的效果如下图


阅读(135) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~