Xml文档结构
<?xml version=”1.0” [遵循的规范为1.0] encoding=”utf-8”[编码集] standalone=”yes”[是否为独立的xml文档] ?>
<!DOCTYPE 根标记的名称 SYSTEM “dtd1.dtd”>dtd的引用
<根标记>
<子标记></子标记>
。。。。。。。
</根标记>
dtd1.dtd为了定义能在xml文档中出现的元素有哪些、元素的属性、元素的顺序
<!xml version=”1.0” encoding=”utf-8”?>
<!ELEMENT元素的名称 元素的类型>-------定义元素
<!ATTLIST 元素名 属性名 类型 keyword[是必须选的还是可以不选] “默认值”>--------定义元素的属性
<!ELEMENT br EMPTY>---br不能有内容,可以为<br/>单标记或者<br></br>中间不能有内容
<!ELEMENT 元素名 (#PCDATA)>-------PCDATA定义的元素的里面是文本,不能包含子标签
<!ELEMENT 学生 (学号,姓名)>--------学生里面只能出现学号和姓名这两个子标记
<!ELEMENT 学生 (#PCDATA|学号|姓名)*>--------姓名和学号可以无序的出现多次,要是没有*那么就是互斥
定义混合内容元素
<!ELEMENT 父元素名 (#PCDATA|子元素1|子元素2|子元素3…..)*>
<?xml version="1.0" encoding="GB2312"?>
<!ELEMENT 喜欢的游戏 (#PCDATA | 游戏)*>
<!ELEMENT 游戏 (#PCDATA | 游戏名称 | 游戏类型)*>
<!ELEMENT 游戏名称 (#PCDATA)>
<!ELEMENT 游戏类型 (#PCDATA)>
<!xml version=”1.0” encoding=”utf-8”?>
<喜欢的游戏>
这是我喜欢的游戏
<游戏>
<游戏名称>
这是游戏名称,名称和类型可以互换位置,可以出现多次
</游戏名称>
<游戏类型>
这是游戏类型
</游戏类型>
</游戏>
</喜欢的游戏>
<书籍列表>
<计算机书籍>
<书名>完全</书名>
</计算机书籍>
<计算机书籍>
<价格></价格>
</计算机书籍>
</书籍列表>
ATTLIST 元素名 属性名 类型 keyword “默认值“属性名 类型 keyword “默认值“…>
#REQUIRED 该属性是必须的
#IMPLIED 该属性可以没有
#FIXED 该属性有固定值,不论设置或不设置,都为固定值
Eg:
<!ELEMENT 作者 地址 CDATA #FIXED “保定市”>
<!ATTLIST 作者 性别 (男|女) “男”>---------枚举类型,默认为男,只能在男女之间选
<!ELEMENT 读者 EMPTY >
<!ATTLIST 读者 书号 IDREF #IMPLIED>--------读者所读书的书号
<!ATTLIST 读者 书号 IDREFS #IMPLIED>-------------在xml中可以写出多本书的书号
<读者 书号=”it0001 it0002 ”>
子元素之间存在的逻辑关系:
1、 有序的子元素
用英文逗号(,)作为子元素之间的分隔符,则子
元素之间必须遵守所定义的顺序。
2、 互斥的子元素
互斥的子元素表明一系列子元素之间只能出现
其中一次。互斥子元素使用竖线(|)分隔,以竖
线(|)分隔的多个元素只能出现其中之一。
3、 无序的子元素
<!ELEMENT 学生 (#PCDATA|学号|姓名)*>--------姓名和学号可以无序的出现多次,要是没有*那么就是互斥
子元素出现的频率:
+: 表明子元素可以出现1次或多次
*: 表明子元素可以出现0次或多次
?: 表明子元素可以出现0次或1次
定义任意类型的元素
<!ELEMENT 元素名 ANY>
定义字符串内容的元素
<!ELEMENT 元素名 #PCDATA>
定义属性类型
属性类型 | 含义 |
CDATA | 值为字符串数据 |
(en1|en2|..) | 此值是枚举列表中的一个值 |
ID | 该属性值必须是有效地标识符,在XML文档时唯一的 |
IDREF | 值为另外一个元素的 id属性值 |
IDREFS | 值必须引用自多个已经有的ID属性值,多个ID属性值用空格隔开 |
NMTOKEN | 值为合法的 XML 名称 |
NMTOKENS | 值为多个合法的 XML 名称的列表 |
ENTITY | 值是一个外部实体,如图片支持 |
ENTITIES | 值是一个实体列表,多个实体之间以空格隔开 |
NOTATION | 该属性值是在DTD中声明过的符号,这个是过期的,不要使用 |
定义实体作用
1、提高代码的敷用,方便修改,维护XML文档
2、使用某些特殊的符号,这些特殊的符号可能会使XML解析器混淆
3、减少字符输入量,如果某个字符串特别长,而且需要经常使用,则可以定义为实体
content “详细的内容介绍”
&content;------实体引用,相当于字符串“详细的内容介绍”
实体的分类
1、按照实体的具体内容来分类,实体可分为可解析与不可解析两类。
2、按照逻辑存储来分类,实体可分为内部实体与外部实体两类
3、按照使用的范围来分类,实体可分为一般实体与参数实体两类。
定义普通实体
<!ENTITY 实体名 “实体值”>------内部实体,一般的普通实体
<!ENTITY title “所有计算机书籍的列表”>
使用实体的语法:
&实体名;
&title;
定义参数实体
<!ENTITY % 实体名 “实体值”>
使用实体的语法:
%实体名
外部普通实体
<! ENTITY 实体名 SYSTEM “实体值所在文件的URI”>
<! ENTITY 实体名 PUBLIC “公用实体标识名” “实体值所在文件的URI”>
外部参数实体
<!ENTITY %实体名 SYSTEM|PUBLIC[“公用实体标识名”] “实体值所在文件的URI”>