XML 技术指南(2)

xml

<?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

 
schema

  一个schema通常是一组为了描述一类给定的XML文档而预先定好的规则。它定义了可以在指定XML文档中出现的各个元素以及和某个元素相关的若干属性。它同时定义了关于XML文档的结构化信息,比如哪几个元素是其他元素的子元素,子元素出现的顺序和他们的数量。它还可以定义一个元素是否为空,能否包含文本或者属性是否有默认值。

  DTDs(Document Type Definitions)和XML数据 都是怎样描述XML文档计划的具体例子。

  文档类型定义(Document Type Definitions)

  DTD语言是为了定义SGML文档的确认规则而专门开发的。因为XML是SGML的一个子集,所以DTDs也可以用来定义XML的确定规则。与XMLschema不同,一个XML处理器可以在运行时用DTD来确定一个XML的合法性。

  DTD的语法有时可能会有一些晦涩难懂。DTDs使用不同的语法元素,诸如惊叹号、圆括号、星号、尖括号等,来定义在一个XML文档中那些元素是必备的,哪些是可选的以及可以出现的元素数量等等。DTDs同时还定义了元素之间的关系和属性于不同元素之间的关系。

  下面就是前面列出的hamburger.xml的DTD(hamburger.dtd):

<!ELEMENT  hamburgers           (hamburger)*>  
<!ELEMENT  hamburger            (name, description, price)>  
<!ATTLIST hamburger            lowfat CDATA #IMPLIED>
<!ELEMENT name                 (#PCDATA)>  
<!ELEMENT description           (#PCDATA)>  
<!ELEMENT price                (#PCDATA)>

  这篇文档指出,hamburgers元素可以包含多个hamburger元素。同时,每一个hamburger元素必须包含一个lowfat属性和三个子元素,所有的类型都是#PCData(parsed character data)。遵从这篇DTD的文档都必须加入下面一行代码:

  <!DOCTYPE hamburgers SYSTEM "hamburger.dtd">

  这句声明告诉分析器不论DTD中的schema是什么都认为XML文档的内容是合法的

  尽管MSXML 2.0支持DTDs,但是你还是会发现使用它们是很费力的。它非常复杂并且难于掌握与使用。请注意,DTD语法并不是合法的XML。正因为如此,XML的处理器除了XML语法,还要支持用来描述schema的DTD语法。设想一下,假如我们用XML来描述schema,那么开发者,特别是XML工具的提供者,所承担的XML文档检验工作将会变得容易得多。W3C正在考虑几种弥补DTDs不足的方案以提高现在的语法定义过程。

  XML数据

  XML-Data是一种XMLschema语言。在微软的定义中,XML-Dataschema通常是指XMLschema,而不是DTDschema。一个XML-Dataschema是一个具有良好结构的XML文档。XML-Data语言基于XML-Data DTD,后者指明所期望的schema定义格式。因为XML-Dataschema是简单的XML文档,任何用于XML文档的工具都可以用来定义XML-Dataschema。

  以下的XML-Dataschema产生的schema和先前由hamburger.dtd所定义的schema是一样的:

<?xml version="1.0"?>
<Schema xmlns="schemas-microsoft-com:xml-data">
 <ElementType name="name" />
 <ElementType name="description" />
 <ElementType name="price" />
  <AttributeType name="lowfat" />
   <ElementType name="hamburger" />
   <element type="name" maxOccurs="1" />
   <element type="description" maxOccurs="1" />
   <element type="price" maxOccurs="1" />
   <attribute type="lowfat" maxOccurs="1" />
  </ElementType>
 <ElementType name="hamburgers" model="closed">
  <element type="hamburger" maxOccurs="*" />
 </ElementType>
</Schema>

  在XML-Dataschema中定义元素和属性时,分别用到的是<ElementType>和<AttributeType>元素。它们提供了对元素和属性类型的定义。定义一个元素或是属性时用<element>或<attribute>标签。你可以通过定义minOccurs/maxOccurs来指定元素允许出现的数量。schemaXML结构还定义了元素在XML文档中允许出现的位置(例如一个<hamburgers>元素可以包含若干<hamburger>元素,等等)。

  微软通过MSXML 2.0对XML-Data提供支持。根据微软的XML SDK文档,捆绑在IE 5中的XMLschema的实现基本上依托于W3C于1998年1月发布的XML-Data Note。它提供了对XML-Data子集的支持,这虽然和XML的语法稍有不同,正好直接和DCD中阐明的功能相吻合。

处理器(API)技术

  我们在前面已经提过了,为了有效的使用XML,你必须通过编程来访问数据。我们将一个能访问XML文档同时又能提供对其内容和数据结构进行访问的软件模块称为一个XML处理器或是一个XML API。

  虽然开发者完全有自由去开发或使用他们自己的XML API,但从他们的利益出发,我还是建议他们使用行业标准的API。因为只有接受了行业标准的API,开发者写出的代码可以无需修改便能在其他的环境中顺利执行。

  目前有两种主要的API已经得到了广大开发者的广泛使用,即将成为未来的行业标准。它们分别是:DOM(Document Object Model)和SAX(Simple API for XML)。

  DOM 文档对象模型

  文档对象模型是一种通过编程方式对XML文档中数据及结构进行访问的标准。W3C已经同意将其列为未来行业标准第一等级规范的推荐对象。

  DOM是基于XML文档在内存中的树状结构。当一个XML文件被装入到处理器中时,内存中建立起一棵相应的树(见图1)。DOM还定义了用来遍历一棵XML树和管理各个元素、值和属性的编程接口(包括方法和属性的名字)。

<?xml:namespace prefix = v ns = "urn:schemas-microsoft-com:vml" />

Figure 1. XML in-memory representation

  MSXML 2.0完全支持DOM并提供了一个易用的对象模型与内存中树进行交互。下面是一个简单的VB例子,它演示了如何用MSXML来遍历一颗树的所有子元素。

Set xmlDoc = CreateObject("MSXML.DOMDocument")
bSuccess = xmlDoc.load("hamburger.xml")
If bSuccess Then
 For Each node in xmlDoc.documentElement.childNodes
  val = node.text
 Next
End If

  SAX

  DOM标准的一个主要不足在于将整个XML文档装入内存所引起的巨大开销。当文件的数据量非常大时,这会给我们带来一些问题。当你在内部网或是因特网上传输如此巨大的XML文件时,你可能等不及所有的文件传输结束就开始处理数据。很多XML的开发者已经意识到这一点,于是他们一起努力(从XML-DEV邮件列表开始)开始创立另一种新的标准。这就是SAX。虽然SAX还处于发展的初期,但因为它出色的性能,它正快速的得到大家的欢迎。

  SAX是一种非常简单的XML API(正如它的名字那样,Simple API for XML),它允许开发者使用事件驱动的XML解析。与DOM不同,SAX并不要求将整个XML文件一起装入内存。它的想法十分的简单,一旦XML处理器完成对XML元素的操作,它就立刻调用一个你自定义一个事件处理器及时的处理这个元素和相关数据。这样做虽然能极大的提高效率,但也会造成一定的问题。比如说,开发者将不得不在灵活性上受到限制。如果你想了解更为详细的资料,请访问http://www.megginson.com/SAX/sax.html。

转换技术

  一旦你开始使用标准的DOM API来实现于XML数据的交互,你便会发现,无论是从一个大型的文档中取得一个特定的数据,还是将一个XML文档的某一部分转换为另一种格式的数据(例如HTML),都是十分单调乏味的。

时间: 2024-08-01 16:31:01

XML 技术指南(2)的相关文章

XML 技术指南(4)

xml <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  <HTML><HEAD> <STYLE> .time { behavior:url(#default#time); } </STYLE></HEAD><BODY> <DIV CLASS="time" t:timeli

XML 技术指南(1)

xml <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  概要:本文介绍了XML以及XML家族中的各项技术.我们将讨论这其中的各项核心技术是如何组合成一个完整的整体以及一些支持XML技术的东西究竟是什么. 似乎这样的事情每天都在发生:越来越多的开发者都相信XML(Extensible Markup Language)将从根本上改变我们的软件业.但如果你想从他们那里弄清楚

XML 技术指南(3)

xml <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  举个例子说,假如你想找到所有的lowfat hamburger price元素.为了用标准的DOM API来完成这一切,你必须通过手工地书写代码遍历整颗树来找寻符合条件的元素(在本例中,条件是指在hanburger元素中lowfat=yes的price元素).再看另一个例子,假设你想将所用的hamburger元素

XML及其技术指南

xml     概要:本文介绍了XML以及XML家族中的各项技术.我们将讨论这其中的各项核心技术是如何组合成一个完整的整体以及一些支持XML技术的东西究竟是什么. 似乎这样的事情每天都在发生:越来越多的开发者都相信XML(Extensible Markup Language)将从根本上改变我们的软件业.但如果你想从他们那里弄清楚这一切为什么或是何时将会发生时,你会发现他们给的解释中充斥着大堆有关XML的专有名词的缩写.这些东西实际上并不能让你明白些什么,我相信你一定不会满意像他们这样的解释. 通

XML技术思想

可扩展标记语言 (Extensible Markup Language, XML) ,用于标记电子文件使其具有结构性的标记语言,可以用来标记数据.定义数据类型,是一种允许用户对自己的标记语言进行定义的源语言. XML是标准通用标记语言 (SGML) 的子集,非常适合 Web 传输.XML 提供统一的方法来描述和交换独立于应用程序或供应商的结构化数据. 用途: XML设计用来传送及携带数据信息,不用来表现或展示数据,HTML语言则用来表现数据,所以XML用途的焦点是它说明数据是什么,以及携带数据信

XML技术入门讲座(1)

xml   XML(eXtensible Markup Language,可扩展置标语言)是由W3C(World Wide WebConsortium,互联网联合组织)于1998年2月发布的一种标准,同HTML一样是SGML(Standard Generalized MarkupLanguage,标准通用置标语言)的一个简化子集.由于它将SGML的丰富功能与HTML的易用性结合到了Web的应用中,自推出以来,迅速得到软件开发商的支持和程序开发人员的喜爱,显示出强大的生命力.  由于XML较好地解

ASP.NET中用OWC10及XML技术实现

asp.net|xml 摘要: 应用组件编程是C#的主要方面,本文结合作者在项目开发中的实际经验,通过一个具体实例来阐述调用组件OWC10和使用XML技术来绘制各种动态统计图,折线趋势图的方法和技巧.关键词:C#,ASP.NET,.NET SDK,OWC10,组件编程,XML,B/S模式,COM,服务器端,类,属性1 前言随着WWW的发展,愈来愈多的信息系统,专家系统开发采用浏览器/服务器(B/S)模式.自微软(Microsoft)公司在2002年3月推出.net之后,由于快速,高效,方便等特性

XML技术入门讲座(2)

xml <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />  XML的文档格式 首先介绍XML文档内容的基本单元--元素,它的语法格式如下: 〈标签〉文本内容〈/标签〉 元素是由起始标签.元素内容和结束标签组成.用户把要描述的数据对象放在起始标签和结束标签之间.例如: <姓名>王平</姓名> 无论文本内容有多长或者多么复杂,XML元素中还可以再嵌套别

XML技术入门

xml   应用与开发 编者按:XML(eXtensible Markup Language,可扩展置标语言)是由W3C(World Wide Web Consortium,互联网联合组织)于1998年2月发布的一种标准,同HTML一样是SGML(Standard Generalized Markup Language,标准通用置标语言)的一个简化子集.由于它将SGML的丰富功能与HTML的易用性结合到了Web的应用中,自推出以来,迅速得到软件开发商的支持和程序开发人员的喜爱,显示出强大的生命力