- 浏览: 7944560 次
- 性别:
- 来自: 广州
文章分类
- 全部博客 (2425)
- 软件工程 (75)
- JAVA相关 (662)
- ajax/web相关 (351)
- 数据库相关/oracle (218)
- PHP (147)
- UNIX/LINUX/FREEBSD/solaris (118)
- 音乐探讨 (1)
- 闲话 (11)
- 网络安全等 (21)
- .NET (153)
- ROR和GOG (10)
- [网站分类]4.其他技术区 (181)
- 算法等 (7)
- [随笔分类]SOA (8)
- 收藏区 (71)
- 金融证券 (4)
- [网站分类]5.企业信息化 (3)
- c&c++学习 (1)
- 读书区 (11)
- 其它 (10)
- 收藏夹 (1)
- 设计模式 (1)
- FLEX (14)
- Android (98)
- 软件工程心理学系列 (4)
- HTML5 (6)
- C/C++ (0)
- 数据结构 (0)
- 书评 (3)
- python (17)
- NOSQL (10)
- MYSQL (85)
- java之各类测试 (18)
- nodejs (1)
- JAVA (1)
- neo4j (3)
- VUE (4)
- docker相关 (1)
最新评论
-
xiaobadi:
jacky~~~~~~~~~
推荐两个不错的mybatis GUI生成工具 -
masuweng:
(转)JAVA获得机器码的实现 -
albert0707:
有些扩展名为null
java 7中可以判断文件的contenttype了 -
albert0707:
非常感谢!!!!!!!!!
java 7中可以判断文件的contenttype了 -
zhangle:
https://zhuban.me竹板共享 - 高效便捷的文档 ...
一个不错的网络白板工具
http://dev.yesky.com/msdn/375/2453875.shtml这里,今放到这里
在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,实现将输出数据的每一行变为蓝色的效果。
当然,在上面的例子中,我们是已硬编码的方式设置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" %> <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("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中传递进参数了,实现的效果如下图所示
<v:shapetype id="_x0000_t75" stroked="f" filled="f" path="m@4@5l@4@11@9@11@9@5xe" o:preferrelative="t" o:spt="75" coordsize="21600,21600">
<v:stroke joinstyle="miter"></v:stroke><v:formulas><v:f eqn="if lineDrawn pixelLineWidth 0"></v:f><v:f eqn="sum @0 1 0"></v:f><v:f eqn="sum 0 0 @1"></v:f><v:f eqn="prod @2 1 2"></v:f><v:f eqn="prod @3 21600 pixelWidth"></v:f><v:f eqn="prod @3 21600 pixelHeight"></v:f><v:f eqn="sum @0 0 1"></v:f><v:f eqn="prod @6 1 2"></v:f><v:f eqn="prod @7 21600 pixelWidth"></v:f><v:f eqn="sum @8 21600 0"></v:f><v:f eqn="prod @7 21600 pixelHeight"></v:f><v:f eqn="sum @10 21600 0"></v:f></v:formulas><v:path o:connecttype="rect" gradientshapeok="t" o:extrusionok="f"></v:path><o:lock aspectratio="t" v:ext="edit"></o:lock></v:shapetype>
除此之外,在.net 2.0中,还可以在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="1.0" ?>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:DateTimeConverter="urn:DateTimeConverter">
<xsl:output method="html" />
<xsl:param name="BackGroundColor" select="Blue" />
<xsl:template match="/">
<HTML>
<HEAD>
<TITLE>Invoking extension objects from an XSLT Style Sheet</TITLE>
</HEAD>
<BODY>
<H2>Invoking extension objects from 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="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 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("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>
在上面的代码中,要留意的是,首先实例化了DateTimeConverter类,然后通过XsltArgumentList的AddExtensionObject方法,增加其扩展对象,其中用"urn:DateTimeConverter"的方式,指明了其扩展对象的别名。运行的效果如下图
发表评论
-
很高兴能入住博客园
2005-01-15 19:24 1623很高兴申请能被批准,十分高兴。因为我主要搞WEB编程的 ... -
一些我翻译或原作的文章
2005-01-15 19:50 1341平时有空的话,比较喜欢看外国的.net站点,因此也翻译些好 ... -
asp.net 中对datagrid中的BUTTON应用CSS样式
2005-01-15 20:02 2493在asp.net中,如果要对某个按钮,TEXTBOX应用样式, ... -
asp.net 2.0中的ValidationGroup
2005-01-15 20:04 1541在asp.net 1.1中,对于验证类控件,在使用时,遇到有的 ... -
asp.net 2.0中的弹出对话框
2005-01-15 20:05 1352在asp.net 1.1中,要做1个弹出的对话框的话,一般是在 ... -
asp.net 2.0中设定默认焦点按钮
2005-01-15 20:05 1582在asp.net 1.1中,当要在page_load页面中,设 ... -
asp.net 2.0中使用sitemapDATAsource做页面导航
2005-01-15 20:07 1721在ASP.NET 2.0中,没有专门的页面导航控件,但可以使用 ... -
asp.net 2.0中TREEVIEW中动态增加结点
2005-01-15 20:08 2044在asp.net 2.0中,要动态从数据库中取出内容,动态增加 ... -
一个.net实现的ubb类
2005-01-15 20:09 1506using System; using System.Text ... -
ASP.NET 2.0中改变passwordrecovery发邮件时的信息
2005-01-15 20:11 1394在ASP.NET 2.0的登陆控件中(详细见我的文章,www. ... -
asp.net 2.0中的Cross PAGE REQUEST
2005-01-15 20:12 1328大家还记得吧,在ASP中,一个页面里,只要有一个Form表单, ... -
asp.net 2.0中一次性更新所有GRIDVIEW的记录 (翻译)
2005-01-15 20:13 1339在asp.net 2.0中,gridview控件是十分不错的控 ... -
ASP.NET 2.0中GRIDVIEW排序
2005-01-15 20:15 1970虽然是BETA 1的,但原理其实和。NET 1。1的差不多,下 ... -
即将有很多介绍WEBSERVICE互相整合的录象
2005-01-15 23:07 1219如何做到JAVA和。NET之间相互使用WEBSERVICE呢? ... -
asp.net 2.0的又一新特性
2005-01-16 20:49 1156ASP.NET 2.0真是多新特性呀,今天看资料才发现的。比如 ... -
上周听SMARTCLIENT讲座感受
2005-01-20 13:01 1385上周,在广州的SMARTCLIENT讲座上,终于见到了开心 ... -
BOXING AND UNBOXING FOR BEGINNER
2005-01-20 21:04 1402看了CODEPROJECT上篇讲BOXING的文章,觉得不错, ... -
基于WEBSEVRICE的课件搜索系统(一)
2005-01-28 22:47 1416临到年尾了,手上 ... -
基于WEBSERVICE的课件搜索系统(二)
2005-01-28 22:50 12524.3.2 WebService代理中 ... -
基于WEBSERVICE的课件系统(三)
2005-01-28 22:58 1675在前面的<<基于WEBSERVICE的课件系统(1 ...
相关推荐
在ASP.NET 2.0中,XML集成得到了显著增强,使得开发人员能够更加便捷地操作和解析XML文档。 在本书中,作者深入介绍了以下几个关键知识点: 1. **XML基础**:首先,书本会回顾XML的基本概念,包括XML文档的结构、...
《ASP.NET 2.0 XML 高级编程...总的来说,《ASP.NET 2.0 XML 高级编程(第3版)》是一本全面覆盖ASP.NET 2.0中XML应用的指南,无论你是初学者还是经验丰富的开发者,都能从中获益匪浅,提升在XML编程方面的专业技能。
ASP.NET 2.0 XML是微软.NET Framework 2.0版本中的一项重要技术,它为开发者提供了强大的XML处理能力,使开发人员能够更好地利用XML在Web应用程序中的潜力。这一技术结合了XML、XSLT、XPath和XSD等标准,为创建数据...
在这个版本中,关键改进包括ASP.NET 2.0、ADO.NET 2.0和Windows Forms 2.0,这些都是开发Web应用、数据库应用和桌面应用的基础。 源码中的实战案例可能涵盖以下方面: 1. 类和对象:C#的核心是面向对象编程,源码...
此外,作者还可能涵盖了AJAX(Asynchronous JavaScript and XML)技术,它是ASP.NET 2.0中的一项重要增强,允许创建具有更好用户体验的富客户端应用程序。通过使用UpdatePanel、ScriptManager和脚本服务,开发者可以...
教程可能会讲解如何在ASP.NET中使用XML文档,以及如何结合XPath和XSLT进行数据处理。 总的来说,这个"ASP.NET 2.0快速入门教程"会引导你逐步了解和掌握ASP.NET 2.0的基本概念和编程技术,无论你是C#新手还是VB.NET...
在ASP.NET 2.0中,XML编程成为了一个重要的组成部分,使得开发者能够更加灵活地处理结构化数据。 1. **XML文档对象模型(DOM)** - DOM允许开发者将XML文档加载到内存中,并以树形结构进行访问和修改。ASP.NET 2.0...
ASP.NET 2.0、XML、SQL Server 2005 和 AJAX 是构建现代Web应用程序的关键技术,它们各自在Web开发领域中扮演着重要角色。接下来,我们将详细探讨这些技术及其相互之间的结合。 **ASP.NET 2.0** ASP.NET 2.0是微软...
在ASP.NET 2.0中,可以使用内置的数据绑定控件(如GridView和ListView)来展示博客文章,结合Entity Framework或ADO.NET进行数据存储和检索,同时利用 Membership 和 Role Manager 提供用户注册、登录和权限管理。...
在ASP.NET 2.0中,XML与.NET Framework紧密集成,为开发者提供了强大的工具和API来处理XML文档。 本书首先介绍了XML的基础知识,包括XML的语法、命名空间、DTD(文档类型定义)和XSD(XML Schema)等。这些基础知识...
总的来说,这份《精通ASP.NET 2.0随书光盘(part1)》涵盖了从基础到进阶的ASP.NET 2.0技术,特别关注了Web开发中的关键领域,如RSS聚合、XML处理、Ajax增强以及邮件服务。通过深入学习这些内容,开发者可以提升自己的...
### ASP.NET 2.0 高级编程知识点详解 #### 一、服务器控件的概念及其在ASP.NET开发中的主导作用 服务器控件是ASP.NET框架的核心组成部分之一,它们是在服务器端运行的控件,能够响应客户端请求并在服务器上执行...
《ASP.NET 2.0 XML 高级编程(第3版)》这本书深入探讨了ASP.NET 2.0框架下的XML技术应用,旨在帮助开发者掌握XML在Web开发中的高级用法。XML(eXtensible Markup Language)是一种用于标记数据的语言,它允许数据以...
在ASP.NET 2.0中,ORM(对象关系映射)技术如NHibernate或Entity Framework,允许开发人员使用面向对象的编程模型来操作数据库,无需编写SQL语句。这提高了代码的可读性和可维护性,并减少了与数据库交互时的错误。...
6. 在ASP.NET中使用LINQ to XML进行高效的数据查询。 7. 设计和实现XML Web服务以及WCF服务。 8. 应对XML安全性和性能优化的策略。 总之,《ASP.NET 2.0.XML.高级编程(第3版)》是一本涵盖广泛且深入的教程,对于想...
在本课程“深入挖掘ASP.NET 2.0系列课程(10):ASP.NET中的XML数据源操作”中,我们将探讨ASP.NET 2.0框架如何利用XML进行数据处理和展示,这对于构建动态Web应用程序至关重要。XML(Extensible Markup Language)是...
综上所述,这个“ASP.NET2.0+XML中小型企业网站”模板涵盖了Web开发的多个方面,包括前端设计、后端编程、数据库集成以及用户体验优化,为创建一个功能完善的中小型企业网站提供了一个基础框架。开发者可以根据实际...
书中将详细阐述如何创建XML Schema,以及如何在ASP.NET应用程序中使用它进行数据验证。 8. **XML编程接口(DOM和SAX)**:两种主要的XML解析方法——DOM(Document Object Model)和SAX(Simple API for XML),在...