模式作用域:初级读本和最佳实践
2010-10-22 17:18:49 来源:WEB开发网类型定义
就跟您可以全局和局部地定义元素和属性一样,您也可以这样定义类型。前面的例子为 address 元素定义使用了局部定义的类型。要让该类型定义成为全局的,可将它从局部定义删除,取一个独特的名称,并将它放在根 schema 节点下,如 清单 7 所示:
清单 7. 局部作用域内引用的全局类型
<xs:schema>
<xs:element name='address' type="address.type"/>
<xs:complexType name="address.type">
<xs:sequence>
<xs:element name='street' type='xs:string'/>
<xs:element name='city' type='xs:string'/>
<xs:element name='state' type='xs:string'/>
<xs:element name='zipCode' type='xs:string'/>
</xs:sequence>
</xs:complexType>
</xs:schema>
此类型定义现在是全局的了,并且具有独特的名称 address.type。要将该类型与一个元素相关联,我们通过将类型属性(type="")与全局类型名称相关联而引用它。您可以通过使用 xs:extension 元素扩展全局类型定义,也可以通过使用 xs:restriction 元素限制它。
基本设计范式
确定应该将模式粒子定义为具有局部作用域还是全局作用域并不总是那么容易。根据使用情况、名称空间需求和模式进化等因素,最佳选择也各不一样。一般来说,模式设计归类为四种基本范式:
Russian doll(俄罗斯套娃)
Salami slice(意大利香肠片)
Venetian blinds(软百叶窗)
Garden of Eden(伊甸园)
要为自己的项目确定最佳解决方案,一定要理解这些范式。
更多精彩
赞助商链接