前言: 技術在變,好的東西依然不變!XML就是這樣的一樣東西.提起XML,大家都很熟悉,到處都可以看見和聽到關於它的信息.雖然XML已經有幾十年的歷史了,但是 真正掌握它的人究竟有多少?之前XML隨著ajax又火了一把.大家可以回頭看看我們之前出現的的技術AJax,WPF,Silverlight...以及ADO.NET,Web Service...到處都是XML的身影, 難道XML僅僅就只是一門標記語言?僅僅只是要求"有開始標記,和結束標記,不區分大小寫"就行了嗎?是否知道,其實Html就是XML的一種?很少有書籍能夠全面的講解XML的,要麼是把它和ASP.Net一起講,要麼就講XML怎麼樣和別的技術用,我也不是什麼專家,我想寫專門講XML的文章.和大家分享我的學習結果.
在這個系列中會比較全面的談談XML相關的知識:比如,XPath,XSLT,XSD...而且整個系列都穿插著應用,希望大家關注!
本章內容如下:
XML的定義和用途
XML中有那些元素和屬性,以及如何使用他們生成格式良好的XML文檔
使用文檔類型定義(DTD)驗證XML的有效性
1.XML的概念
XML明確定義了結構化,描述和交換數據的方法.XML與HTML的不同在於,XML不是對數據進行格式化處理的.例如在HTML中<body><p>等標簽,他們很多只是表示一種顯示的結構,這些標簽不是我們想要的數據,也不能保存到數據庫中,而且Html中的標簽很有限,而且這些標簽的意義很固定,如<p>就是分段,當你看見,<P>23.4</P>,你不知道這個數字的意義,是表示溫度還是價格.然而,XML確實針對數據的,不行格式標簽,並且可以實現數據的自我描述,標簽定義很靈活,如,<title>CEO</title>,<name>xiaoyang</name>,我們一看這些標簽就知道它的意思,而且可以轉換為相應的數據庫字段(以後談).總的來說,XML是數據格式的,有意義,靈活的標記語言.
2.XML元素
XML文檔的核心就是包含在文檔中的元素.使用過HTML的人,,都清楚元素這個概念.XML元素與HTML元素的概念相似,.就元素的命名而言,XML的規則就比HTML的要靈活,但是XML不允許出現HTML元素那樣松散的結構(在Html中,不是所有的標記都一定要開始標記和結束標記對應).所有的XML元素的開始和結束的標記,以及大小寫也要對應.
舉例來講:
Code
1<Html>
2 <Title><head>Person</head></title>
3 <body>
4 <h2>Name</h2>
5 <hr>
6 xiaoyang
7</Html>
上面的代碼段作為Html沒有什麼問題,但是作為xml文檔就有問題:1.1:打開的<body>標記沒有關閉標記(</body>),<hr>也是這樣.1.2:<Tile>元素的開始標記和結束標記</title>大小寫形式不同.要使得上面的片段成為有效的XML文檔,就要關閉<body><hr>,以及使得<title>的大小寫一致.如下:
Code
<Html>
<title><head>Person</head></title>
<body>
<h2>Name</h2>
<hr/>
xiaoyang
</body>
</Html>
總結:從上面的<body>元素可以看出,要關閉標記,只要使得他們既有相同的元素名稱,並且在前面加一個"/"就行了.在<body>元素的開始和結束標記之間的所有元素成為子節點.注意<hr>元素稍有不同.如果談論的元素不包含數據,就稱之為"空元素",<hr/>就是空元素.注意加"/"的位置!
3.XML屬性
與HTML相似,XML元素也可以附加屬性,這些屬性通常用於添加有關元素的信息或者包含在元素中數據.在上面的Html例子中,可以在<body>元素中添加bgcolor屬性,如下;
Code
<Html>
<title><head>Person</head></title>
<body bgcolor=red>
<h2>Name</h2>
<hr/>
xiaoyang
</body>
</Html>
這個屬性置頂了頁面的背景色,不過該語法會使得上面的文檔不再是合法的XML文檔,因為XML要求:屬性值比如包含再引號中(單引號,或者雙引號).雖有為了使得上面的合法,就要改,如下:
Code
<Html>
<title><head>Person</head></title>
<body bgcolor="red">
<h2>Name</h2>
<hr/>
xiaoyang
</body>
</Html>
確保屬性值"red"在引號內.
4.XML解析器
Web浏覽器要解釋並且顯示使用Html元素標記的文檔,需要處理器或者解析器,XML也是這樣的,該解析器以及內需使用數據的應用程序讀取XML,所有的XML解析器都要檢查XML文檔的格式是否良好,格式良好就是遵守XML規范,如之前提到的開始標記和結束標記對應,大小寫區分等等.
解析器有兩種:驗證型解析器和非驗證型解析器.非驗證型的只要檢查文檔的格式是否良好就可以了,而驗證型的還能根據另一個定義XML文檔內容和結構的文檔,來檢查XML文檔是否有效.如DTD,XSD.
一般情況下,我們的浏覽器中就已經內嵌了XML的非驗證型的解析器.
5.構造XML
舉例,先看下面的一個Html文檔.
Code
<Html>
<title><head>Person</head></title>
<body >
<p>xiaoyang</p><br>wuhan
<p>Jefferyzhao</p><br>shanghai
<p>dfyingchen</p><br>shanghai
</body>
</Html>
上面的Html文檔包含格式標記和數據.我們講上面的文檔改為XML文檔:
Code
<?XML version="1.0"?>
<persons>
<person name="xiaoyang">wuhan</person>
<person name="jefferyzhao">shanghai</person>
<person name="dflyingchen">shanghai</person>
</persons>
注意:其實如何設計XML文檔沒有什麼公式可以套用的,理解這一點很重要.因為XML只是數據的表現形式而已,你還可以把上面的數據信息改為另外的XML形式,如下:
Code
<?XML version="1.0"?>
<frIEnds>
<frIEnd name="xiaoyang" address="wuhan" />
<frIEnd name="jefferyzhao" address="shanghai" />
<frIEnd name="dflyingchen" address="shanghai" />
</frIEnds>
形式可以很多,但是要記住:上面顯示的只是數據,沒有任何的布局信息.
大家可以用任何的文本編輯器來創建一個XML文檔,並且用浏覽器打開,就會發現:浏覽器可以驗證XML的格式是否良好.
6.XML文檔的各個組成部分
XML文檔最多可以有4部分組成(其中3個部分是可選的),如果他們出現在文檔中,比如按照下面順序排列:
序言(可選的)
DTD(可選的)
文檔根
結尾(可選)
6.1序言
XML文檔的序言部分一般包含出現在文檔或者文檔根元素開始標記之前的信息.它包含應用與整個文檔的信息,如:字符編碼,樣式表引用.另外,還包含XML聲
明,注釋,處理指令.但是所有這些都是可選的.
XML聲明是這些組成部分中最重要的,雖然它是可選的,但是很多的系統和解析器都要求文檔有XML聲明.因為聲明中包含了:
XML語法的version,"1.0"版本
文檔內容編碼encoding (可選)
文檔是否是standalone(默認值為no),表示文檔是否依賴外部文件
XML聲明最基本的格式如下:
Code
<?XML version="1.0"?>
還可以這樣,如
Code
<?XML version="1.0" encoding="gb2312" ?>
注意:'<?XML " 要緊挨一起,後面的"?>"也是一樣.
6.2文檔類型定義DTD
文檔類型定義是描述XML的內容的,它定義了你創建的XML文檔中應該包含哪些元素,哪些屬性.然後文檔類型定義結合解析器一起驗證你的XML文檔.我們
能以後會講解的,這裡知提一下.
6.3文檔根
文檔根是必須的,它是XML文檔中序言和DTD部分後面的第一個元素,它可以包含屬性,子元素,注釋等.前面的例子中的<persons>就是一個文檔根的例子.
6.4結尾
結尾與序言相似,因為結尾部分就是處理指令的所在位置,一般用於執行清除工作,但是很少使用.大家可以不管.
因為:XML理論很多,一下子寫多了大家可能不愛看,今天就到這裡.
下一篇:創建格式良好的XML文檔.