DayTwo XML(上)

經(jīng)過兩天的奮戰(zhàn),終于把xml簡(jiǎn)略的過了一遍。

1.1XML介紹

xml是Extensible Markup language的簡(jiǎn)寫,是可擴(kuò)展的標(biāo)識(shí)語言。xml實(shí)際上就是一種定義語言姑躲,用戶可以自己定義數(shù)據(jù)的類型睡扬,也可以創(chuàng)建結(jié)構(gòu)化數(shù)據(jù)庫,還可以對(duì)其中的數(shù)據(jù)進(jìn)行篩選和排序黍析。

1.1.1 什么是XML

xml與html十分相似卖怜,都是標(biāo)記性語言,都是使用標(biāo)簽來描述數(shù)據(jù)阐枣,但是XML的標(biāo)簽可以自己定義马靠。

1.1.2 XML的作用

xml的主要作用是建立數(shù)據(jù)和管理數(shù)據(jù)。xml也可以看成是一個(gè)小型的數(shù)據(jù)庫侮繁,甚至在對(duì)數(shù)據(jù)的處理在某些方面比某些數(shù)據(jù)庫里的數(shù)據(jù)處理更加靈活虑粥。簡(jiǎn)單點(diǎn)說,xml是一種標(biāo)記性語言宪哩,是一個(gè)跨平臺(tái)的娩贷,獨(dú)立于硬件與軟件的描述數(shù)據(jù)的工具,其作用是存儲(chǔ)锁孟、傳遞和交換數(shù)據(jù)彬祖。

1.1.3簡(jiǎn)單的xml文件

xml是由根元素和樹形結(jié)構(gòu)來描述數(shù)據(jù),而一個(gè)完整的xml文件還必須加上一個(gè)xml聲明品抽,其它軟件就可以根據(jù)這個(gè)聲明判斷得到這個(gè)文件是一個(gè)XML文件储笑。聲明的格式如下:

<?xml version = "1.0" encoding = "gb2312" ?>這就是一個(gè)最基礎(chǔ)的聲明,這里我們需要注意的是encoding編碼圆恤。這里一般我們所使用的都是UTF-8這里需要注意突倍,如果你是在用記事本編寫這個(gè)代碼的時(shí)候,你必須將他的編碼格式進(jìn)行變化盆昙。

1.1.4瀏覽XML文件

我們所使用的主流瀏覽器都支持XML文件羽历,當(dāng)我們使用IE 或者是 火狐 打開這個(gè)文檔的時(shí)候,我們能夠看得到樹形數(shù)據(jù)結(jié)構(gòu)淡喜,而當(dāng)我們使用Netscape 和 Opera瀏覽器打開這個(gè)文件時(shí)秕磷, 就會(huì)只能看得到其中的數(shù)據(jù),而不能比較直觀的看得到里面的結(jié)構(gòu)炼团。

1.2設(shè)計(jì)XML

xml雖然沒有規(guī)定標(biāo)簽澎嚣,可以由用戶自己創(chuàng)建標(biāo)簽,但是XML對(duì)結(jié)構(gòu)的要求十分嚴(yán)謹(jǐn)瘟芝,在設(shè)計(jì)XML文件時(shí)一定要遵守其結(jié)構(gòu)規(guī)則易桃。

1.2.1XML文件結(jié)構(gòu)

一個(gè)完整的XML文件可以分為聲明區(qū)、定義區(qū)與數(shù)據(jù)區(qū)3個(gè)部分锌俱。

1.2.2聲明區(qū)

聲明區(qū)必須是整個(gè)XML文件的第一行颈抚,聲明區(qū)使用的是<??>標(biāo)簽,該標(biāo)簽沒有結(jié)束標(biāo)簽嚼鹉。而對(duì)這個(gè)聲明區(qū)的組成部分這里有一個(gè)分解:

xml:表示這是一個(gè)XMl文件贩汉,其中xml一定要用小寫來表示。

version = "1.0": 指定該XML文件是遵守XML1.0的規(guī)范來進(jìn)行制作锚赤,其中version也必須使用小寫字母匹舞,并且XMl的版本號(hào)"1.0"也必須放在引號(hào)內(nèi)。

encoding="gb2312": 聲明XML文件是使用gb2312編碼編寫的线脚,即簡(jiǎn)體中文赐稽。但是一般我所使用的更多的貌似是UTF-8,所以這里我們能根據(jù)自己的需求進(jìn)行更改浑侥。

1.2.3數(shù)據(jù)區(qū)

即數(shù)據(jù)存放的區(qū)域姊舵。

1.2.4 定義區(qū)

在XML文件的聲明區(qū)與數(shù)據(jù)區(qū)之間的是定義區(qū),定義區(qū)也叫做DTD(Document Type Definition),定義區(qū)的作用是設(shè)置文件的格式或標(biāo)簽的相關(guān)性寓落。定義區(qū)必須包含在<!DOCTYPE[]>區(qū)域內(nèi)括丁。DTD可以直接寫在XML文件內(nèi)部,也可以通過引用放在XML文件的外部伶选,與CSS和HTML相類似史飞,DTD中聲明的標(biāo)簽與數(shù)據(jù)區(qū)的標(biāo)簽都是相互對(duì)應(yīng)的,當(dāng)然仰税,XML文件使用了DTD之后构资,該文件中的標(biāo)簽就必須遵守DTD中的規(guī)范,這個(gè)規(guī)范包括標(biāo)簽出現(xiàn)按的次序陨簇、標(biāo)簽的大小寫和標(biāo)簽的數(shù)據(jù)類型等吐绵。另外還有XML Schema 這個(gè)也是正在逐年的取代DTD的趨勢(shì),這個(gè)比DTD更難河绽,但是更加的精確己单。

1.3XML語法

XML對(duì)語法的要求很嚴(yán)格,在學(xué)習(xí)XML之前必須先了解XML的語法規(guī)則葵姥,只有了解了XML語法規(guī)則之后荷鼠,才能創(chuàng)建正確的XML文件。

1.3.1標(biāo)簽與空標(biāo)簽

首先榔幸,XML的標(biāo)簽必須是成對(duì)出現(xiàn)的允乐,有開始標(biāo)簽就必須有結(jié)束標(biāo)簽,否則瀏覽器就會(huì)不能正常的解析這個(gè)XML文檔削咆。當(dāng)然牍疏,在XML文件中當(dāng)然少不了空標(biāo)簽的存在。

1.3.2區(qū)分大小寫

這一點(diǎn)和HTML中有一些不同拨齐,XML是一種區(qū)分大小寫的語言鳞陨,也就是對(duì)大小寫敏感。

1.3.3設(shè)置屬性

在HTML里,很多元素都有自己的屬性厦滤,在XML中當(dāng)然也是少不了這么一個(gè)功能了援岩,在XML中,也可以為自己定義的標(biāo)簽設(shè)定屬性掏导,而且設(shè)定屬性的方法和HTML中是一樣的享怀。

1.3.4特殊字符

在XML里,由于標(biāo)簽里常用到"<"趟咆、">"添瓷、" ' ' "等含有特殊含義和作用的字符,所以這里我們引入了特殊字符值纱。例如:空格 : &nbsp; <? :? &lt;? >? :? &gt; 這一些帶有一些特殊意義的字符來進(jìn)行使用鳞贷。

1.3.5CDATA標(biāo)簽

在xml里有一個(gè)特殊的標(biāo)簽,任何軟件都會(huì)把放在這個(gè)標(biāo)簽里的內(nèi)容當(dāng)成是純文字虐唠,對(duì)這個(gè)標(biāo)簽的內(nèi)容不做任何分析和處理搀愧,因此在這里可以放置任何的元素都不用進(jìn)行轉(zhuǎn)義。CDATA 部分由 "<![CDATA[" 開始凿滤,由 "]]>" 結(jié)束:這也就是CDATA的語法使用規(guī)則妈橄。

1.3.6標(biāo)簽嵌套

與HTML相似,XML中的標(biāo)簽也是可以進(jìn)行嵌套的翁脆,XML的嵌套必須是有層次的嵌套眷蚓,不可以重疊交叉嵌套。

1.3.7注釋

一個(gè)良好的程序反番,都會(huì)有比較詳細(xì)的注釋沙热,詳細(xì)的注釋可以增加程序的可讀性,也便于日后的修改罢缸。<!--和-->標(biāo)簽來插入注釋內(nèi)容篙贸。當(dāng)然注釋可以是單獨(dú)的一行,也可以是一個(gè)區(qū)域枫疆,這樣也就很明顯的實(shí)現(xiàn)了注釋內(nèi)容爵川。

1.4數(shù)據(jù)結(jié)構(gòu)定義

數(shù)據(jù)結(jié)構(gòu)定義又稱之為DTD(Document Type Definition)。DTD是用來定義XML中標(biāo)簽息楔、屬性以及標(biāo)簽之間的關(guān)系寝贡。DTD可以寫在XML文檔的內(nèi)部,此時(shí)DTD是寫在XML的定義區(qū)值依,DTD也可以獨(dú)立于XML文件作為一個(gè)DTD文件存在圃泡,此時(shí)XML可以通過指向DTD的鏈接來指定使用哪個(gè)DTD文件,但是這里只能使用一個(gè)DTD文件愿险,而Schema則可以使用多個(gè)這也是DTD的一個(gè)比較重要的一個(gè)缺陷颇蜡。通過DTD可以檢測(cè)XML的結(jié)構(gòu)是否正確,但是創(chuàng)建一個(gè)XML文件時(shí)并不一定需要DTD。

1.4.1內(nèi)部DTD聲明方法

內(nèi)部DTD是將DTD的內(nèi)容寫在XML文件內(nèi)部风秤,DTD的定義方法如下:

<!DOCTYPE 根元素名稱 [定義內(nèi)容]>

其中定義內(nèi)容通常有兩種方法鳖目,第一種用于定義有子節(jié)點(diǎn)的標(biāo)簽,定義方法如下:

<!ELEMENT 標(biāo)簽名 (子標(biāo)簽名唁情,子標(biāo)簽名疑苔,......)>

第二種用于定義只有內(nèi)容的節(jié)點(diǎn)的標(biāo)簽,即沒有子節(jié)點(diǎn)的標(biāo)簽甸鸟,定義方法如下:

<!ELEMENT 標(biāo)簽名 (數(shù)據(jù)類型) >

這是DTD的內(nèi)部聲明方法。

1.4.2外部DTD聲明方法

DTD除了可以在XML文件內(nèi)部使用之外兵迅,還可以獨(dú)立于XML而存在抢韭,如果XML需要引用該DTD文件,只需要使用以下代碼就可以將外部DTD文件包含到XML文件內(nèi)部恍箭。

<!DOCTYPE 根元素名稱 SYSTEM "DTD 文件URL" >

不過由于外部DTD文件是獨(dú)立于XML文件而存在的刻恭,所以使用外部DTD時(shí)會(huì)有兩個(gè)文件,一個(gè)是XML文件扯夭,另一個(gè)是DTD文件鳍贾。

注意:DTD文件的擴(kuò)展名不一定要用.dtd,可以是任何形式的擴(kuò)展名交洗,但是為了標(biāo)準(zhǔn)的統(tǒng)一骑科,筆者還是建議統(tǒng)一使用.dtd 為擴(kuò)展名。

1.4.3內(nèi)外部DTD結(jié)合聲明方法

?使用外部DTD聲明方法可以讓多個(gè)XML文件使用同一個(gè)DTD文件构拳。但是咆爽,處理使用外部DTD聲明方法之外,XML文件還支持外部DTD與內(nèi)部DTD文件結(jié)合使用的生命方法置森。注意:使用內(nèi)外部DTD結(jié)合的生命方法可以在原有的外部DTD文件標(biāo)簽之外追加標(biāo)簽斗埂,但是不能重復(fù)定義外部DTD文件里已有的標(biāo)簽。

1.4.4格式正確的XML文件

在文章的一開始凫海,筆者就不斷的強(qiáng)調(diào)呛凶,XML文件的格式與結(jié)構(gòu)都是十分嚴(yán)謹(jǐn)?shù)摹D敲葱刑埃粋€(gè)格式正確的XML文件必須滿足以下的幾個(gè)條件:

1) XML文件的第一行必須是類似于"<?xml version = " 1.0" encoding = " gb2312" ?>"的XML聲明漾稀。

2)XML文件里有且只有一個(gè)根元素。

3)XML文件里的所有標(biāo)簽都必須成對(duì)出現(xiàn)瓮顽,有開始標(biāo)簽就必須要有結(jié)束標(biāo)簽县好。

4)如果開始標(biāo)簽與結(jié)束標(biāo)簽之間沒有任何文字,可以簡(jiǎn)寫為" <標(biāo)簽名 /> " 形式暖混。

5)標(biāo)簽可以有屬性缕贡,所有屬性值必須用引號(hào)括起來。

6)XML文件是區(qū)分大小寫的。

7)在XML文件里如果出現(xiàn)特殊文字晾咪,必須轉(zhuǎn)義之后再放在XML文件中收擦。

8)XML文件里的標(biāo)簽可以嵌套使用,但不能交叉重疊谍倦。

1.4.5有效的XML文件

如果一個(gè)XML文件中包含DTD聲明塞赂,那么這個(gè)XML文件稱之為Validating XML 文件,即有法可依昼蛀、有效的XML文件宴猾。一個(gè)Validating XML文件必須滿足的條件如下所示:

1)Validating XML文件必須 是一個(gè)Well-Formed XML 文件。

2)Validating XML文件必須包括DTD聲明叼旋。

3)Validating XML文件只能使用DTD聲明中的標(biāo)簽仇哆,標(biāo)簽的出現(xiàn)次序也必須與DTD中聲明的一樣。

滿足這些條件的話夫植,就是一個(gè)有效的XML文件讹剔。

1.5 標(biāo)簽類型

在DTD定義區(qū)里定義XML文件里的標(biāo)簽時(shí)常用到類似于" <!ELEMENT 書名(#RCDATA) "的語句,在該語句里的 "#PCDATA " 就是一個(gè)標(biāo)簽類型详民,不同的標(biāo)簽可以設(shè)為不同的標(biāo)簽類型延欠。

1.5.1#PCDATA類型

#PCDATA 類型可以說是在XML里使用得最多的數(shù)據(jù)類型,該數(shù)據(jù)類型代表文字?jǐn)?shù)據(jù)沈跨。將標(biāo)簽設(shè)置為#PCDATA 類型的代碼如下:

<!ELEMENT 標(biāo)簽名稱 (#PCDATA)>

如果一個(gè)標(biāo)簽的數(shù)據(jù)類型為#PCDATA 類型由捎,那么這個(gè)標(biāo)簽則不能再包含其他標(biāo)簽,只能包括文字谒出。例如:

<!ELEMENT 計(jì)算機(jī)系列? (書名隅俘,出版社,作者笤喳,價(jià)格 )>這就是這么一個(gè)帶類型的標(biāo)簽實(shí)例为居。


1.5.2EMPTY類型

EMPTY類型的標(biāo)簽是空標(biāo)簽,將標(biāo)簽設(shè)置為EMPTY類型的方法如下:

<!ELEMENT 標(biāo)簽名稱? EMPTY>

注意:將標(biāo)簽設(shè)置為#PCDATA 類型時(shí)杀狡," #PCDATA " 要用圓括號(hào)括起來蒙畴,而將標(biāo)簽設(shè)置為EMPTY 類型時(shí),不需用圓括號(hào)括起來呜象。當(dāng)一個(gè)標(biāo)簽被設(shè)置為EMPTY類型之后膳凝,可以使用 " <標(biāo)簽名 /> " 的簡(jiǎn)寫方式來替代 " <標(biāo)簽名> </標(biāo)簽名>? " 的寫法。

1.5.3 ANY類型

ANY類型的標(biāo)簽是一個(gè)自由的標(biāo)簽恭陡,在這個(gè)標(biāo)簽內(nèi)部的子標(biāo)簽可以任意的排放位置蹬音,不用再按規(guī)定的次序出現(xiàn),通常ANY 類型 都用在根元素標(biāo)簽上休玩。

注意:即使將根元素設(shè)為ANY類型著淆,在數(shù)據(jù)區(qū)里也不能出現(xiàn)在定義區(qū)中沒有定義的標(biāo)簽劫狠,否則只能是Well-Formed文件而不是Validating 文件。

使用方法同上面的類型相同永部。

1.5.4嵌套的標(biāo)簽聲明

XML文件是以樹形結(jié)構(gòu)為基礎(chǔ)來描述數(shù)據(jù)的独泞,除了根元素可以包含子標(biāo)簽之外,任何一個(gè)標(biāo)簽都有可能會(huì)包含其他的子標(biāo)簽苔埋,這就是XML標(biāo)簽的嵌套懦砂。既然XML標(biāo)簽都可以嵌套,那么用于聲明XML標(biāo)簽的DTD组橄,應(yīng)該也能嵌套使用荞膘。例如:

首先,聲明一個(gè)包含了4個(gè)子標(biāo)簽的根元素晨炕,

<!ELEMENT 計(jì)算機(jī)系列 (書名,出版社,作者,價(jià)格) >

這就是一個(gè)基本的嵌套生成衫画,那么如果他的子標(biāo)簽還會(huì)有著嵌套呢?

這個(gè)時(shí)候瓮栗,我們就能直接寫出它的子標(biāo)簽所嵌套的標(biāo)簽。

<!ELEMENT 出版社 (出版社名瞄勾,郵編费奸,地址) >

這樣在DTD文檔中就能比較完善的把這個(gè)XML文檔所需要的一些東西進(jìn)行定義約束。

后面我們就是只需要將這個(gè)文檔里面的其他子標(biāo)簽進(jìn)行定義之后即可进陡。

1.5.5混合標(biāo)簽的聲明

在XML的標(biāo)簽嵌套里允許文字獄標(biāo)簽的混合使用愿阐。也就是在一個(gè)標(biāo)簽里面,既含有文字趾疚,又含有子標(biāo)簽的類型缨历。另外在標(biāo)簽的定義的時(shí)候我們也是有著屬性次數(shù)的出現(xiàn)。

| : 多選其一

* : 出現(xiàn)零次或者是多次

+: 一次或者是多次

無: 必須出現(xiàn)而且只能出現(xiàn)一次

1.6實(shí)體

在XML文件中的實(shí)體類似于很多程序中的常數(shù)糙麦,可以用來代表一些常用的數(shù)據(jù)辛孵,定義了實(shí)體之后,在XML文件中就可以通過實(shí)體名來引用這個(gè)常數(shù)赡磅,使用實(shí)體的好處是一次設(shè)定多處使用魄缚,一旦實(shí)體的值需要修改,也只要修改定義實(shí)體的部分即可焚廊,不需要逐個(gè)文件去修改冶匹。

1.6.1內(nèi)部實(shí)體

實(shí)體的聲明也是在XML文件的定義區(qū)聲明,如果實(shí)體是在內(nèi)部DTD中聲明的咆瘟,就稱為內(nèi)部實(shí)體嚼隘,實(shí)體聲明的語法如下所示:

<!ENTITY 實(shí)體名 " 實(shí)體值 ">而在XML文件中引用實(shí)體的方法如下所示:

&實(shí)體名稱;

1.6.2外部實(shí)體

當(dāng)XML文件使用的是外部DTD聲明方法袒餐,那么在外部DTD里聲明的實(shí)體就是外部實(shí)體飞蛹,

大概的調(diào)用以及使用方法與內(nèi)部實(shí)體大體上是相同的谤狡。

1.6.3 在DTD聲明中使用實(shí)體

在DTD中聲明的實(shí)體不但可以在數(shù)據(jù)區(qū)里使用,還可以在DTD中使用桩皿,其調(diào)用方法與在數(shù)據(jù)區(qū)中調(diào)用方法一樣豌汇。

注意:在聲明區(qū)不能循環(huán)引用實(shí)體,既不能存在實(shí)體A引用實(shí)體B泄隔,實(shí)體B反過來引用實(shí)體A的現(xiàn)象拒贱。

1.6.4參數(shù)型實(shí)體

前面介紹的實(shí)體,都是在數(shù)據(jù)區(qū)里引用佛嬉,或在聲明實(shí)體時(shí)引用另一個(gè)實(shí)體逻澳,那么在定義標(biāo)簽時(shí),能不能使用實(shí)體呢暖呕?答案是可以的斜做。在定義標(biāo)簽時(shí)引用實(shí)體,這種方式稱為參數(shù)型實(shí)體湾揽。使用參數(shù)型實(shí)體與使用普通實(shí)體有些不同瓤逼,普通實(shí)體可以在內(nèi)部DTD中使用,也可以在外部DTD中使用库物,而參數(shù)型實(shí)體只能在外部DTD中使用霸旗。

參數(shù)型實(shí)體定義方式為:

<!ELEMENT % 實(shí)體名稱 " 實(shí)體值 " >

而引用的方式為:

%實(shí)體名稱;

注意:參數(shù)型實(shí)體只能在外部DTD文件里戚揭,作為標(biāo)簽的參數(shù)被引用诱告,不能在XML的數(shù)據(jù)區(qū)里引用。

1.6.5 實(shí)體的混合使用

實(shí)體既可以在內(nèi)部DTD里聲明民晒,也可以在外部DTD里聲明精居,由于內(nèi)外部DTD可以混合使用,所以實(shí)體也可以混合使用潜必。同樣靴姿,和CSS一樣,內(nèi)部的使用優(yōu)先級(jí)大于外部的使用優(yōu)先級(jí)。

1.7標(biāo)簽屬性

與HTML代碼一樣,XML代碼中的標(biāo)簽也可以設(shè)置屬性功偿,屬性是標(biāo)簽的附加說明,通常使用程序或軟件來讀取辈毯。

1.7.1 標(biāo)簽屬性的介紹

在XML文件里的標(biāo)簽都是由開發(fā)者根據(jù)需要自己創(chuàng)建的,但這些標(biāo)簽也可以擁有自己的屬性以及屬性值搜贤,當(dāng)然谆沃,這些屬性與值也是開發(fā)者根據(jù)自己的需要而創(chuàng)建的。

1.7.2設(shè)置標(biāo)簽屬性

如果一個(gè)標(biāo)簽里還包含了屬性仪芒,那么在使用DTD設(shè)置標(biāo)簽類型時(shí)唁影,還必須為該標(biāo)簽生命屬性耕陷,否則就不是一個(gè)Validating 文件了,設(shè)置標(biāo)簽屬性的語法為:

<!ATTLIST 標(biāo)簽名 屬性名 類型 " 默認(rèn)值 ">

1.7.3標(biāo)簽屬性的類型

標(biāo)簽屬性擁有三個(gè)不同的類型据沈,分別為:#REQUIRED哟沫、#IMPLIED 和 #FIXED, 這三個(gè)類型說明了標(biāo)簽的不同用法锌介。標(biāo)簽屬性類型在定義標(biāo)簽屬性時(shí)使用嗜诀,通常放在標(biāo)簽屬性定義的最后。

#REQUIRED 類型說明的該標(biāo)簽屬性是一個(gè)不能省略的屬性孔祸,只要標(biāo)簽存在隆敢,該屬性就一定要出現(xiàn)。不過將一個(gè)屬性類型設(shè)為#REQUIRED時(shí)崔慧,就不能再為其設(shè)置默認(rèn)值拂蝎,

#IMPLIED 類型說明該標(biāo)簽屬性是一個(gè)可有可無的屬性,需要時(shí)可以制定該標(biāo)簽的屬性惶室,不需要時(shí)温自,也可以將其省略。將一個(gè)屬性類型設(shè)為#IMPLIED類型的屬性皇钞,就不能再為其設(shè)置默認(rèn)值捣作。

#FIXED 類型說明該標(biāo)簽屬性是一個(gè)固定值,設(shè)置該屬性類型之后鹅士,就不需要在標(biāo)簽里再設(shè)置該屬性了,在瀏覽器中打開的時(shí)候會(huì)將里面的屬性打印出來 惩坑。

1.7.4標(biāo)簽屬性值的數(shù)據(jù)類型

在前面例子中所有標(biāo)簽屬性值的類型都是CDATA , CDATA類型是文字類型掉盅,設(shè)為CDATA類型的屬性可以是任何文字,包括英文以舒、中文和數(shù)字趾痘。

而標(biāo)簽的屬性類型不僅僅可以為CDATA,還可以是NMTOKEN 蔓钟,NMTOKENS 永票,ID,IDREF滥沫,IDREFS侣集,ENTITY,ENTITES 幾種類型兰绣。標(biāo)簽屬性的類型的具體含義如下所示:

1)CDATA: 文字類型世分,可以為任何文字,包括英文缀辩、中文臭埋、數(shù)字踪央、空格、標(biāo)點(diǎn)等瓢阴〕澹‘

2)NMYOKEN : 文字類型,但只能是英文字母荣恐、數(shù)字或者是幾種常用符號(hào)液斜,文字之間不能包括空格。

3)NMYOKENS:文字類型募胃,可以包含的文字與NMYOKEN相同旗唁,除此之外,還可以包括空格痹束。

4)ID : 文字類型检疫,與CDATA的用法相同,但是在同一個(gè)XML文件中祷嘶,不能同時(shí)出現(xiàn)相同的屬性值屎媳。

5)IDREF : 文字類型,不過這種數(shù)據(jù)類型比較特殊论巍,只能用同一個(gè)XML文件中的其他ID類型的標(biāo)簽屬性的屬性值作為自己的屬性值烛谊。

6)IDREFS : 文字類型,與IDREF類型類似嘉汰,不過IDREF類型只能引用一個(gè)ID標(biāo)簽屬性值作為自己的屬性值丹禀,而IDREF可以引用多個(gè)ID標(biāo)簽屬性值作為自己的屬性值。

7)ENTITY:外部實(shí)體類型鞋怀,使用該類型的標(biāo)簽屬性必須用一個(gè)外部實(shí)體來當(dāng)作屬性值双泪。通常用來處理二進(jìn)制文件。

8) ENTITYS:同樣密似,是ENTITY的復(fù)數(shù)形式而已焙矛。

1.7.5 指定標(biāo)簽屬性值范圍

在聲明標(biāo)簽屬性時(shí),可以指定標(biāo)簽屬性值的范圍残腌,當(dāng)在XML數(shù)據(jù)區(qū)里使用標(biāo)簽屬性時(shí)村斟,就只能在這個(gè)范圍內(nèi)選擇屬性值,其語法代碼如下:

<!ATTLIST 標(biāo)簽名 屬性名? (屬性值1 | 屬性值 2| 抛猫。蟆盹。。 " 默認(rèn)值 ">

1.7.6處理XML文件中的空格

XML文件中經(jīng)常會(huì)出現(xiàn)一些如空格邑滨、Tab鍵日缨、空白行等特殊字符,在一些應(yīng)用程序中不能很好的處理這個(gè)地方掖看。

所以在XML中匣距,有一個(gè)特定的屬性:" xml:space " , 該屬性用來控制XML文件中的空格的處理方式面哥。 當(dāng) 其屬性值 為 " default " 是,XML文件中的空格由應(yīng)用程序控制如何處理毅待,這也是該屬性的默認(rèn)值尚卫。當(dāng)屬性值為preserve 時(shí),XML文件中的空格將會(huì)成為文件中的文字尸红。

1.8命名空間

由于XML可以由開發(fā)者隨意定義標(biāo)簽名稱吱涉,在多人聯(lián)合開發(fā)時(shí),有可能會(huì)出現(xiàn)標(biāo)簽的命名沖突外里,命名空間就是用來解決命名沖突的一種方法怎爵。

1.8.1使用標(biāo)簽前綴解決命名沖突

即在標(biāo)簽的前面加上一個(gè)命名空間。

1.8.2命名空間

W3C的命名規(guī)范聲明命名空間本身就是一個(gè)統(tǒng)一資源標(biāo)識(shí)符(URI)盅蝗,URI是一個(gè)標(biāo)識(shí)網(wǎng)絡(luò)資源的字符串鳖链,最常用的URI就是URL。URL用于標(biāo)識(shí)網(wǎng)絡(luò)主機(jī)的地址墩莫,可以說是在網(wǎng)絡(luò)上唯一的命名方式芙委,通常都使用URL來標(biāo)識(shí)命名空間,另外還有一個(gè)不常用的URI狂秦,稱之為URN 也可以用來標(biāo)識(shí)命名空間灌侣。

聲明命名空間的語法如下:

<標(biāo)簽名? xmlns: 前綴名 = " 命名空間 " >

當(dāng)然,一個(gè)標(biāo)簽中可以有多個(gè)命名空間前綴聲明裂问。

由于命名空間是以屬性的形式出現(xiàn)在標(biāo)簽里侧啼,因此在xml的定義區(qū)里,還要對(duì)這個(gè)屬性進(jìn)行聲明堪簿。

1.8.3 內(nèi)定命名空間

在XML里還可以使用內(nèi)定聲明方式來聲明命名空間慨菱。

1.9小結(jié)

XML是可擴(kuò)展的標(biāo)識(shí)語言,主要作用是數(shù)據(jù)的建立和管理戴甩,可以當(dāng)作一種通用的數(shù)據(jù)庫來使用,也能使用不同的應(yīng)用程序來讀取XML里的數(shù)據(jù)闪彼,一個(gè)完整的XML文件可以分為聲明區(qū)甜孤、定義區(qū)和數(shù)據(jù)區(qū)3個(gè)部分。聲明區(qū)的作用是聲明該文件為XML文件畏腕,數(shù)據(jù)區(qū)是數(shù)據(jù)存放的區(qū)域缴川,定義區(qū)的作用是設(shè)置文件的格式或標(biāo)簽的相關(guān)性。


好了描馅,XML的一些比較基礎(chǔ)的就談到這里把夸,下一節(jié)筆者覺得更難,更需要懂的铭污。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末恋日,一起剝皮案震驚了整個(gè)濱河市膀篮,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌岂膳,老刑警劉巖誓竿,帶你破解...
    沈念sama閱讀 207,113評(píng)論 6 481
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異谈截,居然都是意外死亡筷屡,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,644評(píng)論 2 381
  • 文/潘曉璐 我一進(jìn)店門簸喂,熙熙樓的掌柜王于貴愁眉苦臉地迎上來毙死,“玉大人,你說我怎么就攤上這事喻鳄《筇龋” “怎么了?”我有些...
    開封第一講書人閱讀 153,340評(píng)論 0 344
  • 文/不壞的土叔 我叫張陵诽表,是天一觀的道長(zhǎng)唉锌。 經(jīng)常有香客問我,道長(zhǎng)竿奏,這世上最難降的妖魔是什么袄简? 我笑而不...
    開封第一講書人閱讀 55,449評(píng)論 1 279
  • 正文 為了忘掉前任,我火速辦了婚禮泛啸,結(jié)果婚禮上绿语,老公的妹妹穿的比我還像新娘。我一直安慰自己候址,他們只是感情好吕粹,可當(dāng)我...
    茶點(diǎn)故事閱讀 64,445評(píng)論 5 374
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著岗仑,像睡著了一般匹耕。 火紅的嫁衣襯著肌膚如雪。 梳的紋絲不亂的頭發(fā)上荠雕,一...
    開封第一講書人閱讀 49,166評(píng)論 1 284
  • 那天稳其,我揣著相機(jī)與錄音,去河邊找鬼炸卑。 笑死既鞠,一個(gè)胖子當(dāng)著我的面吹牛,可吹牛的內(nèi)容都是我干的盖文。 我是一名探鬼主播嘱蛋,決...
    沈念sama閱讀 38,442評(píng)論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了洒敏?” 一聲冷哼從身側(cè)響起龄恋,我...
    開封第一講書人閱讀 37,105評(píng)論 0 261
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎桐玻,沒想到半個(gè)月后篙挽,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,601評(píng)論 1 300
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡镊靴,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 36,066評(píng)論 2 325
  • 正文 我和宋清朗相戀三年铣卡,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片偏竟。...
    茶點(diǎn)故事閱讀 38,161評(píng)論 1 334
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡煮落,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出踊谋,到底是詐尸還是另有隱情蝉仇,我是刑警寧澤,帶...
    沈念sama閱讀 33,792評(píng)論 4 323
  • 正文 年R本政府宣布殖蚕,位于F島的核電站轿衔,受9級(jí)特大地震影響,放射性物質(zhì)發(fā)生泄漏睦疫。R本人自食惡果不足惜害驹,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 39,351評(píng)論 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望蛤育。 院中可真熱鬧宛官,春花似錦、人聲如沸瓦糕。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,352評(píng)論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽咕娄。三九已至亥揖,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間圣勒,已是汗流浹背徐块。 一陣腳步聲響...
    開封第一講書人閱讀 31,584評(píng)論 1 261
  • 我被黑心中介騙來泰國(guó)打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留灾而,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 45,618評(píng)論 2 355
  • 正文 我出身青樓扳剿,卻偏偏與公主長(zhǎng)得像旁趟,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 42,916評(píng)論 2 344

推薦閱讀更多精彩內(nèi)容

  • 1. XML簡(jiǎn)介 以下內(nèi)容來自于http://www.w3school.com.cn/xml 基本知識(shí) XML 和...
    WebSSO閱讀 1,904評(píng)論 1 7
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理锡搜,服務(wù)發(fā)現(xiàn)橙困,斷路器,智...
    卡卡羅2017閱讀 134,601評(píng)論 18 139
  • Spring Boot 參考指南 介紹 轉(zhuǎn)載自:https://www.gitbook.com/book/qbgb...
    毛宇鵬閱讀 46,748評(píng)論 6 342
  • 1. Java基礎(chǔ)部分 基礎(chǔ)部分的順序:基本語法耕餐,類相關(guān)的語法凡傅,內(nèi)部類的語法,繼承相關(guān)的語法肠缔,異常的語法夏跷,線程的語...
    子非魚_t_閱讀 31,587評(píng)論 18 399
  • 她說 “哈嘍槽华,終于見到你啦√送祝”這是當(dāng)時(shí)猫态,魚和我說的第一句話。第一次看見魚披摄,她長(zhǎng)長(zhǎng)的頭發(fā)亲雪,圓圓的臉蛋,白白凈凈透點(diǎn)蘋...
    yitimtim閱讀 393評(píng)論 0 1