全局元素是直接声明在下的,具全局限性、可复用、必有name、属targetNamespace;局部元素嵌套在类型内,作用域受限、可用ref引用全局元素,其命名空间归属由elementFormDefault控制。

全局元素和局部元素是XSD中区分元素作用域的核心概念,直接关系到XML实例文档中元素是否需要带命名空间前缀、能否被复用、以及如何被引用。
什么是全局元素
全局元素指直接作为
- 必须有 name 属性(不能用 ref)
- 可定义 type、default、fixed 等属性
- 若XSD设置了 targetNamespace,该元素自动属于该命名空间
- 示例:
(在 下一级)
什么是局部元素
局部元素嵌套在类型定义内部(如
YDUI Touch专为移动端打造,在技术实现、交互设计上兼容主流移动设备,保证代码轻、性能高;使用 Flexbox 技术,灵活自如地对齐、收缩、扩展元素,轻松搞定移动页面布局;用 rem 实现强大的屏幕适配布局,等比例适配所有屏幕;自定义Javascript组件、Less文件、Less变量,定制一份属于自己的YDUI。
- 可以只声明结构,不设 name,而用 ref 引用已有全局元素
- 是否属于目标命名空间,取决于 elementFormDefault 的设置(qualified/unqualified)
- 示例:
(位于 内部)
如何控制局部元素的命名空间归属
elementFormDefault 是
- 设为 qualified:所有局部元素都归属于 targetNamespace,XML实例中必须用前缀(如 ns:shipTo)
- 设为 unqualified(默认):局部元素无命名空间,XML中直接写 shipTo
- 注意:该设置对全局元素无效——只要定义了 targetNamespace,全局元素一定属于它
为什么区分全局/局部很重要
实际建模时,这个区分直接影响可维护性和复用性:
- 想让某个元素(如 address)在多个类型中重复使用?必须定义为全局元素,再用 ref 引入
- 某个字段(如 lineItemID)只在订单行中出现一次,且不会复用?适合声明为局部元素
- 混合使用能减少冗余,也避免命名冲突;但过度局部化会降低XSD的模块化程度









