XML学习笔记1

来源:互联网 发布:方正字库mac版 编辑:程序博客网 时间:2024/05/19 00:51

博主大三下学期,初次写CSDN博文,就写最近在学的XML吧。

起源:SGML

问题的根源:字处理、文本处理、显示与排版、印刷软件互不兼容。追求所见即所得,造成文档与工具绑定。

解决方案:文档的内容部分与显示、印刷、排版信息相互分离,与处理工具或软件分离。

标准概述:1986年ISO制定SGML标准通用标记语言。

应用与缺陷:主要用于电子排版、电子出版、电子数据交换等大型系统中。过严、过复杂,不支持链接标准,不支持排版方式,不适合互联网环境应用。


HTML的出现

随着互联网的发展,快速便捷地显示多姿多彩的媒体内容成了亟待解决的问题,HTML通过在文本中插入各种功能标签形成浏览器都能解释和显示的网页文档。展示图形,声音,视频,链接,表格等内容。HTML重在显示文档内容,通过特定的标签来告诉浏览器该如何显示相应的数据,但完全不理会数据的结构与语义。

不足:标签严格限定,如自定义则失去兼容性。HTML文档一旦形成则很难从中分理处原来的结构信息和原始数据,数据与显示格式已经混成一团,违背了SGML的设计初衷。


DHTML的产生

在HTML的基础上改进,是一种使HTML页面具有动态特性的艺术。对大多数人来说,DHTML意味着HTML、CSS样式表和JavaScript的组合。


XML诞生

XML回归到SGML的基本设计思想。

这里提一下XHTML,XHTML是HTML的一个升级版本,用于帮助HTML向XML转换。实现表现与内容分离,是一门面向结构的标记语言。

SGML、HTML、DHTML、XHTML与XML之间的关系

均为标记语言,构文法基本相同,以SGML为始祖

SGML是层次化结构化文档的元语言

HTML是最成功的Web应用语言

DHTML是令Web生动有趣的重要手段

XHTML是最好的过渡标记语言

XML是从SGML培育出来的最优秀子女

它们互不可替代各有各的适用领域


一个简单的XML文档样例

<?xml version="1.0" endcoding="GB2312"?><诊疗记录> <患者 性别="男" 年龄="50" 保险单据号="3464322" >    <姓>张</姓>    <名>强</名> </患者> <诊疗日期 年="2008"  月="9"  日="1"/ >  <治疗>    <投药> 抗生素 先锋6 </投药>    <注射> 葡萄糖 </注射>    <手术> 清创 </手术>  </治疗></诊疗记录>

但是呢,光是上面的代码在XML解析器中打开你是看不到层叠效果的,只能看到源代码,原因是这个XML文档只是规范的文档,但不是有效的文档,先介绍一下XML文档的构造吧。

XML文档的构造

先灌输这个概念:XML文档 = 元素 + 标签

规范的XML文档:符合W3C制定的XML基本语法规则的文档称为规范的XML文档,也称为结构良好/完整的XML文档。能够被XML解析器正确的解析,但不一定能够良好的展示数据的层次结构、关联和含义。

W3C——万维网联盟,是Web技术领域最具权威和影响力的国际中立性技术标准机构。(百度百科)

有效的XML文档:规范的XML文档再符合额外的一些约束才能称为有效的XML文档。符合XML基本语法的XML文档只是基本合格,还赢在数据层次结构上作必要的约束才能更好地及解析其中的数据,体现数据的层次和内容。这种约束交给DTD或Schema完成。

从逻辑上看:有效的XML文档由五个部分构成

  • XML声明
  • 文档类型声明
  • 元素
  • 注释
  • 处理指令

XML声明:必须作为XML文档的第一行,前面不能有空白、注释或其他的处理指令。

<?xml version="1.0" encoding="utf-8"?>

这是一个最基本的格式,另外还有Standalone属性,为可选属性,取“yes”表示XML文档所需的DTD等相关数据都已包含在该文档内,无需参照外部文件,取“no”则说明需要外部的DTD或Schema文件。

<?xml version="1.0" encoding="utf-8"? Standalone="yes">

XML文档必须有根元素,其他所有元素都处于根元素的内部,构成XML文档的主体。看以下代码:

 <?xml version="1.0" encoding="UTF-8">      <个人简历>     <李明>        1980年出生,大学毕业     </李明>     <李明>        1972年出生,博士毕业     </李明>       </个人简历>

其根元素为 个人简历。

元素:XML文档的内容包含在一个唯一的根元素中,其他元素再包含各自的子元素,形成树状层次结构。

元素与标记:元素名称用开始、结束标记括起来,描述数据内容。允许空元素,如

<EMPTY-ELEMENT/>

属性:用于在标记中描述元素的额外信息。例如

 < 桌子 width="300"  height="600"  length="1000"

名称空间:解决同一XML文档内部或不同XML文档出现相同标记问题。分为有前缀和无前缀的名称空间。

命名空间被声明为元素的属性。并不一定只在根元素声明命名空间;而是可以在 XML 文档中的任何元素中进行声明。声明的命名空间的范围起始于声明该命名空间的元素,并应用于该元素的所有内容,直到被具有相同前缀名称的其他命名空间声明覆盖—其中,元素内容是指该元素的 和 之间的内容。

<someElement xmlns:gaara="http://www.cgamaz1ng.cn" />

来看这个代码块,someElement很明显是某一个元素,xmlns是xml当中的保留字,用于声明命名空间的绑定,什么是绑定,就是类似于Java中的变量声明。Java中 String a = “abc”,将a与字符串“abc”绑定在一起,同样的在这段代码中,gaara = “http://www.cgamaz1ng.cn“,每当在命名空间范围中引用前缀“gaara”时,它将被解释为绑定到实际的命名空间 ( http://www.cgamaz1ng.cn)。

问题来了,尽管命名空间通常看上去像 URL,但这并不意味着实际声明和使用命名空间时一定要连接到互联网上。实际上,通常将命名空间用作可以在互连网空间中共享词汇和不显示内容的虚拟“容器”。在互连网空间中,URL 是唯一的。因此,通常选择使用 URL 来唯一标识命名空间。在浏览器中键入命名空间 URL 并不意味着它将显示该命名空间中的所有元素和属性;它只是一个概念。

注意:以三字母序列 x、m 和 l(采用任何大小写组合)开头的前缀被保留,供 XML 和 XML 相关的规范使用。尽管这不是一个严重错误,但绑定此类前缀并不可取。前缀 xml 根据定义绑定到命名空间名称 http://www.w3.org/XML/1998/namespace。

内联替代符:字符<、>、&、‘、“ 作为XML的保留字都其有特殊意义,假如XML内容中需要用到上述字符,则必须使用内嵌替代符而不能直接使用原字符,以免误会。例如:用&lt代表<,&amp代表&,&gt代表>

CDATA标记:包括在该标记中的内容将不会被XML解析器处理,而是直接提供给应用程序。内容可以为任意长度,只是其中不能出现“]] >”,它代表该标记的结束。格式为: <![CDATA[内容]]> 常用该标记放置类似XML操作指南这样含有大量XML保留字的内容,防止其中的保留字被误解,或者用内嵌替代方式。也可以直接嵌入类似JavaScript的脚本语言。

注意四点:1、CDATA必须大写;2、不允许嵌套;3、必须以<![CDATA[开头,以]]>结束;4、CDATA段只能在根元素的文本内容中使用。

实体:实体(ENTITY)在XML中是指一个被命名了的标记数据块,它可以是一个字符串,也可以是一个完整的文件。利用实体的嵌入式功能可以简化XML文档结构,提高重用性。

DOCTYPE标记:DOCTYPE标记包含的就是当前XML文档所需的文档类型定义,可以是具体的定义描述信息,也可以指向一个包含这些信息的外部文件。

XML的注释:以<!–注释内容–>形式标记。注意:注释不能出现在声明前,不允许出现在标记内,不能出现连续的连字符(如—),也不能嵌套与交叉使用。

空白字符处理:XML文档中,对标记之外的任何空白字符,XML解析器都不进行任何处理,源原封不动交给应用程序。但元素标记和属性值中的空白字符会被解析器清除掉。

0 0
原创粉丝点击