Мы выполняем сериализацию с помощью MS XML 4. Когда мы сериализуем перечисления C ++, мы используем таблицу для перевода каждого возможного значения в строку, и они сохраняют эту строку как значение атрибута. Когда мы производим десериализацию, мы читаем это значение атрибута, сравниваем его со всеми элементами в таблице и получаем соответствующее значение перечисления. Если мы не можем найти, мы выдаем ошибку.
Чтобы облегчить создание XML внешними программами, мы опубликовали схемы XML для всех типов данных, представляющих интерес. Атрибуты для перечислений определяются следующим образом:
<xs:complexType>
//other fields here
<xs:attribute name="Color" type="xs:string"></xs:attribute>
</xs:complexType>
Работает, но не содержит определений возможных строковых значений. Как я могу добавить возможные значения к этому определению? Использую ли я xs: choice для этого?