曝光臺(tái) 注意防騙
網(wǎng)曝天貓店富美金盛家居專營(yíng)店坑蒙拐騙欺詐消費(fèi)者
述和建模,它們能夠支持傳統(tǒng)印刷目錄的所有功能。對(duì)于那些只能在I n t e r n e t上做到的電子商務(wù)
功能,這些將成為其實(shí)現(xiàn)的基礎(chǔ)。
你可以在h t t p : / / w w w. w 3 . o rg / X M L找到XML 1.0推薦標(biāo)準(zhǔn)( 和其他信息)。在
http://www.xml.com/axml/axml.html還有一個(gè)該標(biāo)準(zhǔn)的帶注釋的版本。
2.1 標(biāo)記語(yǔ)法
X M L標(biāo)記負(fù)責(zé)提供和描述一個(gè)X M L文件或數(shù)據(jù)包(也就是大家所熟知的X M L實(shí)體)的內(nèi)容
結(jié)構(gòu)。它們由界定內(nèi)容的不同部分的標(biāo)記( t a g)組成,
負(fù)責(zé)提供到特殊符號(hào)和文本宏的引用,或者將特殊指
令傳遞給應(yīng)用軟件,以及把注釋傳遞給文檔編輯器。
相信你們對(duì)H T M L元素的標(biāo)記已經(jīng)很熟悉了(參
見圖2 - 1)。
X M L元素的結(jié)構(gòu)與H T M L基本相同,X M L也同樣
使用尖括號(hào)來(lái)界定標(biāo)記—以小于號(hào)( <)起始、大
于號(hào)(>)結(jié)尾。但二者的相同點(diǎn)也就僅此而已。
與H T M L不同,幾乎所有的X M L標(biāo)記都是大小寫敏感的,其中包括元素的標(biāo)記名和屬性
值;也就是說:
之所以大小寫敏感,主要是滿足X M L國(guó)際化的設(shè)計(jì)目標(biāo)和簡(jiǎn)化處理過程的需要。大多數(shù)非
英語(yǔ)語(yǔ)言并不把字母表分成若干種寫法,(即使是羅馬字符)許多字母可能也沒有對(duì)應(yīng)的大寫或
小寫。例如,在法語(yǔ)中“ ç”就不一定是“ ç”(也可以是“C”)。希臘字母“西格馬”只有一個(gè)
大寫形式,但卻有兩個(gè)小寫形式;阿拉伯語(yǔ)則對(duì)每一個(gè)字母使用多種形式的寫法;等等。合并
寫法會(huì)存在許多缺陷,尤其是對(duì)于非A S C I I碼更是如此,而X M L的設(shè)計(jì)者們大多選擇避免這些
問題。
下面讓我們看一看X M L是如何滿足國(guó)際化的需要的。
2.1.1 字符
由于X M L是要在全球范圍內(nèi)使用的,所以不能局限于7位的A S C I I碼字符集。X M L指定的字
標(biāo)記
屬性
元素
內(nèi)容標(biāo)記
圖2-1
符均在1 6位的Unicode 2.1字符集(參見h t t p : / / w w w. u n i c o d e . o rg—它目前與ISO/IEC 10646是一
致的—參見h t t p : / / w w w. i s o . c h)中定義。這些都是相對(duì)較新的標(biāo)準(zhǔn),而且當(dāng)今世界還有許多文
字沒有編入統(tǒng)一碼當(dāng)中。但是,由于它被設(shè)計(jì)為大多數(shù)現(xiàn)存字符編碼的超集,所以遺留的內(nèi)容
向統(tǒng)一碼的轉(zhuǎn)換也是簡(jiǎn)單直觀的。例如,把A S C I I碼轉(zhuǎn)換成統(tǒng)一碼只需要把1 6位字符的前8位填
充為0(而保留后8位)即可。
計(jì)算機(jī)字符史上還有一段關(guān)于連字符的小插曲(例如與從各類排版系統(tǒng)繼承而來(lái)的“ f i”或
“ff”字符組合),此外還有早期對(duì)日文處理的嘗試所采用的“半寬片假名”。雖然這些奇談怪論
都包含進(jìn)了統(tǒng)一碼標(biāo)準(zhǔn),但并不鼓勵(lì)大家使用—例如連字符就不是真正的字符,它們只是某
種形式的印刷樣式,能夠以最好的方式處理文本顯示,但并不嵌入到文本數(shù)據(jù)中。
訪問由Jukka Korpela制作的頁(yè)面h t t p : / / w w w. h u t . f i / u / j k o r p e l a / c h a r s . h t m l,可以看到關(guān)于字符
編碼問題的一個(gè)很好的介紹。
合法的X M L字符包括三個(gè)ASCII C0控制符,所有普通的A S C I I可顯示字符,以及所有其他
統(tǒng)一代碼字符值(用十六進(jìn)制表示),可參見表2 - 1。
表2 - 1
字符值(十六進(jìn)制) 描述
0 9 水平制表符( H T)
0 A 換行(L F)
0 D 回車(C R)
20 .. 7E A S C I I顯示字符
80 .. D7FF 統(tǒng)一代碼字符(包括“ L a t i n - 1”)
E000 .. F8FF “私有區(qū)域”
F900 .. FFFD C J K(中日韓)兼容的象形文字
10000 .. 10FFFF 待用集和“高度私有區(qū)域”
統(tǒng)一代碼中包含一個(gè)數(shù)量超過137 000的字符集合用于應(yīng)用程序特定字符,它被稱作“保留
區(qū)域”。當(dāng)然,使用這些私有字符進(jìn)行任何X M L數(shù)據(jù)的交換都需要就這些字符的解釋單獨(dú)達(dá)成一
致,所以統(tǒng)一代碼的這個(gè)部分不應(yīng)該在X M L數(shù)據(jù)對(duì)象中使用,因?yàn)樗鼈冃枰谙喈?dāng)廣的范圍內(nèi)
進(jìn)行交換。
2.1.2 命名
在X M L中使用的結(jié)構(gòu)幾乎總是被命名的。所有X M L命名都必需以字母、下劃線( _)或冒
號(hào)(:)開頭,后面跟著的是有效命名字符。有效命名字符除了前面的內(nèi)容,還包括數(shù)字、連字
符(-)、句點(diǎn)(.)。在實(shí)際應(yīng)用當(dāng)中不應(yīng)該使用冒號(hào),除非是用作命名空間的分隔符(參見第7
章)。記住字母并非局限于A S C I I碼是非常重要的,因?yàn)椴徽f英語(yǔ)的人們可以把自己的語(yǔ)言用在
標(biāo)記當(dāng)中。
X M L規(guī)范還定義了一種名叫命名令牌( name token,通常縮寫為n m t o k e n)的相關(guān)觀念,
它可以是命名字符的任意組合而沒有詞首字母的任何限制。除了它能夠使用在屬性值
第2章XML 語(yǔ)法使用21
下載
(后面將介紹)中這個(gè)問題,我們不想在本章過多地討論命名令牌,但是當(dāng)我們?cè)谙乱徽?br />
開始討論有效XML文檔時(shí),它們就變得很重要了。
在命名方面另一個(gè)限制是它們不能由字符串“ x m l”、“X M L”或任何以此順序排列的這三
個(gè)字母的各類組合(例如“ x M L”或“X m l”)開頭。W 3 C保留對(duì)以這三個(gè)字母開頭的命名的使
用權(quán)。
下面就是一些合法的命名:
注意前兩個(gè)命名并不等同—這一點(diǎn)我們前面已經(jīng)討論過, X M L的命名是大小寫敏感的。
第三個(gè)是使用建議的命名空間分隔符(冒號(hào))的典型例子—在第7章你可以了解到關(guān)于命名空
間的更多信息。最后兩個(gè)例子提醒大家注意希臘語(yǔ)和法語(yǔ)同英語(yǔ)一樣,都可以用作X M L的命名。
下面是一些非法的命名:
頭兩個(gè)例子開頭使用的字母(“-”和“4”)雖然是合法的命名字符,但作為首字母卻是非法
的。第三個(gè)和第四個(gè)例子的字符根本就是非法字符(“$”和上標(biāo)“ 2”)。最后兩個(gè)例子違反了
“x m l是保留字符”的限制(當(dāng)然,如果它們是由W 3 C定義的則是另外一回事了)。在這種情況或
中國(guó)航空網(wǎng) www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級(jí)編程上(10)