# Changes in XML Schema support

The code for parsing and validating schema documents has been extensively refactored. It is now tree-based rather than event-based, which generally makes it more robust, and makes the functional changes listed below possible. There is now no residual code from Castor.

Saxon now supports `xs:notation` declarations and values of type `xs:NOTATION`. As with QName support, there are still some restrictions: for example, notations cannot be used as default or fixed values, or used in key and uniqueness constraints.

Chameleon includes and redefines are now implemented: that is, includes and redefines in which a schema document with a target namespace includes or redefines one without a target namespace.

Cyclic imports (where A imports B and B imports A) are now permitted, though the coverage of this feature in test cases is rather sparse (none of the W3C test cases cover it).

Multiple inclusion (where A includes B and C, while B and C both include D) is now handled: again, test coverage is sparse.

Saxon imposes limits on the values of `minOccurs` and `maxOccurs` in particles of a content model. These limits are now documented; a warning is output when the limits are exceeded; and the limits are now configurable by a new method on the `SchemaAwareConfiguration` class.

Next