gnu.xml.pipeline

Class NSFilter

Implemented Interfaces:
ContentHandler, DeclHandler, DTDHandler, EventConsumer, LexicalHandler

public class NSFilter
extends EventFilter

This filter ensures that element and attribute names are properly prefixed, and that such prefixes are declared. Such data is critical for operations like writing XML text, and validating against DTDs: names or their prefixes may have been discarded, although they are essential to the exchange of information using XML. There are various common ways that such data gets discarded:

This filter uses a heuristic to choose the prefix to assign to any particular name which wasn't already corectly prefixed. The associated namespace will be correct, and the prefix will be declared. Original structures facilitating text editing, such as conventions about use of mnemonic prefix names or the scoping of prefixes, can't always be reconstructed after they are discarded, as strongly encouraged by the current SAX2 defaults.

Note that this can't possibly know whether values inside attribute value or document content involve prefixed names. If your application requires using prefixed names in such locations you'll need to add some appropriate logic (perhaps adding additional heuristics in a subclass).

Field Summary

Fields inherited from class gnu.xml.pipeline.EventFilter

DECL_HANDLER, FEATURE_URI, LEXICAL_HANDLER, PROPERTY_URI

Constructor Summary

NSFilter(EventConsumer next)
Passes events through to the specified consumer, after first processing them.

Method Summary

void
endDocument()
void
endElement(String uri, String localName, String qName)
void
endPrefixMapping(String prefix)
This call is not passed to the next consumer in the chain.
void
startDocument()
void
startElement(String uri, String localName, String qName, Attributes atts)
void
startPrefixMapping(String prefix, String uri)
This call is not passed to the next consumer in the chain.

Methods inherited from class gnu.xml.pipeline.EventFilter

attributeDecl, bind, chainTo, characters, comment, elementDecl, endCDATA, endDTD, endDocument, endElement, endEntity, endPrefixMapping, externalEntityDecl, getContentHandler, getDTDHandler, getDocumentLocator, getErrorHandler, getNext, getProperty, ignorableWhitespace, internalEntityDecl, notationDecl, processingInstruction, setContentHandler, setDTDHandler, setDocumentLocator, setErrorHandler, setProperty, skippedEntity, startCDATA, startDTD, startDocument, startElement, startEntity, startPrefixMapping, unparsedEntityDecl

Methods inherited from class java.lang.Object

clone, equals, extends Object> getClass, finalize, hashCode, notify, notifyAll, toString, wait, wait, wait

Constructor Details

NSFilter

public NSFilter(EventConsumer next)
Passes events through to the specified consumer, after first processing them.
Parameters:
next - the next event consumer to receive events.

Method Details

endDocument

public void endDocument()
            throws SAXException
Specified by:
endDocument in interface ContentHandler
Overrides:
endDocument in interface EventFilter

endElement

public void endElement(String uri,
                       String localName,
                       String qName)
            throws SAXException
Specified by:
endElement in interface ContentHandler
Overrides:
endElement in interface EventFilter

endPrefixMapping

public void endPrefixMapping(String prefix)
            throws SAXException
This call is not passed to the next consumer in the chain. Prefix declarations and scopes are only exposed in their attribute form.
Specified by:
endPrefixMapping in interface ContentHandler
Overrides:
endPrefixMapping in interface EventFilter

startDocument

public void startDocument()
            throws SAXException
Specified by:
startDocument in interface ContentHandler
Overrides:
startDocument in interface EventFilter

startElement

public void startElement(String uri,
                         String localName,
                         String qName,
                         Attributes atts)
            throws SAXException
Specified by:
startElement in interface ContentHandler
Overrides:
startElement in interface EventFilter

startPrefixMapping

public void startPrefixMapping(String prefix,
                               String uri)
            throws SAXException
This call is not passed to the next consumer in the chain. Prefix declarations and scopes are only exposed in the form of attributes; this callback just records a declaration that will be exposed as an attribute.
Specified by:
startPrefixMapping in interface ContentHandler
Overrides:
startPrefixMapping in interface EventFilter

NSFilter.java -- Copyright (C) 1999,2000,2001 Free Software Foundation, Inc. This file is part of GNU Classpath. GNU Classpath is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by the Free Software Foundation; either version 2, or (at your option) any later version. GNU Classpath is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details. You should have received a copy of the GNU General Public License along with GNU Classpath; see the file COPYING. If not, write to the Free Software Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301 USA. Linking this library statically or dynamically with other modules is making a combined work based on this library. Thus, the terms and conditions of the GNU General Public License cover the whole combination. As a special exception, the copyright holders of this library give you permission to link this library with independent modules to produce an executable, regardless of the license terms of these independent modules, and to copy and distribute the resulting executable under terms of your choice, provided that you also meet, for each linked independent module, the terms and conditions of the license of that module. An independent module is a module which is not derived from or based on this library. If you modify this library, you may extend this exception to your version of the library, but you are not obligated to do so. If you do not wish to do so, delete this exception statement from your version.