Сложные типы с тем же именем, но с другим атрибутом «имя» - PullRequest
0 голосов
/ 18 мая 2011

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

<field name="NameOfField1">
  <typeofvalue name="enumeration">
    <val> val </val>
  </type>
</field>

<field name="NameOfField2">
  <typeofvalue name="float">
    <val> val </val>
  </type>
</field>

<field name="NameOfField3">
  <otherinfo name="otherinfo">
     <typeofvalue name="integer">
       <val> val </val>
     </type>
  </otherinfo>
</field>

Я должен проверить содержимое каждого поля в зависимости от их атрибута «имя». Например, если значение в «Val» должно быть перечислением, содержащим значения «None, Apple, Orange», или если оно является целым числом от 0 до 15 ... и т. Д. Каждое поле «имя» может появиться только один раз в XML-файле, я не имею никакого контроля над XML-файлом (я получаю его как есть и не могу его изменить).

Помощь будет принята с благодарностью, потому что никакие примеры, которые я смог найти, не помогли мне ... Спасибо!

1 Ответ

1 голос
/ 18 мая 2011

Я должен проверить содержимое каждого поля в зависимости от их атрибута «имя».

Это хорошо известное ограничение XSD 1.0, что вы не можете сделать это. Это исправлено в XSD 1.1 с помощью средства, называемого «условное присвоение типа». Он реализован как в Saxon, так и в Xerces, но, насколько я знаю, не в каких-либо других процессорах схемы.

...