曝光臺 注意防騙
網曝天貓店富美金盛家居專營店坑蒙拐騙欺詐消費者
選的,此值為0;當最少出現一次時,此值為1(缺省值為1)
m a x O c c u r s 引用元素類型在元素里能出現的最大次數,當出現次數最多為1次時,此
值為1;當出現次數不限制時,此值為*(缺省值為1)
< a t t r i b u t e >元素也能有三個屬性(參見表7 - 8)。
表7 - 8
屬性描述
d e f a u l t 屬性的缺省值,不考慮它所重載的< A t t r i b u t e >元素里提供的任何缺省值
t y p e 與在模式里定義的< AttributeTy p e >元素的n a m e屬性值相一致
r e q u i r e d 指明屬性是否必須出現在元素里,如果需要取值y e s。如果在< AttributeTy p e >
元素里指明了就不需要了
讓我們看一些簡單的元素聲明和它們的D T D等價物。首先我們有一個父元素叫做< F e x >,它
包含一個子元素叫做< Te x >。
224使用XML 高級編程
下載
這里,一些為< Te x >聲明的< E l e m e n t Ty p e >將在模式的別的地方被包含。在D T D里,我們剛
剛看到的聲明將是:
接下來,有一個< P e r s o n >元素,它有子元素< F i r s t N a m e >、< M I >和< L a s t N a m e > :
使用X M L - D R,這將看起來像下面那樣:
程序清單7 - 3 4
內容模型通過使用o r d e r屬性和g r o u p元素組成。因此,如果想要變得更復雜,我們需要看一
下< g r o u p >元素的屬性以及使用已經看過的< e l e m e n t >元素的屬性(參見表7 - 9)。
表7 - 9
< g r o u p >屬性含義
m a x O c c u r s g r o u p可能出現的最大次數?扇≈0或*(很多)
m i n O c c u r s g r o u p可能出現的最小次數。可取值0(可選)或1(至少出現1次)包含
o r d e r 的元素和組的順序?赡苁莖 n e(從g r o u p里選出一個元素)、s e q(序列
里的每個元素)或m a n y(g r o u p里可能或不可能,按一定順序出現的任意
元素)
于是,如果我們想根據X M L - D R聲明下面的內容模型:
它將像下面那樣:
程序清單7 - 3 5
為了聲明屬性,我們需要< A t t r i b u t e Ty p e >元素,它有一個必選的屬性和四個可選的屬性。通
過包含一個< a t t r i b u t e > 元素將屬性與元素結合, < a t t r i b u t e >元素作為用來聲明元素的
< E l e m e n t Ty p e >的子元素,就像處理元素一樣。< a t t r i b u t e >元素的t y p e屬性參閱了聲明屬性的
< A t t r i b u t e Ty p e >(參見表7 - 1 0)。
第7章命名空間和模式使用225 下載
表7 - 1 0
A t t r i b u t e Ty p e屬性含義
n a m e 必須的;屬性名稱
d e f a u l t 屬性缺省值;必須與D t : t y p e一致
d t : t y p e 屬性定義的數據類型
d t : v a l u e s 當d t : t y p e是枚舉時一系列可能的值
r e q u i r e d 指明屬性是否出現在元素的所有的實例中; Tr u e或F a l s e
在Windows 2000之前的I E 5解析器版本, d t : t y p e可以具有XML 1.0原始類型: e n t i t y、
e n t i t i e s、e n u m e r a t i o n、i d、i d r e f、i d r e f s、n m t o k e n、n m t o k e n s、n o t a t i o n和s t r i n g。下面討論
的數據類型的整個范圍均被搭載在Windows 2000上的解析器支持。
這里是我們怎樣去添加一個必須的a g e屬性到事先在D T D里聲明的< P e r s o n >元素里:
在X M L - D R里這些變成了:
程序清單7 - 3 6
< a t t r i b u t e >元素也可用來聲明一個缺省值或指明這個屬性是否為必須。如果相關聯的
< A t t r i b u t e Ty p e >提供了r e q u i r e d屬性,我們不需要在< a t t r i b u t e >元素里重復那個屬性。
另一個有趣的變化是一個< A t t r i b u t e Ty p e >元素可以出現在< E l e m e n t Ty p e >實例范圍里。那種
情況下,聲明的屬性類型只是在< E l e m e n t Ty p e >聲明范圍里有效,并且在模式的別的地方不能引
用。這里是用a g e聲明的同一個< P e r s o n >和a g e,a g e被定義成單獨用于< P e r s o n >:
程序清單7 - 3 7
(3) 組
我們看到了< g r o u p >元素用于< E l e m e n t Ty p e >元素聲明。它的使用非常簡單,但這個元素的
屬性所允許的數值不同于我們在XML 模式看到的那些。首先,它最重要的功能不靈活。a l l按順
序枚舉了類型,但也不被支持。< G r o u p >具有m a x O c c u r s、M i n O c c u r s和O r d e r屬性,這些我們在
前面部分看過了。
226使用XML 高級編程
下載
(4) 注釋
X M L - D R為內嵌文檔提供了描述性元素。
當然,X M L類型注釋<!--Some comment here-->同樣工作得很好。但是我們能用描述性元素
捕捉與模式相關的注釋,比如使用方法注釋,它可用于一種特殊工具的使用說明。X M L - D R自
己不區分兩種格式的注釋,而只提供二者任意一種。
(5) 數據類型
X M L - D R使我們能在IE 5.0里使用數據類型技術預覽來提供強大的元素和屬性錄入功能。除
了d t : t y p e屬性之外這些使用了< A t t r i b u t e Ty p e >元素。這個元素—< d a t a t y p e >擁有單一屬性
d t : t y p e,以指明父元素的類型。
IE 5.0里強大的錄入支持不僅提供XML 1.0原始類型,還支持大量對P C應用普遍的派生類型。
表7 - 11是支持的附加的類型:
表7 - 11
數據類型含義
b i n . b a s e 6 4 基于6 4二進制編碼的M I M E類型
b i n . h e x 由1 6進制表示的字節
b o o l e a n 0(f a l s e)或1 ( t r u e )
c h a r 單字符
d a t e ISO 8601日期(不含時刻)
d a t e t i m e ISO 8601日期時刻,帶有可選的時間和分數秒,可達到十億分之一秒的分辨率
中國航空網 www.k6050.com
航空翻譯 www.aviation.cn
本文鏈接地址:
XML高級編程上(82)