According to the binding schema's definition of the version attribute, the
jaxb:version is not the version of JAXB (xjc) you're using, but rather the
schema version of the binding file--here, for example, is 2.0's schema:
Replacing the 2 with a 1 above will get you the 1.0 schema.
Allowing values of 2.1, 2.2, 2.2.1, etc. will confuse things as it implies that
you're specifying the desired version of xjc to use when in reality you're just
stating the binding schema your binding file is following.
I think the switch should be then to allow just 1.0 or 2.0 as values (not 2.1,
as there's no binding schema with that version number), and instead of
"Unrecognized JAXB version..." as the error message (which could imply it can't
read the binding file, and also might confuse users who are expecting to place
the xjc version there) to say "JAXB binding schema version attribute must be
"1.0" or "2.0".