Не удается проверить XML для XSD с помощью targetNamespace, если у XSD есть сложные типы

  • Как я понимаю, пространства имен в xml (и) XSD используются для смягчения
    возможная неоднозначность элементов и атрибутов, на которые ссылаются.

    • Атрибут targetNamespace схемы XML предназначен для
      пространство имен, что элементы, определенные в этом файле (или все
      внутри элемента, который имеет targetNamespace) соответствуют. Этот
      применяется только к элементам, «объявленным» в этом контексте (которые имеют
      их имя объявлено в атрибуте «name»).
    • Таким образом, если я объявляю targetNamespace в моей схеме, каждый экземпляр, который я проверяю против него, должен использовать это пространство имен перед любым элементом или атрибутом, объявленным в схеме, или объявить его в качестве пространства имен по умолчанию, чтобы избавить меня от необходимости предшествовать каждому типу Из этой схемы с ним.

Если что-то не так, обязательно поправьте меня.

Что сводит меня с ума, почему это не так:

<?xml version="1.0" encoding="UTF-8"?>
<responsabilities >
<responsability>uno</responsability>
<responsability>dos</responsability>
<responsability>tres</responsability>
</responsabilities>

…проверяет это:

<?xml version="1.0" encoding="UTF-8"?>
<schema targetNamespace="http://www.library.org"   >
<element name="responsabilities" type="bpd:responsabilitiesType"/>
<complexType name="responsabilitiesType">
    <sequence>
        <element maxOccurs="unbounded" name="responsability" type="string" />
    </sequence>
</complexType>
</schema>

Он показывает эту ошибку:

Элемент ‘responsabilities’ в пространстве имен ‘ http://www.library.org
имеет недопустимый дочерний элемент ‘responsability’ в пространстве имен
http://www.library.org ‘. Список возможных ожидаемых элементов:
«ответственность». Строка: 1 Столбец: 90

Я проверил с помощью SimpleType, используя ту же схему пространства имен, и не было никаких проблем вообще.

Спасибо.

1 ответ