XML(eXtensible Markup Language)簡介
XML 可擴展標記語言
XML是一種您可以用來創建自己的標記的標記語言。
XML由萬維網協會(W3C)創建
XML和Html比較
比較內容 |
HTML |
XML |
可擴展性 |
不具有擴展性 |
是元標記言,可用于定義新的標記語言 |
側重點 |
側重于如何表現信息 |
側重于如何結構化地描述信息 |
語法要求 |
不要求標記的嵌套、配對等,不要求標記之間具有一定的順序 |
嚴格要求嵌套、配對,并遵循DTD的樹形結構
|
可讀性及可維護性 |
難于閱讀、維護 |
結構清晰,便于閱讀、維
護
|
數據和顯示的關系 |
內容描述與顯示方式整合為一體 |
內容描述與顯示方式相分離 |
編輯及瀏覽工 |
已有大量的編輯、瀏覽工具 |
編輯、瀏覽工具 |
XML優勢
數據重用
數據和表示分離
可擴展性
語意信息
XML 聲明
<?xml version="1.0" encoding="UTF-8"?>
XML聲明一般是XML文檔的第一行
XML聲明由以下幾個部分組成:
version - -文檔符合XML1.0規范
encoding - -文檔字符編碼,默認為"UTF-8"
遵循如下規則的XML文檔稱為結構完整:
語法規范
1.必須有XML聲明語句
2.<?xml version="1.0" encoding=“GBK"?>
3.必須有且僅有一個根元素
4.標記大小寫敏感
5.屬性值用引號
6.標記成對
7.空標記關閉
8.元素正確嵌套
元素語法
1.名稱中可以包含字母、數字或者其它字符
2.名稱不能以數字和"_"(下劃線)開頭
3.不能以XML/xml/Xml/…開頭
4.名稱中不能含空格
5.名稱中不能含冒號(注:冒號留給命名空間使用)
文本內容PCDATA
XML支持Unicde字符集,因此可以在文本中包含字母/數字/標點/符號等。
注意:因為XML使用<,>,和&界定標記,如果在文本中包含有這些字符,必須使用實體替代。
CDATA
1.在特殊的標記CDATA下,所有的標記、實體引用都被忽略,而被XML處理程序一視同仁地當作字符數據看待。CDATA的形式:〈![CDATA[文本內容]]〉
2.用于把整段文本解釋為純字符數據而不是標記的情況。包含大量<、>、&或者"字符。CDATA節中的所有字符都會被當作元素字符數據的常量部分,而不是XML標記。
3.可以輸入任意字符(除]]>外)
4.不能嵌套使用CDATA
CDATA與PCDATA
PCDATA是被解析器解析的文本。文本內的標簽會被當作標記,實體會被展開。
CDATA是不被解析器解析的文本。文本內的標簽不會被當作標記,實體不會被展開。
XML注釋
注釋內容中不要出現--;
不要把注釋放在標記中間;
<Name <!--the name-->>TOM</Name>
注釋不能嵌套;
可以在除標記以外的任何地方放注釋。
XML屬性
1.屬性值用雙引號(")或單引號(')分隔(如果屬性值中有',用"分隔;有",用'分隔)
2.一個元素可以有多個屬性,它的基本格式為:<元素名 屬性名="屬性值">
3.特定的屬性名稱在同一個元素標記中只能出現一次
4.屬性值不能包括<, >, &
XML文檔中的屬性有兩個規則:
1.屬性必須有值
2.那些值必須用引號括起。您可以使用單引號,也可以使用雙引號,但要始終保持一致。
命名空間---namespace
為XML中的元素設定一個唯一的標識名稱
與URI結合來定義一個唯一標識
去除了XML文件中可能存在的元素名重疊的問題
DOCTYPE
文檔類型聲明,緊跟XML聲明之后,包含所有實體聲明
語法:
<?xml version="1.0"?>
<!DOCTYPE 根元素標記名 [
<!--實體聲明-->
]>
實體引用
為了避免把字符數據和標記中需要用到的一些特殊符號相混淆,XML還提供了一些有用的實體引用。
作用:避免重復輸入
自定義實體語法:
<!DOCTYPE Book(根元素)[
<!ENTITY chapter1(實體名) "玄幻小說"(實體內容)>
<!ENTITY chapter2 "電影記錄">
]>
引用已定義的實體:&實體名;
DTD
內部的 DOCTYPE 聲明:
假如 DTD 被包含在您的 XML 源文件中,它應當通過下面的語法包裝在一個 DOCTYPE 聲明中:
<!DOCTYPE 根元素 [元素聲明]>帶有 DTD 的 XML 文檔實例(請在 IE5 以及更高的版本打開,并選擇查看源代碼):
1
<?xml version="1.0"?>
2
<!DOCTYPE note [
3
<!ELEMENT note (to,from,heading,body)>
4
<!ELEMENT to (#PCDATA)>
5
<!ELEMENT from (#PCDATA)>
6
<!ELEMENT heading (#PCDATA)>
7
<!ELEMENT body (#PCDATA)>
8
]>
9
<note>
10
<to>George</to>
11
<from>John</from>
12
<heading>Reminder</heading>
13
<body>Don't forget the meeting!</body>
14
</note>
以上 DTD 解釋如下:
!DOCTYPE note (第二行)定義此文檔是 note 類型的文檔。
!ELEMENT note (第三行)定義 note 元素有四個元素:"to、from、heading,、body"
!ELEMENT to (第四行)定義 to 元素為 "#PCDATA" 類型
!ELEMENT from (第五行)定義 frome 元素為 "#PCDATA" 類型
!ELEMENT heading (第六行)定義 heading 元素為 "#PCDATA" 類型
!ELEMENT body (第七行)定義 body 元素為 "#PCDATA" 類型
外部文檔聲明:
假如 DTD 位于 XML 源文件的外部,那么它應通過下面的語法被封裝在一個 DOCTYPE 定義中:
<!DOCTYPE 根元素 SYSTEM "文件名">這個 XML 文檔和上面的 XML 文檔相同,但是擁有一個外部的 DTD: (在 IE5 中打開,并選擇“查看源代碼”命令。)
1
<?xml version="1.0"?>
2
<!DOCTYPE note SYSTEM "note.dtd">
3
<note>
4
<to>George</to>
5
<from>John</from>
6
<heading>Reminder</heading>
7
<body>Don't forget the meeting!</body>
8
</note>
聲明一個元素:
在 DTD 中,XML 元素通過元素聲明來進行聲明。元素聲明使用下面的語法:
<!ELEMENT 元素名稱 類別>
或者
<!ELEMENT 元素名稱 (元素內容)>空元素
空元素通過類別關鍵詞EMPTY進行聲明:
<!ELEMENT 元素名稱 EMPTY>
只有 PCDATA 的元素:
只有 PCDATA 的元素通過圓括號中的 #PCDATA 進行聲明:
<!ELEMENT 元素名稱 (#PCDATA)>
帶有任何內容的元素:
通過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:
<!ELEMENT 元素名稱 ANY>
帶有子元素(序列)的元素:
帶有一個或多個子元素的元素通過圓括號中的子元素名進行聲明:
<!ELEMENT 元素名稱 (子元素名稱 1)>
或者
<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,
..)>
當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出現在文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。
聲明只出現一次的元素:
<!ELEMENT 元素名稱 (子元素名稱)>
聲明最少出現一次的元素:
<!ELEMENT 元素名稱 (子元素名稱+)>
聲明出現零次或多次的元素:
<!ELEMENT 元素名稱 (子元素名稱*)>
聲明出現零次或一次的元素:
<!ELEMENT 元素名稱 (子元素名稱?)>
聲明“非.../既...”類型的內容:
<!ELEMENT note (to,from,header,(message|body))>
上面的例子聲明了:"note" 元素必須包含 "to" 元素、"from" 元素、"header" 元素,以及非 "message" 元素既 "body" 元素。
聲明混合型的內容:
<!ELEMENT note (#PCDATA|to|from|header|message)*>
上面的例子聲明了:"note" 元素可包含出現零次或多次的 PCDATA、"to"、"from"、"header" 或者 "message"。
XML Schema 簡介
XML Schema 是基于 XML 的 DTD 替代者。
XML Schema 可描述 XML 文檔的結構。
XML Schema 語言也可作為 XSD(XML Schema Definition)來引用。
XML Schema 是 DTD 的繼任者
XML Schema 相對于 DTD 的優點如下:
XML Schema 可針對未來的需求進行擴展
XML Schema 更完善,功能更強大
XML Schema 基于 XML 編寫
XML Schema 支持數據類型
XML Schema 支持命名空間
下面這個例子是一個名為 "note.xsd" 的 XML Schema 文件,它定義了下面那個 XML 文檔的元素:
1
<?xml version="1.0"?>
2
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
3
targetNamespace="http://www.w3school.com.cn"
4
xmlns="http://www.w3school.com.cn"
5
elementFormDefault="qualified">
6
<xs:element name="note">
7
<xs:complexType>
8
<xs:sequence>
9
<xs:element name="to" type="xs:string"/>
10
<xs:element name="from" type="xs:string"/>
11
<xs:element name="heading" type="xs:string"/>
12
<xs:element name="body" type="xs:string"/>
13
</xs:sequence>
14
</xs:complexType>
15
</xs:element>
16
17
</xs:schema>
對 XML Schema 的引用
此文件包含對 XML Schema 的引用:
1
<?xml version="1.0"?>
2
<note
3
xmlns="http://www.w3school.com.cn"
4
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
5
xsi:schemaLocation="http://www.w3school.com.cn note.xsd">
6
7
<to>George</to>
8
<from>John</from>
9
<heading>Reminder</heading>
10
<body>Don't forget the meeting!</body>
11
</note>
相關資料鏈接
J2EE復習(一)HTML
J2EE復習(二)XML(上)
J2EE復習(二)XML(下)--XML解析
J2EE復習(三)JavaScript