XML聲明通常是XML文檔的第一行
XML聲明由如下幾個部分組成:
version - -文檔符合XML1.0規範
encoding - -文檔字符編碼,默認爲"UTF-8"網絡
遵循以下規則的XML文檔稱爲結構完整:
語法規範
1.必須有XML聲明語句工具
<?xml version="1.0" encoding=「GBK"?>
2.必須有且僅有一個根元素
3.標記大小寫敏感
4.屬性值用引號
5.標記成對
6.空標記關閉
7.元素正確嵌套
元素語法
1.名稱中能夠包含字母、數字或者其它字符
2.名稱不能以數字和"_"(下劃線)開頭
3.不能以XML/xml/Xml/…開頭
4.名稱中不能含空格
5.名稱中不能含冒號(注:冒號留給命名空間使用)編碼
文本內容PCDATA
XML支持Unicde字符集,所以能夠在文本中包含字母/數字/標點/符號等。
注意:由於XML使用<,>,和&界定標記,若是在文本中包含有這些字符,必須使用實體替代。spa
CDATA
1.在特殊的標記CDATA下,全部的標記、實體引用都被忽略,而被XML處理程序一視同仁地看成字符數據看code
待。CDATA的形式:〈![CDATA[文本內容]]〉
2.用於把整段文本解釋爲純字符數據而不是標記的狀況。包含大量<、>、&或者"字符。CDATA節中的全部xml
字符都會被看成元素字符數據的常量部分,而不是XML標記。
3.能夠輸入任意字符(除]]>外)
4.不能嵌套使用CDATA文檔
CDATA與PCDATA
PCDATA是被解析器解析的文本。文本內的標籤會被看成標記,實體會被展開。
CDATA是不被解析器解析的文本。文本內的標籤不會被看成標記,實體不會被展開。get
XML註釋
註釋內容中不要出現--;
不要把註釋放在標記中間;it
<Name <!--the name-->>TOM</Name>
註釋不能嵌套;
能夠在除標記之外的任何地方放註釋。io
XML屬性
1.屬性值用雙引號(")或單引號(')分隔(若是屬性值中有',用"分隔;有",用'分隔)
2.一個元素能夠有多個屬性,它的基本格式爲:<元素名 屬性名="屬性值">
3.特定的屬性名稱在同一個元素標記中只能出現一次
4.屬性值不能包括<, >, &
XML文檔中的屬性有兩個規則:
屬性必須有值
那些值必須用引號括起。
您可使用單引號,也可使用雙引號,但要始終保持一致。
命名空間---namespace
爲XML中的元素設定一個惟一的標識名稱
與URI結合來定義一個惟一標識
去除了XML文件中可能存在的元素名重疊的問題
DOCTYPE
文檔類型聲明,緊跟XML聲明以後,包含全部實體聲明語法:
<?xml version="1.0"?>
<!DOCTYPE 根元素標記名 [
<!--實體聲明-->
]>
實體引用
爲了不把字符數據和標記中須要用到的一些特殊符號相混淆,XML還提供了一些有用的實體引用。
做用:避免重複輸入 ;
<!DOCTYPE Book(根元素)[
<!ENTITY chapter1(實體名) "玄幻小說"(實體內容)>
<!ENTITY chapter2 "電影記錄">
]>
引用已定義的實體:&實體名;
內部的 DOCTYPE 聲明
假如 DTD 被包含在您的 XML 源文件中,它應當經過下面的語法包裝在一個 DOCTYPE 聲明中:
<!DOCTYPE 根元素 [元素聲明]>帶有 DTD 的 XML 文檔實例(請在 IE5 以及更高的版本打開,並選擇查看源代碼):
<?xml version="1.0"?>
<!DOCTYPE note [
<!ELEMENT note (to,from,heading,body)>
<!ELEMENT to (#PCDATA)>
<!ELEMENT from (#PCDATA)>
<!ELEMENT heading (#PCDATA)>
<!ELEMENT body (#PCDATA)>
]>
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</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 中打開,並選擇「查看源代碼」命令。)
<?xml version="1.0"?>
<!DOCTYPE note SYSTEM "note.dtd">
<note>
<to>George</to>
<from>John</from>
<heading>Reminder</heading>
<body>Don't forget the meeting!</body>
</note>
聲明一個元素
在 DTD 中,XML 元素經過元素聲明來進行聲明。元素聲明使用下面的語法:
<!ELEMENT 元素名稱 類別>
<!ELEMENT 元素名稱 (元素內容)>
空元素:經過類別關鍵詞EMPTY進行聲明:
<!ELEMENT 元素名稱 EMPTY>
只有 PCDATA 的元素:經過圓括號中的 #PCDATA 進行聲明:
<!ELEMENT 元素名稱 (#PCDATA)>
帶有任何內容的元素:經過類別關鍵詞 ANY 聲明的元素,可包含任何可解析數據的組合:
<!ELEMENT 元素名稱 ANY>
帶有一個或多個子元素的元素:經過圓括號中的子元素名進行聲明:
<!ELEMENT 元素名稱 (子元素名稱 1,子元素名稱 2,.....)>
<!ELEMENT note (to,from,heading,body)>當子元素按照由逗號分隔開的序列進行聲明時,這些子元素必須按照相同的順序出如今文檔中。在一個完整的聲明中,子元素也必須被聲明,同時子元素也可擁有子元素。
聲明只出現一次的元素
<!ELEMENT 元素名稱 (子元素名稱)>
<!ELEMENT note (message)>
上面的例子聲明瞭:message 子元素必須出現一次,而且必須只在 "note" 元素中出現一次。
聲明最少出現一次的元素
<!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 簡介
1.XML Schema 是基於 XML 的 DTD 替代者。
2.XML Schema 可描述 XML 文檔的結構。
3.XML Schema 語言也可做爲 XSD(XML Schema Definition)來引用。
4.XML Schema 是 DTD 的繼任者
XML Schema 很快會在大部分網絡應用程序中取代 DTD,理由以下:
1.XML Schema 可針對將來的需求進行擴展
2.XML Schema 更完善,功能更強大
3.XML Schema 基於 XML 編寫
4.XML Schema 支持數據類型
5.XML Schema 支持命名空間
<schema> 元素是每個 XML Schema 的根元素:
<?xml version="1.0"?>
<xs:schema>
...
...</xs:schema>