`
isiqi
  • 浏览: 16558411 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

利用XSLT把ADO记录集转换成XML(3)[转载]

阅读更多
利用XSLT把ADO记录集转换成XML(3)
http://www.51cto.com 2005-11-04 09:36 出处:51cto.com整理
ADO自动产生的XML包含了schema信息,它描述这个XML里允许有什么节点和属性以及采用何种数据类型,而且数据节点也增加了名称空间。schema信息在需要数据验证的地方或进行更复杂的处理或许很有用,但是,大多数情况下,我们使用的是瘦客户机,我们不需要schema信息。我们可以利用XSLT来分离出我们想要的信息,去掉多余的信息。因此,我们编写下面的“ DataCleaner.xsl”:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"

xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"

xmlns:rs="urn:schemas-microsoft-com:rowset"

xmlns:z="#RowsetSchema">

<xsl:output omit-xml-declaration="yes"/>

<xsl:template match="/">

<xsl:element name="xml">

<xsl:for-each select="/xml/rs:data/z:row">

<xsl:element name="row">

<xsl:for-each select="@*">

<xsl:element name="{name()}">

<xsl:value-of select="."/>

</xsl:element>

</xsl:for-each>

</xsl:element>

</xsl:for-each>

</xsl:element>

</xsl:template>

</xsl:stylesheet>

这个XSLT具有可重用的特性,对于不同的查询结果都适用,下面就是如何使用这个XSLT的例子:

<%

Dim strCleanXML, objXMLDOM_XSLT

Set objXMLDOM_XSLT = CreateObject("MSXML2.DOMDocument")

objXMLDOM_XSLT.load(Server.MapPath("DataCleaner.xsl"))

strCleanXML = objXMLDOM.transformNode(objXMLDOM_XSLT)

Set objXMLDOM = Nothing

Set objXMLDOM_XSLT = Nothing

%>

经过上面的处理以后,strClaenXML就是我们所想要的XML字符串了。

<xml>

<row>

<ProductName>Chai</ProductName>

<UnitPrice>18</UnitPrice>

<UnitsInStock>39</UnitsInStock>

</row>

<row>

<ProductName>Konbu</ProductName>

<UnitPrice>6</UnitPrice>

<UnitsInStock>24</UnitsInStock>

</row>

</xml>

上面这种格式的XML字符串是我们经常见到的节点集的样式,如果您不想把字段处理成节点,而把它处理成属性节点,那么我们只需对DataCleaber.xsl稍加改动即可:

<?xml version="1.0"?>

<xsl:stylesheet version="1.0"

xmlns:xsl="http://www.w3.org/1999/XSL/Transform"

xmlns:s="uuid:BDC6E3F0-6DA3-11d1-A2A3-00AA00C14882"

xmlns:dt="uuid:C2F41010-65B3-11d1-A29F-00AA00C14882"

xmlns:rs="urn:schemas-microsoft-com:rowset"

xmlns:z="#RowsetSchema">

<xsl:output omit-xml-declaration="yes"/>

<xsl:template match="/">

<xsl:element name="xml">

<xsl:for-each select="/xml/rs:data/z:row">

<xsl:element name="row">

<xsl:for-each select="@*">

<xsl:attribute name="{name()}">

<xsl:value-of select="."/>

</xsl:attribute>

</xsl:for-each>

</xsl:element>

</xsl:for-each>

</xsl:element>

</xsl:template>

</xsl:stylesheet>

以下是采用了新样式的结果,它比用节点表示字段的长度要短的多了。传输起来速度会更快:

<xml>

<row ProductName="Chai" UnitPrice="18" UnitsInStock="39"/>

<row ProductName="Konbu" UnitPrice="6" UnitsInStock="24"/>

</xml>

到此为止,我们介绍了从ADO 记录集得到XML格式数据的几种办法,也得到了最简化的字符串。但是有几个问题你仍然需要注意,有些字段值还有XML里不支持的字符,比如:"'<>&,象P&G宝洁公司的名称,Chef Anton's Gumbo Mix产品名字等,在做转换时要进行编码处理。在Microsoft ADO 2.6的SDK里有使用save方法时要注意的问题:1,save方法只对open Recordset起作用;2,不支持带有adVariant,adIDispatch,adIUnknown类型的字段的记录集的savw;3,当保存分级的记录集( data shapes)有两个限制:不能保存参数化和含有未解决的更新的记录集。

为了更进一步提高性能,你可以把转换工作放到COM/COM+组件中, ASP代码只进行数据的最终表现即可。把业务层、数据层和表现层分开,ASP只需要调用数据组件,数据组件调用数据库的存储过程,把结果转换成XML,最后只把简单的XML字符环串回到ASP程序里,ASP就可以用XSLT把XML进行转换,把结果送到浏览器。

分享到:
评论

相关推荐

    利用XSLT把ADO记录集转换成XML

    ### 利用XSLT将ADO记录集转换为XML #### 概述 在现代软件开发过程中,数据的处理和转换是一项重要的任务。随着互联网的发展,XML(可扩展标记语言)作为一种灵活的数据交换格式,被广泛应用于不同系统之间的数据...

    使用XSLT将ADO记录集转换为定界文件

    标题中的“使用XSLT将ADO记录集转换为定界文件”是指利用XSL Transformations (XSLT) 技术,将ActiveX Data Objects (ADO) 的Recordset对象转换成以特定分隔符(如逗号、制表符等)分隔的文本文件。在数据处理和交换...

    XML与SQL Server 2000的数据转换.pdf

    3. 将XML数据解析为记录集,或者使用XML数据类型创建新的SQL Server表。 4. 将记录集插入到数据库表中,或将数据库表数据转换为XML格式并写入文件。 在实际应用中,这些步骤可能需要根据具体需求进行调整和优化,...

    微软ADO编程指南

    最后,文档涉及了对ADO动态属性的操作,XSLT转换以及XML的安全考虑等高级话题。这部分内容帮助开发者扩展了ADO应用的可能性,比如通过XML DOM对象保存数据,或者对XML格式的记录集进行安全处理。 由于内容是基于...

    XML中的常见问题 (四)

    可以通过VB6创建新的项目,添加对ADO的引用,然后使用XMLDSO来加载和操作XML数据,将其绑定到ADO记录集以便进一步处理。 总之,XML的空白字符处理、XML声明、打印可读XML、名称空间的使用以及在VB中利用XMLDSO与XML...

    ADO.NET官方参考文档2021-09.pdf

    对于XML的支持,ADO.NET允许通过XML加载和保存数据集内容,利用DiffGrams进行差异比较,通过XmlDataDocument进行数据集和XML文档的同步,以及使用XPath和XSLT进行查询和转换。XML也被广泛用于在Web服务中传递数据,...

    EXCEL VBA 高级技巧

    5. XSLT转换:XSL(Extensible Stylesheet Language)用于转换XML数据。VBA可以调用XSLT处理器,应用样式表到XML文档上,生成新的XML或HTML输出。 6. XML Schema验证:MSXML库支持XML Schema,可以用来验证XML文档...

    ADO.NET实用经验汇总

    此外,DataSet可以利用XML操作来处理数据,例如使用XSLT进行数据转换或使用XPath查询数据。DataSet的使用场景包括但不限于:需要对记录集合进行缓存以提升性能,对每条记录需要进行大量处理,或需要使用XML操作对...

    WEB程序设计模拟试题1,2,3[汇编].pdf

    5. ADO中的独立对象类包括Connection(连接对象)、Command(命令对象)、Recordset(记录集对象)、Field(字段对象)等。 【程序题】题目要求编写JavaScript函数和XML文档的DTD验证,具体实现未给出,但这是测试...

    ASP.NET4高级程序设计(第4版) 3/3

    15.1.2 把页面转换成用户控件 522 15.2 为用户控件添加代码 523 15.2.1 处理事件 523 15.2.2 添加属性 524 15.2.3 使用自定义对象 525 15.2.4 添加事件 528 15.2.5 公开内部Web控件 530 15.3 动态...

    ASP编程完全手册chm

    5. **数据库访问**:讲解如何使用ADO(ActiveX Data Objects)连接和操作数据库,包括SQL查询、记录集、事务处理等内容。 6. **错误处理和调试**:介绍ASP的错误处理机制,如何设置On Error语句进行错误捕获,以及...

    VS2005典型实例大全(C#)源码

    7. **XML处理**:XML在数据交换和配置文件中广泛应用,实例可能展示如何读写XML文件、XPath查询、XSLT转换等,帮助开发者理解XML的相关技术。 8. **错误处理与调试**:实例还会包含异常处理机制(try-catch-finally...

    ASP.NET4高级程序设计第4版 带目录PDF 分卷压缩包 part1

    15.1.2 把页面转换成用户控件 15.2 为用户控件添加代码 15.2.1 处理事件 15.2.2 添加属性 15.2.3 使用自定义对象 15.2.4 添加事件 15.2.5 公开内部Web控件 15.3 动态加载用户控件 15.4 局部页面...

    Web程序设计模拟试题一.doc

    5. ADO中的独立对象类包括Connection(连接对象)、Command(命令对象)、Recordset(记录集对象)、Error(错误对象)等。 【程序题略】 由于篇幅限制,这里仅提供问题的大致思路: 1. JavaScript函数isAlpha()应...

    官方出版的网页编程速查手册

    此外,XML与XSLT(转换语言)和XPath(导航语言)的关系也会被提及。 PHP是一种服务器端脚本语言,常用于动态网站开发。手册会涉及变量、数组、流程控制、函数、类和对象,以及PHP如何与MySQL等数据库交互。此外,...

    C#在VS2005_下的典型实例源码大全.rar

    实例源码可以展示如何读取、写入和操作XML文档,以及利用XPath和XSLT进行数据转换。 七、Web服务和WCF VS2005引入了对Web服务的支持,C#可以方便地创建和消费SOAP或RESTful Web服务。此外,Windows Communication ...

    ASP.NET面试资料

    - **ADORecordset与DataSet的区别**:ADORecordset是ADO中用来表示记录集的对象,而DataSet则是ADO.NET中用于表示记录集的对象。两者的主要区别在于DataSet提供了更丰富的数据处理功能,如内置的数据关系管理、数据...

    ASP.NET 3.5 开发大全word课件

    11.1.3 将Web窗体转换成用户控件 11.2 自定义控件 11.2.1 实现自定义控件 11.2.2 复合自定义控件 11.3 用户控件和自定义控件的异同 11.4 用户控件示例 11.4.1 ASP.NET登录控件 11.4.2 ASP.NET登录控件的开发 11.4.3 ...

Global site tag (gtag.js) - Google Analytics