xs:redefine是XSD 1.0中用于同命名空间下重定义simpleType、complexType、group和attributeGroup的机制,仅支持restriction/extension,不可改element/attribute;XSD 1.1已弃用,推荐xs:override。

xs:redefine 是 XSD 1.0 中用于在保持命名空间不变的前提下,重新定义(覆盖或扩展)已有 schema 中的某些组件的机制。但它有严格限制,不能随意修改任意定义,更不是“覆盖重写”的通用工具。
下面直接说清楚它能做什么、怎么用、有哪些坑:
xs:redefine 能改什么?
只能重新定义以下几种可被 redefine 的组件:
- 简单类型(xs:simpleType):可基于原类型派生新类型(如 restriction 或 extension)
- 复杂类型(xs:complexType):同上,支持 restriction / extension
- 组(xs:group):可替换或扩展现有 model group
- 属性组(xs:attributeGroup):可替换或扩展现有 attribute group
⚠️ 注意:不能 redefine 元素(xs:element)、属性(xs:attribute)、schema 文档本身结构,也不能改变目标命名空间。它要求被 redefine 的原始 schema 必须是同一个命名空间、且通过 xs:import 或直接引用方式可访问。
基本用法:两步走
1. 原 schema(比如 base.xsd)需声明为可被 redefine —— 实际上只要它没用 final="#all" 或对具体类型设 final="restriction extension" 即可。
版权声明:除非特别标注,否则均为本站原创文章,转载时请以链接形式注明文章出处。
还木有评论哦,快来抢沙发吧~