|
Handling namespaces during parsing |
|
|
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;
}
}
}
}
|
Related Tips
|
Page 1 of 0 ( 0 comments )
You can share your information about this topic using the form below!
Please do not post your questions with this form! Thanks.