開篇:
經過了幾天自學,終於把XML學完了。這里把學習的成果總結一下。如果有什么不對請留言指出,因為我們都在錯誤中長大。
適合人群:
我寫的這篇博客適合那些不是很懂或者是完全沒有接觸過xml的博友們。
環境:
我學習的環境要交代一下的:
操作系統:win7旗艦版 64位
服務器IIS 7.5
瀏覽器:IE9
開發工具:Notepad++
XML簡介:
好了可以開始正式的學習了,在以前看一本計算機書籍,一般第一章都是這個語言的簡介,覺得那些都是廢話。后來才發現,在學習任何一門語言之前,還是有必要簡單的介紹一下這門語言的,因為他告訴了我們為什么會有這門語言,並且這門語言存在的意思。如果沒有任何意思的語言我想沒有任何人會去學習他。
XML中文名稱:可擴展標記語言;英文名稱:extensible markup language;用於標記電子文件使其具有結構性的標記語言。XML可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。(來自百度百科)
XML與數據庫、html區別
XML與Access,Oracle和SQL Server等數據庫不同,數據庫提供了更強有力的數據存儲和分析能力,例如:數據索引、排序、查找、相關一致性等,XML僅僅是存儲數據。事實上XML與其他數據表現形式最大的不同是:他極其簡單。這是一個看上去有點瑣細的優點,但正是這點使XML與眾不同。
XML與HTML的設計區別是:XML是用來存儲數據的,其焦點是數據的內容。而HTML 被設計用來顯示數據,其焦點是數據的外觀。
XML和HTML語法區別:HTML的標記不是所有的都需要成對出現,XML則要求所有的標記必須成對出現;HTML標記不區分大小寫,XML則相反。(來自百度百科)
XML正式學習
上面都是比較抽象的概念,但是也是最權威的解釋了。但是這里我想用我自己的話講XML就是一種可以擴看的標記性語言,他和HTML不同的是HTML當中對關鍵字如html table都已經定死了,我們無法改變其意思,而xml那些關鍵字都是我們人為的定義在使用。xml其實說白了就是用來保存數據的,比如說你的配置文件數據,還有一寫數據非常的少,要是放在數據庫覺得浪費,但是又不得不考慮的那些數據放在xml文件中是最好的了。xml語法和html語言很接近,如果我們有一個頭,就必須也要有一個界面,如:<div></div>。其次我們的跟元素就只有一個,例如html語言中,我們只有一個跟的<html></html>根元素。下面我們用代碼說明我們的一切吧。

1 //定義xml的版本及瀏覽器顯示的字符語言格式utf-8 2 <?xml version="1.0" encoding="utf-8"?> 3 4 <class> 5 <stu> 6 <name>Jimmy</name> 7 <sex>man</sex> 8 <age>19</age> 9 </stu> 10 11 <stu> 12 <name>Tommy</name> 13 <sex>women</sex> 14 <age>20</age> 15 </stu> 16 17 <stu> 18 <name>Ketty</name> 19 <sex>women</sex> 20 <age>21</age> 21 </stu> 22 </class>
寫好了代碼我們用瀏覽器查看一下吧,右擊你的xml文件打開方式選擇IE瀏覽器。看看效果圖吧:
其中最第一行為定義xml的版本及瀏覽器顯示的語言格式。
這是一個對的語言,如果我們把去掉其中的一個界面標志,那就會報錯(這里去掉第三個</age>標志),
這里好像ie9 測試不出來,用的是遨游測試的。如果我們不成對的標志寫,那就會報錯。
學到這里你已經把xml基本的語法學習好了。你已經是初學者了。下面的提上篇。
提升篇
其實xml也可以嵌入css文件的,接下在我將陷入一個css文件,讓你的對xml文件有另一番領悟。
代碼:

1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!--引用css樣式文件--> 4 <?xml-stylesheet type="text/css" href="css.css"?> 5 <class> 6 <stu> 7 <name>Jimmy</name> 8 <sex>man</sex> 9 <age>19</age> 10 </stu> 11 12 <stu> 13 <name>Tommy</name> 14 <sex>women</sex> 15 <age>20</age> 16 </stu> 17 18 <stu> 19 <name>Ketty</name> 20 <sex>women</sex> 21 <age>21 22 </stu> 23 </class>
顯示效果為:
接着我們在來講一下dtd的文件。
不知道你們發現沒有,網頁的前面幾行都有這么一行<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
其實這個就是對dtd文件,那dtd文件有什么用處呢?
dtd定義:文檔類型定義(DTD)可定義合法的XML文檔構建模塊。它使用一系列合法的元素來定義文檔的結構。DTD 可被成行地聲明於 XML 文檔中,也可作為一個外部引用。
說白了dtd就是定義你的xml文件中可以有哪些元素,不可以有哪些元素,這些元素可以的值是什么類型的。但是我們直接查看xml文件他並不會報錯,需要禁用js創建一個ActiveXObject對象,才可以對其進行校驗。
好了我們來開始dtd文檔的總結吧。
從代碼開始Checkdtd.htm文件(檢測xml是否規范)代碼:

<html> <head> <title>測試dtd文檔</title> <meta http-equiv="content-type" content="text/html;charset=gb2312" /> <script type="text/javascript"> <!-- //創建一個xml解析器 var xmldoc=new ActiveXObject("Microsoft.XMLDOM"); //開啟校驗功能 xmldoc.validateOnParse=true; //指定對那個xml文件校驗 xmldoc.load("myblog.xml"); //顯示錯誤的信息 document.write("錯誤信息="+xmldoc.parseError.reason+"<br />"); document.write("錯誤的行號"+xmldoc.parseError.line+"<br />"); --> </script> </head> <body> </body> </html>
需要檢測的xml文件(myblog.xml)

1 <?xml version="1.0" encoding="utf-8"?> 2 3 <!--加載dtd文件--> 4 <!DOCTYPE class SYSTEM "mydtd.dtd"> 5 <class> 6 <stu> 7 <name>Jimmy</name> 8 <sex>man</sex> 9 <age>19</age> 10 </stu> 11 12 <stu> 13 <name>Tommy</name> 14 <sex>women</sex> 15 <age>20</age> 16 </stu> 17 18 <stu> 19 <name>Ketty</name> 20 <sex>women</sex> 21 <age>21 22 </stu> 23 </class>
定義規范的dtd文件(mydtd.dtd)

1 <!ELEMENT class (stu+)> 2 <!ELEMENT stu (name,sex,age)> 3 <!ELEMENT name (#PCDATA)> 4 <!ELEMENT sex (#PCDATA)> 5 <!ELEMENT age (#PCDATA)>
我們從htm代碼開始講吧,學過c++、java、.net的人知道New一個類是在創建一個對象,這里第一句話的意思就是創建一個檢測xml文件的對象,並命名為xmldoc變量,然后我們開啟了檢驗的功能,在然后我們確定需要校驗的xml文件,如果不在同一個目錄下可以用相對路徑或者絕對路徑的方法找到xml文件。如果有錯誤那我們則把錯誤找出並現在在頁面上。
接着我們看看xml文件吧
別的地方就不講了,其中有句話是加載dtd的文件:<!DOCTYPE class SYSTEM "mydtd.dtd">
其中定義的格式規范為
<!DCTYPE 根元素名 SYSTEM "寫dtd的路徑">
<!DCTYPE 根元素名 [dtd元素內容]>
因為我們這里的跟元素是class 且mydtd.dtd和myblog是同一個目錄所以最后為<!DOCTYPE class SYSTEM "mydtd.dtd">
最后我們來分析一下mydtd.dtd文件
元素的定義格式為:
<!ELEMENT 元素名稱 (元素內容)>
如果是空元素則可以這樣定義:
<!ELEMENT 元素名稱 EMPTY>
這里我們看到在根元素下面有很多的stu元素,所以<!ELEMENT class (stu+)>
其中+的意思stu這個元素的個數為1到n
如果是*則stu的元素的個數為0到n
其他具體的修飾符這里就不列舉了,感興趣的話去官網查一下。
接着我們看到stu元素下面有name、sex、age 3個元素所以我們定義<!ELEMENT stu (name,sex,age)>
如果你去掉其中一個stu下面的一個age則用Checkdtd.htm會提示錯誤。這里就不測試了。
最后一句的意思是<!ELEMENT name (#PCDATA)>定義name這個元素的的數據類型可以為字符串。
學習總結,這些是本人對xml的學習的總結,希望對你又幫助 ,如果有什么不對的地方 請指出!