Неоднозначная XML-схема

Решатель ранцев не решит вашу проблему, так как он является чисто решателем с одним ранцем.

Вы можете использовать решатель MILP или CP-SAT.

7
задан Dana 15 December 2009 в 08:21
поделиться

3 ответа

Относительно ошибки: то сообщение об ошибке упоминает строку, это не находится в xsd, который Вы включали, но эти две строки в нем неоднозначны:

<xs:element ref="important_tag" minOccurs="0"/>
<xs:any minOccurs="0"/>

Самый простой пример для проявления неоднозначности - то, если было всего один <important_tag>:

  <important_tag></important_tag>

Проблема состоит в том, что это могло быть интерпретировано как один "important_tag" и обнулить "любые" теги (который является тем, что Вы хотели), но это может также быть интерпретировано как нуль "important_tag" и "любой" тег. Это вызвано тем, что "любой" тег может соответствовать любому тегу, включая "important_tag".

Я считал, что следующая версия XML-схемы позволяет Вам сказать, что Вы имели в виду: любой тег кроме important_tag.

Соответствие XML двумя различными способами подобно регулярному выражению "a*a*" соответствие "a" двумя различными способами (один первый "a"; или одна секунда). Эта неоднозначность раньше называлась "недетерминированной" в спецификации XML для ДАТ, но спецификация XML-схемы называет ее Уникальным правилом Атрибуции Частицы (UPA), означая, что необходимо смочь сказать, какая часть схемы получает каждую часть XML-документа.

6
ответ дан 6 December 2019 в 15:36
поделиться

Существует большая статья о MSDN, который говорит о desigining расширяемых схемах, которые можно найти здесь, я предлагаю, чтобы Вы прошли все это, но конкретно к Вашей точке это объясняет, почему Вы получаете эту ошибку в точке 2. под "Используя XML-схему для Разработки Имеющего версию Формата XML" (можно искать "недетерминированный" и стать прямыми там.

В основном, после того как у Вас есть xs:any элемент, блок проверки допустимости ничего не может принять о других одноуровневых элементах, таким образом - у Вас могло бы хорошо быть определение для important_tag, который не требует тех обязательных атрибутов и таким образом, те элементы не могут быть проверены

7
ответ дан 6 December 2019 в 15:36
поделиться

С Вашим requirments (вещи как "Любой другой тег не должен соответствовать никакому определению".), Schematron, который основан на правилах ("это должно быть верно", "который должен быть ложью"), может быть лучшее решение, чем Схема W3C, которая является больше, "все должно быть похожим на это".

1
ответ дан 6 December 2019 в 15:36
поделиться
Другие вопросы по тегам:

Похожие вопросы: