XML初学进阶学习笔记(6)

白羊lhhdiamond

白羊lhhdiamond

2016-02-19 17:18

有一种朋友不在生活里,却在生命力;有一种陪伴不在身边,却在心间。图老师即在大家的生活中又在身边。这么贴心的服务你感受到了吗?话不多说下面就和大家分享XML初学进阶学习笔记(6)吧。

  41、在关系数据库中,数据仅仅是数据,它不包含层次结构信息;而面向对象数据库可以将数据视为对象,数据是作为一个整体,包含了属性和方法,并能体现数据间的继承关系。

  42、一个基于XML的数据库系统应该具备以下特征: 

1能够根据文档类型定义(DTD或Schema)确定数据库的模式。 也就是说,能够按照DTD或Schema来定义数据库,而无须再进行数据库的设计, 能够按照DTD或Schema的层次结构来进行基于XML语法的定位和查询。通过元素名字和属性来查询和定位元素。 2支持DOM和SAX,可以进行事件驱动的XML处理。 3内置数据处理语言模块(XML语法分析器),能够进行XML文档数据的语法分析,同时对数据库中的元素进行直接的定位操作。 4提供标准的XML查询语言。通过套用一定的样式模式,输出多种格式的XML文档。 5能够处理大型数据集合,能够对置标文本的结构和内容进行索引。 6提供开发工具包,支持DOM、SAX、Java、Script语言等。 7提供一定的机制保证数据的一致性。如通过行级或页级共享锁、排他锁对数据加锁,满足用户对数据进行并发读写时数据的有效性。 8支持OLAP和数据仓库等高级应用。

  43、对数据库操作ASP和DTD(Schema)的具体实现:

  ASP:

  

% @language = "VBScript" %% Response.ContentType = "text/xml" % ?xml version="1.0" encoding="GB2312" ?%’动态构建XML文档 set xmlDoc = Server.CreateObject(Microsoft.XMLDOM) set root = xmlDoc.createNode("element","联系人列表","") xmlDoc.appendChild(root)’查询数据库   sqlStr = "select * from clientList"   set cConn = Server.CreateObject("ADODB.Connection")   cConn.Open "CLIENTS","sa", ""   set rsData = cConn.Execute(sqlStr)   rsData.MoveFirst()while (not rsData.EOF )    ’构建联系人子节点  set tmpNode = xmlDoc.createNode("element","联系人","")  xmlDoc.documentElement.appendChild(tmpNode)    ’构建姓名、ID、公司、Email子节点  for I = 0 to rsData.Fields.Count - 1   set childNode = xmlDoc.createNode("element",rsData.Fields(i).Name,"")   childNode.text = rsData.Fields(i)   tmpNode.appendChild(childNode)  next    rsData.MoveNext() wendResponse.Write(xmlDoc.xml)%

  DTD:

  

% Response.ContentType="text/xml" %?xml version="1.0" encoding="GB2312" ?联系人列表% Set cConn = Server.CreateObject("ADODB.Connection")    cConn.Open "CLIENTS","sa", ""    Set rsData = cConn.Execute("select * from clientList")    do while not rsData.Eof%联系人   姓名%=rsData("Name")%/姓名   ID%=rsData("ID")%/ID   公司%=rsData("Company")%/公司   Email%=rsData("Email")%/Email/联系人% rsData.MoveNext    Loop    rsData.Close    Set rsData = nothing%/联系人列表

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  最终生成XML文档为:

  

?xml version = "1.0" encoding="GB2312" standalone = "no"?联系人列表  联系人    姓名张三/姓名    ID1/ID    公司A公司/公司    EMAILzhang@aaa.com/EMAIL  /联系人联系人      姓名李四/姓名      ID2/ID      公司B公司/公司      EMAILli@bbb.org/EMAIL    /联系人/联系人列表

  44、这种方案存在一个前提,那就是,开发者必须了解文档结构,并且通过编程严格控制输出文档的格式。但细心的读者可能会产生疑问:既然数据已经存储在数据库中,又何必大费周折重新定义一遍文档结构呢?

  XML的自描述性何在?为了解决这个问题,微软将其ADO技术进行了扩展以提供对XML的更大支持,结果是可以根据数据库表的内在结构直接输出XML文档,文档的格式将符合默认的DTD定义。下面是一个用Visual Basic 6.0编写的实例:

  

’声明连接和结果集Dim cConn As ADODB.ConnectionDim rsData As ADODB.Recordset Private Sub Form_Load() ’连接数据库 Dim query As String Set cConn = New ADODB.Connection cConn.ConnectionString = "DSN=nwind;UID=sa;PWD=;" cConn.Open’执行数据库查询   query = "Select * FROM clientList"   Set rsData = cConn.Execute(query)’将数据库返回结果集保存至文件 On Error Resume Next  Kill ("recordset.xml") rsData.Save "output.xml", adPersistXMLEnd Sub

  下面给出的是该程序执行后生成的XML文档--output.xml。通过分析,可以发现,它实际上是一个内嵌XML Schema的XML实例文档。该实例文档的主元素是rs:data,命名空间rs由xmlns:rs=’urn:schemas-microsoft-com:rowset’定义;数据库查询返回的每一条记录都作为rs:data的一个子元素,用z:row表示。

  z:row子元素实际上是空元素,信息均以属性的方式体现,属性来自于返回的数据库字段。

(本文来源于图老师网站,更多请访问http://m.tulaoshi.com/webkaifa/)

  内嵌的Schema部分s:Schema id=’RowsetSchema’定义了元素row的组织结构和规则。

  

xml 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’ s:Schema id=’RowsetSchema’ s:ElementType name=’row’ content=’eltOnly’  s:attribute type=’Name’/  s:attribute type=’ID’/  s:attribute type=’Company’/  s:attribute type=’Email’/  s:extends type=’rs:rowbase’/ /s:ElementTypes:AttributeType name=’Name’ rs:number=’1’ rs:nullable=’true’     rs:write=’true’    s:datatype dt:type=’string’ dt:maxLength=’10’/   /s:AttributeTypes:AttributeType name=’ID’ rs:number=’2’ rs:nullable=’true’ rs:write=’true’    s:datatype dt:type=’int’/   /s:AttributeTypes:AttributeType name=’Company’ rs:number=’3’ rs:nullable=’true’ rs:write=’true’    s:datatype dt:type=’string’ dt:maxLength=’20’/   /s:AttributeTypes:AttributeType name=’Email’ rs:number=’4’ rs:nullable=’true’ rs:write=’true’    s:datatype dt:type=’string’ dt:maxLength=’20’/   /s:AttributeType/s:Schemars:data   z:row Name=’张三’ ID=’1’ Company=’A公司’ Email=’zhang@aaa.com’/   z:row Name=’李四’ ID=’2’ Company=’B公司’ Email=’li@bbb.org’//rs:data/xml

  ADO提供了文档保存功能,通过它,ASP可以将数据库返回结果集保存至XML文件,这些XML文件经由XSL样式化后可以在浏览器直接显示,也可以传输至其他应用系统供再次利用。

  另外,值得一提的是,微软在其ADO2.5和IIS5.0中又增加了更高级的支持,即,可以将数据库返回的结果直接转换为XML在浏览器中显示,而不必先保存至文件。下面的实例片段有力地说明了这一点:

  

% Set rsData = Server.CreateObject("ADODB.Recordset") Response.ContentType="text/xml"  rsData.Open "select * from clientList", "File Name=" & Server.MapPath("ado.udl") rsData.Save Response, adPersistXML rsData.Close Set cConn = nothing%

  (完)

展开更多 50%)
分享

猜你喜欢

XML初学进阶学习笔记(6)

Web开发
XML初学进阶学习笔记(6)

XML初学进阶学习笔记(2)

Web开发
XML初学进阶学习笔记(2)

s8lol主宰符文怎么配

英雄联盟 网络游戏
s8lol主宰符文怎么配

XML初学进阶学习笔记(4)

Web开发
XML初学进阶学习笔记(4)

XML初学进阶学习笔记(1)

Web开发
XML初学进阶学习笔记(1)

lol偷钱流符文搭配推荐

英雄联盟 网络游戏
lol偷钱流符文搭配推荐

XML初学进阶学习笔记(5)

Web开发
XML初学进阶学习笔记(5)

XML初学进阶学习笔记(3)

Web开发
XML初学进阶学习笔记(3)

lolAD刺客新符文搭配推荐

英雄联盟
lolAD刺客新符文搭配推荐

XML简明教程(1)什么是XML元素

XML简明教程(1)什么是XML元素

XML入门指南(12)XML应用

XML入门指南(12)XML应用
下拉加载更多内容 ↓