与html的区别:
1、标签自定义
2、html可以实现一些动作,xml只存放数据,与世无争
DTD:document type definition 文档定义类型
用途:是一个标准,是一套语法规则,如果在xml里面引入dtd文件,那么就必须按照这个dtd的规则来定义xml
引入方式:外部引入,内部引入,内外部引入
1.内部引入:
语法:<!DOCTYPE 根节点[
<!ELEMENT 根节点(根节点下面的子节点,根节点下面的子节点)>
]>
列:<!DOCTYPE people[
<!ELEMENT people (student)>
<!ELEMENT student (#PCDATA)>
]>
<people>
<student>XML</student>
</people>
2.外部引入:
语法:新建一个dtd文件
写入<!ELEMENT people (student,sex)>
<!ELEMENT student (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
在需要引入的文件中写:
引入网络资源:<!DOCTYPE 根节点 PUBLIC "dtd的文件名" "dtd网络资源地址">
引入自己写的dtd:<!DOCTYPE 根节点 SYSTEM "dtd的文件路径">
dtd文件(文件名为2.dtd)
<?xml version="1.0" encoding="UTF-8"?>
<!ELEMENT people (student,sex)>
<!ELEMENT student (#PCDATA)>
<!ELEMENT sex (#PCDATA)>
xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE people SYSTEM "2.dtd">
<people>
<student>小名</student>
<sex>男</sex>
</people>
元素定义:
1、#PCDATA 可以是任意的文本字符数据 不能有子节点
2、EMPTY 空,节点之间的内容为空
3、ANY 任意类型
4、混合类型
子节点后面跟符号:如<!ELEMENT people (student,sex+)>
+:表示这个可以出现一次或者多次
?:出现一次或者0次
*:出现任意次
,:元素必须按照顺序显示
|:多个选择出现一个
例:xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE sun [
<!ELEMENT sun (boy, girl, end, music+, (dog | cat))>
<!ELEMENT boy ANY>
<!ELEMENT one (#PCDATA)>
<!ELEMENT two (#PCDATA)>
<!ELEMENT girl (#PCDATA)>
<!ELEMENT end EMPTY> <!ELEMENT music (#PCDATA)>
<!ELEMENT dog (#PCDATA)>
<!ELEMENT cat (#PCDATA)>
]>
<sun>
<boy>
<one>1号</one>
<two>2号</two>
</boy>
<girl>宋</girl>
<end/>
<music>单程票</music>
<music>什么时候不要敲代码</music>
<dog>狗</dog>
</sun>
属性的语法:
<!ATTLIST 元素名称 属性名 属性类型 属性特点>
属性类型:
1、CDATA 可以是任意文本类型 是#PCDATA的一个子集
2、ID 该属性值是唯一的 但不能是纯数字
3、IDREF/IDREFS 对ID值的一个引用
4、NMTOKEN 名称编号 是CDATA的一个子集 只能是英文字母,数字,句号,破折号,下划线,冒号
属性特点:
1、必要的 #REQUIRED
2、可有可无的 #IMPLIED
3、强制使用该值 #FIXED
4、默认 Default 值
例:xml文件
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE lol[
<!ELEMENT lol (诺克萨斯,祖安,战争学院,工学院,教育局)>
<!ELEMENT 诺克萨斯 (#PCDATA)>
<!ELEMENT 祖安 (#PCDATA)>
<!ELEMENT 战争学院 (#PCDATA)>
<!ELEMENT 工学院 (#PCDATA)>
<!ELEMENT 教育局 (#PCDATA)>
<!ATTLIST 诺克萨斯 英雄 CDATA #REQUIRED>
<!ATTLIST 诺克萨斯 位置 CDATA #IMPLIED>
<!ATTLIST 祖安 people CDATA #FIXED "刷子">
<!ATTLIST 战争学院 teacher CDATA "军哥">
<!ATTLIST 工学院 编号 ID #REQUIRED>
<!ATTLIST 战争学院 编号 ID #REQUIRED>
<!ATTLIST 教育局 所有的学校 IDREFS #REQUIRED>
<!ATTLIST 教育局 别名 NMTOKEN #REQUIRED>
]>
<lol>
<诺克萨斯 英雄="卡特"></诺克萨斯>
<祖安 people="刷子"></祖安>
<战争学院 编号="s2"></战争学院>
<工学院 编号="s1"></工学院>
<教育局 所有的学校="s1 s2" 别名="湖南"></教育局>
</lol>