曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
<!ATTLIST SOUND PLAYER NOTATION (MP | SM | ST) #REQUIRED>
這表明SOUND 元素的PLAYER 屬性值可設置為MP、ST 或SM。下一章對此再作進一步的研究。
乍看上去,這種處理方法與其余列表屬性(如ENTITIES 和NMTOKENS)處理方法好像不一致;但其實這兩種方法截然
不同。ENTITIES 和NMTOKENS 在文檔的實際元素中具有一個屬性列表,但在DTD 的屬性聲明中僅有一個值。可是文檔中實際
元素的NOTATION 屬性值僅有一個。可取值的列表位于DTD
的屬性聲明中。
XML 實用大全
第 306 頁
10.6 預定義屬性
在某種程度上說,可以在XML 中預定義兩個屬性。必須在DTD 中為將應用的每一元素聲明這兩個屬性,但是僅僅可以為原定
目標而使用這些聲明的屬性。通過在屬性名前加xml:來標識這類屬性。
這兩類屬性分別為xml:space 和xml:lang。Xml:space 屬性描述如何對待元素中的空格;xml:lang 屬性描述書寫元素
的語言(以及可選的方言和國別)。
10.6.1 xml:space
在HTML 中,空格并不重要。盡管一個空格和沒有空格之間的差別是非常重要的,但是一個空格和兩個空格、一個空格和一
個回車符、一個空格三個回車符和12 個制表符之間的差別并不重要。對某些文本來說,空格非常重要,如計算機源代碼、
某些大型機數據庫報告或者e.e.cumming 的詩文,可使用PRE 元素指定等寬的字體和保留空格。
不過,XML 的缺省方式為保留空格。XML 處理器毫不改變地傳送全部空格字符給應用程序。應用程序通常忽略額外的空格。
可是XML 處理器可通知應用程序某些特定的元素包含需保留的、意義重大的空格。作者可使用xml:space 屬性,為應用程
序說明這些元素。
如果元素包含重要的空格,DTD 將為xml:space 屬性提供一個<!ATTLIST>標記。這個屬性具有枚舉類型,其值為default
和preserve。如清單10-3 所示。
清單10-3:用XML 編碼的具有重要空格的Java 源代碼
<?xml version="1.0" standalone= "yes"?>
<!DOCTYPE PROGRAM [
<!ELEMENT PROGRAM (#PCDATA)>
<!ATTLIST PROGRAM xml:space (default|preserve) preserve >
]>
<PROGRAM xml:space= "preserve">public class AsciiTable {
public static void m in (String[] args) {
for (int i = 0; i < 128; i++) {
System.out.println(i + " "+ (char) i);
}
}
}
</PROGRAM>
XML 實用大全
第 307 頁
不管xml:space 值為default 或preserve,全部空格都傳送給應用程序。可是,若值為default,應用程序按正常方式處
理額外的空格;若值為preserve,則按有特殊意義的態度對待這些額外的空格。
空格的特殊意義在某種角度來說依賴于數據的最終目標。例如,Java 源代碼中的額外空格僅與源代碼的編輯器有關,
但與編譯器無關。
已定義xml:space 屬性元素的子元素,除非子元素定義了與原值相矛盾的xml:space 屬性,否則將表現出與其父元素相似
的行為(保留或不保留空格)。
10.6.2 xml:lang
xml:lang 屬性標識書寫元素內容的語言。屬性值可以為CDATA、NMTOKEN 或者枚舉列表類型。理想的情況下,每一個屬性
值均為原始ISO-639 標準定義的兩個字母語言代碼。代碼列表可在下述Web 地址處找到:
http://www.ics.uci.edu/pub/ietf/http/related/iso639.txt。
例如,研究下面兩個例子,其中的句子取自Petronius 的 Satiricon,分別用拉丁文(Latin)和英文(English)書寫。一
個SENTENCE 標記包裝了這兩個句子,但是第一個句子標記使用的xml:lang 屬性值為“Latin”,而第二個句子中其值為
“English”。
拉丁文(Latin):
<SENTENCE xml:lang="la">
Veniebamus in forum deficiente now die, in quo notavimus frequentiam rerum venalium, non quidem pretiosarum sed
tamen quarum fidem male mbulantem obscuritas temporis facillime tegeret.
</SENTENCE>
英文(English):
<SENTENCE xml:lang= "en">
We have come to the marketplace now when the day is failing, where we have seen many things for s le, not for
the valuable goods but rather that the darkness of the time may most easily conceal their shoddiness.
</SENTENCE>
說英語的讀者很容易區分哪個為原稿,哪個為譯 本;計算機可根據xml:lang 屬性提供的線索進行區分。這個差別可確定拼
寫檢查器決定如何檢查特定的元素和決定使用哪個詞典。搜索引擎可以檢查這些語言屬性,然后確定如何檢索頁面內容和返
回基于用戶優先選擇的匹配結果。
語言種類過多,而代碼不足
XML 在使用語言代碼問題上依然有點落后原始的ISO-639 標準語言代碼由兩個不分大小寫的ASCII 字母
XML 實用大全
第 308 頁
字符構成;這標準允許的代碼數目不能超過676 種不同的代碼(26*26),可是現在地球上使用的語言遠
遠不止676 種(即使不包括類似Etruscan 這種已經消亡的語言)。實際上,合理的代碼還少于676 種,
因為語言的縮寫必須與語言的名字具有一定的關系。
ISO-639 標準的第二部分使用三個字母的代碼,可處理地球上使用的所有語言。可是XML 標準規范要求使
用兩個字母代碼。
語言(language)屬性應用在元素及其所有的子元素上,除非其中某個子元素聲明了不同的語言。前面的SENTENCE 元素可
按如下方式進行聲明:
<!ELEMENT SENTENCE (#PCDATA)>
<!ATTLIST SENTENCE xml:lang NMTOKEN "en">
假如沒有適當的ISO 代碼可利用,也可利用在IANA 注冊的代碼之一,雖然現在IANA 僅增加了四種附加代碼(如表10-2 所
示)。最新的列表可在下面的地址處找到:
http://www.isi.edu/iana/assignments/language/tags。
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(89)