XSD:Как переопределить тип данных простого типа, например.из xs:string в xs:integer

StackOverflow https://stackoverflow.com/questions/2090855

Вопрос

Я пытаюсь расширить и адаптировать внешнюю схему xsd (стандарта fixml).Мне нужно изменить тип данных некоторых элементов, не касаясь исходной схемы, но переопределив ее;но я нахожу это чрезвычайно громоздким.

Что существует:

поля-base.xsd

<xs:simpleType name="LastUpdateTime_t">
           <xs:restriction base="UTCTimestamp">
<xs:simpleType>

то, чем я хочу, чтобы это стало:

<xs:simpleType name="LastUpdateTime_t">
           <xs:restriction base="xs:string">
<xs:simpleType>

То, что я пробовал (но потерпел неудачу) :

<xs:redefine schemaLocation="fields-base.xsd">
            <xs:simpleType name="LastUpdateTime_t">
              <xs:restriction base="xs:string" />
            </xs:simpleType>
 </xs:redefine>

Книги и сеть, похоже, тоже не слишком помогли, поэтому я начинаю сомневаться, возможно ли это вообще теоретически.

Это было полезно?

Решение

Насколько я могу судить, это невозможно.

Единственное переопределение, которое я мог выполнить в XMLSpy, было:

<xs:redefine schemaLocation="fields-base.xsd"> 
        <xs:simpleType name="LastUpdateTime_t"> 
          <xs:restriction base="LastUpdateTime_t" /> 
        </xs:simpleType> 
</xs:redefine> 

То есть новое ограничение должно основываться на базовом ограничении.

Возможно, XMLSpy ошибается на этот счет.

Эта несколько загадочная цитата из Определение XML-схемы W3C:

Внутри [дочерних элементов] каждый simpleType должен иметь среди своих [дочерних элементов] и каждый complexType должен иметь ограничение или расширение среди своих grand-[дочерних элементов] · фактическое значение · чей базовый [атрибут] должен совпадать с · фактическим значением · его собственного атрибута name плюс целевого пространства имен;

возможно, речь идет об этом (это та часть спецификации, на которую ссылается XMLSpy для этой ошибки).

Единственным действительно хорошим примером переопределения простых типов, который я смог найти, был здесь.В этом примере переопределение применяется только для перечислений.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top