設計模式
XML Schema設計模式:Russian Doll、Salami Slice或Venetian Blind。不常用的另外兩種設計模式:Garden of Eden和Ghameleon。
1、Russian Doll:
(1)、具有的特點:
- 具有單個全局根元素。
- 所有類型都有局部類型,即嵌入在根元素中。
- 只支持用單個文件完整設計的Schema。
- 它具有高內聚低耦合。
- 由於類型被隱藏,Schema是完全封裝的。
- 它是最易於閱讀和編寫的模式。
(2)、簡易優缺點:
優點:易於閱讀和編寫;結果可以預期;容易理解作者的意圖;完全自包含,改變類型將不會影響其他的Schema。
缺點:精心定義的類型無法在別處重複使用。
(3)、應用:用來存儲隔離記錄的中端上的一修改DB2文件系統表?
2、Salami Slice(具有緊密耦合)
(1)、具有的特點:
- 所有元素都是全局元素。
- 所有元素都在全局命名空間中定義。
- 所有類型都是局部類型。
- 元素聲明從不嵌套。
- 元素聲明可以重複使用。Salami Slice使你最有可能重複使用所有Schema設計模式。
- 很難確定目標根元素,因爲存在許多潛在選項。
(2)、簡易優缺點:
優點:元素全局聲明,生成的Schema可以被重複使用;
缺點:改變某個元素會影響組合的元素;
3、Venetian Blind
具有的特點:
- 具有單個全局根元素。
- 混合有全局和局部聲明。這與Russian Doll和Salami Slice形成對比;Russian Doll中的所有類型都是局部的,Salami Slice中的所有類型都是全局的。
- 既具有高內聚,又具有高耦合。由於其組件是耦合的,不是自包含的,它可以不時地和其他Schema耦合。
- 它最大化了重複使用,所有類型和根元素都可以重新組合。
- 由於類型是可見的,因此封裝是有限的。
- 允許你使用多個文件定義Schema。比較冗長。將每個類型拆分,使你可以對各個單個方面或元素進行非常有選擇性的粒度控制,不過這會使用鍵入的內容非常多。
4、Garden of Eden
Garden of Eden Schema設計模式由Sun Microsystems確立,它是Salami Slice 和 Venetian Blind的組合。要是Schema採用這種模式,可以在全局命名空間中定義所有的元素和類型,然後根據需要引用相應元素。
5、Chameleon
Chameleon模式非常靈活,它的方式是讓你在命名空間的Schema(稱爲Chameleon)中設計常見類型,然後定義一個主Schema,這個Schema在自己的命名空間中通過<include>將第一個Schema包含進來,Chameleon中的常見類型被強制賦予命名空間,使用的是主Schema中定義的命名空間。
Chameleon設計模式的使用是飽受爭議的。Chameleon依賴於Schema規範中的一些方面,而對於這些方面的解釋,供應商們並不是完全贊同。此外,Chameleon通常會在驗證過程中降低性能,哪怕是從支持它的供應商進行驗證,這是命名空間解決方案的延遲妨礙了分析器基於命名空間來緩存Schema的組件。Chameleon還使XPath身份約束的使用受到限制。XPath不使用默認的命名空間。