Я верю, что вы просите невозможного. Автоматически сгенерированная схема (я использую Examplotron ) никогда не может быть абсолютно точной, потому что инструмент генерирования не имеет достаточно информации.
Например, если в документе XML есть элемент <foobar>
, как инструмент генерации может узнать, является ли он обязательным или нет? Если принято более одного значения? Не зная исходную схему, вы не сможете сказать, является ли сгенерированная схема точной или нет. (Examplotron решает проблему, позволяя автору помещать структурированные комментарии в файл XML, чтобы направлять программу.)
Вот пример. С этим файлом XML:
<data>
<foo>1</foo>
<bar>text</bar>
<baz/>
</data>
Examplotron сгенерировал эту схему (немного отредактировано):
start =
element data {
element foo { xsd:integer },
element bar { text },
element baz { empty }
}
Обратите внимание на xsd:integer
в элементе <foo>
. Хороший вывод, но точен ли он? Может быть <foo>
должен был быть более общего типа, например xsd:any
...