Когда вы объявляете именованное 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">
и тогда вам больше ничего не нужно делать.