Beispiel-XSD schlägt mit "Fehler: keine Erklärung gefunden für das element X"

Trotz des seins ein total Neuling in die xml-parsing-arena, ich war in der Lage zu xsd zum erstellen von gültigen c++ und kompilieren und verknüpfen erfolgreich, aber der compiler optimiert(?) entfernt die Instanziierung. So, beginnend bei Schritt eins, ich versuche den hello world xml-Beispiel, bei CodeSynthesis. Aber das scheitert:

[wally@lenovotower xml]$ make hello
xsdcxx cxx-tree hello.xsd
g++ -c -o helloschema.o hello.cxx
g++ -g -o hello -lxerces-c helloschema.o hello.c++
[wally@lenovotower xml]$ ./hello
hello.xml:2:8 error: no declaration found for element 'hello'
hello.xml:4:13 error: no declaration found for element 'greeting'
hello.xml:6:9 error: no declaration found for element 'name'
hello.xml:7:9 error: no declaration found for element 'name'
hello.xml:8:9 error: no declaration found for element 'name'

Hallo.c++:

#include <iostream>
#include <stdio.h>
#include "hello.hxx"
using namespace std;
int main (void)
{
        try {
                auto_ptr<hello_t> h (hello ("hello.xml"));

                for (hello_t::name_const_iterator i (h->name ().begin()); 
                        i != h->name().end();
                        ++i)
                        cout << h->greeting () << ", " << *i << "!" << endl;    
        }
        catch (const xml_schema::exception& e)
        {
                cerr << e << endl;
                return 1;
        }
        return 0;
}

hello.xml:

<?xml version="1.0"?>
<hello>

  <greeting>Hello</greeting>

  <name>sun</name>
  <name>moon</name>
  <name>world</name>

</hello>

Hallo.xsd:

<?xml version="1.0"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">

 <xs:complexType name="hello_t">
  <xs:sequence> 
   <xs:element name="greeting" type="xs:string"/>
   <xs:element name="name" type="xs:string" maxOccurs="unbounded"/>
  </xs:sequence>
 </xs:complexType>

 <xs:element name="hello" type="hello_t"/> 

</xs:schema> 

Ich denke, das ist genau das, was es sagt, zu tun, aber die Befehle funktionieren nicht genau dokumentiert. Ich entdeckte xsdcxx scheint das richtige zu tun (im Gegensatz zu xsd generiert C# oder vb.net Ausgabe).

[wally@lenovotower xml]$ xsdcxx --version
CodeSynthesis XSD XML Schema to C++ compiler 3.3.0
Copyright (C) 2005-2010 Code Synthesis Tools CC

Auch, ich weiß nicht ein -I(dir) und kompiliert glücklich. Könnte es sein, mit den falschen include-Datei irgendwie?

Was mache ich falsch? Vielleicht xsd ist nicht das richtige Werkzeug?

InformationsquelleAutor wallyk | 2011-06-18
Schreibe einen Kommentar