Обработка имен во время разбора

Поскольку существует огромное количество DTD-типы и XML-документов с различными поставщиками, мы можем встретиться проблема имя конфликт в данных XML. Это может иметь место, когда мы пытаемся объединить два или более DTD-определений в одну. Для отдельных определений с тем же именем из разных DTD's имена могут быть использованы.

Пространство имен связан с поставщиками уникальный URL-и однозначно определяет тип элемента, он определяет.

С hamespace к URL отображение происходит в documet XML, SAX обработчиком должна быть в состоянии обработать его:


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 prefixthrows SAXException {

        

        Iterator i = namespaceMapping.keySet().iterator();

        for (; i.hasNext()) {

            String uri = (Stringi.next();

            String uriPrefix = (StringnamespaceMapping.get(uri);

            

            if (prefix.equals(uriPrefix)) {

                namespaceMapping.remove(uri);

                break;

            }

        }

    }

}

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

Можно использовать следующие HTML-теги и атрибуты: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <s> <strike> <strong>