Импорт схемы, которая импортирует другую схему, используя исходное пространство имен

У меня есть набор схем, которые я пытаюсь использовать для проверки XML-документа с помощью Nokogiri.

У меня есть схема верхнего уровня с пространством имен http://example.com/root. Он импортирует другую схему, Extension.xsd, с пространством имен http://example.com/extension и включает схему Types.xsd (которая, очевидно, имеет пространство имен http://example.com/root).

Схема Extension.xsd с пространством имен http://example.com/extension импортирует схему Types.xsd с пространством имен http://example.com/root.

Когда я пытаюсь заставить Nokogiri загрузить корневую схему, он жалуется - Element import: The schema document Types.xsd cannot be imported, since it was already included or redefined.

Когда я избавляюсь от оператора импорта из файла Extension.xsd, Нокогири говорит, что ссылки на пространство имен http://example.com/root не разрешены, поскольку ничего не было импортировано. Когда я избавляюсь от оператора include из файла корневой схемы, Нокогири говорит, что элемент, используемый в корневой схеме из Types.xsd, не разрешается в объявление элемента.

Любая идея, как я могу заставить Нокогири принять эту структуру схемы? Это даже действующая схема?


person jkjustjoshing    schedule 16.02.2012    source источник


Ответы (1)


Вполне допустимо иметь циклические объявления xs:import в схеме, на самом деле, как показывает этот пример, это часто необходимо. Я не знаю Нокогири, поэтому не знаю, есть ли исправление.

person Michael Kay    schedule 16.02.2012