[
https://issues.apache.org/jira/browse/XERCESJ-1739?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
Yasir Bajwa updated XERCESJ-1739:
---------------------------------
Description:
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"{}}}{\{{}>
{}}}{{ <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 document.
was:
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"{}}}{{{}>
{}}}{{ <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 document.
> 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
> Priority: Minor
>
> 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"{}}}{\{{}>
> {}}}{{ <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 document.
--
This message was sent by Atlassian Jira
(v8.20.1#820001)
---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]