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

时间:2011-04-01 01:54:51

标签: xsd enumeration extend

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

  • 枚举1:狗,猫
  • 枚举2(将“蛇”添加到第一个):狗,猫,蛇

我尝试了union,但结果类型似乎不是枚举,至少xAmple无法识别它。

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

1 个答案:

答案 0 :(得分:1)

简单类型只能通过限制而不是通过扩展来派生。 (工会很特殊,被认为是对anySimpleType的限制。)

如果你只是试图避免重复(而不是定义层次结构),那么联合应该可以用于验证,尽管一些工具不会调查联合以做一些聪明的事情就不足为奇了。

另一个选择是定义一个基类型将所有值(狗,猫,蛇),然后派生一个只包含子集的类。这给了你一个层次结构,但派生类必须重复子集(dog,cat)或者通过regex禁止其他(snake)。 (使用正则表达式可能也会让许多编辑绊倒。)