XML基础学习1

 

     最近读了一本书《XML基础教程--入门、DOM、Ajax与Flash》(Beginning XML with DOM and Ajax),让我对XML有了更深刻的理解,主要是关于XML在网页上的是应用。以前使用XML主要是用于配置数据和数据库,也使用过DOM和SAX技术对其读写等操作,不过对于利用XML技术在网页上使用却是知之甚少。所以这里主要介绍我学习的XML在网页方面的应用,包括XML基础知识、DTD文档类型定义、CSS层叠样式表、XSLT可扩展样式表语言转换以及少许JavaScript操作。

    XML如今得到广泛的使用,在于其强大的数据描述能力和可扩展能力。标准的XHTML语言就是XML的一种应用,此外还有用于表达数学格式MathML、矢量图SVG文档、RSS文档,甚至于MSN的聊天记录都是使用XML。

    XML的要点如下:

  1. XML不是语言,他的规则用来构造其他语言;
  2. XML创造了用来标记内容的基于标签的语言;
  3. XML基于SGML(标准通用标记语言),并且与SGML建通

    XML如果满足下面条件就是合式的:

  1. 该文档包含一个或者多个元素
  2. 该文档只包含一个文档元素,用于包含其他元素
  3. 每个元素都正确的结束
  4. 元素区分大小写
  5. 属性值都扩于引号且不为空

   因此HTML是不符合合式要求的,因为它的标签不区分大小写,标签的顺序也不做要求,属性也不一定需要使用引号括起来。例如

 

Code

 

   是不受影响的,而在合式XML中是不允许的。需要修改如下,就符合XML标准。
Code

    标签(tag)指描述内容的部分,也就是尖括号包含的内容。元素指一个开始标签到一个结束标签以及其中的内容。

    下面是标准的XML文档例子。

Code

 

     第一行是XML声明,可选。当时一般为程序处理方便,都会标明。如果需要必须位于文档第一行,且前面没有任何内容,甚至空格。version属性是指版本号。encoding是字符集,如果没有注明,默认是UTF-8,使用中文的话,需要声明为GBK或者GB2312。此外还有属性standalone,其值为yes或者no,表示是否还需要外部文件。三个属性均是可选,但是顺序必须按照version, encoding, standalone来。

     第二行是注释,以"<!--"开始,"-->"结束,与HTML一致。

     第三行就是文档元素(根元素)起始,所有元素都包含其中。合式XML只有一个根元素。元素中可以包含子元素、文本、空元素、混合元素。空元素指仅有标签无文本,可以写作下面两种方式,在一些解析程序中两者处理方式是不同的,这要注意。

Code

 

     混合元素是指既包含文本也包含子元素。

     XML命名原则如下

  1. 不能以数字或者标点开头
  2. 不能含有空格
  3. 如果不是表示命名空间,就不要使用冒号
  4. 区分大小写

   处理指令(Processing instruction,PI)是将处理信息传给其他应用程序。XML不处理,而直接传送给应用程序。例如指定XSL样式表的应用:

Code

     XML的处理方式主要有两种,基于树的DOM(文档对象模型)和基于事件的SAX(简单应用编程接口)解析器。

     对于DOM,是将整个XML文件读入,解析成树的结构,然后可以查询各个元素的值和修改。而对于SAX,则是一句句的读入元素,然后一句句的扔掉。简单的说就是它会回调一个函数,告诉用户当前读到的标签是什么,然后供用户对下面的内容进行处理。前者便于一次读入,然后进行多次查询和修改,但是需要消耗内存。而后者读入之后不会保存由用户自己处理。如果XML文件很大,而用户只要处理头部的很少几个元素的话,那么显然应该选择SAX方式,当用户获取到自己需要的信息后就不再处理,而不需要将整个文档进行解析。

 

posted on 2008-09-11 10:18  逍遥子  阅读(372)  评论(0编辑  收藏  举报

导航