Учитывая то, что вы пишете, я думаю, что проблема заключается в следующем.
Давайте рассмотрим, что есть элемент a
под вашим корневым элементом.
Этот первый пример ниже действителен, потому что a
неквалифицирован и потому что вы установили elementFormDefault
в unqualified
:
Первый пример
<c:docschema xmlns:c="http://www.otr.ru/sufd/document/desc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.otr.ru/sufd/document/desc http://otr-sufd/xmlschema/docschema.xsd">
<a>...</a>
</c:docschema>
Во втором примере файл недействителен, потому что вы установили elementFormDefault
на unqualified
, и у вас есть элемент a
, который квалифицирован (в пространстве имен по умолчанию):
Второй пример
<docschema xmlns="http://www.otr.ru/sufd/document/desc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.otr.ru/sufd/document/desc http://otr-sufd/xmlschema/docschema.xsd">
<a>...</a>
</docschema>
Правильный XML может быть:
<docschema xmlns="http://www.otr.ru/sufd/document/desc" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:schemaLocation="http://www.otr.ru/sufd/document/desc http://otr-sufd/xmlschema/docschema.xsd">
<a xmlns="">...</a>
</docschema>
EDIT
Если дочерние элементы корневого элемента определены в том же пространстве имен, что и корневой в ваших схемах, вам просто нужно изменить elementFormDefault="unqualified"
на elementFormDefault="qualified"
, чтобы иметь схему, которая проверяет XML. Если это не так: вам наверняка придется изменить свою схему более глубоко, в этом случае, возможно, вам следует опубликовать еще один вопрос, посвященный этому вопросу, с большим количеством кода (включая большую часть схем и экземпляров).