XML學習總結


開篇:
經過了幾天自學,終於把XML學完了。這里把學習的成果總結一下。如果有什么不對請留言指出,因為我們都在錯誤中長大。

 

適合人群:
我寫的這篇博客適合那些不是很懂或者是完全沒有接觸過xml的博友們。

 

環境:
我學習的環境要交代一下的:
操作系統:win7旗艦版 64位
服務器IIS 7.5
瀏覽器:IE9
開發工具:Notepad++

 

XML簡介:
好了可以開始正式的學習了,在以前看一本計算機書籍,一般第一章都是這個語言的簡介,覺得那些都是廢話。后來才發現,在學習任何一門語言之前,還是有必要簡單的介紹一下這門語言的,因為他告訴了我們為什么會有這門語言,並且這門語言存在的意思。如果沒有任何意思的語言我想沒有任何人會去學習他。

XML中文名稱:可擴展標記語言;英文名稱:extensible markup language;用於標記電子文件使其具有結構性的標記語言。XML可以用來標記數據、定義數據類型,是一種允許用戶對自己的標記語言進行定義的源語言。(來自百度百科)

 

XML與數據庫、html區別

XML與Access,OracleSQL 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>根元素。下面我們用代碼說明我們的一切吧。

View Code
 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文件有另一番領悟。

代碼:

View Code
 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是否規范)代碼:

View Code
<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)

View Code
 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)

View Code
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的學習的總結,希望對你又幫助 ,如果有什么不對的地方 請指出!

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM