Xsd 一个XML模式枚举可以扩展另一个吗?

Xsd 一个XML模式枚举可以扩展另一个吗?,xsd,enumeration,extend,Xsd,Enumeration,Extend,我希望我的XML模式包含两个字符串枚举,一个扩展另一个: 枚举1:狗、猫 枚举2(将“蛇”添加到第一个):狗、猫、蛇 我尝试了一个,但结果类型似乎不是枚举,至少它本身不被识别 有没有办法让一个枚举扩展另一个枚举,而仍然是一个枚举?简单类型只能通过限制派生,不能通过扩展派生。(联合是特殊的,被认为是anySimpleType的限制) 如果您只是试图避免重复(而不是定义层次结构),那么union应该可以进行验证,尽管有些工具不会通过查看union来做一些明智的事情也就不足为奇了 另一个选项是定义

我希望我的XML模式包含两个字符串枚举,一个扩展另一个:

  • 枚举1:狗、猫
  • 枚举2(将“蛇”添加到第一个):狗、猫、蛇
我尝试了一个,但结果类型似乎不是枚举,至少它本身不被识别


有没有办法让一个枚举扩展另一个枚举,而仍然是一个枚举?

简单类型只能通过限制派生,不能通过扩展派生。(联合是特殊的,被认为是
anySimpleType
的限制)

如果您只是试图避免重复(而不是定义层次结构),那么union应该可以进行验证,尽管有些工具不会通过查看union来做一些明智的事情也就不足为奇了


另一个选项是定义一个基类型,它将包含所有值(dog、cat、snake),然后派生一个只包含子集的类。这将为您提供一个层次结构,但派生类必须通过正则表达式重复子集(dog、cat)或禁止其他子集(snake)。(而且使用正则表达式可能也会使许多编辑器出错。)

遗憾的是,在我尝试过的XML编辑器(Eclipse和示例)中,使用正则表达式排除枚举成员是行不通的。