| java.lang.Object com.nabhinc.util.NSStack
NSStack | public class NSStack (Code) | | The abstraction this class provides is a push down stack of variable
length frames of prefix to namespace mappings. Used for keeping track
of what namespaces are active at any given point as an XML document is
traversed or produced.
From a performance point of view, this data will both be modified frequently
(at a minimum, there will be one push and pop per XML element processed),
and scanned frequently (many of the "good" mappings will be at the bottom
of the stack). The one saving grace is that the expected maximum
cardinalities of the number of frames and the number of total mappings
is only in the dozens, representing the nesting depth of an XML document
and the number of active namespaces at any point in the processing.
Accordingly, this stack is implemented as a single array, will null
values used to indicate frame boundaries.
author: James Snell author: Glen Daniels (gdaniels@apache.org) author: Sam Ruby (rubys@us.ibm.com) |
Field Summary | |
protected static Log | log |
Constructor Summary | |
public | NSStack(boolean optimizePrefixes) | public | NSStack() |
Method Summary | |
public void | add(String namespaceURI, String prefix) Add a mapping for a namespaceURI to the specified prefix to the top
frame in the stack. | public ArrayList | cloneFrame() Return a copy of the current frame. | public void | dump(String dumpPrefix) Produce a trace dump of the entire stack, starting from the top and
including frame markers. | public String | getNamespaceURI(String prefix) Given a prefix, return the associated namespace (if any). | public String | getPrefix(String namespaceURI, boolean noDefault) Return an active prefix for the given namespaceURI. | public String | getPrefix(String namespaceURI) Return an active prefix for the given namespaceURI, including
the default prefix (""). | public Mapping | next() Return the next namespace mapping in the top frame. | public void | pop() Remove the top frame from the stack. | public void | push() Create a new frame at the top of the stack. | public Mapping | topOfFrame() Reset the embedded iterator in this class to the top of the current
(i.e., last) frame. |
log | protected static Log log(Code) | | |
NSStack | public NSStack(boolean optimizePrefixes)(Code) | | |
add | public void add(String namespaceURI, String prefix)(Code) | | Add a mapping for a namespaceURI to the specified prefix to the top
frame in the stack. If the prefix is already mapped in that frame,
remap it to the (possibly different) namespaceURI.
|
cloneFrame | public ArrayList cloneFrame()(Code) | | Return a copy of the current frame. Returns null if none are present.
|
dump | public void dump(String dumpPrefix)(Code) | | Produce a trace dump of the entire stack, starting from the top and
including frame markers.
|
getNamespaceURI | public String getNamespaceURI(String prefix)(Code) | | Given a prefix, return the associated namespace (if any).
|
getPrefix | public String getPrefix(String namespaceURI, boolean noDefault)(Code) | | Return an active prefix for the given namespaceURI. NOTE : This
may return null even if the namespaceURI was actually mapped further
up the stack IF the prefix which was used has been repeated further
down the stack. I.e.:
here's where we're looking*
If we look for a prefix for "namespace" at the indicated spot, we won't
find one because "pre" is actually mapped to "otherNamespace"
|
getPrefix | public String getPrefix(String namespaceURI)(Code) | | Return an active prefix for the given namespaceURI, including
the default prefix ("").
|
next | public Mapping next()(Code) | | Return the next namespace mapping in the top frame.
|
pop | public void pop()(Code) | | Remove the top frame from the stack.
|
push | public void push()(Code) | | Create a new frame at the top of the stack.
|
topOfFrame | public Mapping topOfFrame()(Code) | | Reset the embedded iterator in this class to the top of the current
(i.e., last) frame. Note that this is not threadsafe, nor does it
provide multiple iterators, so don't use this recursively. Nor
should you modify the stack while iterating over it.
|
|
|