It appears, that Spring ignores relative addressing in XSD files on Windows platform.
Root cause was found at org.springframework.xml.sax.SaxUtils.getSystemId() method. It tries to construct java.net.URI object from path string with Windows-style -slashes and fails on this operation. This path string is obtained from java.net.URL.toExternalForm(). Exception is silently ignored and null is returned from the method.
Current workaround is to implement custom org.springframework.core.io.ClassPathResource class that will override getURL() returning paths with valid /-slashes.
Then one should use instances of this class to populate xsds property of org.springframework.xml.xsd.commons.CommonsXsdSchemaCollection, instead of automatic Spring-generated instances.
Patch with workaround is attached. Now XSD schema collection declaration looks like this: