gt:         final String[] recognizedProperties = {
context: /*
   * Licensed to the Apache Software Foundation (ASF) under one or more
   * contributor license agreements.  See the NOTICE file distributed with
   * this work for additional information regarding copyright ownership.
   * The ASF licenses this file to You under the Apache License, Version 2.0
   * (the "License"); you may not use this file except in compliance with
   * the License.  You may obtain a copy of the License at
   * 
   *      http://www.apache.org/licenses/LICENSE-2.0
   * 
   * Unless required by applicable law or agreed to in writing, software
   * distributed under the License is distributed on an "AS IS" BASIS,
   * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
   * See the License for the specific language governing permissions and
   * limitations under the License.
   */
  
  package org.apache.xerces.parsers;
  
  import org.apache.xerces.impl.Constants;
  import org.apache.xerces.impl.xs.XMLSchemaValidator;
  import org.apache.xerces.impl.xs.XSMessageFormatter;
  import org.apache.xerces.util.SymbolTable;
  import org.apache.xerces.xni.grammars.XMLGrammarPool;
  import org.apache.xerces.xni.parser.XMLComponentManager;
  import org.apache.xerces.xni.parser.XMLConfigurationException;
  
  /**
   * This is the "standard" parser configuration. It extends the DTD
   * configuration with the standard set of parser components. 
   * The standard set of parser components include those needed
   * to parse and validate with DTD's, and those needed for XML
   * Schema.</p>
   * <p>
   * In addition to the features and properties recognized by the base
   * parser configuration, this class recognizes these additional 
   * features and properties:
   * <ul>
   * <li>Features
   *  <ul>
   *  <li>http://apache.org/xml/features/validation/schema</li>
   *  <li>http://apache.org/xml/features/validation/schema-full-checking</li>
   *  <li>http://apache.org/xml/features/validation/schema/normalized-value</li>
   *  <li>http://apache.org/xml/features/validation/schema/element-default</li>
   *  </ul>
   * <li>Properties
   *  <ul>
   *   <li>http://apache.org/xml/properties/internal/error-reporter</li>
   *   <li>http://apache.org/xml/properties/internal/entity-manager</li>
   *   <li>http://apache.org/xml/properties/internal/document-scanner</li>
   *   <li>http://apache.org/xml/properties/internal/dtd-scanner</li>
   *   <li>http://apache.org/xml/properties/internal/grammar-pool</li>
   *   <li>http://apache.org/xml/properties/internal/validator/dtd</li>
   *   <li>http://apache.org/xml/properties/internal/datatype-validator-factory</li>
   *  </ul>
   * </ul>
   *
   * @author Arnaud  Le Hors, IBM
   * @author Andy Clark, IBM
   *
   * @version $Id: StandardParserConfiguration.java 805582 2009-08-18 21:13:20Z sandygao $
   */
  public class StandardParserConfiguration
      extends DTDConfiguration {
  
      //
      // Constants
      //
  
      // feature identifiers
  
      /** Feature identifier: expose schema normalized value */
      protected static final String NORMALIZE_DATA =
      Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_NORMALIZED_VALUE;
  
  
      /** Feature identifier: send element default value via characters() */
      protected static final String SCHEMA_ELEMENT_DEFAULT =
      Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_ELEMENT_DEFAULT;
  
  
      /** Feature identifier: augment PSVI */
      protected static final String SCHEMA_AUGMENT_PSVI =
      Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_AUGMENT_PSVI;
  
  
      /** feature identifier: XML Schema validation */
      protected static final String XMLSCHEMA_VALIDATION = 
      Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_VALIDATION_FEATURE;
  
      /** feature identifier: XML Schema validation -- full checking */
      protected static final String XMLSCHEMA_FULL_CHECKING = 
      Constants.XERCES_FEATURE_PREFIX + Constants.SCHEMA_FULL_CHECKING;
      
      /** Feature: generate synthetic annotations */
      protected static final String GENERATE_SYNTHETIC_ANNOTATIONS = 
          Constants.XERCES_FEATURE_PREFIX + Constants.GENERATE_SYNTHETIC_ANNOTATIONS_FEATURE;
      
      /** Feature identifier: validate annotations */
      protected static final String VALIDATE_ANNOTATIONS =
          Constants.XERCES_FEATURE_PREFIX + Constants.VALIDATE_ANNOTATIONS_FEATURE;
      
      /** Feature identifier: honour all schemaLocations */
      protected static final String HONOUR_ALL_SCHEMALOCATIONS = 
          Constants.XERCES_FEATURE_PREFIX + Constants.HONOUR_ALL_SCHEMALOCATIONS_FEATURE;
  
      /** Feature identifier: namespace growth */
      protected static final String NAMESPACE_GROWTH = 
          Constants.XERCES_FEATURE_PREFIX + Constants.NAMESPACE_GROWTH_FEATURE;
  
      /** Feature identifier: tolerate duplicates */
      protected static final String TOLERATE_DUPLICATES = 
          Constants.XERCES_FEATURE_PREFIX + Constants.TOLERATE_DUPLICATES_FEATURE;
  
      /** Feature identifier: whether to ignore xsi:type attributes until a global element declaration is encountered */
      protected static final String IGNORE_XSI_TYPE =
          Constants.XERCES_FEATURE_PREFIX + Constants.IGNORE_XSI_TYPE_FEATURE;
      
      /** Feature identifier: whether to ignore ID/IDREF errors */
      protected static final String ID_IDREF_CHECKING =
          Constants.XERCES_FEATURE_PREFIX + Constants.ID_IDREF_CHECKING_FEATURE;
      
      /** Feature identifier: whether to ignore unparsed entity errors */
      protected static final String UNPARSED_ENTITY_CHECKING =
          Constants.XERCES_FEATURE_PREFIX + Constants.UNPARSED_ENTITY_CHECKING_FEATURE;
      
      /** Feature identifier: whether to ignore identity constraint errors */
      protected static final String IDENTITY_CONSTRAINT_CHECKING =
          Constants.XERCES_FEATURE_PREFIX + Constants.IDC_CHECKING_FEATURE;
  
      // property identifiers
  
      /** Property identifier: XML Schema validator. */
      protected static final String SCHEMA_VALIDATOR =
          Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_VALIDATOR_PROPERTY;
  
      /** Property identifier: schema location. */
      protected static final String SCHEMA_LOCATION =
      Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_LOCATION;
  
      /** Property identifier: no namespace schema location. */
      protected static final String SCHEMA_NONS_LOCATION =
      Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_NONS_LOCATION;
  
      /** Property identifier: root type definition. */
      protected static final String ROOT_TYPE_DEF =
          Constants.XERCES_PROPERTY_PREFIX + Constants.ROOT_TYPE_DEFINITION_PROPERTY;
      
      /** Property identifier: root element declaration. */
      protected static final String ROOT_ELEMENT_DECL =
          Constants.XERCES_PROPERTY_PREFIX + Constants.ROOT_ELEMENT_DECLARATION_PROPERTY;
  
      /** Property identifier: Schema DV Factory */
      protected static final String SCHEMA_DV_FACTORY = 
          Constants.XERCES_PROPERTY_PREFIX + Constants.SCHEMA_DV_FACTORY_PROPERTY;
      
      //
      // Data
      //
  
      // components (non-configurable)
  
      /** XML Schema Validator. */
      protected XMLSchemaValidator fSchemaValidator;
  
      //
      // Constructors
      //
  
      /** Default constructor. */
      public StandardParserConfiguration() {
          this(null, null, null);
      } // <init>()
  
      /** 
       * Constructs a parser configuration using the specified symbol table. 
       *
       * @param symbolTable The symbol table to use.
       */
      public StandardParserConfiguration(SymbolTable symbolTable) {
          this(symbolTable, null, null);
      } // <init>(SymbolTable)
  
      /**
       * Constructs a parser configuration using the specified symbol table and
       * grammar pool.
       * <p>
       * <strong>REVISIT:</strong> 
       * Grammar pool will be updated when the new validation engine is
       * implemented.
       *
       * @param symbolTable The symbol table to use.
       * @param grammarPool The grammar pool to use.
       */
      public StandardParserConfiguration(SymbolTable symbolTable,
                                         XMLGrammarPool grammarPool) {
          this(symbolTable, grammarPool, null);
      } // <init>(SymbolTable,XMLGrammarPool)
  
      /**
       * Constructs a parser configuration using the specified symbol table,
       * grammar pool, and parent settings.
       * <p>
       * <strong>REVISIT:</strong> 
       * Grammar pool will be updated when the new validation engine is
       * implemented.
       *
       * @param symbolTable    The symbol table to use.
       * @param grammarPool    The grammar pool to use.
       * @param parentSettings The parent settings.
       */
      public StandardParserConfiguration(SymbolTable symbolTable,
                                         XMLGrammarPool grammarPool,
                                         XMLComponentManager parentSettings) {
          super(symbolTable, grammarPool, parentSettings);
  
          // add default recognized features
          final String[] recognizedFeatures = {
              NORMALIZE_DATA,
              SCHEMA_ELEMENT_DEFAULT,
              SCHEMA_AUGMENT_PSVI,
              GENERATE_SYNTHETIC_ANNOTATIONS,
              VALIDATE_ANNOTATIONS,
              HONOUR_ALL_SCHEMALOCATIONS,
              NAMESPACE_GROWTH,
              TOLERATE_DUPLICATES,
              // NOTE: These shouldn't really be here but since the XML Schema
              //       validator is constructed dynamically, its recognized
              //       features might not have been set and it would cause a
              //       not-recognized exception to be thrown. -Ac
              XMLSCHEMA_VALIDATION,
              XMLSCHEMA_FULL_CHECKING,
              IGNORE_XSI_TYPE,
              ID_IDREF_CHECKING,
              IDENTITY_CONSTRAINT_CHECKING,
              UNPARSED_ENTITY_CHECKING,
          };
          addRecognizedFeatures(recognizedFeatures);
  
          // set state for default features
          setFeature(SCHEMA_ELEMENT_DEFAULT, true);
          setFeature(NORMALIZE_DATA, true);
          setFeature(SCHEMA_AUGMENT_PSVI, true);
          setFeature(GENERATE_SYNTHETIC_ANNOTATIONS, false);
          setFeature(VALIDATE_ANNOTATIONS, false);
          setFeature(HONOUR_ALL_SCHEMALOCATIONS, false);
          setFeature(NAMESPACE_GROWTH, false);
          setFeature(TOLERATE_DUPLICATES, false);
  
          setFeature(IGNORE_XSI_TYPE, false);
          setFeature(ID_IDREF_CHECKING, true);
          setFeature(IDENTITY_CONSTRAINT_CHECKING, true);
          setFeature(UNPARSED_ENTITY_CHECKING, true);
  
          // add default recognized properties
      
  