学习XML的时候,我们自然而然的就想起了HTML,HTML在前面的博客已经做了介绍,下面主要是介绍XML的相关基础。
一、XML?
HTML(Hyper Text Markup Language)超文本标记语言,是用来描述网页文档的一种语言。
XML(EXtensible Markup Language)是一种类似HTML的可扩展标记语言,但是它不是用来显示数据的,而是用来包含和传输数据。一般用来配置文件,携带方面。
1.世界上任何事物都是变化发展的——XML发展历史:
2.XML与HTML的差异:
- XML不是用来替换HTML的技术
- XML和HTML为不同的目的而设计
- XML设计的核心是包含与传输数据
- HTML设计的核心是显示数据
3.XML的树状结构
XML文档形成了一种树结构,从“根部”开始,扩展到“枝叶”。例如:
从上面的实例我们可以看出,XML的组成包括:声明、标签(尖括号)、元素(根元素、父元素、子元素)等等。XML文档中的元素形成一颗文档树。这棵树从根部开始,并扩展到树的最低端。好处是: 结构清晰、易于读取、处理、添加和修改子节点。
4.XML构建模块——元素、属性、实体、PCDATA、CDATA
(1)元素
元素指的是从(且包括)开始标签直到(且包括)结束标签的部分。
元素可包含其他元素、文本或者两者的混合物。 元素也可拥有属性。
命名空间:解决名称冲突问题
(2)属性
属性提供关于元素的额外(附加)信息。
XML属性值必须被引号包围,不过单引号和双引号均可使用。
(3)实体
实体是用于定义引用普通文本或特殊字符的快捷方式的变。
实体引用是对实体的引用,为了避免把字符数据和标签中需要用到的一些特殊符号相混淆。
在XML中有5个被预定义的实体引用:
注释:在XML中仅有字符:“<"和”&“是非法的。省略号、引号和大于号是合法的,但是把它们替换为实体引用是一个好习惯。通常来说,所有XML文档中的文本均会被解析器解析。只有CDATA区段(CDATA section)中的文本会被解析器忽略。
(4)CDATA
CDATA指的是不应由XML解析器解析的文本数据(UCDATAUnparsed Character Data)。
在 XML 元素中,"<" 和 "&" 是非法的。"<" 会产生错误,因为解析器会把该字符解释为新元素的开始。
"&" 也会产生错误,因为解析器会把该字符解释为字符实体的开始。CDATA 部分由 "<![CDATA[" 开始,由 "]]>" 结束。
关于 CDATA 部分的注释:
CDATA 部分不能包含字符串 "]]>"。也不允许嵌套的 CDATA 部分。
标记 CDATA 部分结尾的 "]]>" 不能包含空格或折行。
(5)PCDATA
PCDATA 指的是被解析的字符数据(Parsed Character Data)。
XML 解析器通常会解析 XML 文档中所有的文本。
当某个 XML 元素被解析时,其标签之间的文本也会被解析,所以非法的XML 字符必须被替换为实体引用(entity reference)。
5、XML语法规则:
- XML 文档必须有根元素XML 文档必须有一个元素是所有其他元素的父元素。该元素称为根元素。
- XML文件必须有关闭标签
- XML标记对大小写敏感
- XML元素必须被正确的嵌套
- XML属性必须加引号
上面介绍了XML相关的语法结构以及语法规则。但是这些都是由谁来定义和提供的呢?XML文档是一种结构化的标记文档,其文档的规范性由:DTD (Document Type Definition)和Schema两种方式进行制定 。
e.声明最少出现一次的元素
<!ELEMENT 元素名称 (子元素名称*)>
例如:<!ELEMENT note (message*)>
例子:<!ELEMENT note (message?)>
例子:<!ELEMENT note (to,from,header,(message|body))>
是用于定义引用普通文本或特殊字符的快捷方式的变量
实体引用是对实体的引用
实体可在内部或外部进行声明
a.内部实体声明的语法:
<!ENITY 实体名称 “实体的值”>
例子:<!ENITY writer "Bill Gates">
<!ENTITY copyright "Copyright W3School.com.cn">
- 可针对未来的需求进行扩展
- 更完善,功能更强大
- 基于XML编写
- 支持数据类型
- 支持命名空间