final 限制类型派生,作用于 complexType/simpleType;fixed 强制实例值固定,作用于 element/attribute。二者互斥且不可与 default 共存:final 防扩展或限制,fixed 要求值严格匹配并禁止缺失。
final 和 fixed 是 XML Sche
ma(XSD)中两个用途明确、作用层级不同的控制属性:final 管类型派生行为,作用于 complexType 或 simpleType 定义;fixed 管实例值强制约束,作用于 element 或 attribute 声明。二者不能混用,也不可同时与 default 共存。
它用来防止其他类型基于当前类型做特定形式的扩展或限制,常用于保护基类型的设计意图。
派生(即不允许加新字段) 派生(即不允许缩窄取值范围)final="extension restriction",空格分隔,禁止两种方式;finalDefault 默认为空,即不限制示例:不希望 Address 被限制派生,只允许扩展出 USAddress、UKAddress:
它让某个元素或属性在 XML 实例中**必须等于指定值**,否则校验失败。适用于版本号、状态码、国家编码等不变字段。
default 互斥:一个声明中不能同时出现 fixed 和 default
fixed 值;若不存在,则校验直接失败(不像 default 会补默认值)const,但由 Schema 层强制执行示例:要求 country 属性恒为 "US":
合法实例:;非法实例: 或 (缺少该属性)。
final 只能写在 、 或根 上,不能用在 或 上fixed 不能用于复杂类型元素(含子元素或属性的 element),否则校验器报错final="list" 或 final="union" 仅对 有效; 的 final 不支持这两个值fixed 时,建议配合 use="required"(对 attribute)或确保元素必出现(对 element),避免因缺失导致校验失败而非值不符