XML裡允許你自己建立這樣的標籤,所以叫做可擴充性,所有xml語言必須經過html轉換才能在瀏覽器上運行。
XML使得在網路上使用SGML語言更加"簡單和直接": 簡化了定義檔案類型的過程,簡化了編程和處理SGML檔案的過程,簡化了在Web上的傳送和共用。
xml語言更加適合樹形結構資料
XML非常簡單,學習容易。如果你熟悉HTML,你會發現它的文檔和HTML非常相似,看範例文件:
?xml version="1.0"?><br><br>
<myfile><br><br>
<title>XML Quick Start</title><br><br>
<author>ajie</author><br><br>
<email>ajie@aolhoo.com</email><br><br>
<date>20010115</date><br><br>
</myfile>
第一行是一個XML聲明,表示文檔遵循的是XML的1.0 版的規範。
第二行定義了文檔裡面的第一個元素(element),也稱為根項目: < myfile>。這個就類似HTML裡的< HTML>開頭標記。注意,這個名稱是自己隨便定義的。
再下面定義了四個子項目:title,author,email,和date。分別說明文章的標題,作者,郵箱和日期。當然,你可以用中文來定義這些標籤,看上去更便於理解:
<?xml version="1.0" encoding="GB2312"?>
<文章>
<標題>XML輕鬆學習手冊</標題>
<作者>ajie</作者>
<信箱>ajie@aolhoo.com</信箱>
<日期>20010115</日期>
</文章>
這就是XML的文檔,任何掌握HTML的網友都可以直接寫出這樣簡單的XML文檔。
xml語言本身比較簡單,在與html轉換中還需用到一些指令碼語言。
下面是javascript的
<html>
<head>
<script language="JavaScript" for="window" event="onload">
var xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async="false";
xmlDoc.load("myfile.xml");
nodes = xmlDoc.documentElement.childNodes;
title.innerText = nodesitem(0).text;
author.innerText = nodes.item(1).text;
email.innerText = nodes.item(2).text;
date.innerText = nodes.item(3).text;
</script>
<title>在HTML中調用XML資料</title>
</head>
<body bgcolor="#FFFFFF">
<b>標題: </b>
<span id="title"> </span>
<b>作者: </b>>
<span id="author"></span>
<b>信箱: </b>
<span id="email"></span>
<b>日期:</b>
<span id="date"></span>
</body><br><br>
</html><br><br>
2.將下面代碼存為myfile.xml
<?xml version="1.0" encoding="GB2312"?>
<myfile>
<title>XML輕鬆學習手冊</title>
<author>ajie</author>
<email>ajie@aolhoo.com</email>
<date>20010115</date>
</myfile>
xml語言格式:
1.所有的標記都必須要有一個相應的結束標記;
2.所有的XML標記都必須合理嵌套;
3.所有XML標記都區分大小寫;
4.所有標記的屬性必須用""括起來;
所以上列語句在XML中正確的寫法是
1.
sample
2.< b>< i>sample< /i>< /b>
3.< td>sample< /td>
4.< font color="red">samplar< /font>
另外,XML標記必須遵循下面的命名規則:
1.名字中可以包含字母、數字以及其它字母;
2.名字不能以數字或"_" (底線) 開頭;
3.名字不能以字母 xml (或 XML 或 Xml ..) 開頭;
4.名字中不能包含空格。
xml語言一個語句中基本上由兩部分組成:元素、標記、屬性和元數值。多的話是樹和樹葉的關係。
1.Element(元素):
元素在HTML我們已經有所瞭解,它是組成HTML文檔的最小單位,在XML中也一樣。一個元素由一個標識來定義,包括開始和結束標識以及其中的內容,就象這樣:<author>ajie</author>
唯一不同的就是:在HTML中,標識是固定的,而在XML中,標識需要你自己建立。
2.Tag(標識)
標識是用來定義元素的。在XML中,標識必須成對出現,將資料包圍在中間。標識的名稱和元素的名稱是一樣的。例如這樣一個元素:
<author>ajie</author>
其中<author>就是標識
3.Attribute(屬性):
什麼是屬性?看這段HTML代碼:<font color="red">word</font>。其中color就是font的屬性之一。
屬性是對標識進一步的描述和說明,一個標識可以有多個屬性,例如font的屬性還有size。XML中的屬性與HTML中的屬性是一樣的,每個屬性都有它自己的名字和數值,屬性是標識的一部分。舉例:
<author sex="female">ajie</author>
XML中屬性也是自己定義的,我們建議你盡量不使用屬性,而將屬性改成子項目,例如上面的代碼可以改成這樣:
<author>ajie
<sex>female</sex>
</author>
原因是屬性不易擴充和被程式操作。
4.Declaration(聲明)
在所有XML文檔的第一行都有一個XML聲明。這個聲明表示這個文檔是一個XML文檔,它遵循的是哪個XML版本的規範。一個XML的聲明語句就象這樣:
良好格式的文檔必須以一個XML聲明開始,例如:
<?xml version="1.0" standalone="yes" encoding="UTF-8"?>
其中你必須說明文檔遵守的XML版本,目前是1.0;其次說明文檔是"獨立的",它不需要DTD檔案來驗證其中的標識是否有效;第三,要說明文檔所使用的語言編碼。預設的是UTF-8,如果使用中文,你需要設定為GB2312
良好格式的XML文檔必須有一個根項目,就是緊接著聲明後面建立的第一個元素,其它元素都是這個根項目的子項目,屬於根項目一組。
良好格式的XML文檔的內容書寫時必須遵守XML文法
一.XML文法規則
二.元素的文法
三.注釋的文法
四.CDATA的文法
五.Namespaces的文法
六.entity的文法
七.DTD的文法
XML的文檔和HTML的原代碼類似,也是用標識來標識內容。建立XML文檔必須遵守下列重要規則:
規則1:必須有XML聲明語句
這一點我們在上一章學習時已經提到過。聲明是XML文檔的第一句,其格式如下:
<?xml version="1.0" standalone="yes/no" encoding="UTF-8"?>
聲明的作用是告訴瀏覽器或者其它處理常式:這個文檔是XML文檔。聲明語句中的version表示文檔遵守的XML規範的版本;standalone表示文檔是否附帶DTD檔案,如果有,參數為no;encoding表示文檔所用的語言編碼,預設是UTF-8。
規則2:是否有DTD檔案
如果文檔是一個"有效XML文檔"(見上一章),那麼文檔一定要有相應DTD檔案,並且嚴格遵守DTD檔案制定的規範。DTD檔案的聲明語句緊跟在XML聲明語句後面,格式如下:
<!DOCTYPE type-of-doc SYSTEM/PUBLIC "dtd-name">
其中:
"!DOCTYPE"是指你要定義一個DOCTYPE;
"type-of-doc"是文件類型的名稱,由你自己定義,通常於DTD檔案名稱相同;
"SYSTEM/PUBLIC"這兩個參數只用其一。SYSTEM是指文檔使用的私人DTD檔案的網址,而PUBLIC則指文檔調用一個公用的DTD檔案的網址。
"dtd-name" 就是DTD檔案的網址和名稱。所有DTD檔案的尾碼名為".dtd"。
我們還是用上面的例子,應該寫成這樣:
<?xml version="1.0" standalone="no" encode="UTF-8"?>
<!DOCTYPE filelist SYSTEM "filelist.dtd">
規則3:注意你的大小寫
在XML文檔中,大小寫是有區別的。<P>和<p>是不同的標識。注意在寫元素時,前後標識大小寫要保持一樣。例如:<Author>ajie</Author>,寫成<Author>ajie</author>是錯誤的。
你最好養成一種習慣,或者全部大寫,或者全部小寫,或者大寫第一個字母。這樣可以減少因為大小寫不匹配產生的文檔錯誤。
規則4:給屬性值加引號
在HTML代碼裡面,屬性值可以加引號,也可以不加。例如:<font color=red>word</font>和<font color="red">word</font>都可以被瀏覽器正確解釋。
但是在XML中則規定,所有屬性值必須加引號(可以是單引號,也可以是雙引號),否則將被視為錯誤。
規則5:所有的標識必須有相應的結束標識
在HTML中,標識可能不是成對出現的,比?lt;br>。而在XML中規定,所有標識必須成對出現,有一個開始標識,就必須有一個結束標識。否則將被視為錯誤。
規則6:所有的空標識也必須被關閉
空標識就是標識對之間沒有內容的標識。比如<br>,<img>等標識。在XML中,規定所有的標識必須有結束標識,針對這樣的空標識,XML中處理的方法是在原標識最後加/,就可以了。例如:
<br>應寫為<br />;
<META name="keywords" content="XML, SGML, HTML">應寫為<META name="keywords" content="XML, SGML, HTML" />;
<IMG src= "cool.gif">應寫為<IMG src= "cool.gif" />
二.元素的文法
元素由一對標識以及其中的內容組成。就象這樣:ajie。元素的名稱和標識的名稱是一樣的。標識可以用屬性來進一步描述。
在XML中,沒有任何保留字,所以你可以隨心所欲的用任何詞語來作為元素名稱。但是也必須遵守下列規範:
1.名稱中可以包含字母、數字以及其它字母;
2.名稱不能以數字或"_" (底線)開頭;
3.名稱不能以字母 xml(或 XML 或 Xml ..)開頭
4.名稱中不能包含空格
5.名稱中間不能包含":"(冒號)
為了使元素更容易閱讀理解和操作,我們還有一些建議:
1.名稱中不要使用"."。因為在很多程式語言中,"."是作為對象的屬性,例如:font.color。同樣的原因"-"也最好不要用,必須使用的,以"_"代替;
2.名稱盡量簡短。
3.名稱的大小寫盡量採用同一標準。
4.名稱可以使用非英文字元,比如用中文。但是有些軟體可能不支援。(IE5目前是支援中文元素的。)
CDATA全稱character data,翻譯為字元資料。我們在寫XML文檔時,有時需要顯示字母,數字和其它的符號本身,比如"<",而在XML中,這些字元已經有特殊的含義,我們怎麼辦呢?這就需要用到CDATA文法。文法格式如下:
<![CDATA[這裡放置需要顯示的字元]]>
例如:
<![CDATA[<AUTHOR sex="female">ajie</AUTHOR>]]>
在頁面上顯示的內容將是"<AUTHOR sex="female">ajie</AUTHOR>"