nu.xom

## Class Namespace

- Object
- - nu.xom.Node
  - - nu.xom.Namespace

-     public final class Namespace
      extends Node

  Represents a namespace in scope. It is used by XOM's XPath implementation for the namespace axis. However, it is not really part of the XOM data model. Namespace objects are only created as needed when evaluating XPath. While a namespace node has a parent element (which may be null), that element does not know about these namespace nodes and cannot remove them. (This is an inconsistency in the XPath data model, and is shared with attributes which also have parents but are not children.)

  Version:
    1.3.0
  Author:
    Elliotte Rusty Harold

- - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static String` | `XML_NAMESPACE` Namespace URI specified for `xml` prefix

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Namespace(String prefix, String URI, Element parent)` Create a new namespace node.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `Namespace` | `copy()` Returns a copy of this namespace which has the same prefix and URI, but no parent.
    `void` | `detach()` Removes this namespace node from its parent.
    `Node` | `getChild(int position)` Throws `IndexOutOfBoundsException` because namespaces do not have children.
    `int` | `getChildCount()` Returns 0 because namespaces do not have children.
    `String` | `getPrefix()` Returns the namespace prefix, or the empty string if this node is the default namespace.
    `String` | `getValue()` Returns the namespace URI.
    `String` | `toString()` Returns a string form of the `Namespace` suitable for debugging and diagnosis.
    `String` | `toXML()` Returns a string containing the actual XML form of the namespace declaration represented by this object.

    - ### Methods inherited from class nu.xom.Node

      `equals, getBaseURI, getDocument, getParent, hashCode, query, query`

    - ### Methods inherited from class Object

      `clone, finalize, getClass, notify, notifyAll, wait, wait, wait`

- - ### Field Detail

    - #### XML_NAMESPACE

          public static final String XML_NAMESPACE

      Namespace URI specified for `xml` prefix
      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Namespace

          public Namespace(String prefix,
                           String URI,
                           Element parent)

      Create a new namespace node.

      Parameters:
        `prefix` - the prefix for the namespace; may be the empty string or a non-colonized name
        `URI` - the namespace URI
        `parent` - the element that possesses this namespace node
      Throws:
        `MalformedURIException` - if `URI` is not an RFC 3986 URI reference
        `IllegalNameException` - if
        - The prefix is `xmlns`.
        - The prefix is not the empty string, and the URI is null or the empty string.
        `NamespaceConflictException` - if
        - The prefix is the empty string, and the URI is null or the empty string.
        - The prefix is `xml`, and the URI is not `http://www.w3.org/XML/1998/namespace`.
        - The prefix is not `xml`, and the URI is `http://www.w3.org/XML/1998/namespace`.

  - ### Method Detail

    - #### getPrefix

          public String getPrefix()

      Returns the namespace prefix, or the empty string if this node is the default namespace.

      Returns:
        the namespace prefix

    - #### getValue

          public String getValue()

      Returns the namespace URI.

      Specified by:
        `getValue` in class `Node`
      Returns:
        the namespace URI

    - #### getChild

          public Node getChild(int position)

      Throws `IndexOutOfBoundsException` because namespaces do not have children.

      Specified by:
        `getChild` in class `Node`
      Parameters:
        `position` - the index of the child node to return
      Returns:
        never returns because document type declarations do not have children. Always throws an exception.
      Throws:
        `IndexOutOfBoundsException` - because document type declarations do not have children

    - #### getChildCount

          public int getChildCount()

      Returns 0 because namespaces do not have children.

      Specified by:
        `getChildCount` in class `Node`
      Returns:
        zero

    - #### copy

          public Namespace copy()

      Returns a copy of this namespace which has the same prefix and URI, but no parent.

      Specified by:
        `copy` in class `Node`
      Returns:
        a copy of this `Namespace` that is not part of a document

    - #### detach

          public void detach()

      Removes this namespace node from its parent.

      Overrides:
        `detach` in class `Node`
      See Also:
        `Node.detach()`

    - #### toXML

          public String toXML()

      Returns a string containing the actual XML form of the namespace declaration represented by this object. For example, `xmlns:pre="http://www.example.org/"`.

      Specified by:
        `toXML` in class `Node`
      Returns:
        a `String` containing an XML namespace declaration

    - #### toString

          public String toString()

      Returns a string form of the `Namespace` suitable for debugging and diagnosis. It deliberately does not return an actual XML namespace declaration.

      Overrides:
        `toString` in class `Object`
      Returns:
        a string representation of this object

Copyright 2002-2020 Elliotte Rusty Harold
elharo@ibiblio.org