Validate nested XSD hits Out Of Memory Error
When I try to validate a XML with nested XSD as following, I always get Out of Memory error. I am using jre 1.4.2 and xerces 2.9.0. Please kindly help!
container.xsd:
<?xml version="1.0"?>
<xs:schema xmlns:Doc="test:document" xmlns:container="test:container" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test:container" elementFormDefault="qualified" attributeFormDefault="unqualified">
<xs:import namespace="test:document" schemaLocation="document.xsd"/>
<xs:element name="container" type="container:container"/>
<xs:complexType name="container">
<xs:sequence>
<xs:element name="ContainerId" type="xs:string" minOccurs="0"/>
<xs:element name="Msg" type="container:Msg" maxOccurs="999999"/>
</xs:sequence>
</xs:complexType>
<xs:complexType name="Msg">
<xs:sequence>
<xs:element name="HashValue" type="xs:string" minOccurs="0"/>
<xs:element ref="Doc:Document"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
document.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns="test:document" xmlns:xs="http://www.w3.org/2001/XMLSchema" targetNamespace="test:document" elementFormDefault="qualified">
<xs:element name="Document" type="Document"/>
<xs:complexType name="Document">
<xs:sequence>
<xs:element name="name" type="xs:string" minOccurs="0"/>
</xs:sequence>
</xs:complexType>
</xs:schema>
sample.xml
<?xml version="1.0" encoding="UTF-8"?>
<container xmlns="test:container" xmlns:Doc="test:document" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="test:container container.xsd">
<ContainerId>abc</ContainerId>
<Msg>
<Doc:Document>
<Doc:name>name</Doc:name>
</Doc:Document>
</Msg>
</container>
Testing Program
SAXParserFactory factory = SAXParserFactory.newInstance();
factory.setValidating(true);
factory.setNamespaceAware(true);
final String JAXP_SCHEMA_LANGUAGE =
"http://java.sun.com/xml/jaxp/properties/schemaLanguage";
final String W3C_XML_SCHEMA =
"http://www.w3.org/2001/XMLSchema";
final String JAXP_SCHEMA_SOURCE =
"http://java.sun.com/xml/jaxp/properties/schemaSource";
SAXParser saxParser = factory.newSAXParser();
saxParser.setProperty(JAXP_SCHEMA_LANGUAGE, W3C_XML_SCHEMA);
DefaultHandler handler =new DefaultHandler();
File file =new File("sample.xml");
saxParser.parse(file, handler);

