知识大全 ASP.NET 2.0中XSLT的使用

Posted

篇首语:没有失败,只有暂时停止成功。本文由小常识网(cha138.com)小编为大家整理,主要介绍了知识大全 ASP.NET 2.0中XSLT的使用相关的知识,希望对你有一定的参考价值。

ASP.NET 2.0中XSLT的使用  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!

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

  在 中 XSLT方面有如下的转变和新功能

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

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

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

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

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

    <?xml version= ?><xsl:stylesheet version= xmlns:xsl= ><xsl:output method= /><xsl:template match= / ><HTML><HEAD> <TITLE>Simple XSLT Transformation</TITLE></HEAD><BODY> <H >Simple XSLT Transformation</H > <table border= cellSpacing= cellPadding= >  <center>  <xsl:for each select= //Categories >  <! Each record on a seperate row >  <xsl:element name= tr >   <xsl:element name= td >    <xsl:value of select= ProductSubcategoryID />   </xsl:element>  <xsl:element name= td > <xsl:value of select= Name /> </xsl:element> <xsl:element name= td > <xsl:attribute name= align >center</xsl:attribute> <xsl:value of select= ModifiedDate /> </xsl:element> </xsl:element> </xsl:for each> </center> </table></BODY></HTML></xsl:template></xsl:stylesheet>

  然后其展示的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 %><script runat= server >void Page_Load(object sender System EventArgs e) string connString = WebConfigurationManager ConnectionStrings[ adventureWorks ] ConnectionString; using (SqlConnection connection = new SqlConnection(connString))   connection Open();  SqlCommand mand = new SqlCommand( Select * from Production ProductSubcategory as Categories + for xml auto elements connection);  XmlReader reader = mand ExecuteXmlReader();  XPathDocument xpathDoc = new XPathDocument(reader);  string xslPath = Server MapPath( Category xsl );  XslCompiledTransform transform = new XslCompiledTransform();  transform Load(xslPath);  transform Transform(xpathDoc null Response Output); </script>

  其中注意我们先用xmlreader读取数据库提出来的数据(以xml auto的方式) 然后载入xsl文件 再用xslpiledtransform类进行转换 其中用xpathdocument是为了性能的提升 注意这里用xslpiledtransform取代了 net 中的xslttransform 还可以向XSLT中传入参数或对象 先看如何向其传入参数 比如要改变上例的背景颜色 则可以这样写XSLT     <?xml version= ?><xsl:stylesheet version= xmlns:xsl= ><xsl:output method= /><xsl:param name= BackGroundColor select= Blue /><xsl:template match= / ><HTML><HEAD><TITLE>Passing Parameters to an XSLT Style Sheet</TITLE></HEAD><BODY><H > Passing Parameters to an XSLT Style Sheet</H ><table border= cellSpacing= cellPadding= ><center><xsl:for each select= //Categories ><! Each record on a seperate row ><xsl:element name= tr ><xsl:attribute name= bgcolor ><xsl:value of select= $BackGroundColor /></xsl:attribute><xsl:element name= td ><xsl:value of select= ProductSubcategoryID /></xsl:element><xsl:element name= td ><xsl:value of select= Name /></xsl:element><xsl:element name= td ><xsl:attribute name= align >center</xsl:attribute><xsl:value of select= ModifiedDate /></xsl:element></xsl:element></xsl:for each></center></table></BODY></HTML></xsl:template></xsl:stylesheet>

  要注意的是其中的是      <xsl:attribute name= bgcolor ><xsl:value of select= $BackGroundColor />

  以这样的形式指定了backgroundcolor是一个参数 而在XSLT的一开始 以<xsl param name= BackGroundColor select= Blue />的方式 为backgroundcolor设定了一个值为蓝色 这样则为使<tr>的背景颜色bgcolor=blue 实现将输出数据的每一行变为蓝色的效果

  当然 在上面的例子中 我们是已硬编码的方式设置xslt的参数 一般来说 应该在 页面中进行设置 而在 中 可以使用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 %><script runat= server >void Page_Load(object sender System EventArgs e) string connString = WebConfigurationManager ConnectionStrings[ adventureWorks ] ConnectionString; using (SqlConnection connection = new SqlConnection(connString))   connection Open();  SqlCommand mand = new SqlCommand( Select * from Production ProductSubCategory as Categories + for xml auto elements connection);  XmlReader reader = mand ExecuteXmlReader();  XPathDocument xpathDoc = new XPathDocument(reader);  string xslPath = Server MapPath( App_Data/Category xsl );  XslCompiledTransform transform = new XslCompiledTransform();  transform Load(xslPath);  XsltArgumentList argsList = new XsltArgumentList();  string backGroundColor = Tan ;  //Add the required parameters to the XsltArgumentList object  argsList AddParam( BackGroundColor backGroundColor);  transform Transform(xpathDoc argsList Response Output);     其中 注意黑体加粗部分 先实例化了XsltArgumentList类 接着设置了backGroundColor颜色 再使用 XsltArgumentList类的addParam方法 向XSLT中原先设置好的BackGroundColor传递参数 最后 在 XslCompiledTransform的transform方法中 其中的第二个参数 传入刚才实例化后的argsList 这样就可以实现在 aspx页面中动态向XSLT中传递进参数了

  除此之外 在 net 中 还可以在xslt中直接调用外部的类中的方法 而被XSLT调用的外部类 我们称为扩展对象 下面举例说明 首先先建立一个类DateTimeConverter 这个类中 我们有一个方法可以将指定的日期进行格式化 如下所示     using System;public class DateTimeConverter public DateTimeConverter()  public string ToDateTimeFormat(string data string format)   DateTime date = DateTime Parse(data);  return date ToString(format); 

  将这个类放在App_Code这个文件夹下 以方便调用 为了在XSLT中调用这个类 首先在XSLT文件的开头用XMLNS的方式指定要调用的扩展对象 如下代码所示     <?xml version= ?><xsl:stylesheet version= xmlns:xsl= xmlns:DateTimeConverter= urn:DateTimeConverter ><xsl:output method= /><xsl:param name= BackGroundColor select= Blue /><xsl:template match= / ><HTML><HEAD><TITLE>Invoking extension objects from an XSLT Style Sheet</TITLE></HEAD><BODY><H >Invoking extension objects from an XSLT Style Sheet</H ><table border= cellSpacing= cellPadding= ><center><xsl:for each select= //Categories ><! Each record on a seperate row ><xsl:element name= tr ><xsl:attribute name= bgcolor ><xsl:value of select= $BackGroundColor /></xsl:attribute><xsl:element name= td ><xsl:value of select= ProductSubcategoryID /></xsl:element><xsl:element name= td ><xsl:value of select= Name /></xsl:element><xsl:element name= td ><xsl:attribute name= align >center</xsl:attribute><xsl:value of select= DateTimeConverter:ToDateTimeFormat(ModifiedDate F ) /></xsl:element></xsl:element></xsl:for each></center></table></BODY></HTML></xsl:template></xsl:stylesheet>

  在上面的代码中 我们用<xmlns DateTimeConverter= urn DateTimeConverter >的方式 给要被调用的扩展对象命名为DateTimeConverter 以方便下面的调用 而为了将日期格式化 通过<xsl value of select= DateTimeConverter ToDateTimeFormat (ModifiedDate F ) />的方式 调用了外部类DateTimeConverter中的ToDateTimeFormat的方法 注意这里是以类名 方法名(参数表)的形式表示

  接下来 在aspx页面中 调用该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 %><script runat= server >void Page_Load(object sender System EventArgs e) string connString = WebConfigurationManager ConnectionStrings[ adventureWorks ] ConnectionString; using (SqlConnection connection = new SqlConnection(connString))   connection Open();  SqlCommand mand = new SqlCommand( Select * from Production ProductSubCategory as Categories + for xml auto elements connection);  XmlReader reader = mand ExecuteXmlReader();  XPathDocument xpathDoc = new XPathDocument(reader);  string xslPath = Server MapPath( App_Data/Category xsl );  XslCompiledTransform transform = new XslCompiledTransform();  transform Load(xslPath);  XsltArgumentList argsList = new XsltArgumentList();  string backGroundColor = Tan ;  argsList AddParam( BackGroundColor backGroundColor);  DateTimeConverter converter = new DateTimeConverter();  argsList AddExtensionObject( urn:DateTimeConverter converter);  transform Transform(xpathDoc argsList Response Output); </script>

cha138/Article/program/ASP/201311/21660

相关参考

知识大全 ASP.NET 2.0中XML数据的处理

ASP.NET2.0中XML数据的处理  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  SqlDa

知识大全 ASP.NET 2.0中DataTable小兵变大将

ASP.NET2.0中DataTable小兵变大将  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧! 

知识大全 在ASP.NET 2.0中使用页面导航控件

在ASP.NET2.0中使用页面导航控件  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  几乎每个

知识大全 ASP.NET 2.0中构造个性化网页

ASP.NET2.0中构造个性化网页  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在WEB应用

知识大全 asp.net 2.0中使用sitemapDATAsource做页面导航

asp.net2.0中使用sitemapDATAsource做页面导航  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶

知识大全 ASP.NET 2.0 AJAX中Webservice调用方法

ASP.NET2.0AJAX中Webservice调用方法  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一

知识大全 ASP.NET 2.0中连接字符串的设置

ASP.NET2.0中连接字符串的设置  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  在ASPN

知识大全 ASP.NET 2.0中保证应用程序的安全

ASP.NET2.0中保证应用程序的安全  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!  成员和角

知识大全 ASP.NET 2.0中构造个性化网页[3]

ASP.NET2.0中构造个性化网页[3]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!SubCa

知识大全 ASP.NET 2.0中构造个性化网页[4]

ASP.NET2.0中构造个性化网页[4]  以下文字资料是由(全榜网网www.cha138.com)小编为大家搜集整理后发布的内容,让我们赶快一起来看一下吧!