如何用ASP操作XML(三)
来源:互联网 发布:2017网络灰色项目 编辑:程序博客网 时间:2024/05/18 01:45
DO自动产生的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 GumboMix产品名字等,在做转换时要进行编码处理。在Microsoft ADO2.6的SDK里有使用save方法时要注意的问题:1,save方法只对openRecordset起作用;2,不支持带有adVariant,adIDispatch,adIUnknown类型的字段的记录集的savw;3,当保存分级的记录集( data shapes)有两个限制:不能保存参数化和含有未解决的更新的记录集。
- 如何用ASP操作XML(三)
- 如何用ASP操作XML(三)
- 如何用ASP操作XML(一)
- 如何用ASP操作XML(二)
- 如何用ASP操作XML(四)
- 如何用Asp动态生成xml文件
- 如何用ADO.Net操作XML (转载)
- 如何用ADO.Net操作XML
- 如何用MSXML2操作XML配置文件
- 如何用asp操作Oracle数据库
- 如何用ASP生成XML数据文档(RSS订阅)
- 如何用ASP生成XML数据文档(zz)
- 如何用PHP来操作XML的内容
- 如何用asp制作图片
- 如何用ASP.Net從數据庫取數据生成并成送XML數据(不生成XML文件)?
- 如何用C#操作注册表
- 如何用YC++操作数据库
- 如何用YC++操作数据库
- request的用法1
- LDAP 技术总结(2)
- netbeans 7.8 m1
- 新手炒股2
- xml格式
- 如何用ASP操作XML(三)
- LDAP应用程序接口
- [技术讨论]国内企业软件的状况和瓶颈
- [CTO札记]架构改造(SOBS)4原则
- 走向成功,是靠IQ、EQ还是靠AQ?
- 软件系统架构高级工程师
- 职场新人的关键90天规划支招
- 程序员,应该掌握的英语词汇
- 测试运行: Microsoft UI 自动化库