全局元素直接定义在根元素下,可被重复引用、类型复用并作为文档根元素;局部元素嵌套在等内部,作用域受限、不可跨类型复用。
在 XML Schema(XSD)中,全局元素和局部元素的核心区别在于**是否直接定义在 根元素下**:全局元素可被重复引用、类型复用、作为文档根元素;局部元素只能在特定复杂类型内部定义,作用域受限。
直接子级全局元素用 声明,且必须是 的直接子元素。它必须有 name 属性,通常还指定 type(引用内置类型或已定义的复杂/简单类型)。
示例:
说明:
是全局元素,可在别处用 ref="book" 引用;book 也可作为 XML 实例的根元素(只要 schema 允许);minOccurs="1")。 或 内部局部元素不写在 下,而是出现在 、、 等模型组内,或直接作为 的子内容。它没有 name 属性(或仅用于匿名定义),而是用 ref 引用全局元素,或内联定义类型。
示例(内联定义局部元素):
说明:
firstName 和 lastName 是局部元素,不能被其他类型 ref 引用;author 元素的内容中;minOccurs/maxOccurs,不影响其他地方。记住三点:
下 → 全局;在 内 → 局部;ref 多次引用;局部元素不可跨类型复用;name;局部元素若用 name(内联定义),则名字只在当前上下文有效,不构*局名称空间成员。
基本上就这些。实际建模时,优先用全局元素提高可维护性;局部元素适合一次性、语义紧密耦合的子结构。