
 
                Encapsulate Namespace logic for use by applications using SAX,
 or internally by SAX drivers.
 
 This module, both source code and documentation, is in the
 Public Domain, and comes with NO WARRANTY.
 See http://www.saxproject.org
 for further information.
 
 This class encapsulates the logic of Namespace processing: it
 tracks the declarations currently in force for each context and
 automatically processes qualified XML names into their Namespace
 parts; it can also be used in reverse for generating XML qnames
 from Namespaces.
 Namespace support objects are reusable, but the reset method
 must be invoked between each session.
 Here is a simple session:
 
 String parts[] = new String[3];
 NamespaceSupport support = new NamespaceSupport();
 support.pushContext();
 support.declarePrefix("", "http://www.w3.org/1999/xhtml");
 support.declarePrefix("dc", "http://www.purl.org/dc#");
 parts = support.processName("p", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);
 parts = support.processName("dc:title", parts, false);
 System.out.println("Namespace URI: " + parts[0]);
 System.out.println("Local name: " + parts[1]);
 System.out.println("Raw name: " + parts[2]);
 support.popContext();
 
 Note that this class is optimized for the use case where most
 elements do not contain Namespace declarations: if the same
 prefix/URI mapping is repeated for each context (for example), this
 class will be somewhat less efficient.
 Although SAX drivers (parsers) may choose to use this class to
 implement namespace handling, they are not required to do so.
 Applications must track namespace information themselves if they
 want to use namespace information.