2025-04-01 V4.0
  Based on draft ST96 Annex I V9.0 from 2025-03-11

-- List of Changes --
Changed data model for ApprovedExceptions.xml to allow for easy updates from spreadsheet. 
Allow wipo_xsd.sch to continue running (instead of failing) even when referenced schemas are not found. 
Improved comparison between reference schemas and input schemas to consider an attribute/element as modified if its simpleType/complexType was modified; Also considers a component as having "moved" if there is a new component in common namespace and corresponding deleted component in a non-common namespace. 
Updated dictionary with Oxford English Dictionary from https://github.com/kaubu/en-GB-oxendict. 
Updated custom words list. 
Added XSD validation (against the W3C Schema DTD/XSD), but it may not cover all of the constraints indicated in XML Schema Parts 1 and 2 (e.g. http://www.w3.org/TR/xmlschema-2/).
Updated Unit tests
Updated list of approved exceptions. 
Improved bat script

Conformance check improvements:
- Bug fixes: accounted for xsd:integer type and unspecified xsd primitive types in check of representation term against data type (GD-23)
- Fixed bug in GD-23 which did not account for basic components which do not have a representation term, and whose expected representation term cannot be identified
- Updated camel case splitting to split names like "Article6ter" into "Article" and "6ter" for checking of various naming rules. 
- Exclude string-length of suffix "Type" for all type names (GD-07)
- Added partial checking for rules: GD-15, GD-17
- Added partial checking for SD-05 from pre-existing integrity check for duplicates between Common component names and non-Common component names
- Extend partial check of duplicate models in SD-04 to include components of the common namespace
- Added check for SD-06 components which are referenced, but not declared (directly, or due to issues with includes/imports)
- Update to SD-03 corresponding to Annex I update. 
- Minor enhancements to SD-12. 
- Extend SD-40, SD-41, SD-42, SD-43, and SD-44 to check elements and attributes (formerly just elements) since design rule doesn't exclude attributes. 
- Updated SD-40 and SD-41 to try to distinguish proper usage of ST.3 codes vs ISO Country codes. 
- Updated to remove option for exceptions where exceptions should not be permitted (see Manual)
- Clarified message for SD-64
- Fixed bug in SD-14, SD-18, SD-19, SD-20, SD-21, SD-65, SD-66 which did not check other IPO specific components. 
- Enhanced SD-50 to check that complexTypes have at least one mandatory element 
- Minor updates to GD-26: minOccurs cannot be 0. Explicitly exclude mixed complexTypes, simpleTypes and complexTypes with simpleContent from being considered as bags. 
- Improved data type checking to be more robust (e.g. when the recommended prefixes are not used) (impacts GD-17, GD-23, SD-50, SD-57)

Integrity check improvements:
- Fixed reference to common namespaces for duplicate name check (most of which was moved to SD-05; only attribute name checking remains in integrity check)
- Excluded components used in appinfo from the orphan/library checking. 
- Added check of new acronyms that may collide with ST.3 codes
- Added check for duplicate import/includes
- Added check of new acronyms in Annex I list against ST.3 codes
- Added check for unnecessary nesting of xsd:choice/xsd:sequence
- Added check of recursive complexTypes