XML文件的結構性內容,包括節點關係以及屬性內容等等。
元素是組成XML的最基本的單位,它由開始標記,屬性和結束標記組成。
就是一個元素的例子,每一個元素必須有一個元素名,元素能夠若干個屬性以及屬性值。
xml文件和html文件同樣,其實是一個文本文件。顯然你們馬上就會明白,建立xml文件最普通的工具和html同樣,就是「記事本」了。
一個xml文件的例子
如今咱們暫且使用「記事本」來建立咱們的xml文件吧。先看一個xml文件:
例1
〈?xml version="1.0" encoding="gb2312" ?〉
〈參考資料〉
〈書籍〉
〈名稱〉xml入門精解〈/名稱〉
〈做者〉張三〈/做者〉
〈價格 貨幣單位="人民幣"〉20.00〈/價格〉
〈/書籍〉
〈書籍〉
〈名稱〉xml語法〈/名稱〉
〈!--此書即將出版--〉
〈做者〉李四〈/做者〉
〈價格 貨幣單位="人民幣"〉18.00〈/價格〉
〈/書籍〉
〈/參考資料〉
——————————————————————
這是一個典型的xml文件,編輯好後保存爲一個以.xml爲後綴的文件。我 們能夠將此文件分爲文件序言(prolog)和文件主體兩個大的部分。在此文件中的第一行便是文件序言。該行是一個xml文件必需要聲明的東西,並且也必 須位於xml文件的第一行,它主要是告訴xml解析器如何工做。其中,version是標明此xml文件所用的標準的版本號,必需要有;encoding 指明瞭此xml文件中所使用的字符類型,能夠省略,在你省略此聲明的時候,後面的字符碼必須是unicode字符碼(建議不要省略)。
文件的其他部分都是屬於文件主體,xml文件的內容信息存放在此。咱們能夠看到,文件主體是由開始的〈參考資料〉和結束的〈/參考資料〉控制標記組成,這 個稱爲xml文件的「根元素」;〈書籍〉是做爲直屬於根元素下的「子元素」;在〈書籍〉下又有〈名稱〉、〈做者〉、〈價格〉這些子元素。貨幣單位是〈價 格〉元素中的一個「屬性」,「人民幣」則是「屬性值」。元素與屬性的關係如圖1。
〈!--此書即將出版--〉這一句同html同樣,是註釋,在xml文件裏,註釋部分是放在「〈!--」與「--〉」標記之間的部分。
你們能夠看到,xml文件是至關簡單的。同html同樣,xml文件也是由一系列的標記組成,不過,xml文件中的標記是咱們自定義的標記,具備明確的含義,咱們能夠對標記中的內容的含義做出說明。
xml文件的語法
對xml文件有了初步的印象以後,咱們就來詳細地談一談xml文件的語法。在講語法以前,咱們必需要了解一個重要的概念,就是xml解析器(xml parse)。
1. xml解析器
解析器的主要功能就是檢查xml文件是否有結構上的錯誤,剝離xml文件中的標記,讀出正確的內容,以交給下一步的應用程序處理。xml是一種用來結構化文件信息的標記語言,xml規範中對於如何標記文件的結構性有一個詳細的法則,解析器就是根據這些法則寫出來的軟件(多用java寫成)。
2. well-formed的xml文件
咱們知道,xml必須是well-formed的,纔可以被解析器正確地解析出來,顯示在瀏覽器中。那麼什麼是well-formed的xml文件呢?主要有下面幾個準則,咱們在建立xml文件的時候,必須知足它們。
首先,xml文件的第一行必須是聲明該文件是xml文件以及它所使用的xml規範版本。在文件的前面不可以有其它元素或者註釋。
第二,在xml文件中有且只可以有一個根元素。咱們的第一個例子中,〈參考資料〉... 〈/參考資料〉就是此xml文件的根元素。
xml文件中,用的大多都是自定義的標記。
第三,在xml文件中的標記必須正確地關閉,也就是說,在xml文件中,控制標記必 須有與之對應的結束標記。如:〈名稱〉標記必須有對應的〈/名稱〉結束標記,不像html,某些標記的結束標記無關緊要。若是在xml文件中遇到自成一個 單元的標記,就是相似於html 中的〈img src=.....〉的這些沒有結束標記的時候,xml把它稱爲「空元素」,必須用這樣的寫法:〈空元素名/〉,若是元素中含有屬性時寫法則爲:〈空元素 名 屬性名=「屬性值」/〉。
第四,標記之間不得交叉。在之前的html文件中,能夠這樣寫:
〈b〉〈h〉xxxxxxx〈/b〉〈/h〉,〈b〉和〈h〉
標記之間有相互重疊的區域,而在xml中,是嚴格禁止這樣標記交錯的寫法,標記必須以規則性的次序來出現。
第五,屬性值必需要用「 」號括起來。如第一個例子中的「1.0」、「gb2312」、「人民幣」。都是用「 」號括起來了的,不能漏掉。
第六,控制標記、指令和屬性名稱等英文要區分大小寫。與html不一樣的是,在html中, 相似〈b〉和〈b〉的標記含義是同樣的,而在xml中,相似〈name〉、〈name〉或〈name〉這樣的標記是不一樣的。
第七,咱們知道,在html文件中,若是咱們要瀏覽器原封不動地將咱們所輸入的東西顯示出來,能夠將這些東西放到〈pre〉〈/pre〉或者〈xmp〉 〈/xmp〉標記中間。這對於咱們建立html教學的網頁是必不可少的,由於網頁中要顯示html的源代碼。而在xml中,要實現這樣的功能,就必須使用 cdata標記。在cdata標記中的信息被解析器原封不動地傳給應用程序,而且不解析該段信息中的任何控制標記。cdata區域是由:「〈! [cdata[」爲開始標記,以「]]〉」爲結束標記。例如:例2中的源碼,除了「〈![cdata[」和「]]〉」符號,其他的內容解析器將原封不動地 交給下游的應用程序,即便cdata區域中的開始和結尾的空白以及換行字符等,都一樣會被轉交(注意cdata是大寫的字符)。css
1 XML 的聲明html
這是一個XML處理指令。處理指令以 <? 開始,以 ?> 結束。<? 後的第一個單詞是指令名,如xml, 表明XML聲明。
version, standalone, encoding 是三個特性,特性是由等號分開的名稱-數值對,等號左邊是特性名稱,等號右邊是特性的值,用引號引發來。
幾點解釋:java
2 XML 根元素定義數據庫
XML文檔的樹形結構要求必須有一個根元素。根元素的起始標記要放在全部其它元素起始標記以前,根元素的結束標記根放在其它全部元素的結束標記以後,如瀏覽器
3 XML元素工具
元素的基本結構由 開始標記,數據內容,結束標記組成,如this
須要注意的是:編碼
XML元素標記命名規則以下:spa
4 XML中的註釋.net
XML中註釋以下:
須要注意的是:
5 PI (Processing Instruction)
PI 指 Processing Instruction, 處理指令。PI以「<?」開頭,以「?>」結束,用來給下游的文檔傳遞信息。
例子代表這個XML文檔用core.css控制顯示。
6 PCDATA
#PCDATA: specifies that an element will contain parsed character data.
舉例說明PCDATA的用法, 其中movies.xml 存儲電影內容數據,movies.dtd對movies.xml進行驗證。
示例文件(movies.dtd)
id, name, brief, time只能包含非標記文本(不能有本身的子元素)。
XML文件以下所示(movies.xml):
7 CDATA
CDATA用於須要把整段文本解釋成純字符數據而不是標記的狀況。當一些文本中包含不少「<」,「>」,「&」,「」」等字符而非標記時,CDATA會很是有用。
以「<![CDATA[」 開始,以「]]>」結束。注意,在CDATA段中不要出現結束定界符「]]>」。
8 Entities(實體)
Entities(實體)是XML的存儲單元,一個實體能夠是字符串,文件,數據庫記錄等。實體的用處主要是爲了不在文檔中重複輸入,咱們能夠爲一個文檔定義一個實體名,而後在文檔裏引用實體名來代替這個文檔,XML解析文檔時,實體名會被替換成相應的文檔。
XML爲五個字符定義了實體名:
實體 |
字符 |
< |
< |
> |
> |
& |
& |
" |
「 |
' |
‘ |
定義並引用實體的示例:
9 DOCTYPE
「<!DOCTYPE[]>」緊隨XML聲明,包括全部實體的聲明,以下所示: