模式作用域:初级读本和最佳实践
2010-10-22 17:18:49 来源:WEB开发网清单 2 中的例子模式在根层次定义了两个元素:
清单 2. 带有两个可能根元素的模式
<xs:schema>
<xs:element name='postalCode' type='xs:string'/>
<xs:element name='zipCode' type='xs:string'/>
</xs:schema>
postalCode 或 zipCode 都可以充当 清单 2 中模式所建模的实例中的根元素。
定义局部作用域元素
将元素定义为局部的可以防止它们被暴露给模式的其他部分。局部元素的上下文局限于它的当前位置,所以不能从模式的其他部分引用它。在 清单 3 的例子中,zipCode 元素不是全局定义的。相反,它被作为 address 元素的子元素,定义在一个元素定义的 complexType 中。
清单 3. 单个带有局部子元素的全局元素
<xs:schema>
<xs:element name='address'>
<xs:complexType>
<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>
由于 zipCode 元素的定义位于 address 元素的声明中,所以它是一个局部定义,它的作用域只在 address 元素中。对于有效的文档实例,zipCode 元素必须出现在 address 元素中,如 清单 4 所示:
清单 4. 清单 3 中模式的有效数据实例
<address>
<!-- street, city and state hidden for example purposes -->
<zipCode>14534</zipCode>
</address>
更多精彩
赞助商链接