曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
• NMTOKENS
• ID
• IDREF
• IDREFS
• ENTITY
• ENTITIES
• NOTATION
上述屬性類型中的九種在類型字段中的值為常數,而Enumerated 是一種特殊的類型,表示屬性值必須為一可能取值列表中
的一個。下面分別對各類型進行深入的研究。
10.5.1 CDATA 屬性類型
最通用的屬性類型CDATA,表明屬性值為不包括小于號(<)和引號(")的任意文本字符串?赏ㄟ^普通的實體引用(<;
和";)的方式或由字符引用Unicode 值的方式插入小于號和引號字符。原始的和號(&)��不是字符或實際引用
開始的和號,必須使用換碼符&。
實際上,即使屬性值中不可避免的要包含雙引號(")的情況下,也不可直接使用;替代的方法是用單引號把雙引號括起來。
如下例所示:
<RECTANGLE LENGTH= 7" WIDTH= 8.5" >
如果屬性值中包含單引號和雙引號,而且并不用作界定屬性值的用途;它們必須替換為實體引用&apos;(單引號)和";
(雙引號)。例如:
<RECTANGLE LENGTH= 8& pos;7" WIDTH="10 6""/>
10.5.2 Enumerated 屬性類型
Enumerated 類型不是XML 的關鍵詞,而是由豎線分隔的可能的屬性值列表。任一值均需為有效的XML 名稱。文檔作者可選
取列表中的一個成員為屬性的值,缺省值必須為列表中的一個值。
例如,假設希望某個元素具有可見和不可見屬性。希望該元素具有一個VISIBLE 屬性,其屬性值為TRUE 或FALSE。如果該
元素為簡單的P 元素,那么<!attlist>聲明可如下所示:
<!ATTLIST P VISIBLE (TRUE | FALSE) "TRUE">
上述聲明表示P 元素的VISIBLE 屬性可有可無,若擁有VISIBLE 屬性,則屬性值必須為TRUE 或FALSE;如果沒有VISIBLE
屬性,則假定該值為TRUE。例如:
XML 實用大全
第 301 頁
<P VISIBLE= "FALSE">You can t see me! Nyah! Nyah!</P>
<P VISIBLE= "TRUE">You can see me.</P>
<P>You can see me too.</P>
就其自身而言,這聲明并不是一個提供隱藏文本能力的魔術般的咒語。這種能力依然依靠應用程序去理解不應該顯示不可見
元素。為決定元素的顯示或隱藏,可以通過對元素應用VISIBLE 屬性的樣式單規則來進行設置。例如:
<xsl:template match= "P[@VISIBLE= FALSE ]" >
</xsl:template>
<xsl:template match= "P[@VISIBLE= TRUE ]" >
<xsl: apply-templates/>
</xsl:template>
10.5.3 NMTOKEN 屬性類型
NMTOKEN 屬性類型限定屬性值為有效的XML 名稱。如第6 章所述,XML 名稱必須以字母或下劃線開頭。名字中后面的字符可
以為字母、數字、下劃線、連字符和句號。但不可包括空格(下劃線通常作為空格的替代品)。從技術上說,名字中可包含
冒號(:)但不應該使用冒號,因為冒號被保留為與命名域(namespace)一起使用。
當使用編程語言處理XML 數據時,證明了NMTOKEN 的價值。這并不是一種偶然,除了允許使用冒號以外,上述規則與JAVA,
JavaScript 和其他程序語言標識符規則一致。例如,可在元素中使用NMTOKEN 屬性訪問特別的JAVA 類。那么就應用JAVA
的API 映射把數據傳送到專有類的特有方法中。
當需要從大量名字中選取不是XML 的規定部分但與XML 命名要求相符的名字時,就能體現NMTOKEN 的用途。這些要求的最重
要部分就是對空格的限制。例如,NMTOKEN 可以用于下述屬性,其值必須映射為8.3 的DOS 文件名,另一方面該屬性也能用
于UNIX、Macintosh 或Windows NT 文件名,而這些文件名中通常包含空格。
例如,假如要求<ADDRESS/>標記中的州(state)屬性為兩個字母縮寫;不能用DTD 強制這些特性的執行,但可應用如下
<!ATTLIST>聲明防止人們輸入類似“New York”或“Puerto Rico”的值:
<!ATTLIST ADDRESS STATE NMTOKEN #REQUIRED>
無論何種情況,像“California”、“Nevada”和其他一個單詞的州名依然為合法值。當然,可以利用具有幾十個兩個字母
的代碼的枚舉列表的簡單方法;但是這種方法將導致巨大的工作量,比人們想象的大得多。舉個例子,想一想,如果用兩個
字母代碼代表美國50 個州、所有的領土和屬地、所有的國外的軍事基地和加拿大所有的省份會是一個什么樣的情況?另一
方面,如果曾經在DTD 文件中的參數實體引用定義了這樣的列表,就可重復多次使用這個文件。
10.5.4 NMTOKENS 屬性類型
NMTOKENS 屬性類型幾乎就是NMTOKEN 的復數形式。這種類型的屬性可以使如下情況合法——屬性由若干XML 名稱字組成,
彼此間由空格分隔。通常可為使用NMTOKEN 屬性相同的理由而使用NMTOKENS 屬性,但僅僅在需要多個名字的時候。
XML 實用大全
第 302 頁
例如,如果state 元素的屬性值需要多個兩個字母州代碼時,就可應用下例所示的方法:
<!ATTLIST ADDRESS STATES NMTOKENS #REQUIRED>
然后,就可編寫如下所示的標記:
<ADDRESS STATES="MI NY LA CA">
不幸的是,如果應用這種技術,就不能再排除類似“New York”這樣的州名,因為州名中每一獨立的部分都為一個合格的
NMTOKEN。如下所示:
<ADDRESS STATES="MI New York LA CA">
10.5.5 ID 屬性類型
一個ID 類型的屬性標識文檔中唯一的元素,編輯工具和其余應用程序通常使用ID 列舉文檔中的元素,并不關心元素的實際
意義和各元素彼此之間的關系。
一個ID 類型屬性值必須為有效的XML 名稱,該名稱以字母開頭,由字母數字混排的字符和下劃線組成,并且其中不帶空格。
一個特定的名字不能用作多個標記的ID 屬性。若在一個文檔中兩次使用同一ID 將導致語法分析器返回一個錯誤信息;另外,
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML實用大全(87)