Может ли одно перечисление схемы XML расширять другое?

Я бы хотел, чтобы моя XML-схема содержала два перечисления строк, одно из которых расширяет другое:

  • Перечисление 1: собака, кошка
  • Перечисление 2 (к первому добавляется «змея»): собака, кошка, змея.

Я попробовал объединение, но результирующий тип не кажется перечислением, по крайней мере, оно не распознается xAmple как таковое.

Есть ли способ, чтобы одно перечисление расширяло другое и при этом оставалось перечислением?


person Andrew Swan    schedule 01.04.2011    source источник


Ответы (1)


Простые типы могут быть получены только путем ограничения, а не расширения. (Союзы являются особыми и считаются ограничениями anySimpleType.)

Если вы просто пытаетесь избежать дублирования (а не определять иерархию), тогда объединение должно подойти для проверки, хотя неудивительно, что некоторые инструменты не будут использовать объединение, чтобы сделать что-то умное.

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

person xan    schedule 04.04.2011
comment
К сожалению, использование регулярных выражений для исключения членов перечисления не работает в XML-редакторах, которые я пробовал (Eclipse и xAmple). - person Andrew Swan; 06.04.2011