一听到XML这个语言,大家可能会认为它和HTML是亲戚,有某种特殊关系的存在。哈哈哈,其实,真相并不是这样的,他们有着属于自己的魅力。
扫盲区
- HTML(HyperText Markup Language),即超文本标记语言,是用于描述网页文档的一种描述标记语言,最大的作用就是显示数据
- XML(Extensible Markup Language),是一种类似HTML的可扩展标记语言,它的标记都是自定义的,其设计宗旨是包含和传输数据
- HTML和XML的差异:
(1)XML不是用来替换HTML的技术
(2)XML和HTML为不同的目的而设计
(3)XML设计的核心是包含和传输数据,而HTML设计的核心是显示数据
(4)XML对字母大小写敏感,HTML不区分大小写
(一)XML在企业中的应用
- 存储数据,即在没有数据库的情况下
- 传输数据,以XML形式向Andorid发送数据
- 软件配置,即通用配置XML文件,通知应用程序如何处理业务
如果一个XML文件书写的语法正确,它就必须加载到内存后,形成一个倒状的树结构。
(二)XML的六大组成部分
- 文档声明
在编写XML文档时,需要先使用文档声明,声明XML文档的类型。
<?xml version="1.0" encoding="UTF-8"?>
version版本 encoding属性说明文档的字符编码
- 元素
XML元素指xml文件中出现的标签,一个标签分为开始标签和结束标签
- 包含标签体:<a>www.baidu.com</a>
- 不含标签体:<a></a>简写为:<a/>
注意
- 标签中可以嵌套若干个子标签,但是子标签不允许交叉嵌套
- 良好的XML文件格式有且只有一个根标签,其余的都是他的子孙标签
- 属性
一个标签可以有多个属性,每个属性都有它的名称和值
比如:<input type = "text"/>
- 属性值一定要用单引号''或者双引号""括起来
- CDATA区
- CDATA是给xml解析器看的,xml的解析器会做调整后(空白符压缩)原样输出CDATA区中的内容
- 语法:<![CDATA[内容]]>,具体例子在Xml代码段中
- 转义字符
- 处理指令
处理指令用来指挥XML解析引擎如何解析XML文档内容
- 处理指令必须以"<?"和"?>"作为开头和结束
例如,在XML文档中可以使用xml-stylesheet指令,通知xml解析引擎,应用css文件显示xml文档内容。
现在我们知道了,如果没有约束文件,针对于一个需求,每个人都有着自己的想法、多种写法从而写出多种不同的xml文件,这样就会造成一个麻烦、琐碎的事情——需要写多个Java程序来解析。
XML的语法要求
1,XML文档必须有一个顶层元素,即文档元素,所有其他元素必须嵌入在文档元素中。
2,元素嵌套要正确,即如果一个元素在另一个元素中开始,那么必须在同一个元素中结束。
3,每个元素必须同时拥有起始标记和结束标记。
4,起始标记中的元素类型名必须与相应结束标记中的名称完全匹配。
5,元素类型名区分大小写。
6,元素类型名称中可以包含字母,数字以及其他字母元素类型,也可以使用非英文字符,但名称不能以数字或者符号“-”开头,另外,名称中不能包含空格和冒号“:”。
(三)XML语法规则——DTD
在Xml技术里,通常编写一个文档来约束xml文档里的书写规范,称之为XML约束。
今天在这里给大家介绍 XML DTD
DTD(Document Type Definition)是文档类型定义,最好位于声明语句下方。
将DTD与XML相关联的三种方式
-
文档关联——内部DTD:
(1)格式:<!DOCTYPE 文档根节点 [具体的规范内容]>
文档关联——外部DTD(引用本地所在的文件)
格式:<!DOCTYPE 文档根节点 SYSTEM "DTD文件的URL" >
- 文档关联——公共DTD(引用的文件是一个公共的文件)
格式:<!DOCTYPE 文档根节点 PUBLIC "DTD名称" "DTD文件的URL">
DTD约束语法细节
- 元素(ELEMENT)定义
格式:<!ELEMENT 元素名称 元素内容声明>
eg:<!ELEMENT bookstore (book,title) >子标签中的逗号表示对象的属性必须按照指定的顺序出现
- 属性(ATTLIST)定义
格式:
<! ATTLIST 元素名称
属性名 属性类型 约束
................................
>
(1)属性类型
(2)约束
- 实体(ENTITY)定义
实体是一个变量——用于引用普通文本或特殊字符的快捷方式的变量。实体分为两类:内部实体和外部实体
(1)内部实体又分为:引用实体和参数实体
引用实体
语法格式:<!ENTITY 实体名称 "实体内容" >
引用方式:&实体名称;
参数实体
语法格式:<!ENTITY %实体名称 ,"实体内容">
引用方式:%实体名称;
参数实体:在DTD中定义,也在DTD中使用
(2)外部实体(不常用)
格式:<!ENTITY 实体名称 SYSTEM "URL/URI">
引用方式:&实体名称;