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

2016-02-19 17:18 26 1 收藏

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

【 tulaoshi.com - Web开发 】

  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%/联系人列表

  最终生成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表示。

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

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

(本文来源于图老师网站,更多请访问https://www.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%

  (完)

来源:https://www.tulaoshi.com/n/20160219/1614892.html

延伸阅读
标签: PHP
基本语法 所有的smarty标签都被加上了定界符.在smarty里,所有定界符以外的内容都是静态的,当smarty遇到了模板标签,将尝试解释他们,然后再以恰当的方式输出. 默认情况下是 {和},但它们是可定制的.定制方法是: $smarty-left_delimiter = '<!--{'; $smarty-right_delimiter = '}--'; 1.注释 模板注释被*号包围,例如 {*...
一、环境搭建 a) JDK:一些工具都是运行在此平台上的,有些工具自带了JDK。 http://java.sun.com/j2se/1.4.2/download.html b) Eclipse:Java的IDE开发工具。 http://www.eclipse.org c) Struts:Struts开发工具包。 http://struts.apache.org/ d) Tomcat:Web服务器,用于测试、发布Web应用程序。 ...
Java中的finalizer()函数不同于c++中的destrutors函数,在java中,不需要我们手动finalizer来释放资源,我们只需令他们=null即可。即使手动调用finalizer函数,我们也不能保证垃圾收集会进行,反而会使本该进行的垃圾收集推迟,从而有可能引起内存溢出。 所以,finalizer是尽量避免的。
标签: Web开发
1、li中的LI前面的符号不出现而且不占位置       list-style:none; margin:0px;padding:0px; 2、CSS相对定位语法 当父对象的position为absolute或者relative的时候 子对像如果设置了position为absolute,则top,left,right,bottom相对于父对象 例子: div id="AAA" style="position:relative;"基准点 div id="num...
标签: Web开发
    差不多每天都有人问“什么是 XML”,“XML 能做什么”,“XML 能不能替我做这个”,“XML 会取代什么” 等等诸如此类的问题。由于最近一段时间稍微对 xml 使用了一下,我来谈谈自己的感觉。这些经验都很浅显,任何一个用过 xml 的人都有,并且见仁见智,只不过我算刚刚走过这段路,对自己一开始的困惑,误解还记得清,所以...

经验教程

439

收藏

57
微博分享 QQ分享 QQ空间 手机页面 收藏网站 回到头部