Witam,

mam następujący komunikat przy walidacji pliku XML za pomocą XSD:
„Węzeł nie jest poprawny ani niepoprawny. Nie znaleziono deklaracji schematu lub definicji DTD”.
Robię walidację w C++ przy użyciu biblioteki MSXML 6.0. Nie używam .NET.
Kod wygląda następująco. Najpierw tworzę obiekt IXMLDOMSchemaCollection2:

hr = CoCreateInstance(
       __uuidof(XMLSchemaCache60), 
        NULL, 
        CLSCTX_ALL, 
        __uuidof(IXMLDOMSchemaCollection2), 
        (void**)&this->SchemaCache);

  if(FAILED(hr)) 
 {
        cerr << "Błąd przy tworzeniu SchemaCache";  
    return;
  } 

Następnie kojarzę go z czytnikiem XML:

hr = XMLReader->putProperty(L"schemas", _variant_t((IUnknown*)this->SchemaCache));
 if(FAILED(hr)) 
 {
        cerr << "Błąd przy ustawianiu SchemaCache dla czytnika";                
  }

Na koniec włączam walidację przy użyciu XSD i dodaję schemat:

  //Włącz walidację za pomocą XSD.
  HRESULT hr =  this->XMLReader->putFeature(L"schema-validation", VARIANT_TRUE);
 if(FAILED(hr)) 
 {
        cerr << "Błąd przy ustawianiu własności";
    return false;
 }      

 //Dodaj nowy schemat.  
 _bstr_t bstrNamespace = namespaceURI.c_str();
  hr = this->SchemaCache->add(bstrNamespace, _variant_t(xsdPath.c_str()));
 if(FAILED(hr))
 {
       cerr << "Błąd przy dodawaniu schematu";
       return false;
}

Te dwie ostatnie czynności wykonuję w metodzie AddValidationSchema, która jako pierwszy argument przyjmuje przestrzeń nazw, a jako drugi ścieżkę do pliku XSD.
Kod w main wygląda tak:

CommonXMLReader *Reader = new CommonXMLReader;
Reader->SetFile(L"books.xml");
Reader->AddValidationSchema(L"http://www.w3.org/2001/XMLSchema", L"books.xsd");
Reader->Start();    //Tu wykonuje się walidacja.

Plik XML:

<?xml version="1.0" encoding="UTF-8"?>

<catalog> <book> <author>Gambardella, Matthew</author> </book> </catalog>

Plik XSD:

<xsd:schema xmlns:xsd="http://www.w3.org/2001/XMLSchema"&gt; <xsd:element name="catalog"> <xsd:complextype> <xsd:sequence> <xsd:element name="book" minoccurs="0" maxoccurs="unbounded"> <xsd:complextype> <xsd:sequence> <xsd:element name="author" type="xsd:string" /> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:sequence> </xsd:complextype> </xsd:element> </xsd:schema> Pliki XML i XSD są na pewno poprawne. Wypróbowałem je na walidatorze online. Program nie zgłasza żadnych błędów przy inicjalizowaniu obiektów. Co może być źle? Byłbym wdzięczny za naprowadzenie na rozwiązanie tego problemu.