关于XML的一些概念性问题。明天下午18:30结帐......(300分)

  • 主题发起人 沈前卫
  • 开始时间

沈前卫

Unregistered / Unconfirmed
GUEST, unregistred user!
估计明天考试要考到,各位,请给我上上XML的课???
btw:
顺便预测一下还会考到什么知识???
 
前卫兄:
上面300分的问题是我的,参观一下吧
 
我看到一篇……
XML的二十个热点问题(上)
翻译:Chen Zhihong
  这些日子,几乎每个人都在谈论XML (Extensible Markup Language),但是很
少有人真正理解其含义。XML的推崇者认为它能够解决所有HTML不能解决的问题,让
数据在不同的操作系统或应用之间进行灵活交换。确实,所有的观察家们都同意XML
将引发一场内容发布和知识交换的革命。谁先进入这个领域,谁就能够大获其利。
  这里的20个有关XML的热门问题能够让你成为一XML“专家”,或至少让你能够在
今后看准XML的发展方向。
1.什么是XML?
  XML开发者会告诉你XML不是一种语言,而是一个定义其他语言的系统. 你可能已
经听说过, 或使用过这些语言中的一种,--如Microsoft支持"推技术" 的 Channel
Definition Format (CDF).
  正从事于XML相关建议工作的W3C, 称XML为"表达数据中结构 的共同语法". 结构
化的数据指的是其内容,意义或应用被标记的数据. 例如, HTML中< H1>标记指定文本
为某一字体和大小, XML的标记将明确确定信息的种类: < BYLINE>标记可以识别文档
的作者, < PRICE>标记可以在一个存货清单中包含某一项目的成本 .
  通过将结构,内容和表现分离, 同一个XML源文档只写一次, 可以用不同的方法表
现出来: 在计算机屏幕上, 在手提电话显示屏上, 在为盲人服务的设备上翻译成语
音, 等等. 它可以在可能开发的任何通讯产品上工作. 一个XML文档因此可以比其书
写时的作者和显示技术生存得更久.
  所以, XML将不仅限于Internet, 例如, 可以服务于整个出版业, 特别是对于想
制作可出现在多种媒体上的文档的人. 一些使用Standard Generalized Markup
Language (SGML)多年的大型文档出版商将转向XML. 还有, 独立于平台的XML是为
Web开发的, 这是它将最具影响的地方.
  DOM
  XML在Web的真正实力在于它是如何与Document Object Model (DOM)交互的.
DOM是定义访问文档中数据的机制的界面.
  使用DOM, 程序员可以用一个标准的方法写动态的内容. 换句话说, 他们可以使
用它来使浏览器文档树中的一部分特定内容按照一定的方式表现, 例如, 产生一个小
效果, 当用户将鼠标移至文字上时, 这些文字变成蓝色. Netscape Navigator 和
Microsoft Internet Explorer 都有他们各自的DOM ,但是他们都称将在其下一版
本的浏览器中支持W3C 的标准DOM.
2.XML何以重要?
  Web领袖之间的说法是内容至上.不幸地, 内容经常和其表现紧密结合. 请问你多
少次在一个网站上遇到一个小小的提示, "最好在800x600像素的分辨率上显示"?
  XML将帮助解决以上问题, 因为网站建造者不用再指明在哪里显示什么, 而是指
明文档 的结构. 例如, 你可以说明文档的标题, 作者, 关联文档的清单, 等等. 然
后, 任何一个有XML浏览器的设备都可以给出最适合它的文档版本, 这样的设备可以
是一个掌上型计算机, 置顶盒, 或高速的工作站.
  但是, 也许XML的最佳特性是其内在的可扩展性. 公司和组织能够扩展XML来满足
新的挑战和应用. 一个基于XML的语言已经在使用--微软的Channel Definition
Format (CDF)-- 还有更多将出现, 包括 Resource Definition Format (RDF)
和 Open Software Description (OSD).
  XML 也允诺成为交换数据和文档的标准机制. 例如, XML可能成为不同厂商的数
据库在Internet上交换信息的一种方法.现在准确地决定XML的方向还有一些早. 但
是, 其各种可能性是令人敬畏的,这就是为什么围绕着XML有如此多的激动的一个重要
原因.
3.SGML、HTML和XML有什么联系?
  Standard Generalized Markup Language (SGML) 是在文字处理应用中表达
数据的一个方法. 它已经出现十多年了, XML 和 HTML 都是从SGML 发展而来的文
档形式. 因此, 它们都有一些共同点, 如相似的语法和带括弧的标记符的使用. 但
是 HTML 是SGML的一个应用, 而 XML是SGML的一个子集.
  区别是重要的. 基本上HTML不能用来定义新的应用, 而XML可以. 例如,
Resource Description Format (RDF) 和 Channel Description Format (CDF)
都是使用XML定义的应用. XML和HTML更象表兄弟, 而不是亲兄弟.
  事实上, XML和SGML是兼容的 -- XML文档可以通过任何SGML制作或浏览工具阅
读. 但是, XML没有SGML那么复杂, 它是设计用于有限带宽的网络的, 如Internet.
XML规范的合作者Tim Bray说, XML的设计出发点是取SGML的优点, 去除复杂的部
分, 使其保持轻巧, 可以在Web上工作.
  HTML,SGML和XML将继续用于其合适的地方, 它们中的任何一个不会使其他一个
废弃. HTML仍是在Web上快速出版数据的最简单的方法, 大部分短期的数据, 如会议
议程或广告宣传册. 如果数据会长期使用, 并且需要更多的一些结构, Web建造者将
愿意使用XML. 不同于HTML和XML, SGML可能永远不会在Internet上被广泛接受, 因
为它从来没有为某个网络协议的需求而设计或优化过. 对于高端的, 复杂结构的出
版应用, SGML将继续适用.
4.如何实现XML?
  XML将以几个不同的方式应用. 一个是在人机之间交换数据, 如从Web服务器至
用户的浏览器. 另外一个是在不同的应用之间交换数据, 或者是机器之间交换数据.
  在这些情况下, 你都可能需要三层架构: 后端数据库, 针对数据的处理逻辑的中
间层服务器, 以及数据进一步显示和处理的客户端. 数据库可以从多个数据来源接收
信息, 可能已经是XML格式的数据. 中间层然后聚拢数据并在最终的表现层上公布.
  现在, 网页有时候以这种方法传送 --CNET的NEWS.COM 从一个数据库中发表数
据. 但是要获得一页的新的视图, 如NEWS.COM的新的“打印机友好”选项, 服务器
必须产生一个新的页面. 一份适当格式化的XML文档将允许客户端的应用为不同的媒
体修改文档的表现形式, 比如为打印机.
5.什么是DTD?
  文档类型定义 (DTD) 是一套关于标记符的语法规则. 它告诉你可以在文档中使
用哪些标记符, 它们应该按什么次序出现, 哪些标记符可以出现于其它标记符中,
哪些标记符有属性, 等等. DTD原来是为使用SGML开发的, 它可以是XML文档的一
部分, 但是它通常是一份单独的文档或者一系列文档
  因为XML本身 不是一种语言, 而是定义语言的一个系统, 它没有象HTML 一样
拥有一个通用的DTD. 相反, 想使用XML进行数据交换的工业或组织可以定义它们自
己的DTD.
  如果一个组织想用XML来标识仅在内部使用的文档, 它可以创造自己私有的DTD.
比如 Wall Street Journal Interactive Edition 拥有一个 DTD 来详细说明每
一版, 其中有关于页, 文章, 概要, 标题下署名等等的信息. 刊物目前使用SGML
DTD (称作Dow Jones Markup Language), 但是它也正在开发一个XML版本.

  关于DTD并不是没有争议的. 一些人感到它给商业业务增加了实实在在的价值,
而一些人感觉它限制了创造性. 还有一些人认为DTD有用, 但是还做得不够. 微软正
尝试用它的XML数据提议来解决上一个抱怨, 但是批评者说这些改进应该在DTD规范
本身进行.
  微软的schema
  一些供应商, 包括微软, 已经提议了替代DTD的一个方法, 称为schema. 他们
已经将其以XML数据提交给了W3C. 就象DTD, schema提供了文档的规则, 并指出用
什么标记符, 标记符的属性, 之间的联系, 等等.
  但是, 不同于DTD, schema可以定义数据类型. 例如, DTD可能有一个标记
符 , 而标记符之间的内容可以是数字或字符串. Schema 可以规定只输入数字.
  这个方法显然有其优点, 特别是用于应用,对象,或数据库之间的数据传输. 唯
一的问题是它将成为DTD规范, 还是XML的一个扩展.
6.什么是格式完整和有效的文件?
  基本上有两类相关的XML文档: 构造良好的和有效的. 构造良好的 XML文档遵守
XML语法的一般规则, 这些规则比HTML和SGML的更为严格. XML的字符数据决不会吊
在那里, 没有某种结束标识符, 或者是象< MYTAG>< /MYTAG> 成对出现的 结束标
识符, 或者是一个特别的在右尖括弧前带有一个斜杠的 空元素 标记, 比如
< MYTAG/>;
XML 标识总是以左尖括弧或 &amp;
开始;
元素类型和属性名称是大小写区分的;
属性需要引号;
等等.
  有效的 XML 文档遵守某个特定的 文档类型定义 (DTD). 确认XML文档正确性的
工作主要由制作出版工具承担, 而XML浏览器为读取XML文档, 只需要检查其构造的良
好性. 这样, 制作工具中的解析器得要检查构造良好性 和 有效性, 而浏览器仅要考
虑寻找已经构造良好的XML.
7 如何在浏览器中阅读XML?
  阅读XML文档的工具一般称为XML解析器, 虽然其更正式的名称是XML处理器. XML
处理器将数据传送到应用软件, 以做制作, 出版, 查询, 或显示. XML不给应用软件
提供 应用程序接口 (API), 它只是把数据传给应用软件. XML处理器不解析非构造良
好的数据. Netscape 和 Microsoft 都已经将XML解析器包含在其浏览器中, 或正计划将其包含到浏览器中.
  XML开发者团体提供免费的XML阅读器和解析器, 来应用到应用软件或XML制作软
件:
  Textuality的 Lark, 来自XML规范的作者之一.
  Microstar Software的 ?lfred, 一个基于Java的解析器.
  DataChannel的 DXP, 前身为著名的NXP, 或已经增加了API的Norbert的
(Mikula) XML 解析器.
8 RDF和XML有何联系?
  如果XML是说语言的能力, XML应用软件则是特定的语言. 资源描述格式
(Resource Description Format RDF) 是这样的一个应用软件: 使用XML语法的
数据建模语言.
  RDF是描述和访问数据的一个方法. 这意味着RDF是关于数据的数据, 或者说元
数据. 在Web中, 这些元数据将被用于建立标准的站点地图, 更精确的搜索结果,
和分层次的主题索引.
  RDF也允许智能书签, 当被索引的网页变化时,书签随之发生变化. 如果你跟踪
内容定期更新的站点, 比如CNET的 NEWS.COM, 将很有用.
  对于网站建造者, 建立可被搜索引擎引用的其网站内容的元数据并不困难. 我
们很快就会有商业化的软件, 来自动产生给定站点的RDF文件.
  XML元数据也将活跃描述和评估数据的市场. 有许多评级机构 在网上出现, 他
们评估一切数据, 从保护孩子安全的站点到最佳电影或葡萄酒站点. RDF描述评级
机构可以使用的等级的语法. 人们将选择有他们感觉最合适的词汇表的评级机构,
词汇表指的是评级机构给不同类型内容评级使用的特别的一套术语 -- 从性和暴力
到葡萄酒酸度.
9 Netscape浏览器中如何实现XML?
  Netscape将在Communicator/Navigator 5.0中以一个代号为Aurora的交付部
件来支持XML元数据. Aurora利用RDF 来获得Netscape所说的"桌面信息全面集成."
  Aurora在网络, 桌面和数据库之间查找和管理信息. 它将在桌面上以"窗口"菜单
的界面出现, 会聚集指向当前项目, 研究主题, 或日常活动等资源的指针. RDF使
Aurora的导航条指向不同数据类型(文字处理文档, 表格数据, 电子邮件消息, 数据
库内容)的本地文件, 也指向Internet 或 intranet 服务器上的资源(搜索和查询的
结果, 书签链接, 等等).
  一个读取RDF的XML解析器将是 Netscape 5.0 版浏览器的一部分, 并且在最终
产品交付之前会出现在某个beta版本中. 除了这个初始的RDF实现, Netscape正计划
将一个通用的XML解析器包含在浏览器中, 而其浏览器可以和其他的XML应用软件一起
工作, 比如 Shakespeare markup (一个早期的 XML 应用软件), Chemical
Markup Language (CML), 和 MathML, 一个正成为W3C推荐的数学标识语言.
  "我们要使 Navigator 成为一个 XML 平台," Netscape 原理工程师R.V. Guha
说. Guha 原来开发过 MCF (MetaContent Format), MCF 后来加入了RDF规范.
10 Microsoft浏览器中如何实现XML?
  微软的 Internet Explorer 4.0 是第一个实现XML的 Web浏览器. 微软提供了
一对XML处理器: 浏览器所携带的用C++写的解析器, 和一个Web建造者可以从中下载
和加入他们自己的应用程序的Java解析器的源代码.
  Java解析器是一个有效的 解析器, 就是说它根据一个文档类型定义 (DTD) 或
schema 来进行检查. 为了提高性能, 浏览器所带的C++ 版的解析器是一个非有效的
解析器.
  据微软的产品经理Steve Sklepowich称, 这两个解析器都是"通用的", 因为它
们不依靠特定的XML应用, 如Channel Definition Format. 由于XML数据和其表现
分离, 在一个Web浏览器本身实际显示XML的能力需要 style sheet, 例如 XSL
(Extensible Style Language).
  同时, 微软使用了它所称的XML Data Source Object, 或叫 XML DSO. 它应用
了动态 HTML的数据捆绑能力, 将一端的XML数据和另一端的HTML数据相链接. (关于
数据捆绑的例子, 可以查看 BUILDER.COM 的 Browser Play ground.) IE 4.0 访
问XML文档, 从中查询数据, 然后作为HTML显示出来.
  微软也使用了 XML Object Model (XML OM)来让开发者与浏览器中的XML数据
进行交互. 它的实现是通过将HTML作为基于Document Object Model (DOM)的对象
显现, 尽管HTML 和do
M 并非直接兼容.do
M 让脚本和程序访问结构化的XML数据.
  Sklepowich说, 虽然目前在微软, XML的重心在浏览器, XML将最终出现在"任何
HTML已经出现了的地方". CEO Bill Gates 已经公开宣布微软Office 未来的版本将
支持 XML, 而且公司也计划支持电子邮件包和制作XML工具的标准.
 

 
谢谢wjiachun,是不是还有"中","下"呢

LeeChange
>上面300分的问题是我的,参观一下吧
在哪里呀???
 
顺便问,XML用什么编辑比较爽一点?
 
其实我在一年以前都关注过此技术。 XML有一些专用的编辑器,我还下载过.
 
潮——席卷全球的XML技术
作者: 许慎 朱麟
  网络技术发展到今日,的确已渗透到社会生活的每一个角落。而令网络如此平易近人,为大众所接受,单靠TCP/IP是远远不够的,由此,HTML——超文本标识语言便应运而生,并以其简单精练的语法、极易掌握的通用性与易学性,使WEB网页可以亲近于每一个普通人,互联网也才得以普及发展以至今日的辉煌。
  然而,电子商务、电子图书、远程教育等全新领域如异军突起,迅猛发展并逐渐成为互联网世界必不可少且愈发重要的组成部分,随之而来的是WEB文件的复杂化、多样化、智能化,于是高容量、高信息量、高效率便成为网络信息传输技术发展的追求。与此同时还有另一种需求变得愈发广泛而迫切,那便是同样的数据能否根据不同用户不同需求而以不同的效果、形式表达、再现出来。举一个简单的例子。假设我们要在网上拍卖一幅油画,而在一个WEB文件中包含了有关这幅油画的全部信息,包括油画名称、油画简介、作者名称、作者简介、拍卖行信息、拍卖底价、各竞价方名称、各竞价方出价、最高价等等。而在客户端有各种用户,如拍卖行的经纪人,他并不需要任何有关油画本身的信息,而只需看到一个包含所有竞价方及其竞价的统计列表;而那些竞价方则希望看到自己喜欢的有关油画的资料,他们有的喜欢作者,有的喜欢油画的内容,有的则只喜欢画的色彩等等;另外一些"穷光蛋”也许只想过过眼瘾,看看油画即可;也许还有一些“别有用心”的人,他们根本就不关心什么油画、拍卖,只想让计算机接收到这个文件后能够自动地将其分门别类,放到自己与之相对应的数据库中。这样一来,这个WEB文件必须具有极高的复杂性与灵活性,以应付如此复杂多变的具体应用。HTML所欠缺的恰恰就是这一点,它的简单与普遍性原则虽曾使WEB的推广受益匪浅,但反过来也成为其发展的最大的桎梏,尽管人们已付诸很多努力,包括各式各样的修改扩充,如增加表格、框架、脚本语言等等,但均未能从根本上改变HTML的局限性。于是人们开始全力重新构造WEB,并相继诞生了许多新的技术,但由于种种原因大都没能普及而生存下来。唯有一项,不仅在使用中得到各方肯定,更在短短两年内迅速崛起,并得到Microsoft、 IBM等各大公司的全力支持,竞相开发,成为一股不可遏抑的席卷全球的浪潮,这便是XML——可扩展标识语言。
  XML是互联网联合组织(W3C)创建一组规范,以便于软件开发人员和内容创作者在网页上组织信息,其目的不仅在于满足不断增长的网络应用需求,同时还希望借此能够确保在通过网络进行交互合作时,具有良好的可靠性与互操作性。
  与HTML一样,XML也源自SGML(Standard Generalize Markup Language一种老资格的通用标记语言),它保留了SGML 80%的功能,使复杂程度降低了20%,尽管如此,XML却有着HTML语言所欠缺的巨大的伸缩性与灵活性。XML不再象HTML一样有着一成不变的格式。XML实际上是一种定义语言,即使用者可以定义无穷无尽的标记来描述文件中的任何数据元素,从而突破了HTML固定标记集合的约束,使文件的内容更丰富更复杂并组成一个完整的信息体系。
  XML语言可以让信息提供者根据需要,自行定义标记及属性名,也可以包含描述法,从而使XML文件的结构可以复杂到任意程度。XML主要有三个要素:Schema(模式)、XSL(eXtensibleStylesheetLanguage可扩展样式语言)和XLL(eXtensibleLinkLanguage可扩展链接语言)。Schema规定了XML文件的逻辑结构,定义了XML文件中的元素、元素的属性以及元素和元素的属性之间的关系,它可以帮助XML的分析程序校验XML文件标记的合法性;XSL是用于规定XML文档样式的语言,它能在客户端使Web浏览器改变文档的表示法,从而不需要再与服务器进行交互通信;XLL 将进一步扩展目前Web上已有的简单链接。
  良好的数据存储格式、可扩展性、高度结构化、便于网络传输是XML主要的四大特点,决定了其卓越的性能表现。由于XML能针对特定的应用定义自己的标记语言,这一特征使得XML可以在电子商务、政府文档、报表、司法、出版、联合、CAD/CAM、保险机构、厂商和中介组织信息交换等领域中一展身手,根据不同的系统、厂商提供各具特色的独立解决方案。
  总的说来的XML的应用可分为四类:
  一、应用于客户需要与不同的数据源进行交互时。数据可能来自不同的数据库,他们都有各自不同的复杂格式。但客户与这些数据库间只通过一种标准语言进行交互,那就是XML。由于XML的自定义性及可扩展性,它足以表达各种类型的数据。客户收到数据后可以进行处理,也可以在不同数据库间进行传递。总之,在这类应用中,XML解决了数据的统一接口问题。但是,与其他的数据传递标准不同的是,XML并没有定义数据文件中数据出现的具体规范,而是在数据中附加tag来表达数据的逻辑结构和含义。这使XML成为一种程序能自动理解的规范。
  二、应用于将大量运算负荷分布在客户端,即客户可根据自己的需求选择和制作不同的应用程序以处理数据,而服务器只须发出同一个XML文件。仍以上例为论,如按传统的“客户/服务器”工作方式,客户向服务器发出不同的请求,服务器分别予以响应,这不仅加重服务器本身的负荷,而且网络管理者还须事先调查各种不同的用户需求以做出相应不同的程序,但假如用户的需求繁杂而多变,则仍然将所有业务逻辑集中在服务器端是不合适的,因为服务器端的编程人员可能来不及满足众多的应用需求,也来不及跟上需求的变化,双方都很被动。应用XML则将处理数据的主动权交给了客户,服务器所作的只是尽可能完善、准确地将数据封装进XML文件中,正是各取所需、各司其职。XML的自解释性使客户端在收到数据的同时也理解数据的逻辑结构与含义,从而使广泛、通用的分布式计算成为可能。
  三、应用于将同一数据以不同的面貌展现给不同的用户。这一应用也可在上例中体现出来。它又类似于同一个剧本,我们却可以用电视剧、电影、话剧、动画片等不同形式表现出来。这一应用将会为网络用户界面个性化、风格化的发展铺平道路。
  四、应用于网络代理对所取得的信息进行编辑、增减以适应个人用户的需要。有些客户取得数据并不是为了直接使用而是为了根据需要组织自己的数据库。比方说,教育部建立一个庞大的题库,考试时将题库中的题目取出若干组成试卷,再将试卷封装进XML文件,接下来便是最精彩部份,在各个学校让其通过一个过滤器,滤掉所有的答案,再发送到各个考生面前,未经过滤的内容则可直接送到老师手中,当然考试过后还可以再传送一份答案汇编。此外,XML文件中还可以包含进诸如难度系数、往年错误率等其他相关信息,这样只需几个小程序,同一个XML文件便可变成多个文件传送到不同的用户手中。
  XML的诸多优点及先进性实在令其光芒四射,备受网络开发者的青睐,微软、IBM无不对之秋波频频,大有得XML者得天下之势。尤其是微软公司行动如疾风闪电,XML1.0刚一出笼它便急不可待地吞了下去,未来的OFFICE2000、Windows2000都将完全采用XML格式,而IE4.0、IE5.0则早已金屋藏娇了。商业公司如此,国外的研究机构更加钟情有甚,如W3C(万维网联盟)、www.gca.org、www.irt.org等等,各类XML站点如雨后春笋、层出不穷。W3C正在号召全世界的开发人员共同对XML进行定义和开发,XML正走着与LINUX相同的发展道路,但它生逢其时,势必将比LINUX更加成功。
  国外XML技术正发展得如火如荼,而国内呢,却依旧一派悄然。发展民族产业一味畏缩于国家保护的襁褓之内是永无出头之日的,永远只能是一个“大男婴”,稍经挫折,势必夭折;发展民族产业单靠豪言壮语、满腔激情是远远不够的,必须靠敏锐的思维、超前的意识方能取胜;发展民族产业单单依赖政策的开放是远远不够的,思想上的开放、不断学习世界最新的技术,永远走在世界前列,这才是成功的关键。XML技术虽然发展迅猛,但其应用仍处于初级阶段。换句话说,我们现在奋起直追,尤为未晚。

--------------------------------------------------------------------------------

本文章版权归中国XML联盟所有,未经同意不得随意转载,
[关闭本窗口]

构造未来Web页面的工具语言 ----- XML
叶文川

1 Web热

2 用户还不能满意现在的Web

3 XML产生的背景

4 什么是XML

5 支持XML的公司和它们的开发工具

6 XML展望

Web热
  Internet已经有20多年的历史了,近几年才出现了Internet热,这主要应归功于Web。Internet提供了世界范围内网络互连和通信功能,Web则是一个环球信息资源库。Web由无数的页面(Home page主页)组成,页面上的信息包罗万象,而且时时在增加,天天在更新。用户只要打开浏览器就能得到他们感兴趣的资料。Web的易用性使千家万户都能共享 Internet上巨大的信息资源。时下,人人都在谈论Web和主页,翻开报纸或新闻杂志,几乎每天都要提到Web和主页。从一个小商店到一个大公司,从研究机关到学校,无不骄傲地向他人显示着自己的主页和 Web 地址。Web和主页已经成为计算机和通信领域乃至全社会的热点。

用户还不能满意现在的Web

  到目前为止,几乎所有的Web页面都是用HTML编写的。HTML简单易学又通用,句法简明紧凑,加上其扩充的表格、帧、脚本等功能,使它得以在Web主页上大显身手。但是随着Web应用的越来越广泛,HTML过于简单的弱点也越来越明显了。
  1.链路丢失后不能自动纠正。 由于许多页面的URL地址经常变化,当你浏览这些页面时就会遇到烦人的404 URL地址未找到的信息。所以你不得不手工一个个地更改链接相关页面的URL地址,这大大加重了Web页面的维护工作量。
  2.动态内容需要下载的部件太多。用HTML建立的页面目前还不能对其页面的外观属性,例如色彩、字体、背景等实现更新,你只能重新下载一个新的页面或Java部件。但Java保存的数据搜索引擎是无法访问的,所以在HTML页面中使用Java来显示动态内容也不是灵丹妙药。
  3.搜索时间长。由于HTML页面没有类似于数据库的结构,在这样的文档资料中搜索目标时需要对全部页面的所有内容扫描,往往检索出一大堆与主题词无关的内容, 这是因为HTML无法区分信息与元信息而造成的。而且HTML不支持信息嵌套体系结构,因而限制了全文检索功能。
  4. HTML缺乏对双字节或多国文字的支持,或者说支持不够。例如中文信息页面在不同的平台下会出现格式不齐等问题。
  5. HTML可扩展性差。科学家无法用HTML书写数学公式、化学方程式以及分子晶体结构。
  正是由于这些缺点,人们已经开始研究能改进或替代HTML的Web页面制作语言。其中最有成效的,并已初步投入使用的有:可扩展标记语言——Extensible Markup Language简称XML、叠式页面——Cascading Style Sheets简称CSS以及动态HTML即DHTML。这些语言从不同角度解决了HTML存在的问题:XML有利于信息的表达和结构化组织,从而使数据搜索更有效;CSS解决Web页面的继承和显示;DHTML则主要用于Web页的动态显示问题。本文着重介绍可扩展标记语言XML。
XML产生的背景

  XML同HTML一样,都来自Standard Generalized Markup Language, 即标准通用标记语言,简称SGML。早在Web未发明之前,SGML就早已存在。正如它的名称所言,SGML是一种用标记来描述文档资料的通用语言,它包含了一系列的文档类型定义(简称DTD),DTD 中定义了标记的含义,因而 SGML 的语法是可以扩展的。SGML十分庞大,既不容易学,又不容易使用,在计算机上实现也十分困难。鉴于这些因素,Web的发明者——欧洲核子物理研究中心的研究人员根据当时(1989年)计算机技术的能力,提出了HTML语言。
  HTML只使用SGML中很小一部分标记,例如HTML 3.2定义了70种标记。为了便于在计算机上实现,HTML规定的标记是固定的,即HTML语法是不可扩展的,它不需包含DTD。HTML这种固定的语法使它易学易用,在计算机上开发 HTML的浏览器也十分容易。正是由于HTML的简单性,使 Web 技术从计算机界走向全社会,走向千家万户,Web的发展如日中天。
  近年来,随着 Web的应用越来越广泛和深入,人们渐渐觉得HTML不够用了,HTML过于简单的语法严重地阻碍了用它来表现复杂的形式。 尽管HTML推出了一个又一个新版本,已经有了脚本、表格、帧等表达功能,但始终满足不了不断增长的需求。另一方面,这几年来计算机技术的发展也十分迅速,已经可以实现比当初发明创造HTML时复杂得多的Web浏览器,所以开发一种新的Web页面语言既是必要的,也是可能的。
  有人建议直接使用SGML 作为Web语言,这固然能解决HTML遇到的困难。但是SGML太庞大了,用户学、用不方便尚且不说,要全面实现SGML的浏览器就非常困难,于是自然会想到仅使用SGML的子集,使新的语言既方便使用又实现容易。正是在这种形势下,Web标准化组织W3C建议使用一种精简的SGML版本——XML应运而生了。

什么是XML

  XML是一个精简的SGML,它将SGML的丰富功能与HTML的易用性结合到Web的应用中。XML保留了SGML的可扩展功能,这使XML从根本上有别于HTML。XML要比HTML强大得多,它不再是固定的标记,而是允许定义数量不限的标记来描述文档中的资料,允许嵌套的信息结构。HTML只是Web显示数据的通用方法,而XML提供了一个直接处理 Web 数据的通用方法。HTML着重描述Web页面的显示格式,而XML着重描述的是Web页面的内容。让我们先来看一看用XML描述天气预报的实例:
 <weather?report>
  <date>March 25, 1998</date>
  <time>08:00</time>
  <area>
   <city>Seattle</city>
   <state>WA</state>
   <region>West Coast</region>
   <country>USA</country>
  </area>
  <measurements>
   <skies>partly cloudy</skies>
   <temperature>46</temperature>
   <wind>
   <direction>SW</direction>
   <windspeed>6</windspeed>
  </wind>
  <h?index>51</h?index>
  <humidity>87</humidity>
  <visibility>10</visibility>
  <uv?index>1</uv?index>
 </measurements>
</weather?report>
  为了使编写的Web页面成为有效的XML文档,文中每一添加的标记必须记入一个独立的DTD文件中。当客户浏览天气预报文档时,相关的DTD文件是随着文档一起下载到客户端,客户浏览器就懂得怎样来处理它们,例如你可以从几个天气报告中计算出平均温度等,最后将结果显示出来。
  DTD文件使XML页面能包含更多的内容,表现更复杂的形式。从实例中也可以看出XML页面信息是结构化的,有些与数据库结构类似,因而更具访问性,其检索结果更有针对性、更准确。
  另外你也可以将URL地址定义在DTD文件中,当Web主页地址发生变化时,你只需改动DTD文件中的定义即可,而不必一一在HTML文档中改变URL地址,从而使Web的维护更方便,用户也不会遇到URL地址找不到的信息,这样一来,Web的应用更稳定。
  并不是所有的DTD文件都要下载到客户端,已经制订成为标准的协议,例如在后面第六点中提到的化学标记语言CML、数学标记语言MML等是不需要DTD文件的。
  除了DTD外,XML中还包括可扩展格式语言XSL(Extensible Style Language) 和可扩展链接语言XLL(Extensible Linking Language)。
  XSL用于将XML数据翻译为HTML或其他格式的语言。XSL提供了一种叠式页面CSS的功能,使开发者构造出具有表达层结构的Web页面来,以有别于XML的数据结构。XSL也能和HTML一起构造叠式页面。XSL可以解释数量不限的标记,它使Web的版面更丰富多彩,例如动态的文本、跑马式的文字。此外,XSL还处理多国文字、双字节的汉字显示、网格的各种各样的处理等。
  XLL是XML的链接语言,它与HTML的链接相似,但功能更强大。XLL支持可扩展的链接和多方向的链接。它打破了HTML只支持超级文本概念下最简单的链接限制,能支持独立于地址的域名、双向链路、环路、多个源的集合链接等。XLL链接可不受文档制约,完全按用户要求来指定和管理。
  为了使XML易学易用,XML精简了一大片SGML难得用一次的功能。正如几十万汉字中常用的只不过八千,SGML常用的部分只占20%,XML抛弃了SGML中不常用的部分,使它一下就精简了80%。这样一来,XML的语法说明书只有30页,而SGML却有500页。
  XML设计中也考虑了它的易用性,易用性来自两个方面:一方面用户编写Web页面方便,另一方面设计人员实现XML浏览器也不太困难。
  总之,XML使用一个简单而有灵活的标准格式,为基于Web的应用提供了一个描述数据和交换数据的有效手段。HTML描述了显示全球数据的通用方法,而XML提供了直接处理全球数据的通用方法。

支持XML的公司和它们的开发工具

  尽管XML还处在开发阶段,其标准正在由W3C组织制定,但是已经有许多公司表示全力支持XML,并开发了不少XML工具。Adobe公司的FrameMaker可以用来书写XML文档。Microsoft公司推出的IE 4.0已经可以显示、处理和编辑XML文档,Microsoft公司作出承诺,要在下一个版本的Office 软件如MS Word、Excel中支持XML。Netscape、Sun公司也不甘寂寞,纷纷表示要在他们的Web工具中支持XML。除了这些著名的公司有所行动外,其他小公司也把XML 作为一种商机,纷纷投入到XML的开发工作中。例如ArborText 公司的Cedar项目旨在开发XSL;ArborText公司和Microsoft公司一起向W3C提出了XSL的标准草案;Grif公司的Symposiado
c+则是一个编辑XML文档的可见即可得的工具。此外还有Copsol公司的XML开发工具,Norbert公司的XML句法分析器,Jade公司的XSL工具包以及支持客户/服务机应用的Serucie 98等。

XML展望

   任何一项新技术的产生都是有其需求背景的,XML的诞生是在HTML遇到不可克服的困难之后。近年来HTML在许多复杂的Web应用中遇到了问题,要彻底解决这些问题,必须用功能强大的XML来替代HTML作为Web页面的书写工具。XML有利于信息的表达和结构化组织,从而使数据搜索更有效;XML可以使用URL别名使 Web的维护更方便,也使Web的应用更稳定;XML可以使用数字签名使Web的应用更广阔拓展到安全保密领域。可以认为未来的Web书写工具必定是XML。而XML的广泛使用必然能推动Web不断发展,从而开创Web应用的新时代。
  Web的应用将随着XML的使用而更精彩,以下是可以预见的XML的几种应用。
  XML/EDI电子数据交换
  EDI(Electronic Data Interchange)是用电子技术代替基于纸张的操作手段,用于公司之间的单据交换。XML的丰富的格式语言可用来描述不同类型的单据,例如信用证、贷款申请表、保险单、索赔单以及各种发票等。结构化的XML文档送至Web的数据可以被加密,并且很容易附加上数字签名。XML的安全保密措施可在EDI的应用中充分显示它的魅力,XML有希望推动EDI的大规模的应用。
  化学标记语言CML和数学标记语言Math ML
  CML(chamical Markup Language)和Math ML(Mathematical Markup Language)是XML应用于描述化学和数学公式的标记语言。CML可描述分子与晶体结构、化合物的光谱结构等。而Math ML则是数学家的福音,自Web问世以来,数学家们第一次可以使用Math ML将数学公式精确地显示在浏览器上。
  开放式软件描述格式OSD
  和EDI的命运相仿,软件包的上网发行一直处于试行阶段。OSD(Open Software Descriptipon)是XML的一组用来描述各种软件产品的标记集,可以详细说明软件的规格、使用说明以及可运行平台等。
  通道定义格式CDF
  通道定义格式CDF(Channel definition format)是Microsoft在IE 4.0浏览器中使用的XML数据格式, 用于描述活动通道的内容和桌面部件,指明通道的信息及其更新情况。CDF 使不同平台的互操作成为可能,使Web发布者可以控制推(push)技术。专用的推技术将不再影响不同推技术的互操作性,这样一来,从互不兼容的平台上可以获得相同的Web内容。
  开放式财务交换OFX
  OFX(Open Financial Exchange)也是XML的一种标记集,用于描述会计事务所与客户之间的业务往来。使用OFX,客户与会计事务所之间可以直接交换财务数据,包括电子银行和支付协议等说明文件。
  为了推动XML的使用,W3C已经批准了XML标准1.0版本,相信XML 1?0的颁布会带动大批高级的Web应用,用户必须从现在起开始考虑用XML来书写Web页面。但是XML的大量使用并不意味着HTML会马上消亡。习惯的势力是强大的,正如Cobol语言在很长的一段时间里没有退出历史舞台一样,由于现存的大量的Web页面都是用HTML书写的,HTML决不会轻易退出使用。可以预计,在未来的5年内,XML将和HTML携手并肩共同使用在Web应用的不同领域中。

--------------------------------------------------------------------------------
本文章版权归中国XML联盟所有,未经同意不得随意转载,
[关闭本窗口]



 
XML简明教程
翻译:褚健
1 处理XML元素
2 处理XML文档

3 处理XML数据岛
4 类似于文档对象访问一个XML数据岛
5 访问XML对象模式
6 在XML文档中使用数据类型
7 访问经过类型定义的XML值
8 XML Schema
处理XML元素
XML是一种标识语言。一个XML元素是由开始标签、结束标签以及标签之间的数据构成的。开始和结束标签用来描述标签之间的数据。标签之间的数据被认为是元素的值。例如,在下面一个XML元素的例子中,元素“director”的值是“&amp;Eacute;d Wood”。

<director>Ed Wood</director>

元素名(“director”)允许你把“Ed Wood”这个值标出来,这样你就能把这些数据同另外类似的数据区分开来。例如,有可能另一个元素的值也是“Ed Wood”。

<actor>Ed Wood</actor>

由于每个元素都有不同的标签名,所以你能很容易把上面两个元素的值区别开来。如果没有办法把数据标出来,两个有同样值的元素会混淆起来。

返回
处理XML文档
一个基本的XML文档就是一个XML元素,它可以嵌套XML元素。例如,下面的XML元素“books”就是一个有效的XML文档。

<books>
<book isbn="0345374827">
<title>The Great Shark Hunt</title>
<author>Hunter S. Thompson</author>
</book>
</books>
构建一个基本的XML文档需要记住关键的三点:所有元素必须有结束标签;所有元素必须正确的嵌套(不允许交迭元素);所有特征值必须加引号。

返回
处理XML数据岛
什么是XML数据岛?
数据岛是指存在于HTML页面中的XML代码。数据岛允许你在HTML页面中集成XML,对XML编写脚本,不需要通过脚本或<OBJECT>标签读取XML。几乎所有能够存在于一个结构完整的XML文档中的东西都能存在于一个数据岛中。包括处理指示、DOCTYPE声明和内部子集。(注意,编码串不能放在数据岛中。)

数据岛的XML可以是内嵌的:

<XML ID="XMLID">
<customer>
<name>Herbert Hanley</name>
<custID>81422</custID>
</customer>
</XML>
或者在XML标签中通过SRC属性引用:

<XML ID="XMLID" SRC="customer.xml"></XML>
处理指导
简单处理XML。把XML放到一个XML元素中,并且给这个XML元素一个ID。

返回
类似于文档对象访问一个XML数据岛
什么是XML文档对象?
XML文档对象是指一个拥有属性和方法的对象,你可以利用这些属性和方法访问和处理XML文档。当一个XML数据岛被读取和解析时,就会创建一个XML文档对象。
怎样访问XML数据岛?
下面是一个带有数据岛的HTML页面。数据岛在<XML>元素中。

<HTML>
<HEAD>
<TITLE>HTML with XML Data Island</TITLE>
</HEAD>
<BODY>
<P>Within thisdo
cument is an XML data island.</P>
<XML ID="resortXML">
<resorts>
<resort>Calinda Cabo Baja</resort>
<resort>Na Balam Resort</resort>
</resorts>
</XML>
</BODY>
</HTML>
你能通过ID属性访问数据岛,“resortXML”成为文档对象的名称。你能利用这个对象的方法和属性访问它的根节点和孩子节点。在上面的例子中,根节点是<resorts>,孩子节点是<resort>。下面列出了一些属性和方法,可用来访问XML文档的节点。

XMLDocument:返回对XML文档对象模式的引用。

documentElement:返回XML文档的根节点。

childNodes:返回节点的孩子节点目录。

item:通过索引访问目录中的个别节点。索引值是从0开始的,所以item(0)返回第一个节点。

text:返回节点的内容。

下面的代码访问第二个孩子节点<resort>并返回它的内容“Na Balam Resort”。

resortXML.XMLDocument.documentElement.childNodes.item(1).text

返回
访问XML对象模式
什么是XML对象模式?
微软IE5中的XML解析器揭示了XML对象模式,允许你访问和处理XML文档中的节点。当解析器读取并且解析一个XML文档时,它将建立一棵节点树,每个节点都能通过脚本来访问。

例如,如果解析器读取并且解析下面的XML文档,它将创建一个能通过文档ID值(xmlDocument)被引用的文档对象,一个表现根节点的对象和一个表现树中其余节点的对象。
怎样访问树中的节点?
请试着在下面的数据岛中找出访问每个节点所需要的代码。

<XML ID="xmlDocument">
<class>
<student studentID="13429">
<name>Jane Smith</name>
<GPA>3.8</GPA>
</student>
</class>
</XML>
返回
在XML文档中使用数据类型
什么是XML文档中的数据类型?
微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术,它对于那些想要用schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制定逐步形成的W3C的XML Schema标准。开发者需要注意这个版本的XML Schema是要变化的。在微软IE5当中,元素值能被指定数据类型。数据类型能够通过XML Schema或根据实际情况被指定。以前,XML元素值只有一种类型(字符串),所以开发者要处理XML文档必须花时间转换元素值。键入你的XML数据,解析器会进行数据类型转换。另外,由于元素值有特定的数据类型,所以元素值的改变也要符合数据类型。这给你提供了一种确认使用者输入的方法。
如何指定XML元素值的类型?
通过XML Schema指定元素值的类型,你必须在XML Schema的开头声明数据类型的名域和schema的名域。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">

dt前缀用来在schema中表示指定数据类型的类型属性。

<ElementType name="NUMBER" content="textOnly" dt:type="number"/>

通过dt属性指定元素类型,你必须在XML文档的开头声明数据类型的名域。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">

dt前缀用来给一个元素的例子指定数据类型。

<NUMBERS xmlns:dt="urn:schemas-microsoft-com:datatypes">
<NUMBER dt:dt="number">44533</NUMBER>
</NUMBERS>
返回

访问经过类型定义的XML值
什么是经过类型定义的XML值?
经过类型定义的XML值是指在XML Schema中被指定数据类型的元素值。XML解析器使用schema来确认文档。

微软提供的XML Schema版本支持数据类型。作为一项预先展示的技术,它对于那些想要用schema和丰富的数据类型构造原型和增长经验的开发者来说是很有用的。微软积极参与制定逐步形成的W3C的XML schema标准。开发者需要注意这个版本的XML Schema是要变化的。

除了拥有字符串值以外,每个XML元素也可以有经过类型定义的值。例如下面的XML元素:

<date>1970-09-30</date>

值可以是“1970-09-30”,也可以是经过类型定义的“Web Sep 30 00:00:00 PDT 1970.”
如何访问经过类型定义的XML值?
可以通过XML对象模式访问经过类型定义的数据。就好象你能根据元素节点的节点值性质找到元素值一样,你能根据元素本身的节点类型值找到经过类型定义的元素值。

例如,考虑一下下面的XML文档:

<?xml version="1.0"?>
<weather xmlns="x-schema:weatherSchema.xml">
<date>1970-09-30</date>
<degrees>67.5</degrees>
</weather>
“weatherSchema.xml”是下面这个文件:

<Schema xmlns="urn:schemas-microsoft-com:xml-data"xmlns:dt="urn:schemas-microsoft-com:datatypes">
<ElementType name="date" content="textOnly" dt:type="date"/>
<ElementType name="degrees" content="textOnly" dt:type="float"/>
<ElementType name="weather" content="eltOnly"/>
<element type="date"/>
<element type="degrees"/>
</ElementType>
</Schema>
如果你要处理“degrees”这个元素(xmlDocument.documentElement.childNodes.item(1)),你可以根据节点类型值来访问它的值(xmlDocument.documentElement.childNodes.item(1).nodeTypedValue)。

返回
XML Schema
什么是XML Schema?
W3C XML Activity Page 声明:“尽管XML1.0提供了一种机制,文档类型定义(DTD)给标记的使用加了限制,但是对XML文档的自动处理需要更严格更全面的工具。需要主要体现在对应用软件各部分的结合、文档结构、属性和数据类型等等的约束。W3C XML Schema工作组正忙于定义XML文档的结构、内容和语义。”

微软IE5支持XML Schema,这项预先展示的技术是建立在递交给W3C的XML-Data草案的基础上的。XML Schema可被认为是XML-Data草案的子集,它符合文档内容描述(DCD)提议的特点。

IE5中的XML解析器能够根据文档类型定义(DTD)或XML Schema解析XML文档。XML Schema是用来声明内容模式的基于XML的语法。它有DTD所有的功能,并且还有其他的功能如数据类型定义。
如何建立XML Schema?
请在下面的XML文档中找一找每个节点的schema声明。

<class xmlns="x-schema:classSchema.xml">
<student studentID="13429">
<name>Jane Smith</name>
<GPA>3.8</GPA>
</student>
</class>
你会注意到在上面文档中默认的名域是“x-schema:classSchema.xml”。这告诉解析器根据URL(“classSchema.xml”)上的schema(x-schema)来解析整个文档。

下面是上面那个文档的完整的schema。注意schema的根元素中的名域声明。第一个(xmlns=”urn:schemas-microsoft-com:xml-data”)表明这个XML文档是一个XML Schema。第二个(xmlns:dt=”urn:schemas-microsoft-com:datatypes”)允许schema处理者在“ElementType”和“AttributeType”声明中的“type”属性前加“dt”前缀来说明元素的类型和内容的特征。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name='studentID' dt:type='string' required='yes'/>
<ElementType name='name' content='textOnly'>
<ElementType name='GPA' content='textOnly' dt:type='float'/>
<ElementType name='student' content='mixed'>
<attribute type='studentID'/>
<element type='name'/>
<element type='GPA'/>
</ElementType>
<ElementType name='class' content='eltOnly'>
<element type='student'/>
</ElementType>
</Schema>
schema用“Schema”元素开头,“Schema”元素包括schema名域的声明,在本例中还包括数据类型名域的声明。Schema的内容以“AttributeType”和“ElementType”的声明开头。

<AttributeType name='studentID' dt:type='string' required='yes'/>
<ElementType name='name' content='textOnly'><ElementType name='GPA' content='textOnly' dt:type='float'/>
这些声明接下来的是刚声明过元素的父亲元素的“ElementType”声明。

<ElementType name='student' content='mixed'>
<attribute type='studentID'/>
<element type='name'/>
<element type='GPA'/>
</ElementType>
这个过程继续下去,直到所有元素都已经声明了。

不同于DTDs,XML Schema允许有一个开放的内容模式,你可以进行定义数据类型、使用默认值等等操作而不必限定内容。

在下面的schema中,“GPA”元素的类型被定义并有一个默认值,但在“student”元素中没有其他节点被声明。

<Schema xmlns="urn:schemas-microsoft-com:xml-data" xmlns:dt="urn:schemas-microsoft-com:datatypes">
<AttributeType name="scale" default="4.0"/>
<ElementType name="GPA" content="textOnly" dt:type="float">
<attribute type="scale"/>
</ElementType>
<AttributeType name="studentID"/>
<ElementType name="student" content="eltOnly" model="open" order="many">
<attribute type="studentID"/>
<element type="GPA"/>
</ElementType>
</Schema>
上面的schema允许你只确认你所关心的区域。这使你对文档有更多的控制,并允许你使用schema提供的一些特性而不必严格确认。

一些说明:

“ElementType”和“AttributeType”声明必须放在“attribute”和“element”内容声明之前。例如,在上面的schema中,“GPA”元素的“ElementType”声明必须放在“student”元素的“ElementType”声明之前。

“order”属性的默认值是建立在“content”属性的值上的。当content值为“eltOnly”时,order默认值是“seq”。当content值为“mixed”时,order默认值是“many”。

XML 结构
翻译:褚健
  XML语言,XML名域和DOM是W3C建议的,这是W3C发展过程中决定性的一步。由于它们已经成为正式的规范,开发人员能够用XML的格式标记和交换数据。XML在三层架构上为数据处理提供了很好的方法。
使用可升级的三层模型,XML可以从存在的数据中产生出来。使用XML结构化的数据可以从商业规范和表现形式中分离出来。数据的集成、发送、处理和显示是下面过程中的每一个步骤.我们看下图的总结:
 
 
数据结构,名域
XML名域允许开发人员在可识别的情况下定义元素的名称,以避免同名元素间产生冲突。在一个文档中使用的元素,比如购买单,可以在不同的schemas中被定义。名域保证元素名称不会产生冲突,并且阐明了各个元素的来源,但是不能决定如何处理元素。解析器必须知道每个元素的意义和如何处理它们。
来源于不同名域中的标记可以混合在一起,这是从不同来源过来的数据所必须具备的。有了名域,元素既可以存在于相同的以XML为基础的文档中,也可以存在于不同的schemas中,说明唯一的语义。例如,在书店的购买单上,一个”title”元素可以包含一个书名,另一个”title”元素可以包含作者名。
  W3C已经发布了XML的名域,允许元素服务于URI。即使不同的作者选择同样的元素名称,也不会辨识不清。随着任何人都能发布自己的主页或者浏览他人的主页,名域的功能允许使用者定义个人的术语字典或者使用公布的公用名域。
<orders xmlns:person="http://www.schemas.org/people"
xmlns:dsig="http://dsig.org">
<order>
<sold-to>
<person:name>
<person:last-name>Layman</person:last-name>
<person:first-name>Andrew</person:first-name>
</person:name>
</sold-to>
<sold-on>1997-03-17</sold-on>
<dsig:digital-signature>1234567890</dsig:digital-signature>
</order>
</orders>
  这段编码告诉读者如果一个元素是以"dsig"打头,它的意义是由http://www.dsig.org/的名域所定义的。同样,以”person”打头的元素的意义是由http://www.schemas.org/people的名域所定义的。
名域保证元素名称不会冲突,也阐明了元素是由谁定义的。它并不给出如何处理元素的指令。读者仍然需要知道元素的意义,并且决定如何处理它们。名域只是针对元素名称。处理人员能够定义元素的数据类型和内容的格式。可以使用数据类型名域的dt属性来达到这一目的。
<sold-on dt:dt="date"
xmlns:dt="urn:schemas-microsoft-com:datatypes">1997-03-17</sold-on>
在这里,"data"说明"sold-on"元素的内容是按照标准格式的,这种格式是由数据类型名域说明的。有了元素名称,处理人员终于可以设计他们自己的数据类型,也能使用共享的类型。微软正同W3C一起定义一套标准类型,并且已经在IE5中提供部分支持XML Schema的第一份数据类型清单。
数据发送,处理
由于XML是开放的、基于文本的格式,它可以通过HTTP像HTML一样传送.桌面上的数据可以用DOM处理.代理商将支持XML更新功能,使得中间层或数据服务器上数据的变化可以传递给客户,反之亦然.因此,代理商能够从客户端得到更新的数据,并把数据传送到储存服务器上.
解析XML
IE5中的XML解析器能够读入一串XML数据,经过处理,产生一棵结构树,并且使用DOM把所有数据元素作为对象。解析器用CSS或XSL样式表显示数据,或者用脚本把数据进行进一步的处理,或者把数据移交给另外的应用软件或对象进行进一步的处理。DOM用扩展方式支持名域、数据类型、查询和XSL转化。
使用文档对象模式(DOM)处理和编辑数据
DOM实际上是一个应用编程接口(API),用来定义一种标准方法。通过这种方法,开发人员能够处理XML结构树的元素。对象模式控制着使用者如何同结构树交流,并且把所有树的元素作为对象暴露出来。
用HTML显示XML数据
XML文档自身不能决定如何显示信息。XML数据只包含事实。HTML是一个理想的显示语言。举个例子来说,网上书店的店员可以访问主页寻找订单。在后端,个人数据记录是用XML表示的。但是,在前端,它们是用HTML表示的。为了构造这个主页,Web服务器和Web浏览器都需要把XML数据记录转变为用HTML来表示。

数据捆绑和样式表可以用来把XML数据组织成形象化的表达形式,并加上交互功能。数据捆绑是动态HTML(DHTML)的一个方面,它把单独的数据从信息源(例如XML文档)移动到HTML显示上来,允许把HTML作为显示XML数据的模块。微软把XML数据源对象(XML DSO)作为IE5的一部分。XML DSO能够在XML数据岛基础上被调用。

XSL(可扩展类型语言)能够进一步加强这一过程。一个XSL样式表包括如何从XML文档中拿出信息以及如何把它转变为另一种格式的指令。XML转变为另一种格式,比如HTML,采用的是一种公布了的方法,这比采用脚本编写简单而且容易理解。另外,XSL把XML作为它的语法,使XML的编写者不用去掌握另外的标识语言。

CSS仍然被应用于结构简单的XML数据,并且也很有用。但是,CSS不提供与数据源结构不同的数据显示结构。使用XSL,可以产生与原来的XML数据结构完全不同的表达结构。如下所示。


XSL提供内容和表现形式的语义和结构独立性。
增加HTML
给HTML页增加语义信息并不容易。很多程序曾经试图用一些非标准的方法来解决这一问题,比如在HTML注释中隐藏数据。但是,这样的注释是很难使用的,对象模式并不能理解它们。

为了解决这一问题,W3C定义了一个格式,用来把基于XML的数据放到HTML页中。通过使用数据岛(data islands),扩展HTML允许很大范围的应用软件使用HTML作为主要文档和显示格式,并且使用这些文档中内含的XML保存数据。

一个HTML页包含有关这一页主题的特殊数据。例如,如果这一页显示一位作者最近一部小说的广告,这一页也包括有关这本书的XML数据,比如ISBN序号、出版者或者是价格。这些信息显不显示并不重要,重要的是这些信息作为数据可被获得和理解。
转换和查询XML
随着XML作为在Web上交换数据的一种标准方式的出现,不可避免地种种需要就会产生,比如查询XML、制作压缩数据、对数据分类和过滤以及转换XML语法。XSL和XSL模式语言提供了满足这些需要的一种方法。

XSL模式是简明的语法用来识别XML文档的节点,建立在节点类型、名称、内容和与树中其他节点相关的前后联系的基础上。

XSL提供了一种语法,使XSL模式查询的结果与模板有关,使XML源文档中的数据具体化。XML语法可以输出,以供分类和过滤,或者把一个schema中的数据转化到另一个schema中去。

W3C正考虑开发出更强大的查询语言,但开发小组还没有建立。
设置字符和编码
XML中的信息都是用统一的字符编码标准编写的。包括元素的内容和名称。因此XML支持所有的国际字符的表现形式。

统一的字符编码标准可以直接转换为16位字符,但更通常的是把它转换为方便使用的或者是简化的某种语言的编码。XML支持广泛的编码,只要一个文档中使用同一种编码。
空格符
不同于HTML在多数情况下忽略空格符,XML是针对数据的,因此通过xml:space属性可以保留空格。例如,下面两种情况是不同的:
<title xml:space="preserve"><composer>Tchaikovsky</composer>'s
First Piano Concerto</title>
<title xml:space="preserve">
<composer>Tchaikovsky</composer>'s
First
Piano Concerto
</title>
在IE5中xml:space="default"这一取值在标记间加入了一些装饰用的空格符。





 
我现在倒是在用XML来代替EDI,不过在中国其实还有许多问题,比如如果用
XML,那么可能客户和服务都得一个公司开发,在有些项目是行不通的,当官
的要揩油,就不能两边都让你开发!哎!!
 
1、介绍一个网址:http://www.xml.org.cn:8188/
上面的文章都有。
1、我看二叉树必考,软件的黑盒白盒测试考的可能性也很大。
付: 编写结构完整的XML文档
翻译:褚建

一个XML文档如果符合一些基本的规范,那它就是结构规范的。XML格式有一套比HTML简单的解析规则,允许XML解析器不需要外部描述或了解数据含义就可以解析XML数据。

起始标签和结束标签必须匹配
XML元素可以包含正文和其他元素,在它的schema中用严格的规范给出了文档的类型。但是,元素必须严格嵌套:每个起始标签必须有对应的结束标签。

元素不能交迭
下面的例子不符合XML语法。
<title>Evolution of Culture <sub>in Animals
</title> by John T. Bonner</sub>
改正后符合语法的形式是:
<title>Evolution of Culture
<sub>in Animals</sub>
<author>by John T. Bonner</author>
</title>

XML标签对大小写是敏感的

下面是不同的元素。
<City> <CITY> <city>

表示空元素

XML对空元素有速记办法:一个标签以/>符号结尾就表示空元素。例如,下面两行是等效的:

<title/>
<title></title>

保留字符

一些字符是XML句法结构的一部分。如果你想要在XML数据中引用它们,必须用特殊的字符来替代它们。下面列出这些字符。

< &amp;lt;
&amp; &amp;amp;
> &amp;gt;
" &amp;quot;
' &amp;apos;
例如,"Melons cost < $1 at the A&amp;P"要写成"Melons cost &amp;lt;
$1 at the A&amp;amp;P."。

每个XML文档必须有唯一的根元素
例如,在天气报告中,元素<weather-report>表示这个XML文档唯一的根元素。

 
有谁能能给我总结一下???我现在还有许多书和公式要背,我想明天早上再看看,谁
总结比较全,我再给<font color=red>200分</font>!!!!!(明天早上8:00以前有效)
 
如果明天考到,我给100!
我没有复习
去撞撞运气了
呵呵
 
一篇一百分.
哎,估计通不过,主要是没看书......wuwu~~~~~~~~~
 



-◇- XML技术 -◇-
专栏类别:XML技术 文章编号:161 出处: ZDNet 作者: Scott Johnson 阅读次数:8次 发表时间:00-7-7 11:40:39
--------------------------------------------------------------------------------
使用XMLdo
M生成XML

使用XMLdo
M生成XML
作者: Scott Johnson
日期: 2000年05月24日
<--编者按:随着 XML 在网络开发中的应用的不断深入,该语言的复杂度在增加,你可以在本文对XML的新对象库XMLdo
M的介绍中体会到这一点-->
正如你所了解的,XML是个功能强大的新型数据结构,它可以让你把网页的内容和表现形式分开。尽管如此,目前,我们的文章大多仅介绍了直接生成XML标记得的法。我们在大多数时候,都是手工编写必需的标记和数据的。
幸运的是,微软提供了XMLdo
M(XML文档对象模型),这是另外一种编写XML代码的方法。该对象库可以让你构建XML语法树,并提供了更有效的方法来创建XML文档。例如,你可用XMLdo
M搜集来自不同位置的数据,或者根据不同种类的数据源来创建XML文档。本文中,我们将介绍几种类型的库的功能,并且演示如何在ASP中使用它。
了解XML文档对象模型
XMLdo
M包含四个主要对象:XMLDOMDocument, XMLDOMNode,XMLDOMNodeList和XMLDOMNamedNodeMap。同任何其它对象模型一样,每个XMLdo
M对象有其自己的特性和方法。本文,我们将主要介绍XMLDOMDocument 和XMLDOMNode 对象。
XMLDOMDocument对象
XMLDOMDocument对象代表XMLdo
M层次中的顶层结点(请不要同XML文档中的根结点混淆)。它是建立和操纵XML结构的基础。为了创建XMLDOMDocument对象变量,请使用如下的CreateObject 命令:
Set objXMLdoc = _
CreateObject("Microsoft.XMLDOM")
表A:列出了在创建了XMLDOMDocument的对象后,我们可以得到的一些特性和方法。
方法 描述
CreateAttribute 创建新属性
CreateCDATASection 创建DATA 部分结点
CreateComment 创建注释结点
CreateElement 使用指定名称创建元素结点
CreateEntityReference 创建实体参考对象
CreateNode 创建结点
CreateTextNode 创建文本结点
Load 载入已有的 XML 文档
Save 保存XML 文档
特性 描述
PreserveWhiteSpace 指示是否在XML文档中显示空格t
ResolveExternals 解析名域,DTD和外部实体索引
ValidateOnParse 指示解析器是否对文档进行合法性检查
DocumentElement 返回XML 文档的根结点

设置运行选项
正如你在表A中所看到的,只有创建了XMLDOMDocument 对象,你才可创建单个的XML结点。在做这个工作之前,你还可以设置XML文档的解析运行条件,如果你打算直接生成XML文档到浏览器时,就很有用处。
运行选项可以让你设置异步下载,提供文档合法性检查和保留空格,以及解析外部索引。为了防止异步下载,可设置asynch特性为False。如果打算用一行新字符代替空格,可设置PreserveWhiteSpace 特性为True。 ResolveExternals特性可防止解析引擎解析外部实体索引,文档类型定义或者外部名域。
创建结点
XMLDOMDocument 对象提供了创建结点或者XMLDOMNode的两种方法: CreateElement 和CreateNode。选择其中哪一种方法,取决于你需要结点提供信息量的多少。当你使用CreateElement 方法时,只要提供结点名称,如
Set objXMLroot = objXMLdoc _
.CreateElement("ORDER_STATUS")
当使用CreateNode 方法时,你要指定结点类型,结点名称和相关名域。(XML名域可以让你择同一文档中用同一名称创建多个XML元素) 例如,如果要使用CreateNode方法,你可写出如下代码:
Set objXMLroot = objXMLdoc _
.createNode("element", _
"ORDER_STATUS", "Space1")
一旦创建了结点,你须把它添加进XML文档中。这就要用AppendChild 方法,例如,继续上面的例子,你可以写出:
objXMLdoc.AppendChild(objXMLroot)
该语句创建了XML根结点,请见图A在Internet Explorer 5.0中的例子。

图A:用XMLdo
M 创建XML文档的根结点
除了AppendChild方法外,XMLDOMNode 对象也具有其它三个控制XML结点的方法: ReplaceChild, RemoveChild和InsertBefore
对结点的属性赋值
一旦创建了结点,还要对其属性赋值,如独立的标识符,或者特性值。你要用到SetAttribute方法。该方法接收两个参数— 属性名和属性值。例如,下列代码创建了属性名SHIPPING_DATASOURCE 和属性值NORTH_ATLANTIC_SHIPPING:
objXMLroot.SetAttribute _
"SHIPPING_DATASOURCE", _
"NORTH_ATLANTIC_SHIPPING"
此时,我们生成了图B的XML文档。

图B: SetAttributes方法创建了结点属性
加入子结点
要创建子结点,你可以使用我们前面介绍的CreateElement或者 CreateNode 方法,然后把它们添加到合适的父母结点中。例如,假设,我们要创建称为PUBLISHER_DISCLAIMER的XML结点。为了做到这一点,我们把该结点附加到文档的根结点中,代码如下:
Set objXMLChildTestNode = objXMLdoc _ .createNode("element", _ "PUBLISHER_DISCLAIMER", "") objXMLdoc.DocumentElement _ .appendChild (objXMLChildTestNode )
注意:我们使用了XMLDOMDocument的do
cumentElement 特性来把新结点添加到XML文档的根结点中,请见图C。

图C:要添加子结点,你只需把它们添加到父母结点中。
给结点赋值
一旦创建完所有的结点,你将需要给它们赋值。那是XML最关键的步骤。要做到这点,你同平常一样,创建一个结点,然后对该结点的TEXT属性赋值。例如,下列代码创建了称为PUBLISHED_DATE的XML结点,然后赋值如下:
Set objPublishDate = objXMLdoc _ .CreateNode("element", _ "PUBLISHED_DATE", "") dShippedDate = FormatDateTime(Date, 2)objPublishDate.Text = dShippedDate objXMLChildTestNode.appendChild _ (objPublishDate)
结果请见图D。

图D: 我们对把当前日期赋给PUBLISHED_DATE的Text属性,然后把该结点添加到PUBLISHER_DISCLAIMER元素中。
我们目前已经介绍了若干XMLdo
M的基本知识,下面将介绍一下如何在ASP下使用XMLdo
M。
在ASP下使用XMLdo
M
要生成前面例子中的XML文档,我们可以用ASP来生成。我们将创建一个简单的ASP页,让你只需点击按钮,就可创建XML文档。为了完成这件事情,我们用了带有Windows脚本构件的ASP网页,由它来生成XML。我们将用Windows Script Component Wizard来生成初始代码。(如果你没有wizard,可到微软的脚本栏目中去寻找。)
创建脚本组件
开始时运行Windows Script Component Wizard。在第一个窗口中,输入XMLDom 作为组件名称,然后单击Next。确信VBScript和支持Active Server Pages选项在第二个窗口中被选中,然后单击Next两次。在第四个窗口,输入CreateXML,作为我们的脚本对象的唯一方法。再单击Next 两次,最后再点击Finish。完成了这些事情后, wizard 就创建了组件,并把组件添加到你的桌面上。
此时,我们获得了组件的基本结构,但它并不包含任何功能,所以还要添加功能。要做到这点,双击位于桌面的XMLDom 的快捷键。完成后,Windows 在记事本上显示出初始代码。注意组件本身是个XML文档。要添加CreateXML 代码,我们将创建一个子过程来代替函数。所以,删除下面的行
function CreateXML() CreateXML = "Temporary Value"end function
在该处输入列表A中的代码
构造ASP网页

为了创建ASP网页,打开你所熟悉的HTML 编辑器,输入列表B中的代码。确保 Window.Navigate行指向合适的文件夹。要了解其是如何工作的,在Internet Explorer中打开该页。一旦打开后,就会出现一个信息,告诉你XML已经创建了成功,并出现一个 Show 按钮,点击该按钮,IE显示出图E中的XML文档。

图E:我们使用了几种不同的XMLdo
M 方法来创建完整的XML 文档
XMLdo
M 库中更多内容
正如你在样本代码中所见,XMLdo
M 包含了比我们此处所介绍的更多的方法和属性。要查找完整的XML文档对象模型,请访问有关微软网站。同时,如何你想了解XMLdo
M以及XSL和ASP的高级用法的例子,请访问www.i3solutions.com/onlinedemos.asp。
结论
XML正在迅猛发展,同以往的以文本为中心的网页相比,XML的数据模型结构提供了更多的功能, XML文档对象模型通过编程化的方式,可以为你创建XML文档。本文中,我们对XMLdo
M作了入门性的介绍,并且演示了如何在Active Server Pages中使用XMLdo
M。
Listing A: The CreateXML sub procedure.
Sub CreateXML()
Dim objXMLdoc
Set objXMLdoc = CreateObject("Microsoft.XMLDOM")

objXMLdoc.async = False
objXMLdoc.validateOnParse = False
objXMLdoc.preserveWhiteSpace = False
objXMLdoc.resolveExternals = False

'==================================================
'=== Close Runtime conditions ===
'==================================================

'=== Create the root note
Set objXMLroot = objXMLdoc.createElement("ORDER_STATUS")
objXMLdoc.appendChild(objXMLroot)

objXMLroot.setAttribute "SHIPPING_DATASOURCE", _
"NORTH_ATLANTIC_SHIPPING"

Set objXMLChildTestNode = objXMLdoc _
.createNode("element", "PUBLISHER_DISCLAIMER", "")
objXMLdoc.documentElement _
.appendChild (objXMLChildTestNode)

'=== Create the "PUBLISHED_DATE" Node
Set objPublishDate = objXMLdoc.createNode("element", _
"PUBLISHED_DATE", "")
dShippedDate = FormatDateTime(Date, 3)
objPublishDate.Text = dShippedDate
objXMLChildTestNode.appendChild(objPublishDate)
Set objPublishDate = Nothing

'=== Create a Comment
Set objXMLcomment = objXMLdoc _
.createComment("This is a comment.")
objXMLChildTestNode.AppendChild(objXMLcomment)
Set objXMLcomment = Nothing

'=== Create a CDataSection
Set objXMLcdata = objXMLdoc _
.CreateCDATASection("This is a CData Section.")
objXMLChildTestNode.appendChild (objXMLcdata)
Set objXMLcdata = Nothing

'=== Create a Text Node
Set objXMLcdata = objXMLdoc _
.CreateTextNode("This is a Text Node.")
objXMLChildTestNode.AppendChild(objXMLcdata)
Set objXMLcdata = Nothing
objXMLdoc.Save Server.MapPath("PubInfo.XML")
Set objXMLdoc = Nothing
end Sub
Listing B: The ShowXML ASP page.
<% Option Explicit %>
<HTML>
<BODY>
<%
Dim objXMLCreate
Set objXMLCreate = Server.CreateObject("XMLDom.WSC")
objXMLCreate.CreateXML
Response.Write "<BR>XML Created...<BR><BR>"
Set objXMLCreate = Nothing
%>
<FORM>
<INPUT TYPE="BUTTON" VALUE="Show" NAME=btnShow>
</FORM>
<SCRIPT LANGUAGE="VBScript">
Sub btnShow_OnClick
Window.Navigate "../XMLDemo/PubInfo.XML"
End Sub
</SCRIPT>
<BR>
</BODY>
</HTML>


--------------------------------------------------------------------------------
(转载于:ZDNet)
好文共赏!如果需要转载本站文章,不必征求本站同意,但是请注意保持文章原有出处,谢谢!
 
我是XML的初学者,请将这方面好的书籍、电子版和好的DEMO告诉我,小女子不胜感激!
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
579
import
I
I
回复
0
查看
567
import
I
顶部