Since there is a huge amount of DTD-types and XML-documents from different vendors, we can meet problem of name-conflict in XML data. This can take place when we try to combine two or more DTD-definitions into one. In order to separate definitions with the same name from different DTD's a namespaces can be used.

Namespace is bound to a vendors unique-URL and uniquely identifies the type of the element it defines.

Since hamespace-to-url mapping takes place in XML documet, SAX handler has to be able to process it:

 import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;

import org.xml.sax.SAXException;
import org.xml.sax.helpers.DefaultHandler;

/**
 * This example demonstrates how to indicate current position
 * in the source XML-document.
 */

public class SampleOfNamespacePrefixes extends DefaultHandler {
    
    // this will store URI to prefix correspondance:
    private Map namespaceMapping = new HashMap();
    
    // nothing serious, just save a previx declaration:
    public void startPrefixMapping(String prefix, String uri) 
        throws SAXException {
        namespaceMapping.put(uri, prefix);
    }
    
    // just remove prefix-declaration when its not needed anymore:
    public void endPrefixMapping(String prefix) throws SAXException {
        
        Iterator i = namespaceMapping.keySet().iterator();
        for (; i.hasNext(); ) {
            String uri = (String) i.next();
            String uriPrefix = (String) namespaceMapping.get(uri);
            
            if (prefix.equals(uriPrefix)) {
                namespaceMapping.remove(uri);
                break;
            }
        }
    }
}