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的要点如下:
- XML不是语言,他的规则用来构造其他语言;
- XML创造了用来标记内容的基于标签的语言;
- XML基于SGML(标准通用标记语言),并且与SGML建通
XML如果满足下面条件就是合式的:
- 该文档包含一个或者多个元素
- 该文档只包含一个文档元素,用于包含其他元素
- 每个元素都正确的结束
- 元素区分大小写
- 属性值都扩于引号且不为空
因此HTML是不符合合式要求的,因为它的标签不区分大小写,标签的顺序也不做要求,属性也不一定需要使用引号括起来。例如
标签(tag)指描述内容的部分,也就是尖括号包含的内容。元素指一个开始标签到一个结束标签以及其中的内容。
下面是标准的XML文档例子。
第一行是XML声明,可选。当时一般为程序处理方便,都会标明。如果需要必须位于文档第一行,且前面没有任何内容,甚至空格。version属性是指版本号。encoding是字符集,如果没有注明,默认是UTF-8,使用中文的话,需要声明为GBK或者GB2312。此外还有属性standalone,其值为yes或者no,表示是否还需要外部文件。三个属性均是可选,但是顺序必须按照version, encoding, standalone来。
第二行是注释,以"<!--"开始,"-->"结束,与HTML一致。
第三行就是文档元素(根元素)起始,所有元素都包含其中。合式XML只有一个根元素。元素中可以包含子元素、文本、空元素、混合元素。空元素指仅有标签无文本,可以写作下面两种方式,在一些解析程序中两者处理方式是不同的,这要注意。
混合元素是指既包含文本也包含子元素。
XML命名原则如下
- 不能以数字或者标点开头
- 不能含有空格
- 如果不是表示命名空间,就不要使用冒号
- 区分大小写
处理指令(Processing instruction,PI)是将处理信息传给其他应用程序。XML不处理,而直接传送给应用程序。例如指定XSL样式表的应用:
XML的处理方式主要有两种,基于树的DOM(文档对象模型)和基于事件的SAX(简单应用编程接口)解析器。
对于DOM,是将整个XML文件读入,解析成树的结构,然后可以查询各个元素的值和修改。而对于SAX,则是一句句的读入元素,然后一句句的扔掉。简单的说就是它会回调一个函数,告诉用户当前读到的标签是什么,然后供用户对下面的内容进行处理。前者便于一次读入,然后进行多次查询和修改,但是需要消耗内存。而后者读入之后不会保存由用户自己处理。如果XML文件很大,而用户只要处理头部的很少几个元素的话,那么显然应该选择SAX方式,当用户获取到自己需要的信息后就不再处理,而不需要将整个文档进行解析。