模式作用域:初级读本和最佳实践
2010-10-22 17:18:49 来源:WEB开发网当一个模式被确定名称空间时(就是说,具有 targetNamespace),所有全局粒子都必须用全限定名称进行引用(即 prefix:name)。这样的名称空间被称为是暴露的。例如:
<xs:schema xmlns:xyz="http://xyzcompany.com"
targetNamespace="http://xyzcompany.com">
<xs:element name="HelpDocs">
<xs:complexType>
<xs:sequence>
<!-- Global element is referenced, -->
<!-- must contain namespace prefix. -->
<xs:element ref="xyz:Section"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="Section">
<!-- -->
</xs:element>
</xs:schema>
由于 Section 元素是全局的,并且声明了一个 targetNamespace,所以在对 Section 元素的引用中,xyz 名称空间前缀是必需的。<xs:element ref="Section"/> 不是有效的引用。
您可以看到,清单 8 中的每个子元素、属性和类型都是局部定义的。惟一的全局元素是根元素,即 HelpDoc。该语法紧凑,有些人可能会觉得它容易理解。Russian doll 风格的模式不将它们的组件暴露给其他类型、元素或模式,所以它们也被认为是高度去耦的(就是说,元素不全局地依赖于其他元素)和内聚的(相关元素被分组在单个自包含的父元素中)。
此范式概括为这样一种模式,即很少有跟其他系统的交互,其组件也没有重用。通过以这种方式定义模式,您可以保持结构为自包含的、隐藏名称空间以及防止受到其他系统的影响。
更多精彩
赞助商链接