XSD: как переопределить тип данных простого типа, например. от xs: строка до xs: целое число - PullRequest
6 голосов
/ 19 января 2010

Я пытаюсь расширить и адаптировать внешнюю схему 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>

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

1 Ответ

4 голосов
/ 19 января 2010

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

Единственное переопределение, которое я мог выполнить в 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- [дети] · фактическая стоимость · из чья база [атрибут] должна быть такой же как · фактическая стоимость · собственной атрибут имени плюс целевое пространство имен;

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

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

...