[ 
https://issues.apache.org/jira/browse/XERCESC-1736?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Denis Tkachov reopened XERCESC-1736:
------------------------------------


Hi Jesse!
Thank you for your assistance.
I have found a problem.
There is a bug with XercesDOMParser::ValidationScheme default value. 
Documentation states that this property is Val_Auto by default, hence there is 
no need to set this property manually. But if you do not set this property - 
invoking method parse will not invoke validation of the xml document.

Please see a sample here:
http://xml.apache.org/xerces-c/schema.html
     DOMParser parser;
     parser.setDoNamespaces(true);
     parser.setDoSchema(true);
     parser.parse(xmlFile); 

It will not work until you insert line 
parser.setValidationScheme(XercesDOMParser::Val_Auto);
DOMPrint sample always sets this property even if this is not necessary.

I have took a look into code. Method XercesDOMParser::ValidationScheme 
internally invokes method XMLScanner::setValidationScheme. If leave property by 
default, method XercesDOMParser::ValidationScheme will be never invoked and  
XercesDOMParser::fValScheme will not set to correct value.

So, even so there is workarround to the problem, this is a bug - implementation 
does not match documentation.
Please do the following:
 - change documentation. (Seems to be not very good point  because java version 
might work correct, and this is expected to have validationScheme property set 
to Val_Auto)
 - fix this problem in code.

> xml document validation againsta schema
> ---------------------------------------
>
>                 Key: XERCESC-1736
>                 URL: https://issues.apache.org/jira/browse/XERCESC-1736
>             Project: Xerces-C++
>          Issue Type: Bug
>          Components: Validating Parser (DTD), Validating Parser (Schema) 
> (Xerces 1.5 or up only)
>    Affects Versions: 2.7.0
>         Environment: Windows XP professional
> Visual Studio 2005
>            Reporter: Denis Tkachov
>
> Instances of both  XercesDOMParser and  SAX2XMLReader threat all the 
> documents as valid even if a document does not match schema provided.
> In order if document does not match schema provided the library does not 
> throw exception and getErrorCount method of the parser returns zero.
> So it seems to be a bug in the library.
>  As example you can try this code: 
> http://xml.apache.org/xerces-c/program-dom.html#ConstructXercesDOMParser
> Below are provided scheme and document (error marked with "does not match 
> schema" comment) that reproduces error:
> datasetSchema.xsd:
> <?xml version="1.0" encoding="UTF-8" standalone="no"?>
> <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema";>
>       <xs:element name="DataObject">
>               <xs:complexType>
>                       <xs:choice minOccurs="0" maxOccurs="unbounded">
>                               <xs:element name="MasterDataTable">
>                                       <xs:complexType>
>                                               <xs:sequence>
>                                                       <xs:element name="key" 
> type="xs:int"/>
>                                                       <xs:element name="name" 
> type="xs:string"/>
>                                                       <xs:element 
> name="surname" type="xs:string"/>
>                                               </xs:sequence>
>                                       </xs:complexType>
>                               </xs:element>
>                               <xs:element name="ChildDataTable">
>                                       <xs:complexType>
>                                               <xs:sequence>
>                                                       <xs:element name="key" 
> type="xs:int"/>
>                                                       <xs:element name="age" 
> type="xs:string"/>
>                                                       <xs:element name="info" 
> type="xs:string"/>
>                                               </xs:sequence>
>                                       </xs:complexType>
>                               </xs:element>
>                       </xs:choice>
>               </xs:complexType>
>       </xs:element>
> </xs:schema>
> output.xml:
> <?xml version="1.0" encoding="UTF-8" standalone="no" ?>
> <DataObject xmlns="http://creopod.com/DataObject.xsd"; 
> xmlns:xs="http://www.w3.org/2001/XMLSchema-instance"; 
> xs:noNamespaceSchemaLocation="datasetSchema.xsd">
>   <MasterDataTable>
>     <key>1</key>
>     <name>Vasya</name>
>     <surname>Pupkin</surname>
>   </MasterDataTable>
>   <MasterDataTable>
>     <key>2</key>
>     <name>Petro</name>
>     <surname>Kukurudza</surname>
>   </MasterDataTable>
>   <ChildDataTable>
>     <key1>1</key1> <!-- does not match schema-->
>     <age>23</age>
>     <info>famous guy</info>
>   </ChildDataTable>
>   <ChildDataTable>
>     <key1>2</key1> <!-- does not match schema-->
>     <age>29</age>
>     <info></info>
>   </ChildDataTable>
> </DataObject>

-- 
This message is automatically generated by JIRA.
-
You can reply to this email to add a comment to the issue online.


---------------------------------------------------------------------
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]

Reply via email to