Comment from Barry:
I noticed something probably inefficient in the implementation of the validation code:
XMLDatatypeUtil.normalizeDecimal(), line 557
String errMsg = "Not a legal decimal: " + decimal;
This string is created when validating every literal, even if it is not used (the majority of cases). I think it would be better to make an exception throwing utility method instead and pass in 'decimal'.
There are possibly more examples like this in this class.
Good point barry, have fixed while I was doing work on extended validation anyway.
In progress. validation of most calendar types now works, onwards an upwards towards more exotic datatype (e.g. hexbinary).
Validation of all primitive xsd datatypes is now implemented, with the following exceptions: xsd:base64Binary, xsd:hexBinary, xsd:anyURI and xsd:QName. For the these formats, validation could conceivably be added, but it seems more trouble than it's worth at the moment (it basically requires a full parser as their lex value syntax is too complex for a simple regex validation).
If we do decide we need validation for these types, we can open separate tasks for each type.
also added support for xsd:QName validation.