與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>