曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
字符數據就是任何不是標記的文本,它是元素或屬性值的文本內容。
小于號和&符號是標記分隔符,因此它們絕不能以字符串的形式出現在字符數據中
(C D ATA部分除外,這一點我們將在后面提到)。如果這些字符是字符數據所必需的,它們必需
使用實體引用& 或& l t ;來代替。這兩個替代物是X M L規范定義的5個類似字符串中的一部分,
而且在所有兼容X M L的解析器中都得到實現(在后面的2 . 6節“字符引用和實體引用”中我們將
第2章XML 語法使用29
下載
了解到更多的信息)。
這里,我們需要再次提醒大家,由于X M L的目的是在全球使用,所以文本是指統一代碼,
而不僅僅是A S C I I碼(參見本章前面的關于字符的部分)。
現在,我們來討論屬性的問題。
2.5 屬性
如果說元素是XML中名詞,那么屬性就是這種語言的形容詞。
在很多情況下,我們會希望將某些信息附著在元素上,它們與元素本身包含的信息內容有
所不同。我們利用屬性( a t t r i b u t e)來做到這一點,它們都包括一個名稱-值組合,使用的格式有
如下兩種形式:
屬性值必需是分隔開的字符串(字符串規則的要求),其中可能包含實體引用、字符引用
(本章稍候將解釋),以及/或文本字符。但是,正如我們剛才解釋的那樣,任何一個受保護的標
記字符(<和&)都不能簡單地在屬性值中當作字符使用—它們必須用< 或& 實體引用
來替代。
H T M L允許數字化的屬性,例如<IMG WIDTH=300 . . . >;或者不分隔的屬性,比如< P
ALIGN=LEFT>—但這兩種情況在XML中都不允許存在。
在起始標記或空標記中屬性只允許有一個實例存在。例如,下面的例子在X M L當中就是非
法的,因為s r c在一個標記中出現了兩次:
這種限制極大地簡化了X M L解析器對屬性的處理。
正如我們在前面暗示的,起始標記和空標記可能在標記中包含屬性。例如,回到我們前面
提到的關于書本、盒子、紙箱和卡車的例子,如果我們希望給每個運送書本的紙箱編上一個號
碼的話,可以使用如下屬性:
程序清單2 - 4
在這個例子中,屬性名稱是“ n u m b e r”,相應元素起始標記中的值為“ 0 - 6 6 6 - 4 2 - 1”和“ 0 -
6 6 6 - 4 2 - 2”。注意兩個合法的字符串分隔符( '和")在本例中都被使用了。
同樣,我們在前面提到的< t e x t f i l e >例子中使用的“ < E O F / >”空元素標記也可能包含原始文
本文件文件尾字符的十六進制值:
30使用XML 高級編程
下載
在本例中,屬性的名稱為“ c h a r”而值為“ 1 A”(即M S - D O S時代的C t r l - Z)。
除了你可以自行定義的屬性外,還有兩個在X M L中起到特定作用的特殊屬性。
2.5.1 特殊屬性
在XML 1.0推薦標準中定義了兩個特殊的屬性: x m l : s p a c e和x m l : l a n g。
X M L文檔的作者可以使用這些屬性向X M L應用程序(例如,瀏覽器)傳遞某種信號。這兩
種屬性都使用X M L命名空間的語法,即一個命名空間的前綴(“x m l”)緊跟一個冒號( :),然后
是屬性名稱(“s p a c e”和“l a n g”)。在第7章我們將了解到關于命名空間的更多信息。
1. xml:space屬性
這個屬性之所以存在,是因為H T M L的< p r e >標記被廣泛使用以保持文本格式,其中包括任
何嵌入的空白字符。但是,缺省情況下,使用X M L的應用程序在特定元素中可能不保留空白部
分,這取決于它們的目的。
X M L文檔的作者不會依賴于應用程序的默認行為,而是使用x m l : s p a c e屬性來告知應用程序
它應該保留空白部分(雖然應用程序對于此信號的實際響應是由應用程序本身定義的—針對
這一問題X M L推薦標準中沒有任何要求)。
該屬性的值將被應用到元素及其所有子元素中—而不僅僅是帶有x m l : s p a c e屬性的元素。
這一點與X M L對屬性的通常處理方式不太一致,但這一例外確實還是必要的。
如果使用的是帶校驗的解析器, x m l : s p a c e屬性被限制為只能使用兩個特定值:
“p r e s e r v e”和“d e f a u l t”—其他任何值都無效(在第3章中討論D T D時我們會得到更
多信息)。
下面讓我們看一看另一個特殊屬性。
2. xml:lang屬性
這個屬性之所以存在,是出于X M L國際化設計目標的需要。統一代碼的使用只是為其他人
類語言使用的字符提供了一種標準的編碼方法—統一代碼可以說是在為文本的顯示做著無聲
無息的貢獻(在其中包含一些特殊的顯示字符和用于顯示帶有二義性的猶太語文本的“ B I D I”
算法,以及用于組成亞洲字符的途徑)。此外,它還包含了其他一些針對語言問題的考慮:字符
和符號的排序;如何分隔字符以便于全文本索引;連字處理;特定性別的代名詞或短語。
如果使用的是帶驗證的解析器, x m l : l a n g屬性(和其他屬性一樣)都必須在D T D(在第3章
可以了解到更多的有關信息)中做出聲明。此外,在這種情況下,該屬性只能取如下幾種值:
三類語言代碼中的一種:
• ISO 639—h t t p : / / s u n s i t e . b e r k e l e y. e d u / a m h e r / i s o _ 6 3 9 . h t m l
• IETF的R F C 1 7 6 6—h t t p : / / w w w. i e t f . o rg / r f c / r f c 1 7 6 6 . t x t
• 用戶定義的語言代碼
ISO 3166國家代碼—h t t p : / / s u n s i t e . b e r k e l e y. e d u / a m h e r / i s o _ 3 1 6 6 . h t m l
以下幾種基本格式之一:
• 兩個字母的ISO 639語言代碼;例如,法語或日語可以表示為
第2章XML 語法使用31
下載
• 兩個字母的國家代碼緊跟一個或多個子代碼。如果存在第一個子代碼而且包含兩個字母,
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(13)