广

ASP.NET

  • IOS开发
  • android开发
  • PHP编程
  • JavaScript
  • ASP.NET
  • ASP编程
  • JSP编程
  • Java编程
  • 易语言
  • Ruby编程
  • Perl编程
  • AJAX
  • 正则表达式
  • C语言
  • 编程开发

    ASP.NET 2.0中XSLT的使用

    2018-04-13 09:18:00 次阅读 稿源:互联网
    广告
      在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代码如下:
      
      
    <?xml version="1.0" ?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" />
      <xsl:template match="/">
      <HTML>
      <HEAD>
       <TITLE>Simple XSLT Transformation</TITLE>
      </HEAD>
      <BODY>
       <H2>Simple XSLT Transformation</H2>
       <table border="1" cellSpacing="1" cellPadding="1">
      <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 command = new SqlCommand
      ("Select * from Production.ProductSubcategory as Categories " +
      " for xml auto,elements", connection);
      XmlReader reader = command.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文件,再用xslcompiledtransform类进行转换,其中用xpathdocument是为了性能的提升。注意这里用xslcompiledtransform取代了.net 1.1中的xslttransform,运行结果如下图
      
      

      还可以向XSLT中传入参数或对象,先看如何向其传入参数,比如要改变上例的背景颜色,则可以这样写XSLT
      
      
    <?xml version="1.0" ?>
      <xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
      <xsl:output method="html" />
      <xsl:param name="BackGroundColor" select="Blue" />
      <xsl:template match="/">
      <HTML>
      <HEAD>
      <TITLE>Passing Parameters to an XSLT Style Sheet</TITLE>
      </HEAD>
      <BODY>
      <H2> Passing Parameters to an XSLT Style Sheet</H2>
      <table border="1" cellSpacing="1" cellPadding="1">
      <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,实现将输出数据的每一行变为蓝色的效果。

    一起学吧部分文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与一起学吧进行文章共享合作。

    广告
    广告
    广告