Не знаете, почему XML-схема не является правильно сформированной? - PullRequest
0 голосов
/ 28 марта 2012

У меня очень простая проблема, связанная с данным файлом XML-схемы, который вы можете увидеть ниже в моем посте.Это из экзамена, который я должен написать через неделю, и это вопрос о правильности схемы.

Ошибка уже помечена желтым, и я получил подсказку, что речь идет о пространствах имен, но в конце концов я не знаю, как решить проблему.Моей первой мыслью было, что для определения типа Type="Book" нужен префикс типа Type="urn:Book", но я совсем не уверен.

Я благодарю вас за любой совет, который может помочь мне исправить мою нехватку знаний в этом случае.

enter image description here

Ответы [ 2 ]

1 голос
/ 28 марта 2012

Это потому, что вы указываете, что Book находится в пространстве имен urn:schemaS, используя атрибут targetNamespace.Чтобы это работало, вам нужно определить префикс именного пространства для urn:schemaS и указать его в type="nsPrefix:Book".

Прочитать это руководство

0 голосов
/ 28 марта 2012

Когда вы объявляете именованное complexType, его имя является квалифицированным, связанным с целевым пространством имен, поэтому вы объявляете тип Book в пространстве имен urn:schema5.

Когда вы ссылаетесь на тип, вы должны указать его полное имя, и схема НЕ по умолчанию соответствует целевому пространству имен, она использует обычные объявления пространства имен XML. Поскольку у вас его нет, вы пытаетесь использовать тип Book в пространстве имен по умолчанию (''), которого не существует.

Вы должны добавить объявление пространства имен:

<xs:schema  
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:schema5="urn:schema5"
  targetNamespace="urn:schema5"
  elementFormDefault="qualified">

и затем используйте его

    <xs:element name="book" type="schema5:Book" maxOccurs="3"/>

или (мой предпочтительный вариант) объявить целевое пространство имен в качестве пространства по умолчанию:

<xs:schema  
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns="urn:schema5"
  targetNamespace="urn:schema5"
  elementFormDefault="qualified">

и тогда вам больше ничего не нужно делать.

...