一、语法
XML声明:
XML声明放在XML文档的第一行
XML声明由以下几个部分组成:
version:文档符合xml1.0规范,我们学习1.0
encoding:文档字符编码,比如“GB2312”或者“UTF-8”
standalone:文档定义是否独立使用“no”为默认值表示不独立(允许使用外部声明
),yes表示独立使用(不允许使用外部声明)
<?sml version="1.0" ?>
这个就是xml的声明,声明也是处理指令,在xml中,所有的处理指令都以<?开始
,?>结束。<?后面紧跟着的是处理指令的名称。xml处理指令要求指定一个version属性。
并允许指定可选的standalone和encoding
规则:
(1)每个xml文档必须有且只有一个根元素
(2)在xml中,空格和换行都作为原始内容被处理,所以要小心
(3)命名规范:
区分大小写,P和p是两个不同的元素
不能以数字或下划线“_”开头
元素内不能包含空格
名称中间不能包含冒号(:)
XML有5个预定义的实体字符
< < 小于
> > 大于
& & 和号
' ' 单引号
" " 双引号
注释:
以!--开始--结束
<!--这是一个注释-->
xml组成:
<?xml version="1.0" encoding="utf-8" ?>
<元素 属性=“属性值”>标签体</元素>
二、ΧΜL引用DTD文件两种情况:
1.内部dtd将standalone设为真。
<?xml version="1.0" standalone="yes"?>
<!DOCTYPE root [
<!ELEMENT root EMPTY>
]>
2.外部dtd将standalone设置为假
<?xml version="1.0" standalone="no"?>
<!DOCTYPE root SYSTEM "http://www.test.org/test.dtd">
引用DTD文件和xml一起使用,目的是对xml格式的约束:如下引用内部DTD

编写DTD来约束xml如:
- <!ELEMENT root EMPTY> //EMPTY关键字表示元素是个空元素
- <!ELEMENT root ANY> //ANY关键字表示元素中可以出现任何内容,也可以为空
- //下面这个声明表示root中可以有文本,也可以是空
- <!ELEMENT root (#PCDATA)> //()表示一个分组,其中是放的允许在元素出现的内容,#PCDATA表示文本
- <!ELEMENT root (child)> //child是子元素的名称,这个声明表示root中必须且只能有一个child元素
- <!ELEMENT root (child1,child2)> //以逗号分隔,表示子元素依次出现
- <!ELEMENT root (child1|child2)> //竖线与"OR"的意思相近,表示root元素中只能出现child1或child2
- <!ELEMENT root (child?)> //root中child子元素可以出现一次,也可以不出现
- <!ELEMENT root (child+)> //root中child子元素至少出现一次
- <!ELEMENT root (child*)> //root中child子元素可以出现任意次数或不出现
- <!ELEMENT root (child,(a,b))> //()还可以嵌套,这里表示root元素中第一次子元素必须是child
- //紧接着是a或b
- <!ELEMENT root (child,(a,b)+)> //*,?,+这些量词可作用于分组,这里表示root元素中第一次子元素必须是child
- //紧接着是a或b出现一次或多次
<!ENTITY 实体引用名 “引用内容”>
实体分两类:
1.一般实体(格式:&实体引用名)
2.参数实体(格式:%实体引用名)
一般实体,可以在XML文档中的任何位置出现的实体称为一般实体。实体可以声明为内部
实体还是外部实体。外部实体分SYSTEM和PUBLIC两种。
SYSTEM引用本地计算机,PUBLIC引用公共计算机,外部实体格式如下:
<!ENTITY 引用名 SYSTEM(PUBLIC) "URL地址">
在XML中,实体必须在DOCTYPE声明中声明。<!DOCTYPE [...]>声明在XML声明的后面
如:<?xml version="1.0" encoding="UTF-8">
<!DOCTYPE 根元素名 [
<!ENTITY 实体引用名 “引用内容”>
<!ENTITY 实体引用名 SYSTEM "引用内容">
]>
实例:
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ENTITY titlue "引用字符1">
<!ENTITY titlue2 "引用字符2">
]>
<root>
<title value="&titlue;"> &titlue; </title>
<title2>
<value><a>&titlue2;</a></value>
</title2>
</root>
引用多个xml文件实例:
有one.xml文件和two.xml文件
<?xml version="1.0" encoding="GBK"?>
<root>
<项目>gbk</项目>
<时间>2018</时间>
<状态>start</状态>
</root>
<?xml version="1.0" encoding="GBK"?>
<root>
<姓名>ll</姓名>
<年龄>18</年龄>
<毕业学校>bj</毕业学校>
</root>
<?xml version="1.0" encoding="GBK"?>
<!DOCTYPE root[
<!ENTITY one SYSTEM "./one.xml">
<!ENTITY two SYSTEM "./two.xml">
]>
<root>
&one;
&two;
</root>
注意:在引用实体时以‘&’开始‘;’结束。
参数实体:
参数实体只能在DTD中使用,参数实体的声明格式:
<!ENTITY % 实体名 "实体内容">
引用方式:%实体名;
注意:参数实体引用不能出现在内部DTD的标记声明内部 , 可以在标记声明允许出现的地方出现 。 对于外部DTD则没有这个限制。