gnu.xml.pipeline
Class NSFilter
- ContentHandler, ContentHandler2, DeclHandler, DTDHandler, EventConsumer, LexicalHandler
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:
- By default, SAX2 parsers must discard the "xmlns*"
attributes, and may also choose not to report properly prefixed
names for elements or attributes. (Some parsers may support
changing the namespace-prefixes value from the default
to true, effectively eliminating the need to use this
filter on their output.)
- When event streams are generated from a DOM tree, they may
have never have had prefixes or declarations for namespaces; or
the existing prefixes or declarations may have been invalidated
by structural modifications to that DOM tree.
- Other software writing SAX event streams won't necessarily
be worrying about prefix management, and so they will need to
have a transparent solution for managing them.
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).
NSFilter(EventConsumer next) - Passes events through to the specified consumer, after first
processing them.
|
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 , xmlDecl |
NSFilter
public NSFilter(EventConsumer next)
Passes events through to the specified consumer, after first
processing them.
next
- the next event consumer to receive events.
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.
- endPrefixMapping in interface ContentHandler
- endPrefixMapping 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.
- startPrefixMapping in interface ContentHandler
- startPrefixMapping in interface EventFilter