Yasir Bajwa created XERCESJ-1739: ------------------------------------ Summary: EntityResolver is not invoked for xsi:schemaLocation attribute Key: XERCESJ-1739 URL: https://issues.apache.org/jira/browse/XERCESJ-1739 Project: Xerces2-J Issue Type: Bug Components: JAXP (javax.xml.validation) Affects Versions: 2.12.1 Reporter: Yasir Bajwa
setEntityResolver on SAXParser is not being called to resolve xsi:schemaLocation. Example: class DummyResolver implements EntityResolver { @Override public InputSource resolveEntity(String publicId, String systemId) throws SAXException { throw new SAXException("Access denied."); } } // main() // Path schemaPath ... // Path dataPath ... SchemaFactory schemaFactory = SchemaFactory.newInstance( "http://www.w3.org/XML/XMLSchema/v1.1"); StreamSource schemaSource = new StreamSource(schemaPath.toFile()); Schema schema = schemaFactory.newSchema(schemaSource); SAXParserFactory spf = SAXParserFactory.newInstance(); spf.setSchema(schema); spf.setNamespaceAware(true); SAXParser sp = spf.newSAXParser(); XMLReader parser = sp.getXMLReader(); //parser.setErrorHandler(new SAXErrorHandler()); //parser.setContentHandler(new TestHandler()); parser.setEntityResolver( new DummyResolver()); InputSource is = new InputSource(new FileInputStream(dataPath.toFile())); parser.parse(is); Schema (i.e. the file 'schemaPath' variable references in the code above) <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" > <!-- ROOT ELEMENT --> <xs:element name="SiebelMessage"> <xs:complexType> <xs:sequence> <xs:element name="CaseNum" maxOccurs="7" type="xs:string" /> <xs:any minOccurs="0" /> </xs:sequence> </xs:complexType> </xs:element> </xs:schema> fod.xsd: <?xml version="1.0" encoding="UTF-8" ?> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" xmlns="http://intra.tpon.gov.on.ca/fod" targetNamespace="http://intra.tpon.gov.on.ca/fod" > <xs:element name="testElement" type="xs:integer" /> </xs:schema> Instance: <?xml version="1.0" encoding="UTF-8" ?> <SiebelMessage xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns:fod="http://intra.fod.gov.on.ca" xsi:schemaLocation="http://intra.fod.gov.on.ca fod.xsd" > <CaseNum>1234</CaseNum> <CaseNum>1234</CaseNum> <CaseNum>1234</CaseNum> <fod:testElement>123</fod:testElement> </SiebelMessage> Result: Exception in thread "main" org.xml.sax.SAXException: Error: URI=file:///C:/tpon/fod/schema/xerces_tests/test1/input.xml Line=12: cvc-complex-type.2.4.c: The matching wildcard is strict, but no declaration can be found for element 'fod:testElement'. Expected result was for xsi:schemaLocation to try resolve the fod namespace and call entity resolver to get the fod.xsd schema docment. -- This message was sent by Atlassian Jira (v8.20.1#820001) --------------------------------------------------------------------- To unsubscribe, e-mail: j-dev-unsubscr...@xerces.apache.org For additional commands, e-mail: j-dev-h...@xerces.apache.org