首页导航栏 - 网络工程 | 网站建设 | 设计在线 | 精彩图片 | 职业前线 | 创业之路 | 启步工具 | 教程资讯 | 休闲娱乐
启步网 > 网站建设 > 网站标准
XML——可扩展标记语言
作者: sunhy 阅读: 来源:启步网 时间:2006-10-28 20:21:26
字体
    XML就是可扩展标记语言(eXtensible Markup Language)。它与HTML一样都与SGML有莫大的渊源。大家知道SGML的核心思想就是内容与表现的分离。HTML最初的标记全部都是用来表示内容的,然而随着用户对于Web页面提出了更多的要求,为了争夺市场,IE和Netscape Navigator争相向HTML中添加了大量表示显示格式的标记,使得HTML越来越臃肿,偏离了正常发展的轨道。这种日趋恶化的情况一直到W3C推出了XHTML 1.0之后才逐渐改善。在此之前,W3C在1998年2月推出了XML 1.0规范。XML可以看作是W3C为了使得Web恢复健康发展而采取的拯救措施(拯救大兵瑞恩:))。
这份规范可以从 这里 获得。经过了几次修订,目前已经是第三版。

XML是SGML的子集,从结构上说,XML文档是合乎规范的SGML文档。它的目标是将通用的SGML变为像HTML一样能够在Web上传输和处理的语言。XML的设计既考虑了实现的方便性,同时也顾及了与SGML和HTML的互操作性。

XML有以下设计目标:

  • XML应该可以直接应用于Internet。
  • XML应该支持多种应用。
  • XML应该与SGML兼容。
  • 用于处理XML文档的程序应该易于编写。
  • XML的可选特征应该极少,最好没有。
  • XML文档应该清晰明了,可读性强。
  • XML应该易于设计。
  • XML的设计应该正式而简明。
  • XML文档应该易于创建。
  • XML标记是否简练不甚重要。
XML应用有两种类型,面向文档的应用和面向数据的应用。面向文档的应用就是将XML当作文档来使用,需要定义显示格式的应用;面向数据的应用就是将XML当作纯数据来使用,不需要定义显示格式的应用。

我们Ajax开发者主要是从实用的角度来使用XML技术的。XML在Ajax开发中主要可以用在以下的场合:

  • 用于客户端与服务器之间的通信。XML强大的数据描述能力使得它非常适用于这样的场合。而且XML是平台中立的数据格式,使用XML可以达到最大的灵活性。
  • 与XSLT相结合用于数据转换。
  • 处理RSS数据。
  • 用于在客户端缓存数据。
  • 用于界面的描述,一些类似于XUL的开发框架,例如zk,就是这样做的。
使用JavaScript处理XML有几套API:W3C的DOM(注意,这篇文档中所说的DOM都是指XML DOM,而不是指HTML DOM)、SAX、最新的E4X。目前已经有了使用JavaScript实现的SAX库;而且Firefox最新的版本已经可以支持E4X,处理XML更加方便。但是所有主流的浏览器目前直接能够支持的还是只有W3C的DOM,所以这是基础知识,Ajax开发者都必须要掌握好。

XML DOM在不同的浏览器之间实现上的差异主要体现在两个方面,一个是XMLDocument对象的创建,另外一个是XMLDocument对象上的节点的查找过程。
目前在IE中创建XMLDocument对象的语法如下:

var xd = new ActiveXObject("Microsoft.XMLDOM");
而在非IE浏览器中创建XMLDocument对象的语法如下:
var xd = document.implementation.createDocument("","",null);
XMLDocument对象创建后的使用方法是一致的,
加载一个XML文档:
xd.load("data.xml");
得到XML 文档的根节点:
var xn = xd.documentElement;
另外在IE中还可以使用loadXML()方法从一个字符串生成XML DOM树。
xd.loadXML("<"+hd.__hwnodes.style.rootTag+"></"+hd.__hwnodes.style.rootTag+">");
loadXML()方法不是标准的XML DOM方法,因此在非IE浏览器中无法使用。由上面可以看到只要创建了XML DOM 树后,访问方法在不同的浏览器中是一致的,创建阶段的差异非常容易通过封装的方法屏蔽掉,目前已经有很多的库可以封装这些差异,例如 >>Sarissa

按照W3C标准的方法,通过XML DOM来查找XMLDocument对象上的节点是通过XMLDocument对象的evaluate()方法来实现的。然而,evaluate()方法并不是很好用,IE在自己的实现中,实现了两个私有的方法selectSingleNode()和selectNodes()。这两个方法用起来方便的多,受到了开发人员的广泛欢迎,甚至误以为它们就是W3C的标准方法。其实这两个方法只能用在IE之中。不过,聪明的JavaScript程序员使用W3C标准的方法实现了这两个IE私有的方法,使得它们也能用在非IE的浏览器中。附件中的selectNodes.js就是这两个方法在非IE浏览器中的实现。

以上主要是从Ajax开发者的角度对于XML做了简要的介绍,更加详细的XML技术的介绍可以在附件中找到。附件中有一份我在两年前做新员工培训时所写的文档。其中一些高级的内容,例如XML的有效性验证,一般的Ajax开发都用不到。

附:推荐的XML相关书籍。

  1. 《无废话XML》,劳虎著。
  2. 《XML高级编程》,Didler Martin著。

责任编辑:一路狂奔
帐号:
密码:

Google
Google提供的相关资源
参与评论(条评论)
请遵守国家法律
笔名:
邮箱:
( 以上评论仅代表网友个人意见,不代表本站观点 )
相关资源
  • 关注我,请订阅我的 Feed [2007-2-25]
  • XML的四种解析器原理及性能比较 [2007-1-14]
  • 国际网页Web设计流程 [2007-1-11]
  • 什么是Ajax? [2006-10-28]
  • 聚光灯下的Ajax:Ajax技术综述 [2006-10-28]
  • web标准之XSLT [2006-10-28]
  • Ajax技术核心XMLHttpRequest [2006-10-28]
  • web标准化之JavaScript [2006-10-28]
  • DOM-文档对象模型 [2006-10-28]
  • web标准之CSS [2006-10-28]
  •