XML Schema幫你建模(4)

2021-03-31 08:56:31 字數 1698 閱讀 3194

除了使用簡單型別中描述的原子型別(這些原子型別可用於組合成絕大多數的其它型別,包括其它的簡單型別和復合型別)外,xml schema中在簡單型別範疇中還有列表型別(list type)的概念。原子型別、列表型別以及聯合型別,總稱為簡單型別。乙個原子型別的值在xml schema中是不可分割的。舉例來說,nmtoken值us是不可分割的,us的任何部分,如字母s本身都是沒有意義的。與之相比較,列表型別則是由一組原子型別組成,因此它的每乙個部分(原子)本身都是有意義的。舉例來說nmtokens是個列表型別。這個型別的元素將是nmtoken的列表,不同的nmtoken值間使用空格分隔,如「us uk fr」。xml schema有三個內建的列表型別,它們是nmtokens、idrefs和entities。

除了使用內建的列表型別之外,還可以通過引用現有的原子型別建立新的列表型別(不可以使用現有的列表型別來建立新的列表型別,也不能使用復合型別來建立新的列表型別)。舉例來說,我們可以建立乙個名為myinteger的列表型別,並在例項文件中使用它(參見**10)。其中**10中的後半部分即為例項文件中與列表型別listofmyinttype相一致的例項元素。

20003 15037 95977 95945

一些用於描述的引數能夠被應用到列表型別的定義中,它們是length、minlength、maxlength和enumeration。舉例來說,如果我們想定義乙個列表,這個列表正好包含了六個美國的州名(sixusstates)。首先從usstate定義乙個新的列表型別,稱為usstatelist,然後通過限制usstatelist只有六個項來匯出sixusstates。具體的定義可參見**11。

pa ny ca ny la ak

型別為sixusstates的元素必須有六個項,它們中的每乙個項必須是乙個列舉型別usstate的原子型別,在**11後半部分的例項文件中就是乙個具體的應用例子。

我們需要注意的是,從原子型別string可以匯出乙個列表型別,然而,在乙個string中也許會帶有空格,而空格在乙個列表型別例項中是作為分隔符使用的。所以當在使用基型別為string的列表型別時,應當格外小心。舉例來說,假設我們定義了乙個length取值為3的列表型別,同時這個列表型別是基於型別string。下面由三個元素組成的列表是合法的:「asie europe afrique」;而由三個元素這樣組成的列表是不合法的:「asie europe amérique latine」。即使「amérique latine」在列表外可以作為單獨的乙個字串存在,但當它包含在列表中,在amérique和latine之間的空格使得第四個項被有效地生成了,因此後面的那個例子不符合只有三個項的列表型別定義。

聯合型別

應用原子型別和列表型別,乙個元素或者屬性的值可以為乙個或者多個原子型別(列表型別)的例項。與之相比較,乙個應用聯合型別(union type)包含了多個原子型別或者列表型別,而應用了聯合型別的元素或是屬性的值可以是這些原子型別或列表型別中的乙個型別例項。為了顯示這一點,我們建立乙個用於表示美國州的、為兩個字母縮寫或者數字列表的聯合型別。zipunion聯合型別由乙個原子型別和乙個列表型別構成的(參見**12)。

ca95630 95977 95945

ak當我們在定義乙個聯合型別時,元素union的membertypes屬性的值包含了聯合型別中所有型別的列表。現在,假定我們宣告了乙個zipunion型別的元素,稱為zips,zips元素有效的例項可參見**12。

此外,對於聯合型別而言,還有兩個描述性質的引數pattern和enumeration也可以應需要使用。

XML Schema幫你建模(3)

我們現在已經討論了如何定義新的復合型別 比如purchaseordertype 宣告元素 比如purchaseorder 和宣告屬性 如orderdate 在這些定義行為中,一般都包含著命名,如果我們給兩個物件賦予同樣的名稱會有何種結果?答案取決於問題中的兩個物件,一般來說這兩個物件越相近,它們越有...

XML Schema幫你建模(二)

xml schema幫你建模 2 復合型別定義 元素和屬性宣告 在xml schema中,對於那些允許元素有自己的內容,以及可以攜帶自身屬性的復合型別與那些不能夠有元素內容和屬性的簡單型別,它們的表示形式有著本質的不同。在例項文件中,對於能建立新的型別 無論簡單和複雜 的定義和允許元素和屬性有特定的...

4招幫你解除安裝隱藏的網絡卡

1 登錄檔編輯 開啟硬體裝置管理器,點選選單 檢視 顯示隱藏的裝置 這時裝置列表中就顯示出了舊的硬體清單,開啟 網路介面卡 右鍵選擇半透明的舊網絡卡進行 解除安裝 然後點選 操作 掃瞄硬體改動 網絡卡也恢復沒有 2的原狀 另外,刪除登錄檔中舊網絡卡型號及tcp ip設定的項也可以達到效果,位置在 h...