gnu.xml.pipeline
Class NSFilter
- ContentHandler, 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 |
clone , equals , extends Object> getClass , finalize , hashCode , notify , notifyAll , toString , wait , wait , wait |
NSFilter
public NSFilter(EventConsumer next)
Passes events through to the specified consumer, after first
processing them.
next
- the next event consumer to receive events.
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.