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

转载 2006年06月03日 19:57:00
利用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转换XML

一 介绍 XSLT是一种用来转换XML文档结构的语言,它是EXtensible Style Language Extensions Transformations的缩写。 XSLT类似与HTML中...
  • chengqiuming
  • chengqiuming
  • 2017年04月12日 10:47
  • 489

怎么使用XSLT将 XML文件转化为HTML5的网页

怎么使用XSLT将 XML文件转化为HTML5的网页 在这篇文章中,我将展示怎么使用XSLT语言将 一个 XML 文件输出成HTML5 格式的网络页面. 让我们先看一下如下一个XML格...
  • lzy_168
  • lzy_168
  • 2014年11月07日 13:40
  • 2819

[XML]学习笔记(八)XSLT

一、XSL(eXtensible Stylesheet Language)扩展样式表语言:主要包含三个部分——XSLT用于XML文档转换,XPath用于在XML文档中导航,XSL-FO用于XML文档格...
  • CristianoJason
  • CristianoJason
  • 2016年05月20日 00:45
  • 4372

XSLT解析JSON字符串

这两天呗XSL类问题搞的焦头烂额,不过总是解决了问题。 给定一个JSON串怎么进行对其解析呢?串如下: [{"TriggerVal":"10001510","TargetItemNo":"1879...
  • Grit_ICPC
  • Grit_ICPC
  • 2017年07月05日 15:13
  • 291

用XPath和XSLT来更好的处理XML

代码如下:
  • u010870518
  • u010870518
  • 2014年04月05日 16:08
  • 1938

XSLT——XML样式表转换语言

XML样式表转换语言 1. XSLT是XSLTransformations的缩写,它是XSL的一个组成部分。 XSL(EXtensible StyleSheet)由三部分组成: –  XSLT。...
  • liaoqianwen123
  • liaoqianwen123
  • 2014年04月02日 22:42
  • 1923

纯数据xml通过xslt转换成报表xml

一、 除了要知道xml,xslt的知识,还需要了解ExcelXml(可用Excel打开的报表xml)各标签的含义。 数据放在标签的标签内。 每一行数据放在标签内,每个单元格的内容放在标签内 每...
  • yintianqin
  • yintianqin
  • 2017年06月08日 15:11
  • 385

Chrome无法用xsl显示xml文档

今天在做一个xml的小试验时,发现Chrome竟然无法显示经过xsl修饰的文档!!这么高级的浏览器不应该存在这样的情况啊。经过一翻折腾加google后,发现确实是因为Chrome太高级了所以无法显示:...
  • jnuyanfa
  • jnuyanfa
  • 2016年04月25日 22:43
  • 1619

ADO记录集相关知识

1.打开记录集 首先要创建一个Connection对象实例,然后执行Open方法打开记录集。例如: m_strConnection = _T("Provider=Microsoft.Jet.OLE...
  • zjs547123787
  • zjs547123787
  • 2016年10月25日 11:15
  • 151

xml与xsl的转换

xml文档的一大特点是可以向多种格式的文档进行转换。比如,从一种逻辑结构的xml向另一种逻辑结构的xml转换,或是转换为可浏览的html文档等。这种xml文档的数据格式转换功能由可扩展样式单语言(xs...
  • lvyuan30276
  • lvyuan30276
  • 2016年01月05日 23:28
  • 1276
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:利用XSLT把ADO记录集转换成XML(3)[转载]
举报原因:
原因补充:

(最多只允许输入30个字)