/**
  * This will look up the value of a SAX feature.
  *
  * @param name <code>String</code> the feature name, which is a fully-qualified URI.
  * @return <code>boolean</code> the current state of the feature (true or false).
  * @throws SAXNotRecognizedException when SAXOutputter does not recognize the feature name.
  * @throws SAXNotSupportedException when SAXOutputter recognizes the feature name but determine
  *     its value at this time.
  */
 public boolean getFeature(String name)
     throws SAXNotRecognizedException, SAXNotSupportedException {
   if (SAX_FEATURE_NAMESPACE_PREFIXES.equals(name)) {
     // Namespace prefix declarations.
     return (this.declareNamespaces);
   }
   if (SAX_FEATURE_NAMESPACES.equals(name)) {
     // Namespaces feature always supported by SAXOutputter.
     return (true);
   }
   if (SAX_FEATURE_VALIDATION.equals(name)) {
     // Report DTD events.
     return (this.reportDtdEvents);
   }
   // Not a supported feature.
   throw new SAXNotRecognizedException(name);
 }
 /**
  * This will set the state of a SAX feature.
  *
  * <p>All XMLReaders are required to support setting to true and to false.
  *
  * <p>SAXOutputter currently supports the following SAX core features:
  *
  * <dl>
  *   <dt><code>http://xml.org/sax/features/namespaces</code>
  *   <dd><strong>description:</strong> <code>true</code> indicates namespace URIs and unprefixed
  *       local names for element and attribute names will be available
  *   <dd><strong>access:</strong> read/write, but always <code>true</code>!
  *   <dt><code>http://xml.org/sax/features/namespace-prefixes</code>
  *   <dd><strong>description:</strong> <code>true</code> indicates XML 1.0 names (with prefixes)
  *       and attributes (including xmlns* attributes) will be available
  *   <dd><strong>access:</strong> read/write
  *   <dt><code>http://xml.org/sax/features/validation</code>
  *   <dd><strong>description:</strong> controls whether SAXOutputter is reporting DTD-related
  *       events; if <code>true</code>, the DocType internal subset will be parsed to fire DTD
  *       events
  *   <dd><strong>access:</strong> read/write, defaults to <code>true</code>
  * </dl>
  *
  * @param name <code>String</code> the feature name, which is a fully-qualified URI.
  * @param value <code>boolean</code> the requested state of the feature (true or false).
  * @throws SAXNotRecognizedException when SAXOutputter does not recognize the feature name.
  * @throws SAXNotSupportedException when SAXOutputter recognizes the feature name but cannot set
  *     the requested value.
  */
 public void setFeature(String name, boolean value)
     throws SAXNotRecognizedException, SAXNotSupportedException {
   if (SAX_FEATURE_NAMESPACE_PREFIXES.equals(name)) {
     // Namespace prefix declarations.
     this.setReportNamespaceDeclarations(value);
   } else {
     if (SAX_FEATURE_NAMESPACES.equals(name)) {
       if (value != true) {
         // Namespaces feature always supported by SAXOutputter.
         throw new SAXNotSupportedException(name);
       }
       // Else: true is OK!
     } else {
       if (SAX_FEATURE_VALIDATION.equals(name)) {
         // Report DTD events.
         this.setReportDTDEvents(value);
       } else {
         // Not a supported feature.
         throw new SAXNotRecognizedException(name);
       }
     }
   }
 }