Hi all,
I'm having a problem with a certain schema and I can't figure out if
JAXB does what it should and it is a problem with the schema, or if
the schema is correct but JAXB does things in an unappropriate way.
First of all, here is a snippet of the schema:
[snip]
<xsd:group name="foo_type">
<xsd:choice>
<xsd:element name="a_type" type="foo_typeType" />
<xsd:element name="b_type" type="foo_typeType" />
[...more of those...]
</xsd:choice>
</xsd:group>
[/snip]
Now the problem is the following:
If I feed the schema into JAXBs xjc, it generates a class
foo_typeType, and I have no way of determining if the Object was of
type a_type, b_type, ...
Since a_type, b_type, etc. all have the same (optional) attributes
(and so, setters and getters in JAXB), i think the schema definition
makes sense that way. Additionaly, in the xml-files, the declarations
as follows:
[snip]
<a_type some_attr="foo" [...]/>
<b_type some_attr="bar" [...]/>
[/snip]
So, the information I need is all there.
But, why does JAXB "forget" the information? There seems to be no way
for me to determine if my foo_typeType-Object was a_type, b_type and
so on, neither via an attribute in foo_typeType, nor is there a class
a_type that I could test with eg. instanceof.
So, is our schema wrong and we should go back and rewrite it (and it
what way?), or is it a misbehavior in JAXB, or is it somewhere in JAXB
and I simply am too blind to see it?
Any suggestions are welcome. Thanks for your time!
--
Mit freundlichen Grüßen,
Christopher "m4z" Holm