[xsd-users] Re: Help me please - CodeSynthesis XSD
Boris Kolpackov
boris at codesynthesis.com
Wed Oct 18 10:47:43 EDT 2006
Cláudio,
In the future please send technical questions like this to the
xsd-users mailing list (which I've CC'ed) instead of to me directly.
This way a) other developers who may have experienced a similar
problem can provide you with a solution b) questions and answers
will be archived and available to others with similar problems.
Cláudio Margulhano <cmargulhano at gmail.com> writes:
> I'm try to use CodeSynthesis XSD in my application to read a XML file but
> with no sucess.
> Can you help me, please?
> This code allways prints the value 1 at console. What's wrong?
>
> std::auto_ptr<config_type> c (config (argv[1]));
> for (config_type::module::const_iterator i (c->module ().begin ()); i !=
> c->module ().end (); ++i)
> {
> cerr << i->name() << endl;
> }
>
> ...
>
> <xsd:complexType name="module_type">
> <xsd:sequence>
> <xsd:element name="key" type="key_type" maxOccurs="unbounded" minOccurs="1"></xsd:element>
> </xsd:sequence>
> <xsd:attribute name="name" type="xsd:string"></xsd:attribute>
> </xsd:complexType>
The 'name' attribute in 'module_type' is optional. As a result XSD-generated
code returns a container for it instead of the object itself (since it may
or may not be present). You can read more about this in the Section 2.8.2,
"Mapping for Members with the Optional Cardinality Class" of the C++/Tree
mapping manual[1].
To fix this your code you can do two things:
1. Make the 'name' attribute required (add the use="required" attribute).
This is probably a good idea in your situation.
2. Change your code to test for presence and extract the actual value:
if (i->name ().present ())
cerr << i->name ().get () << endl;
[1] http://codesynthesis.com/projects/xsd/documentation/cxx/tree/manual/#2.8.2
hth,
-boris
-------------- next part --------------
A non-text attachment was scrubbed...
Name: not available
Type: application/pgp-signature
Size: 652 bytes
Desc: Digital signature
Url : http://codesynthesis.com/pipermail/xsd-users/attachments/20061018/bbd85d90/attachment.pgp
More information about the xsd-users
mailing list