Простые типы могут быть получены только по ограничению, но не по расширению. (Союзы являются особыми и считаются ограничениями anySimpleType
.)
Если вы просто пытаетесь избежать дублирования (а не определять иерархию), тогда объединение должно подойти для проверки, хотя неудивительно, что некоторые инструменты не будут искать объединение, чтобы сделать что-то умное.
Другой вариант - определить базовый тип, который будет иметь все значения (собака, кошка, змея), а затем получить класс, содержащий только подмножество. Это дает вам иерархию, но производный класс должен либо повторять подмножество (собака, кошка), либо запрещать другим (змея) регулярное выражение. (И использование регулярных выражений, вероятно, приведет к путанице во многих редакторах.)