gnu.xml.pipeline
Class NSFilter

java.lang.Object
  extended bygnu.xml.pipeline.EventFilter
      extended bygnu.xml.pipeline.NSFilter
All 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).

Version:
$Date: 2001/11/09 22:53:17 $
Author:
David Brownell

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()
          SAX2: passes this callback to the next consumer, if any
 void endElement(java.lang.String uri, java.lang.String localName, java.lang.String qName)
          SAX2: passes this callback to the next consumer, if any
 void endPrefixMapping(java.lang.String prefix)
          This call is not passed to the next consumer in the chain.
 void startDocument()
          SAX2: passes this callback to the next consumer, if any
 void startElement(java.lang.String uri, java.lang.String localName, java.lang.String qName, Attributes atts)
          SAX2: passes this callback to the next consumer, if any
 void startPrefixMapping(java.lang.String prefix, java.lang.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, endEntity, externalEntityDecl, getContentHandler, getDocumentLocator, getDTDHandler, getErrorHandler, getNext, getProperty, ignorableWhitespace, internalEntityDecl, notationDecl, processingInstruction, setContentHandler, setDocumentLocator, setDTDHandler, setErrorHandler, setProperty, skippedEntity, startCDATA, startDTD, startEntity, unparsedEntityDecl
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

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 Detail

startDocument

public void startDocument()
                   throws SAXException
Description copied from class: EventFilter
SAX2: passes this callback to the next consumer, if any

Specified by:
startDocument in interface ContentHandler
Overrides:
startDocument in class EventFilter
Throws:
SAXException

startPrefixMapping

public void startPrefixMapping(java.lang.String prefix,
                               java.lang.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 class EventFilter
Throws:
SAXException

startElement

public void startElement(java.lang.String uri,
                         java.lang.String localName,
                         java.lang.String qName,
                         Attributes atts)
                  throws SAXException
Description copied from class: EventFilter
SAX2: passes this callback to the next consumer, if any

Specified by:
startElement in interface ContentHandler
Overrides:
startElement in class EventFilter
Throws:
SAXException

endElement

public void endElement(java.lang.String uri,
                       java.lang.String localName,
                       java.lang.String qName)
                throws SAXException
Description copied from class: EventFilter
SAX2: passes this callback to the next consumer, if any

Specified by:
endElement in interface ContentHandler
Overrides:
endElement in class EventFilter
Throws:
SAXException

endPrefixMapping

public void endPrefixMapping(java.lang.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 class EventFilter
Throws:
SAXException

endDocument

public void endDocument()
                 throws SAXException
Description copied from class: EventFilter
SAX2: passes this callback to the next consumer, if any

Specified by:
endDocument in interface ContentHandler
Overrides:
endDocument in class EventFilter
Throws:
SAXException


Source code is under GPL (with library exception) in the JAXP project at http://www.gnu.org/software/classpathx/jaxp
This documentation was derived from that source code on 2008-10-18.