正所謂用進廢退,基礎知識也是如此,長期沒有接觸就容易忘記。要是有一天有人忽然爲我XML是什麼東西,我確定知道他說什麼,可就是答不上來,若是要是恰好趕上面試什麼的,估計也就Over了。幾天有空,就溫故而知新吧。css
首先總結一下xml相關的知識點:html
一.什麼是xml?web
XML是一種標記語言,很相似HTML,全稱是可擴展標記語言(Extensible Markup Languange)。XML的設計宗旨是存儲和傳輸數據,而非顯示數據。XML沒有預約義標籤,須要自行定義標籤,被設計爲具備自我描述性,是w3c的推薦標準,對 XML 最好的描述是:XML 是獨立於軟件和硬件的信息傳輸工具。面試
可經過與HTML對比來進一步加深印象。XML被設計用來傳輸和存儲數據,而HTML被設計用來顯示數據。XML不是HTML的代替,二者爲不一樣的目的而設計,XML被設計爲傳輸和存儲數據,其焦點是數據的內容,HTML被設計爲顯示數據,其焦點是數據的外觀。瀏覽器
沒有任何行爲的XML,XML是不做爲的,不難理解,XML不會作任何事情,XML 被設計用來結構化、存儲以及傳輸信息。它僅僅是包裝在 XML 標籤中的純粹的信息。咱們須要編寫軟件或者程序,才能傳送、接收和顯示出這個文檔。服務器
二.xml有什麼用?工具
XML 應用於 web 開發的許多方面,經常使用於簡化數據的存儲和共享。佈局
1.XML 把數據從 HTML 分離 若是你須要在 HTML 文檔中顯示動態數據,那麼每當數據改變時將花費大量的時間來編輯 HTML。經過 XML,數據可以存儲在獨立的 XML 文件中。這樣你就能夠專一於使用 HTML 進行佈局和顯示,並確保修改底層數據再也不須要對 HTML 進行任何的改變。經過使用幾行 JavaScript,你就能夠讀取一個外部 XML 文件,而後更新 HTML 中的數據內容。學習
2.XML 簡化數據共享 在真實的世界中,計算機系統和數據使用不兼容的格式來存儲數據。XML 數據以純文本格式進行存儲,所以提供了一種獨立於軟件和硬件的數據存儲方法。這讓建立不一樣應用程序能夠共享的數據變得更加容易。url
3.XML 簡化數據傳輸 經過 XML,能夠在不兼容的系統之間輕鬆地交換數據。對開發人員來講,其中一項最費時的挑戰一直是在因特網上的不兼容系統之間交換數據。因爲能夠經過各類不兼容的應用程序來讀取數據,以 XML 交換數據下降了這種複雜性。
4.XML 簡化平臺的變動 升級到新的系統(硬件或軟件平臺),老是很是費時的。必須轉換大量的數據,不兼容的數據常常會丟失。XML 數據以文本格式存儲。這使得 XML 在不損失數據的狀況下,更容易擴展或升級到新的操做系統、新應用程序或新的瀏覽器。
5.XML 使您的數據更有用 因爲 XML 獨立於硬件、軟件以及應用程序,XML 使您的數據更可用,也更有用。不一樣的應用程序都可以訪問您的數據,不只僅在 HTML 頁中,也能夠從 XML 數據源中進行訪問。經過 XML,您的數據可供各類閱讀設備使用(手持的計算機、語音設備、新聞閱讀器等),還能夠供盲人或其餘殘障人士使用。
6.XML 用於建立新的 Internet 語言不少新的 Internet 語言是經過 XML 建立的:其中的例子包括:
三.XML的結構 ------樹結構
1.XML 文檔造成了一種樹結構,它從「根部」開始,而後擴展到「枝葉」。
XML 文檔必須包含根元素。該元素是全部其餘元素的父元素。XML 文檔中的元素造成了一棵文檔樹。這棵樹從根部開始,並擴展到樹的最底端。
全部元素都可擁有子元素:
<root> <child> <subchild>.....</subchild> </child> </root>
父、子以及同胞等術語用於描述元素之間的關係。父元素擁有子元素。相同層級上的子元素成爲同胞(兄弟或姐妹)。全部元素都可擁有文本內容和屬性(相似 HTML 中)。
四.XML語法
XML 的語法規則很簡單,且頗有邏輯。這些規則很容易學習,也很容易使用。
1.全部xml元素都必須有關閉標籤。
在 HTML,常常會看到沒有關閉標籤的元素:
<p>This is a paragraph <p>This is another paragraph
在 XML 中,省略關閉標籤是非法的。全部元素都必須有關閉標籤。
2.XML標籤對大小寫敏感
XML 元素使用 XML 標籤進行定義。XML 標籤對大小寫敏感。在 XML 中,標籤 <Letter> 與標籤 <letter> 是不一樣的。
必須使用相同的大小寫來編寫打開標籤和關閉標籤:
<Message>這是錯誤的。</message>
<message>這是正確的。</message>
3.XML 必須正確地嵌套
4.XML 文檔必須有根元素
5.XML 的屬性值須加引號
6.實體引用
在 XML 中,一些字符擁有特殊的意義。若是你把字符 "<" 放在 XML 元素中,會發生錯誤,這是由於解析器會把它看成新元素的開始。
這樣會產生 XML 錯誤:<message>if salary < 1000 then</message>爲了不這個錯誤,請用實體引用來代替 "<" 字符:
<message>if salary <
1000 then</message>
在 XML 中,有 5 個預約義的實體引用:
< | < | 小於 |
> | > | 大於 |
& | & | 和號 |
' | ' | 單引號 |
" | " | 引號 |
註釋:在 XML 中,只有字符 "<" 和 "&" 確實是非法的。大於號是合法的,可是用實體引用來代替它是一個好習慣。
7.XML 中的註釋
在 XML 中編寫註釋的語法與 HTML 的語法很類似:
<!-- This is a comment -->
8.在 XML 中,空格會被保留
HTML 會把多個連續的空格字符裁減(合併)爲一個:
HTML: Hello my name is David. 輸出: Hello my name is David.
在 XML 中,文檔中的空格不會被刪節。
9.XML 以 LF 存儲換行
在 Windows 應用程序中,換行一般以一對字符來存儲:回車符 (CR) 和換行符 (LF)。這對字符與打字機設置新行的動做有類似之處。在 Unix 應用程序中,新行以 LF 字符存儲。而 Macintosh 應用程序使用 CR 來存儲新行。
五.XML元素
1.什麼是 XML 元素? XML 元素指的是從(且包括)開始標籤直到(且包括)結束標籤的部分。元素可包含其餘元素、文本或者二者的混合物。元素也能夠擁有屬性。
2.XML 命名規則 XML 元素必須遵循如下命名規則:
可以使用任何名稱,沒有保留的字詞。
3.XML 元素是可擴展的
XML 元素是可擴展,以攜帶更多的信息。
請看下面這個 XML 例子:
<note> <to>George</to> <from>John</from> <body>Don't forget the meeting!</body> </note>
讓咱們設想一下,咱們建立了一個應用程序,可將 <to>、<from> 以及 <body> 元素提取出來,併產生如下的輸出:
MESSAGE To: George From: John Don't forget the meeting!
想象一下,以後這個 XML 文檔做者又向這個文檔添加了一些額外的信息:
<note> <date>2008-08-08</date> <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note>
那麼這個應用程序會中斷或崩潰嗎?不會。這個應用程序仍然能夠找到 XML 文檔中的 <to>、<from> 以及 <body> 元素,併產生一樣的輸出。XML 的優點之一,就是能夠常常在不中斷應用程序的狀況進行擴展。
六.XML屬性
1.XML 元素能夠在開始標籤中包含屬性,相似 HTML。屬性 (Attribute) 提供關於元素的額外(附加)信息。xml屬性的值必須用引號,能夠是單引號或者雙引號都行。可是屬性的運用須要考究,在HTML中屬性用起來很便利,那是由於瀏覽器知道怎麼處理。可是xml的屬性沒有預約義,處理起來沒那麼方便,打個比方:
<person sex='male'>
<name>jim</name>
</person>
對比:
<person>
<sex>male</sex>
<name>jim</name>
</person>
如上例子:您應該儘可能避免使用屬性。若是信息感受起來很像數據,那麼請使用子元素吧。爲何呢?由於:
請儘可能使用元素來描述數據。而僅僅使用屬性來提供與數據無關的信息。
2.針對元數據的 XML 屬性
有時候會向元素分配 ID 引用。這些 ID 索引可用於標識 XML 元素,它起做用的方式與 HTML 中 ID 屬性是同樣的。這個例子向咱們演示了這種狀況:
<messages> <note > <to>George</to> <from>John</from> <heading>Reminder</heading> <body>Don't forget the meeting!</body> </note> <note > <to>John</to> <from>George</from> <heading>Re: Reminder</heading> <body>I will not</body> </note> </messages> id="501"id="502"
上面的 ID 僅僅是一個標識符,用於標識不一樣的便籤。它並非便籤數據的組成部分。
在此咱們極力向您傳遞的理念是:元數據(有關數據的數據)應當存儲爲屬性,而數據自己應當存儲爲元素。
7.XML 在瀏覽器中的顯示
1.使用 CSS 顯示您的 XML?使用 CSS 來格式化 XML 文檔是有可能的。下面的例子就是關於如何使用 CSS 樣式表來格式化 XML 文檔:
CSS文件:
CATALOG { background-color: #ffffff; width: 100%; } CD { display: block; margin-bottom: 30pt; margin-left: 0; }
下面是此XML文件的一個片段。 第二行,<?xml-stylesheet type="text/css" href="cd_catalog.css"?>,把這個 XML 文件連接到 CSS 文件:
<?xml version="1.0" encoding="ISO-8859-1"?> <CATALOG> <CD> <TITLE>Empire Burlesque</TITLE> <ARTIST>Bob Dylan</ARTIST> <COUNTRY>USA</COUNTRY> <COMPANY>Columbia</COMPANY> <PRICE>10.90</PRICE> <YEAR>1985</YEAR> </CD> </CATALOG><?xml-stylesheet type="text/css" href="cd_catalog.css"?>
注意:使用 CSS 格式化 XML 不是經常使用的方法,更不能表明 XML 文檔樣式化的將來。W3C 推薦使用 XSLT。
2.使用 XSLT 顯示 XML
XSLT 是首選的 XML 樣式表語言。XSLT (eXtensible Stylesheet Language Transformations) 遠比 CSS 更加完善。
使用 XSLT 的方法之一是在瀏覽器顯示 XML 文件以前,先把它轉換爲 HTML。
<?xml version="1.0" encoding="ISO-8859-1"?> <breakfast_menu> <food> <name>Belgian Waffles</name> <price>$5.95</price> <description> two of our famous Belgian Waffles </description> <calories>650</calories> </food> </breakfast_menu>注意:該轉換是由瀏覽器執行的,可是不一樣內核瀏覽器處理轉換的方法不盡相同,可能會存在不一樣的樣式,所以,您也能夠本身根據XSLT文檔,在服務器上將xml文檔轉換爲html文檔,而後輸出。<?xml-stylesheet type="text/xsl" href="simple.xsl"?>