Mail.ruПочтаМой МирОдноклассникиВКонтактеИгрыЗнакомстваНовостиКалендарьОблакоЗаметкиВсе проекты

В XSD переставил местами описание (или как там это правильно называется) типа contactType и объявление элемента (...)

Celtic Hammer Мудрец (16455), на голосовании 1 год назад
... с этим типом. И все равно редактор XML пишет "Error resolving component 'contactType'. It was detected that 'contactType' has no namespace, but components with no target namespace are not referenceable from schema document "
Но в учебном источнике всё именно так. В чем дело-то?
   
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://test.org"
elementFormDefault="qualified">



















Голосование за лучший ответ
Sergio 2.1 Оракул (67415) 1 год назад
Ваша проблема возникает из-за области видимости ваших объявлений в XML Schema. Ваше объявление <xs:complexType name="contactType"> находится в target namespace " http://test.org ", поскольку вы указали это пространство имен в атрибуте targetNamespace в начале схемы.

Однако, когда вы используете contactType в <xs:element name="contact" type="contactType" maxOccurs="unbounded" />, вы обращаетесь к нему в качестве ссылки без указания пространства имен. Это ошибка.

Решить эту проблему можно добавив префикс пространства имен к типу при его использовании, таким образом:
  
Эта строка означает, что мы используем тип contactType из пространства имен " http://www.w3.org/2001/XMLSchema ", которое было связано с префиксом xs:.

В итоге ваш код будет выглядеть следующим образом:
    
xmlns:xs="http://www.w3.org/2001/XMLSchema"
targetNamespace="http://test.org"
elementFormDefault="qualified">


















Celtic HammerМудрец (16455) 1 год назад
type="xs:contactType" догадался и сам написать, без твоей нейросети. Это ничего не изменило
Celtic HammerМудрец (16455) 1 год назад
Специально попробовал повторно. Всё тоже самое. Можешь выкидывать на помойку свою нейросеть, толку от нее нет
Sergio 2.1 Оракул (67415) Celtic Hammer, Вы используете своё собственное пространство имен, поэтому нужно добавить ещё одно объявление пространства имен в начале файла и использовать его для определения типа. Итак, вы должны объявить префикс tns (или любой другой), который указывает на ваше целевое пространство имен, и использовать его при обращении к contactType.
Похожие вопросы