一、什麼是XML?
1、XML是指可擴展標記語言(eXtensible Markup Language),用戶自定義的標籤.相對於HTML來講的。
2、XML被設計的宗旨是表示數據。HTML是用來顯示數據的。目前經常使用的XML版本是1.0
3、XML除了表示數據外。在實際的企業開發中,主要用XML作爲程序的配置文件。
二、XML的基本語法
1、文檔聲明:
作用:用於標識該文檔是一個XML文檔。
注意事項:聲明必須出現在文檔的第一行(之前連空行都不能有,也不能有任何的註釋)
最簡單的XML聲明:<?xml version="1.0"?>
聲明中的encoding屬性:說明解析當前XML文檔時所使用的編碼。默認是UTF-8
聲明中的standalone屬性:說明XML文檔是否是獨立的。
2、元素:結束標籤不能省略 ;
一個XML文檔必須且只能有一個根標籤;
XML文檔中不會忽略回車和換行及空格;
標籤的命名規範:元素(標籤)的名稱可以包含字母、數字、減號、下劃線和英文句點。嚴格區分大小寫。
3、元素的屬性:
元素的屬性取值一定要用引號引起來(單引號或者雙引號)。
4、註釋:
與HTML中的註釋完全一致:<!--這是註釋--> 。注意: 註釋不能嵌套。
5、CDATA區:
CDATA是Character Data的縮寫。作用:CDATA區中的內容都是文本。
語法格式如下:
<![CDATA[
文本內容
]]>
6、處理指令:
處理指令,簡稱PI(Processing Instruction)。
作用:用來指揮軟件如何解析XML文檔。
語法:必須以“<?”作爲開頭,以“?>”作爲結尾。
四、XML的約束
1、格式良好的XML文檔:符合XML語法的。
2、有效的XML文檔:遵循約束規範的。
格式良好的不一定是有效的,但有效的一定是格式良好的。
五、DTD的基本語法
1、DTD:Document Type Definition(文檔類型定義)。
2、作用:約束XML的書寫規範。
3、DTD文件保存到磁盤時,必須使用UTF-8編碼。
4、如何引入外部的DTD文檔來約束當前的XML文檔?
(1)DTD文件在本地:<!DOCTYPE 根元素名稱 SYSTEM "DTD文件的路徑">
(2)DTD文件在網絡上:<!DOCTYPE 根元素名稱 PUBLIC "DTD名稱" "DTD的路徑URL">
5、定義元素:
語法:<!ELEMENT 元素名稱 使用規則>
使用規則:
(#PCDATA):指示元素的主體內容只能是普通的文本.(Parsed Character Data)
EMPTY:指示元素的不能有主體內容。
ANY:用於指示元素的主體內容爲任意類型
(子元素):指示元素中包含的子元素
如果子元素用逗號分開,說明必須按照聲明順序去編寫XML文檔
如果子元素用“|”分開,說明任選其一。
用+、*、?來表示元素出現的次數
6、定義元素的屬性(attribute):
語法:<!ATTLIST 哪個元素的屬性
屬性名1 屬性值類型 設置說明
屬性名2 屬性值類型 設置說明>
屬性值類型:
CDATA:說明該屬性的取值爲一個普通文本
ENUMERATED (DTD沒有此關鍵字):
語法:<!ATTLIST 元素名稱 (值1|值2) "值1">
ID:屬性的取值不能重複
設置說明:
#REQUIRED:表示該屬性必須出現
#IMPLIED:屬性可有可無
#FIXED:表示屬性的取值爲一個固定值 語法:#FIXED "固定值"
直接值:表示屬性的取值爲該默認值
7、定義實體:
關鍵字ENTITY
實體的定義分爲引用實體和參數實體
引用實體:
作用:在DTD中定義,在XML中使用
語法:<!ENTITY 實體名稱 "實體內容">
在XML中使用:&實體名稱;
參數實體:
作用:在DTD中定義,在DTD中使用
語法:<!ENTITY % 實體名稱 "實體內容">
在DTD中使用:%實體名稱;
如下爲定義一個文檔約束的例子:
<!ELEMENT 書架 (書+)>
<!ELEMENT 書 (書名,作者,售價)>
<!ELEMENT 書名 (#PCDATA)>
<!ELEMENT 作者 (#PCDATA)>
<!ELEMENT 售價 (#PCDATA)>
下面是一個按照約束寫的一個XML文件:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE 書架 SYSTEM "book.dtd">
<書架>
<書>
<書名>XXX</書名>
<作者>XXX</作者>
<售價>99元</售價>
</書>
<書>
<書名>XXXXX</書名>
<作者>XXX</作者>
<售價>50元</售價>
</書>
</書架>