XML知識點滴(2)
(引用文章,版權歸作者,如需删除請聯系我)
XML與HTML的比較
n XML将資料與顯示分開
<html> <head> </head> <body> <center> <h2><font color="red">靜夜思</font></h2> <b>作者:李白</b> <hr color="blue"> <p><b><i><font size=3 color="green"> 窗前明月光,疑是地上霜。<br> 舉頭望明月,低頭思故鄉。</font></i></b> </center> </body> </html> | <?xml version="1.0" encoding="gb2312"?> <poem> <title>靜夜思</title> <author>李白</author> <content> <line>窗前明月光</line> <line>疑是地上霜</line> <line>舉頭望明月</line> <line>低頭思故鄉</line> </content> </poem> |
n XML對文檔的格式要求更加嚴格
由于HTML文檔格式非常松散,導緻了HTML文檔解析的複雜性,也造成了浏覽器相容的問題,是以XML從一開始,就對文檔的格式制定了非常嚴格的标準,凡是符合這一标準的XML文檔就是格式良好的XML文檔(Well-Formed XML Documents)。
1) 開始标簽必須要有一個結束标簽
在HTML文檔中,可以直接使用<p>、<tr>、<td>等标簽,而不加結束标簽,在XML中,開始标簽和結束标簽必須配套,也就是必須寫成<p>…</p>、<tr>…</tr>、<td>…</td>
2) 空元素标簽必須被關閉
在HTML文檔中,可以使用<br>、<hr>、<img src=”logo.gif” width=”197” height=”81”>等标簽,而在XML中,空元素标簽必須被關閉。空元素标簽用斜杠(/)來關閉,例如:<br/>、<hr/>、<img src=”logo.gif” width=”197” height=”81”/>
3) 所有的标簽都區分大小寫
在HTML文檔中,标簽是不區分大小寫的,<tr>和</TR>是tr元素的開始标簽和結束标簽,但是在XML中,<tr>和<TR>是兩個不同的标簽,開始标簽和結束标簽的大小寫形式必須一緻。
4) 所有的标簽必須合理嵌套
在HTML文檔中,<b><i>…</b></i>是允許的,但是在XML中,這是錯誤的。在XML中,所有的标簽都要成對出現,合理嵌套,正确的形式是:<b><i>…</i></b>。
5) 所有标簽的屬性值必須用雙引号(“”)或單引号(‘’)括起來
在HTML文檔中,屬性值可以加引号,也可以不加,例如:<hr color=”blue”>和<hr color=blue>都是合法的。在XML文檔中,即使是數字字元,也必須加雙引号或單引号,例如:<student name=”zhangsan” age=’18’ />。
6) XML有且隻能有一個根元素
在HTML中,可以有多個根元素,如下:
<table>…</table>
<table>…</table>
但在XML中,有且隻能有一個根元素,如下:
<?xml version=”1.0” encoding=”gb2312”?>
<table>
…
</table>
XML的編輯工具
n Notepad
n UltraEdit
n XMLSpy
XML文檔
n 每一個XML文檔都有一個邏輯和一個實體結構。
n 實體上而言,文檔由稱為實體(entities)的存儲單元組成,實體都具有内容并且都通過實體的名字進行辨別(文檔實體和外部DTD子集除外)。實體可以是一段文本、一個檔案、一個資料庫記錄或其他包含資料的項目。一個實體可以引用其他的實體,進而将它們包含在文檔中。文檔開始于“根(root)”或文檔實體(document entitiy)。
n 格式良好的XML文檔形成了一種層次樹結構,而這個樹的書根就是文檔實體,與其他實體不同,文檔實體沒有名字,隻有用于表示文檔樹的根。XML文檔的根元素被稱為文檔元素(document element),它和在其他外部出現的處理指令、注釋等作為文檔實體的子結點,而根元素本身和其内部的子元素也是一顆樹。
n 實體可以包含已分析(parsed)的或未分析的(unparsed)資料。已分析的資料由字元組成,其中一些字元組成字元資料,另一些字元組成标記。已分析的實體(parsed entity)内容被稱為它的替換文本,這個文本被看成是文檔整體的一部分。在XML處理器分析XML文檔時,凡是文檔中出現引用已分析實體的地方,都将被該實體的内容所替換。
n 未分析的實體(unparsed entity)是一種資源,它的内容可以是也可以不是文本,并且,如果是文本的話,可以不是XML文本。每一個未分析的實體有一個相關聯的用名字辨別的記号(notation)。除了要求XML處理器能向應用程式提供可用的實體和記号的辨別之外,XML對未分析的實體内容不作任何限制。
n 已分析的實體以實體引用的方式通過名稱來調用;未分析的實體通過ENTITY或ENTITIES屬性中給出的名字來調用。
n 邏輯上而言,文檔由聲明、元素、注釋、字元引用和處理指令組成,在文檔中,所有這些都是通過顯式的标記(markup)來指明的。
n XML标記(markup)包括開始标簽(tag)、結束标簽、空元素标簽、實體引用、字元引用、注釋、CDATA段定界符、文檔類型聲明、處理指令、XML聲明、文本聲明以及任何在文檔實體頂層的空白(即,在文檔元素之外,且不在任何其他的标記内部)。其他所有非标記的文本組成文檔的字元資料。
n XML文檔在邏輯上主要由以下五個部分組成
1) XML聲明
2) 文檔類型聲明
3) 元素
4) 注釋
5) 處理指令