<?xml version='1.0' encoding='UTF-8'?>
<!DOCTYPE faqs SYSTEM 'dtd/faqs.dtd'>
<faqs title='Configuring Parser'>
 <faq title='Validation and infoset augmentation'>
  <q>What's the result of having a DTD validator or XML Schema validator in the pipeline?</q>
  <a>
   <p>
    If a validator is included in the pipeline, the assessment is
    done, whether the validation feature is set to true or false.
    The validation feature only enables the validation constraint error 
    reporting and it does not control the infoset augmentation: if a 
    validator is included in the pipeline the parser will augment the 
    infoset according to the grammar specified for the instance document. 
   </p>
  </a>
 </faq>

 <faq title='Default Parser Configuration'>
  <q>What validation behavior do I expect from the default parser configuration?</q>
  <a>
   <p>
    The default configuration (&DefaultConfigLong;) includes the DTD validator 
    and the document scanner (which are both capable of namespace binding). Thus, the 
    <link idref='features' anchor="validation">validation feature</link> will enable 
    validation against a DTD only. To allow validation against XML Schemas you must turn 
    on the <link idref='features' anchor="validation">validation feature</link> and the 
    <link idref='features' anchor="validation.schema">schema feature</link>, and 
    XML Schema Validator will be inserted in the pipeline. if you've created your own 
    configuration which does not extend &DefaultConfig; (or another
    suitable configuration included with the parser), you must make sure that your 
    configuration inserts all needed validators in the pipeline.
   </p>
  </a>
 </faq>

 <faq title='Validation Features'>
  <q>What happens if I set both validation and schema validation features on?</q>
  <a>
   <p>
     If both validators are present in the pipeline (this is the default behavior), then
   </p>
   <ul>
    <li>if the instance document has only a DTD grammar
        (DOCTYPE before the root element), then only DTD
        validation errors are reported;</li>
    <li>if the instance document has only XML Schema grammars,
        then only XML Schema validation errors are reported</li>
    <li>if the instance document has both DTD and XML Schema
        grammars, validation errors for both DTD and XML
        Schema are reported;</li>
    <li>if no grammar can be found for the instance document,
        the last validator in the pipeline will report validation errors.
    </li>
   </ul>
   <p>
     An application may choose to create a configuration that does not have a DTD 
     validator but has an XML Schema validator. This will turn Xerces into a 
     non-compliant processor according to XML 1.0 and XML Schema specifications, 
     thus the validation/augmentation outcome is undefined.
   </p>

  </a>
</faq>
<faq title='Validation against a specific schema language'>
  <q>How can I tell the parser to validate against XML Schema and not to report DTD validation errors?</q>
  <a>
   <p>
     Currently this is impossible. We hope that JAXP 1.2 will provide this capability 
     via its schema language property. Otherwise, we might introduce a Xerces 
     language property that will allow specifying the language against which validation will occur.
   </p>
   </a>
 </faq>

</faqs>
