Class 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 Detail

      • 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 Detail

      • OutputElementBase

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

      • 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)