一、什麼是 XML文件?css
XML便可擴展標記語言(eXtensible Markup Language)。標記是指計算機所能理解的信息符號,經過此種標記,計算機之間能夠處理包含各類信息的文章等。java
通俗的講,XML文件通常用來保存有關係的數據。除此以外,在程序開發中,咱們一般用來作各類框架的配置文件。app
二、XML 文件由如下幾個部分組成:框架
①、文檔聲明編碼
②、元素3d
③、屬性xml
④、註釋blog
⑤、CDATA區、特殊字符utf-8
⑥、處理指令(processing intruction)開發
1、文檔聲明
在編寫 XML 文檔時,須要首先使用文檔聲明,聲明 XML 文檔的類型。
①、最簡單的語法:
<?xml version="1.0" ?>
②、用 encoding 屬性說明文檔的字符編碼:
<?xml version="1.0" encoding="utf-8" ?>
常見的字符編碼:gbk,gb2312,utf-8,基本上咱們使用utf-8,全世界通用,不會出現亂碼的現象。
③、用 standalone 屬性說明文檔是否獨立:
<?xml version="1.0" encoding="utf-8" standalone="no" ?>
standalone有兩個屬性,yes和no。若是是yes,則表示這個XML文檔時獨立的,不能引用外部的DTD規範文件;若是是no,則該XML文檔不是獨立的,表示能夠用外部的DTD規範文檔。
2、元素
①、XML 元素指的是 XML 文件中出現的標籤,一個標籤分爲開始標籤和結束標籤,分爲兩種寫法:
一、包含標籤體:<user>Tom</user>
二、不包含標籤體:<user></user>,也能夠簡寫爲<user/>
②、一個標籤中也能夠嵌套其餘的若干個子標籤。但全部的標籤必須合理的嵌套,毫不容許交叉嵌套:
合理寫法:<users>
<name>Tom</name>
</users>
錯誤寫法:<users><name>Tom</users></name>
③、格式良好的 XML 文檔必須有且僅有一個根標籤,其餘的標籤都是這個標籤的子孫標籤。
④、對於 XML 標籤中出現的全部空格和換行,XML 解析都會當作標籤內容進行處理。好比下面兩個是不同的
一、<name>Tom</name>
二、<name>
Tom
</name>
注意:因爲在 XML 中,空格和換行都會做爲原始內容被處理,因此在編寫 XML 文件的時候使用換行和縮進等方式來讓原文件中的內容清晰可讀的良好習慣可能要被迫改變。
這和 HTML 標籤的書寫是有點區別的。
⑤、元素的命名規範:
一、區分大小寫,例如:<P>和<p>是不同的
二、不能以數字或下劃線「-」開頭
三、不能以 xml(或XML,Xml)做爲開頭
四、不能包含空格
五、名稱中間不能包含冒號「:」
3、屬性
①、一個元素能夠有多個屬性,每一個屬性都有它本身的名稱和取值,好比:
<input name="tom" />
②、屬性值必定要用雙引號或單引號引發來
③、屬性的命名規範和元素的命名規範同樣
④、XML 文件中,元素屬性所表明的信息,也能夠改成用子元素來表示,好比:
<input name="tom" />
能夠寫爲:
<input>
<name>tom</name>
</input>
4、註釋
①、XML 文件中註釋採用:"<!-- 註釋 -->" 這樣的格式
②、XML 聲明以前不能有註釋
③、註釋不能嵌套,好比下面不合規範:
<!-- 全局註釋 <!-- 局部註釋 -->-->
5、CDATA區和特殊字符
①、在編寫 XML 文檔時,有些內容可能不想讓解析引擎解析執行,而是當作原始內容處理,那麼咱們就能夠把這些內容放到 CDATA區裏面,對於 CDATA 區裏面的內容,XML 解析程序不會處理,而是原封不動的輸出。
語法:<![CDATA[內容]]>
好比:<![CDATA[
<input>
<name>tom</name>
</input>
]]>
注意:CDATA和[內容]之間不能有空格
②、轉義字符:對於一些單個字符,若是想顯示其原始樣式,可使用轉義的形式
6、處理指令processing instruction
①、用來解析引擎如何解析 XML 文檔內容
好比:在 XML 文檔中可使用 xml-stylesheet 指令,通知 XML 解析引擎,應用 CSS 文件顯示 XML 文檔內容
<?xml-stylesheet type="text/css" href="a.css"?>
處理指令必須以<? 開頭,以 ?> 結尾
三、XML 約束
1、什麼是 XML 約束?
在 XML 文檔中,能夠編寫一個文檔來約束它的書寫規範,這稱爲 XML 約束
2、爲何須要 XML 約束?
由於每每咱們寫一個 xml 文檔,裏面的元素基本上是須要肯定的,以便於咱們方便的解析數據。若是沒有約束,那編寫 XML 文檔的人員能夠隨便寫,並且萬一元素不當心寫錯了,這也會對咱們後期解析形成困難。若是有 XML 約束之後,那 XML 文檔的元素即是肯定的,不會發生寫錯的狀況(寫錯了文檔會提示報錯的)
3、經常使用的約束技術
①、XML DTD(Document Type Definition)
一、引入 dtd 文件的兩種方式:
當引用文件在本地時:<!DOCTYPE 文檔根節點 SYSTEM "dtd文件的URL">
好比:<!DOCTYPE BookPlay SYSTEM "book.dtd">
當引用文件是一個公共文件時:<!DOCTYPE 文檔根節點 PUBLIC SYSTEM "dtd名稱""dtd文件的URL">
好比:<!DOCTYPE BookPlay PUBLIC SYSTEM
"-//Sun Microsystems,Inc.//DTD Web Application 2.3//EN"
"http://java.sun.com/dtd/-app_2_3.dtd">