Оценить точность сгенерированной XML-схемы - PullRequest
0 голосов
/ 15 апреля 2009

В Интернете я нашел несколько инструментов, которые генерируют XML-схему для данного экземпляра XML-данных. Что-то вроде - текст ссылки

Я тоже подумываю о его разработке, но меня немного смущает оценка сгенерированной схемы.

Как можно сгенерировать сгенерированную схему, т. Е. Сгенерированная схема подтверждает данные данным? Есть ли какие-либо средства для формулировки какой-либо меры точности, которая гласит, что сгенерированная XML-схема является правильной на 80% или 90% правильной для данных XML-данных?

Пожалуйста, помогите мне с любыми указателями.

ура

Ответы [ 2 ]

2 голосов
/ 15 апреля 2009

Я верю, что вы просите невозможного. Автоматически сгенерированная схема (я использую 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 ...

0 голосов
/ 15 апреля 2009

Схема, сгенерированная из существующего XML-документа, будет так же хороша, как и исходный XML. Если ваш пример XML является полным примером XML, который будет использоваться, сгенерированная схема будет работать. Если он неполный или плохо сформирован, он не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...