XML簡介:
Xml是可擴展性標記語言(eXtendsible Markup Language)的縮寫。
所謂標記,是指一系列的特許的字符符號,可以通過向其中插入文本來存儲文檔的內容。
它是不同技術之間數據交換的基石。
* xml與html的區別:
> Xml是一中標記語言,這意味著xml文檔都是使用標記來存儲數據和信息的。
>> 一個規范的html文檔完全可以被看做xml文檔。
>> xml的可擴展性體現在其標記可由開發者自行定義。
>> xml文檔更接近于數據庫,它并不存儲數據的表現形式。
> html是一門編程語言,它可以被解析工具(如IE瀏覽器)處理,
并將信息以某種格式顯示出來。
>> html注重的是數據的表現形式。
HTML由于已定義標記的有限性,在很多領域已經抓襟見肘了。
而xml可擴展性很好的彌補了HTML的缺陷。
* xml主要應用于一下幾個方面:
1.數據交換
2.跨平臺應用開發
3.數據轉換
4.數據庫:xml完全可以作為一個小型數據庫來使用。
5.配置文件:尤其是在Java開源框架中,如struts,hibernate,spring等。
都是用xml文檔作為配置文件。
* xml語法:
一.文檔類型的聲明:
<?xml version="1.0"?>
該語句是xml文檔類型的聲明,表示該文檔是一個xml文件。
version="1.0"表示該xml文檔的版本是1.0的。
說明:
w3c雖然已經提供了xml1.1的版本的推薦標準,但并未被廣泛的普及和應用。
最主要原因是說明了1.1版本不能完全向后兼容xml1.0版本。
因為xml的應用非常廣泛,所以在無法做到很好兼容的情況下,
使用xml1.1來代替xml1.0是不可取的。
1.文檔編碼:xml的字符被設計為使用Unicode編碼。
> xml文檔的默認編碼為UTF-8,欲改變xml的字符編碼,應適用encoding屬性。
> 具體設置:<?xml version="1.0" encoding="ISO-8859-1"?>
2.文檔的獨立性:xml文檔的外部關聯一般使用外部實體或應用了外部DTD文件。
3.注意的問題:
a) xml文檔類型的聲明并不是處理命令,雖然其形式和處理指令非常相似。
b) 字符串"xml"和字符串"<?"之間不能留有空格。
c) 文檔類型的聲明可以不出現在xml文檔中,
如果出現,則一定要出現在xml文檔的第一行第一列。
二。文檔注釋:
xml的文檔注釋以<!--開頭,以-->結束,中間為注釋的內容。
注意的問題:
1.文檔注釋中可以包含任何特殊的字符。
2.文檔注釋必須以-->結束
三。元素:元素是指標簽及包含在標簽內部的內容。
> 元素的命名要遵循以下規則:
1.元素名只能以字母或下劃線開始,其后可以跟數字,字母和下劃線的任意組合。
2.元素名不能以xml(Xml xMl......)開頭
3.元素名不能包含空格
4.元素的開始標簽與結束標簽名稱必須完全一致,包括大小寫一致。
> 根元素:
>> 每個xml文檔元素有且只有一個根元素,
>> 根元素是頂級元素(也就是第一個元素),
>> 除處理指令和注釋外,其余所有必須包含在根元素當中。
> 元素的嵌套和元素的并列:
>> 元素嵌套是指一個元素完全包含在另一個元素中。
>> 元素并列是指多個元素具有相同的父元素。
>> 在xml文檔中不允許元素的交叉使用。
注意的問題:
1.xml是大小寫敏感的
2.文檔類型聲明,注釋和文檔的處理指令都不是元素
3.元素的開始標簽和結束標簽必須成對出現。
四。屬性:
> 屬性用于描述元素,所以屬性必須出現在元素的標簽內部。
>> 屬性值一定要用引括號起來。
> 在屬性賦值時所使用的雙引號可以單引號來代替。
>> 兩者在使用時并無區別,但是當屬性值含有雙引號時,
則必須使用單引號來進行屬性賦值,反之亦然。
使用屬性還是子元素的區別:
> 描敘一個元素的某個特征時,使用子元素和屬性都是可行的。
> 屬性相對與子元素的局限性:
1.屬性的擴展性差。
2.每個元素中同名的屬性只能出現一次而同名的子元素可以出現多個。
3.屬性存儲的數據量一旦過大,就會造成xml文檔結構上的失衡,
給閱讀造成很大的不便。
五:實體引用
記住五種實體引用:
1.&;------------------&
2.< ------------------<
3.> ------------------>
4.'------------------'
5."------------------"
六。CDATA的語法
> CDATA的全稱為字符數據(Character Data),
> 其語法規則:<![CDATA[comment]]>,其中<![為開始符,]]>為結束符,
> 包含在其中的全部字符都被處理器視為普通字符。
注意的問題:
1.CDATA段不可嵌套,而且沒有嵌套的必要。
2.當需要將大塊的文本內容填充到元素中時,比較適合用CDATA部件。
七。xml中的DTD
> DTD實際上可以看做一個或多個xml文件的模板,
> 這些xml文件中的元素,元素屬性,元素的排列方式、順序,
元素能夠包含的內容等,都必須符合DTD中的定義。
> DTD可以是一個完全獨立的文件,也可以是在xml文件中直接設定。
所以DTD分為外部DTD和內部DTD.
內部DTD:
內部DTD是在xml文件中的文件序言區域中定義的。
語法:
<!DOCTYPE elementname[
............
]>
說明:
<!DOCTYPE : 表示開始設定DTD
elementsname: 制定此DTD的根元素名稱
[..........]: 在[]標記里面定義xml文件使用的元素,然后用>結束DTD定義
在DTD定義的中間元素設定,是DTD的最主要部分,其語法如下:
<!ELEMENT elementname elementdifinition>
內容模式:ANY,EMPTY,MIXED,子元素
元素:
? 不出現或只出現一次
* 不出現或可以出現多次
+ 必須出現一次以上
無符號 只能出現一次
<!ATTLIST 元素名 屬性名 屬性類型 缺省類型>
屬性類型:10種 缺省類型:4種:#required #implied #fix 字符串
八。命名空間
語法:xmlns:prefix="uri"
> uri是一個虛擬的空間,不一定是實實在在存在的。
>
命名空間用來解決同名標簽的問題.
> 命名空間對屬性不起作用,只表明標簽屬于哪個命名空間.
十。如何書寫xml文檔
a) 首先要書寫xml文檔的類型聲明
b) 然后添加一個注釋以標注開發者的信息,開發時間等。
c) 接著為xml文檔定義一個根元素。
d) 再接著添加二級元素,三級元素。
以上只是書寫xml的一般步驟,其中元素的嵌套和屬性依附是最關鍵的步驟。
Xml是可擴展性標記語言(eXtendsible Markup Language)的縮寫。
所謂標記,是指一系列的特許的字符符號,可以通過向其中插入文本來存儲文檔的內容。
它是不同技術之間數據交換的基石。
* xml與html的區別:
> Xml是一中標記語言,這意味著xml文檔都是使用標記來存儲數據和信息的。
>> 一個規范的html文檔完全可以被看做xml文檔。
>> xml的可擴展性體現在其標記可由開發者自行定義。
>> xml文檔更接近于數據庫,它并不存儲數據的表現形式。
> html是一門編程語言,它可以被解析工具(如IE瀏覽器)處理,
并將信息以某種格式顯示出來。
>> html注重的是數據的表現形式。
HTML由于已定義標記的有限性,在很多領域已經抓襟見肘了。
而xml可擴展性很好的彌補了HTML的缺陷。
* xml主要應用于一下幾個方面:
1.數據交換
2.跨平臺應用開發
3.數據轉換
4.數據庫:xml完全可以作為一個小型數據庫來使用。
5.配置文件:尤其是在Java開源框架中,如struts,hibernate,spring等。
都是用xml文檔作為配置文件。
* xml語法:
一.文檔類型的聲明:
<?xml version="1.0"?>
該語句是xml文檔類型的聲明,表示該文檔是一個xml文件。
version="1.0"表示該xml文檔的版本是1.0的。
說明:
w3c雖然已經提供了xml1.1的版本的推薦標準,但并未被廣泛的普及和應用。
最主要原因是說明了1.1版本不能完全向后兼容xml1.0版本。
因為xml的應用非常廣泛,所以在無法做到很好兼容的情況下,
使用xml1.1來代替xml1.0是不可取的。
1.文檔編碼:xml的字符被設計為使用Unicode編碼。
> xml文檔的默認編碼為UTF-8,欲改變xml的字符編碼,應適用encoding屬性。
> 具體設置:<?xml version="1.0" encoding="ISO-8859-1"?>
2.文檔的獨立性:xml文檔的外部關聯一般使用外部實體或應用了外部DTD文件。
3.注意的問題:
a) xml文檔類型的聲明并不是處理命令,雖然其形式和處理指令非常相似。
b) 字符串"xml"和字符串"<?"之間不能留有空格。
c) 文檔類型的聲明可以不出現在xml文檔中,
如果出現,則一定要出現在xml文檔的第一行第一列。
二。文檔注釋:
xml的文檔注釋以<!--開頭,以-->結束,中間為注釋的內容。
注意的問題:
1.文檔注釋中可以包含任何特殊的字符。
2.文檔注釋必須以-->結束
三。元素:元素是指標簽及包含在標簽內部的內容。
> 元素的命名要遵循以下規則:
1.元素名只能以字母或下劃線開始,其后可以跟數字,字母和下劃線的任意組合。
2.元素名不能以xml(Xml xMl......)開頭
3.元素名不能包含空格
4.元素的開始標簽與結束標簽名稱必須完全一致,包括大小寫一致。
> 根元素:
>> 每個xml文檔元素有且只有一個根元素,
>> 根元素是頂級元素(也就是第一個元素),
>> 除處理指令和注釋外,其余所有必須包含在根元素當中。
> 元素的嵌套和元素的并列:
>> 元素嵌套是指一個元素完全包含在另一個元素中。
>> 元素并列是指多個元素具有相同的父元素。
>> 在xml文檔中不允許元素的交叉使用。
注意的問題:
1.xml是大小寫敏感的
2.文檔類型聲明,注釋和文檔的處理指令都不是元素
3.元素的開始標簽和結束標簽必須成對出現。
四。屬性:
> 屬性用于描述元素,所以屬性必須出現在元素的標簽內部。
>> 屬性值一定要用引括號起來。
> 在屬性賦值時所使用的雙引號可以單引號來代替。
>> 兩者在使用時并無區別,但是當屬性值含有雙引號時,
則必須使用單引號來進行屬性賦值,反之亦然。
使用屬性還是子元素的區別:
> 描敘一個元素的某個特征時,使用子元素和屬性都是可行的。
> 屬性相對與子元素的局限性:
1.屬性的擴展性差。
2.每個元素中同名的屬性只能出現一次而同名的子元素可以出現多個。
3.屬性存儲的數據量一旦過大,就會造成xml文檔結構上的失衡,
給閱讀造成很大的不便。
五:實體引用
記住五種實體引用:
1.&;------------------&
2.< ------------------<
3.> ------------------>
4.'------------------'
5."------------------"
六。CDATA的語法
> CDATA的全稱為字符數據(Character Data),
> 其語法規則:<![CDATA[comment]]>,其中<![為開始符,]]>為結束符,
> 包含在其中的全部字符都被處理器視為普通字符。
注意的問題:
1.CDATA段不可嵌套,而且沒有嵌套的必要。
2.當需要將大塊的文本內容填充到元素中時,比較適合用CDATA部件。
七。xml中的DTD
> DTD實際上可以看做一個或多個xml文件的模板,
> 這些xml文件中的元素,元素屬性,元素的排列方式、順序,
元素能夠包含的內容等,都必須符合DTD中的定義。
> DTD可以是一個完全獨立的文件,也可以是在xml文件中直接設定。
所以DTD分為外部DTD和內部DTD.
內部DTD:
內部DTD是在xml文件中的文件序言區域中定義的。
語法:
<!DOCTYPE elementname[
............
]>
說明:
<!DOCTYPE : 表示開始設定DTD
elementsname: 制定此DTD的根元素名稱
[..........]: 在[]標記里面定義xml文件使用的元素,然后用>結束DTD定義
在DTD定義的中間元素設定,是DTD的最主要部分,其語法如下:
<!ELEMENT elementname elementdifinition>
內容模式:ANY,EMPTY,MIXED,子元素
元素:
? 不出現或只出現一次
* 不出現或可以出現多次
+ 必須出現一次以上
無符號 只能出現一次
<!ATTLIST 元素名 屬性名 屬性類型 缺省類型>
屬性類型:10種 缺省類型:4種:#required #implied #fix 字符串
八。命名空間
語法:xmlns:prefix="uri"
> uri是一個虛擬的空間,不一定是實實在在存在的。
>
命名空間用來解決同名標簽的問題.
> 命名空間對屬性不起作用,只表明標簽屬于哪個命名空間.
十。如何書寫xml文檔
a) 首先要書寫xml文檔的類型聲明
b) 然后添加一個注釋以標注開發者的信息,開發時間等。
c) 接著為xml文檔定義一個根元素。
d) 再接著添加二級元素,三級元素。
以上只是書寫xml的一般步驟,其中元素的嵌套和屬性依附是最關鍵的步驟。