DTD validation on XIncluded documents when the schema language is set to XML
Schema
-----------------------------------------------------------------------------------
Key: XERCESJ-1202
URL: http://issues.apache.org/jira/browse/XERCESJ-1202
Project: Xerces2-J
Issue Type: Bug
Components: XInclude 1.0
Affects Versions: 2.8.1
Reporter: George Cristian Bina
When a validation is performed with the schema language property set to XML
Schema the DTDs should not be used for validation. This happens when validating
a document but not on the included documents. Below you can find an example to
reproduce the problem and a proposed patch.
foos.xml
<?xml version="1.0" encoding="UTF-8"?>
<foos xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="foo.xsd"
xmlns:xi="http://www.w3.org/2001/XInclude">
<xi:include href="foo.xml"/>
</foos>
foo.xml
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE foo [ ]>
<foo xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="foo.xsd"/>
foo.xsd
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="foo"/>
<xs:element name="foos">
<xs:complexType>
<xs:sequence>
<xs:element ref="foo" maxOccurs="unbounded"/>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Proposed pacth
At the end of the reset method in XIncludeHandler we should check if the schema
language property is set to XML Schema and disable the validation and dynamic
validation features for the XIncluded documents as we perform the validation
only on the main document with the XInclude resolved. One possible
implementation of the above is to add the following lines at the end of
XIncludeHandler.reset()
boolean schemaLanguage = false;
try {
schemaLanguage =
"http://www.w3.org/2001/XMLSchema".equals(componentManager.getProperty(
"http://java.sun.com/xml/jaxp/properties/schemaLanguage"
));
} catch (XMLConfigurationException e) {}
if (schemaLanguage) {
fSettings.setFeature(DYNAMIC_VALIDATION, false);
fSettings.setFeature(VALIDATION, false);
}
Thanks,
George
--
This message is automatically generated by JIRA.
-
If you think it was sent incorrectly contact one of the administrators:
http://issues.apache.org/jira/secure/Administrators.jspa
-
For more information on JIRA, see: http://www.atlassian.com/software/jira
---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]