You should support XML Catalog so that included XSDs can be found via their namespace.
Here's an example of how XSD validations can be done, when <xs:include> elements are present in the schema document, with the site I shared,
2) File upload 1: x1_valid.xml
<X1>
<x>hello</x>
<y>hello1</y>
<z>105</z>
</X1>
or:
x1_valid.xml
<X1>
<x>hello</x>
<y>hello1</y>
<z>110</z>
</X1>
3) File upload 2: x1.xsd
<xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:include schemaLocation="x1_included.xsd"/>
<xs:element name="X1">
<xs:complexType>
<xs:sequence>
<xs:element name="x" type="xs:string"/>
<xs:element name="y" type="xs:string"/>
<xs:element name="z" type="restricted_Integer"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
4) File upload 3: x1_included.xsd
<xs:schema xmlns:xs="
http://www.w3.org/2001/XMLSchema">
<xs:simpleType name="restricted_Integer">
<xs:restriction base="xs:integer">
<xs:maxInclusive value="107"/>
</xs:restriction>
</xs:simpleType>
</xs:schema>
I don't think that, this requires XML Catalog, with the site I've shared. According to XSD <xs:include> spec, the targetNamespace of included XSD document must be null (in which case, included XSD document is subject to chameleon transformation), or it must be same as that of including XSD document.