2016-01-15 2 views
0

У меня есть простые файлы XML и XSD. Я использую Xerces для создания .h/CPP файлы, но при запуске приложения он дает ошибку:Объявление не найдено для элемента

no declaration found for element 'x:books'

Мой файл XML является:

<?xml version="1.0"?> 
<x:books xmlns:x="urn:books" 
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
    xsi:schemaLocation="urn:BookStore books.xsd"> 

    <book id="bk001"> 
     <author>Writer</author> 
     <title>The First Book</title> 
     <genre>Fiction</genre> 
     <price>44.95</price> 
     <pub_date>2000-10-01</pub_date> 
     <review>An amazing story of nothing.</review> 
    </book> 

    <book id="bk002"> 
     <author>Poet</author> 
     <title>The Poet's First Poem</title> 
     <genre>Poem</genre> 
     <price>24.95</price> 
     <pub_date>2001-10-01</pub_date> 
     <review>Least poetic poems.</review> 
    </book> 
</x:books> 

и XSD файл:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema" 
      targetNamespace="urn:BookStore" 
      xmlns:bks="urn:BookStore"> 

    <xsd:element name="books" type="bks:BooksForm"/> 

    <xsd:complexType name="BooksForm"> 
    <xsd:sequence> 
     <xsd:element name="book" 
        type="bks:BookForm" 
        minOccurs="0" 
        maxOccurs="unbounded"/> 
     </xsd:sequence> 
    </xsd:complexType> 

    <xsd:complexType name="BookForm"> 
    <xsd:sequence> 
     <xsd:element name="author" type="xsd:string"/> 
     <xsd:element name="title" type="xsd:string"/> 
     <xsd:element name="genre" type="xsd:string"/> 
     <xsd:element name="price" type="xsd:float" /> 
     <xsd:element name="pub_date" type="xsd:date" /> 
     <xsd:element name="review" type="xsd:string"/> 
    </xsd:sequence> 
    <xsd:attribute name="id" type="xsd:string"/> 
    </xsd:complexType> 
</xsd:schema> 

Я сделал более простое демо с Xerces, но этот использует пространства имен, и я думаю, что это вызывает проблемы.

ответ

2

Изменение имен на корневой элемент файла XML (urn:books), чтобы соответствовать targetNamespace (urn:BookStore) вашего XSD ...

Изменение

<x:books xmlns:x="urn:books" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="urn:BookStore books.xsd"> 

к

<x:books xmlns:x="urn:BookStore" 
     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
     xsi:schemaLocation="urn:BookStore books.xsd"> 

, а затем ваш XML будет проверять ваш XSD.

Смежные вопросы