学习链接
目录
第一章 XML入门
1、XML简介
- eXtensible Markup Language 可扩展标记型语言
- 标记型语言:html等也是使用标签来操作
- 可扩展:标签可以自己定义,可以写中文的标签
html里面的标签是固定的,每个标签都有特定的含义 - xml用途:html用于显示数据,xml也可以显示数据(不是主要功能),主要功能是存储数据
- xml是w3c组织发布的技术
- 两个版本:1.0和1.1,1.1不能向下兼容,当前使用版本1.0
2、XML的应用
- 不同系统间传输数据:发送/接收内容的格式,利于程序的维护
- 用来表示生活中有关系的数据:例如:国家-省-城市-区
- 经常用在配置文件中:数据库的用户、密码、数据名等,不用放在源代码中
3、XML的文档声明
- 创建文件的后缀名为.xml
- 必须要有文档声明,表示xml文件的内容,写在第一行
<?xml version="1.0" encoding="gbk">
- 属性:
version:xml的版本 1.0(使用) 1.1
encoding:xml编码 gbk utf-8 iso8859-1(不包含中文)
standalone:是否需要依赖其他文件 yes/no
4、XML中文乱码问题解决
<?xml version="1.0" encoding="utf-8">
<person>
<name>张三</name>
<age>20<age>
</person>
- 文件中使用了中文,描述编码为utf-8,保存文件时编码选系统默认(gbk),“张三”以gbk的二进制编码保存,浏览器打开使用了设置的编码utf-8,找不到对应的中文编码,导致出现乱码
- 解决方法:保存的编码和设置的编码一致就不会出现乱码
5、XML元素定义
- 元素(标签)定义
- 有开始,有结束
<person>
</person>
- 标签没有内容时可以在标签内结束
<person/>
- 标签可以嵌套,但必须合理
<!--合理嵌套-->
<aa><bb></bb></aa>
<!--不合理嵌套-->
<aa><bb></aa></bb>
- 一个XML文档有且仅有一个根标签,其他标签都是这个标签下的标签
- 在XML标签中出现的空格和换行,XML解析出现都会当做标签内容进行处理
<!--两段代码含义不同-->
<aa>111111</aa>
<aa>
111111
</aa>
- XML中标签的命名规则
(1)xml代码区分大小写
<p><P>是两个不同的标签
(2)标签名称不能以数字和下划线开头
<2a><_aa>都不正确
(3)标签不能以xml、XML、Xml等开头
<xmla><xmlb><Xmlc>都不正确
(4)标签中不能包含空格和冒号
<a b><b:c>都不正确
(5)标签可以是中文
6、XML属性定义
- html是标记型文档,可以有属性;xml也是标记型文档,可以有属性
<person id1="aaa"></person>
- (1)一个标签上可以有多个属性
<person id1="aaa" id2="bbb"></person>
- (2)属性名称不能相同
<person id1="aaa" id1="bbb"></person>这是不正确的
- (3)属性名称和属性值之间使用=,属性值使用引号包起来(可以是单引号、双引号)
- (4)属性命名规范和元素(标签)命名规范相同
7、XML 注释
- 写法 :和html相同、优快云博客的注释也是这个格式
<!--注释内容-->
- 注释不能嵌套
- 注释也不能放在xml文档第一行,必须放声明
8、XML特殊字符
- 如果要在标签中显示a<b等包含特殊字符的内容,需要对特殊字符进行转义
< <
> >
& &
" "
' '
- 可以观察到转义符号都包含&和;
不可省略
9、XML的CDATA区
- 包含特殊字符的内容需要频繁使用转义时,可以把这些内容放到CDATA区
- 写法
<![CDATA[内容]]>
- 相当于把这些内容当做普通文本显示
10、XML的PI指令(处理指令)
- 可以在xml中设置样式
- 写法
<?xml version="1.0" encoding="utf-8">
<?xml-stylesheet type="text/css" herf="css文件路径"?>
<person>
<name>zhangsan</name>
<age>20</age>
</person>
- css文件
name {
background-color:red;
}
age {
background-color:greem;
}
- 设置样式只能对英文标签名称起作用,对中文标签名称不起作用。
- 一般css不做显示,多做数据传输,用处较少。
11、XML 约束简介
- 为什么需要约束?
假如定义一个person的xml文件,只想文件保存人的信息,但如果在xml文件中写了<猫>的标签,可以正常显示,因为符合语法规范,xml的标签是自定义的,需要技术来规定xml中只能出现的元素,这个时候需要约束。 - XML的约束技术:dtd约束 和 schema约束
第二章 DTD(文档类型定义)
1、DTD快速入门
- 创建一个文件,后缀名为.dtd
- 步骤:
(1)看XML中有多少个元素,有几个元素,在dtd文件中写几个<!ELEMENT>
(2)判断元素是简单元素还是复杂元素:
- 简单元素:没有子元素 <!ELEMENT 元素名称 (#PCDATA)>
- 复杂元素:有子元素 <!ELEMENT 元素名称(子元素)>
1.dtd
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
(3) 在XML文件中引入dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
<!DOCTYPE person SYSTEM "1.dtd">
- 在xml文件中加入新的元素,用浏览器打开,可以显示,因为浏览器只负责校验xml的语法,不负责校验约束
- 如果想要校验xml的约束,需要使用工具(myeclipse)
在myeclipse中创建一个java工程 - src下new一个xml(Basic Templates)1.xml
<?xml version="1.0" encoding="utf-8">
<!DOCTYPE person SYSTEM "1.dtd">
<person>
<name>zhangsan</name>
<age>20</age>
</person>
- src下new一个dtd 1.dtd
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
- 在xml文件中加入新的不再dtd中约束的元素时会报错
2、DTD的三种引入方式
(1)引入外部的dtd文件
<!DOCTYPE 根元素名称 SYSTEM "dtd文件路径">
(2)引入(使用)内部的dtd文件
<!DOCTYPE 根元素名称 [
<!ELEMENT person (name,age)>
<!ELEMENT name (#PCDATA)>
<!ELEMENT age (#PCDATA)>
]>
(3)使用外部的dtd文件
<!DOCTYPE 根元素名称 PUBLIC "DTD名称" "DTD文档的URL">