Class OutputElementBase

java.lang.Object
com.ctc.wstx.sw.OutputElementBase
All Implemented Interfaces:
NamespaceContext
Direct Known Subclasses:
DOMOutputElement, SimpleOutputElement

public abstract class OutputElementBase extends Object implements NamespaceContext
Class that encapsulates information about a specific element in virtual output stack for namespace-aware writers. It provides support for URI-to-prefix mappings as well as namespace mapping generation.

One noteworthy feature of the class is that it is designed to allow "short-term recycling", ie. instances can be reused within context of a simple document output. While reuse/recycling of such lightweight object is often useless or even counter productive, here it may be worth using, due to simplicity of the scheme (basically using a very simple free-elements linked list).

  • Field Details

    • PREFIX_UNBOUND

      public static final int PREFIX_UNBOUND
      See Also:
    • PREFIX_OK

      public static final int PREFIX_OK
      See Also:
    • PREFIX_MISBOUND

      public static final int PREFIX_MISBOUND
      See Also:
    • sXmlNsPrefix

      protected static final String sXmlNsPrefix
      See Also:
    • sXmlNsURI

      protected static final String sXmlNsURI
      See Also:
    • DEFAULT_XML_BINDINGS

      protected static final BijectiveNsMap DEFAULT_XML_BINDINGS
    • mRootNsContext

      protected NamespaceContext mRootNsContext
      Namespace context end application may have supplied, and that (if given) should be used to augment explicitly defined bindings.
    • mDefaultNsURI

      protected String mDefaultNsURI
    • mNsMapping

      protected BijectiveNsMap mNsMapping
      Mapping of namespace prefixes to URIs and back.
    • mNsMapShared

      protected boolean mNsMapShared
      True, if mNsMapping is a shared copy from the parent; false if a local copy was created (which happens when namespaces get bound etc).
  • Constructor Details

    • OutputElementBase

      protected OutputElementBase()
      Constructor for the virtual root element
    • OutputElementBase

      protected OutputElementBase(OutputElementBase parent, BijectiveNsMap ns)
  • Method Details

    • relink

      protected void relink(OutputElementBase parent)
      Method called to reuse a pooled instance.
    • setRootNsContext

      protected abstract void setRootNsContext(NamespaceContext ctxt)
    • isRoot

      public abstract boolean isRoot()
    • getNameDesc

      public abstract String getNameDesc()
      Returns:
      String presentation of the fully-qualified name, in "prefix:localName" format (no URI). Useful for error and debugging messages.
    • getDefaultNsUri

      public final String getDefaultNsUri()
    • getExplicitPrefix

      public final String getExplicitPrefix(String uri)
      Method similar to getPrefix(java.lang.String), but one that will not accept the default namespace, only an explicit one. Usually used when trying to find a prefix for attributes.
    • isPrefixValid

      public final int isPrefixValid(String prefix, String nsURI, boolean isElement) throws XMLStreamException
      Method that verifies that passed-in prefix indeed maps to the specified namespace URI; and depending on how it goes returns a status for caller.
      Parameters:
      isElement - If true, rules for the default NS are those of elements (ie. empty prefix can map to non-default namespace); if false, rules are those of attributes (only non-default prefix can map to a non-default namespace).
      Returns:
      PREFIX_OK, if passed-in prefix matches matched-in namespace URI in current scope; PREFIX_UNBOUND if it's not bound to anything, and PREFIX_MISBOUND if it's bound to another URI.
      Throws:
      XMLStreamException - True if default (no) prefix is allowed to match a non-default URI (elements); false if not (attributes)
    • setDefaultNsUri

      public abstract void setDefaultNsUri(String uri)
    • generateMapping

      public final String generateMapping(String prefixBase, String uri, int[] seqArr)
    • addPrefix

      public final void addPrefix(String prefix, String uri)
    • getNamespaceURI

      public final String getNamespaceURI(String prefix)
      Specified by:
      getNamespaceURI in interface NamespaceContext
    • getPrefix

      public final String getPrefix(String uri)
      Specified by:
      getPrefix in interface NamespaceContext
    • getPrefixes

      public final Iterator<String> getPrefixes(String uri)
      Specified by:
      getPrefixes in interface NamespaceContext
    • throwOutputError

      protected final void throwOutputError(String msg) throws XMLStreamException
      Throws:
      XMLStreamException