uk.ac.starlink.votable.dom

## Class DelegatingDocument

- java.lang.Object
- - uk.ac.starlink.votable.dom.DelegatingNode
  - - uk.ac.starlink.votable.dom.DelegatingDocument

- All Implemented Interfaces:
    org.w3c.dom.Document, org.w3c.dom.Node
  Direct Known Subclasses:
    VODocument

      public class DelegatingDocument
      extends DelegatingNode
      implements org.w3c.dom.Document

  DOM Document implementation which delegates its operations to a base Document instance. This is the basic class which must be used and extended when using the delegate DOM package.

  In order to specialise the nodes which appear in a DOM, you have to override the protected `createDelegating*` methods to return your own custom DelegatingNode subclasses.

  Since:
    14 Sep 2004

- - ### Field Summary

    - ### Fields inherited from interface org.w3c.dom.Node

      `ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_POSITION_CONTAINED_BY, DOCUMENT_POSITION_CONTAINS, DOCUMENT_POSITION_DISCONNECTED, DOCUMENT_POSITION_FOLLOWING, DOCUMENT_POSITION_IMPLEMENTATION_SPECIFIC, DOCUMENT_POSITION_PRECEDING, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `DelegatingDocument(org.w3c.dom.Document base, java.lang.String documentURI)` Constructs a new document which delegates its behaviour to a `Document` from another DOM.
    `DelegatingDocument(java.lang.String documentURI)` Constructs a new empty document based on a new empty document got from the default DOM implementation.

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and Description
    --- | ---
    `org.w3c.dom.Node` | `adoptNode(org.w3c.dom.Node source)`
    `org.w3c.dom.Attr` | `createAttribute(java.lang.String name)`
    `org.w3c.dom.Attr` | `createAttributeNS(java.lang.String namespaceURI, java.lang.String qualifiedName)`
    `org.w3c.dom.CDATASection` | `createCDATASection(java.lang.String data)`
    `org.w3c.dom.Comment` | `createComment(java.lang.String data)`
    `protected DelegatingAttr` | `createDelegatingAttr(org.w3c.dom.Attr baseNode)` Creates a new node in this document that delegates to an object of class `Attr` in the base model.
    `protected DelegatingAttr` | `createDelegatingAttr(org.w3c.dom.Attr baseNode, boolean isId)` Creates a new node in this document that delegates to an object of class `Attr` and knows whether it is an ID-type attribute or not.
    `protected DelegatingCDATASection` | `createDelegatingCDATASection(org.w3c.dom.CDATASection baseNode)` Creates a new node in this document that delegates to an object of class `CDATASection` in the base model.
    `protected DelegatingCharacterData` | `createDelegatingCharacterData(org.w3c.dom.CharacterData baseNode)` Creates a new node in this document that delegates to an object of class `CharacterData` (not one of its subclasses) in the base model.
    `protected DelegatingComment` | `createDelegatingComment(org.w3c.dom.Comment baseNode)` Creates a new node in this document that delegates to an object of class `Comment` in the base model.
    `protected DelegatingDocumentFragment` | `createDelegatingDocumentFragment(org.w3c.dom.DocumentFragment baseNode)` Creates a new node in this document that delegates to an object of class `DocumentFragment` in the base model.
    `protected DelegatingDocumentType` | `createDelegatingDocumentType(org.w3c.dom.DocumentType baseNode)` Creates a new node in this document that delegates to an object of class `DocumentType` in the base model.
    `protected DelegatingElement` | `createDelegatingElement(org.w3c.dom.Element baseNode)` Creates a new node in this document that delegates to an object of class `Element` in the base model.
    `protected DelegatingEntity` | `createDelegatingEntity(org.w3c.dom.Entity baseNode)` Creates a new node in this document that delegates to an object of class `Entity` in the base model.
    `protected DelegatingEntityReference` | `createDelegatingEntityReference(org.w3c.dom.EntityReference baseNode)` Creates a new node in this document that delegates to an object of class `EntityReference` in the base model.
    `protected org.w3c.dom.NamedNodeMap` | `createDelegatingNamedNodeMap(org.w3c.dom.NamedNodeMap baseMap)` Returns a NamedNodeMap which will dispense nodes in this document.
    `protected org.w3c.dom.NodeList` | `createDelegatingNodeList(org.w3c.dom.NodeList baseList)` Returns a NodeList which will dispense nodes in this document.
    `protected DelegatingNotation` | `createDelegatingNotation(org.w3c.dom.Notation baseNode)` Creates a new node in this document that delegates to an object of class `Notation` in the base model.
    `protected DelegatingProcessingInstruction` | `createDelegatingProcessingInstruction(org.w3c.dom.ProcessingInstruction baseNode)` Creates a new node in this document that delegates to an object of class `ProcessingInstruction` in the base model.
    `protected DelegatingNode` | `createDelegatingSimpleNode(org.w3c.dom.Node baseNode)` Creates a new node in this document that delegates to an object of class `Node` (not one of its subclasses) in the base model.
    `protected DelegatingText` | `createDelegatingText(org.w3c.dom.Text baseNode)` Creates a new node in this document that delegates to an object of class `Text` (not one of its subclasses) in the base model.
    `org.w3c.dom.DocumentFragment` | `createDocumentFragment()`
    `org.w3c.dom.Element` | `createElement(java.lang.String tagName)`
    `org.w3c.dom.Element` | `createElementNS(java.lang.String namespaceURI, java.lang.String qualifiedName)`
    `org.w3c.dom.EntityReference` | `createEntityReference(java.lang.String name)`
    `org.w3c.dom.ProcessingInstruction` | `createProcessingInstruction(java.lang.String target, java.lang.String data)`
    `org.w3c.dom.Text` | `createTextNode(java.lang.String data)`
    `protected org.w3c.dom.Document` | `getBaseDocument()` Returns the base document (the one to which this delegates).
    `protected DelegatingNode` | `getDelegator(org.w3c.dom.Node baseNode)` Returns the node in this document which delegates to (is based on) a given node in the base document.
    `org.w3c.dom.DocumentType` | `getDoctype()`
    `org.w3c.dom.Element` | `getDocumentElement()`
    `java.lang.String` | `getDocumentURI()`
    `org.w3c.dom.DOMConfiguration` | `getDomConfig()`
    `org.w3c.dom.Element` | `getElementById(java.lang.String elementId)`
    `org.w3c.dom.NodeList` | `getElementsByTagName(java.lang.String tagname)`
    `org.w3c.dom.NodeList` | `getElementsByTagNameNS(java.lang.String namespaceURI, java.lang.String localName)`
    `org.w3c.dom.DOMImplementation` | `getImplementation()` Returns the implementation of the base document.
    `java.lang.String` | `getInputEncoding()`
    `boolean` | `getStrictErrorChecking()`
    `java.lang.String` | `getXmlEncoding()`
    `boolean` | `getXmlStandalone()`
    `java.lang.String` | `getXmlVersion()`
    `org.w3c.dom.Node` | `importNode(org.w3c.dom.Node importedNode, boolean deep)`
    `void` | `normalizeDocument()`
    `org.w3c.dom.Node` | `renameNode(org.w3c.dom.Node node, java.lang.String namespaceURI, java.lang.String qualifiedName)`
    `void` | `setDocumentURI(java.lang.String documentURI)`
    `void` | `setStrictErrorChecking(boolean strictErrorChecking)`
    `void` | `setXmlStandalone(boolean xmlStandalone)`
    `void` | `setXmlVersion(java.lang.String xmlVersion)`

    - ### Methods inherited from class uk.ac.starlink.votable.dom.DelegatingNode

      `appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData`

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

    - ### Methods inherited from interface org.w3c.dom.Node

      `appendChild, cloneNode, compareDocumentPosition, getAttributes, getBaseURI, getChildNodes, getFeature, getFirstChild, getLastChild, getLocalName, getNamespaceURI, getNextSibling, getNodeName, getNodeType, getNodeValue, getOwnerDocument, getParentNode, getPrefix, getPreviousSibling, getTextContent, getUserData, hasAttributes, hasChildNodes, insertBefore, isDefaultNamespace, isEqualNode, isSameNode, isSupported, lookupNamespaceURI, lookupPrefix, normalize, removeChild, replaceChild, setNodeValue, setPrefix, setTextContent, setUserData`

- - ### Constructor Detail

    - #### DelegatingDocument

          public DelegatingDocument(org.w3c.dom.Document base,
                                    java.lang.String documentURI)

      Constructs a new document which delegates its behaviour to a `Document` from another DOM.
      Parameters:
        `base` - delegate document node
        `documentURI` - location of the document, or `null`

    - #### DelegatingDocument

          public DelegatingDocument(java.lang.String documentURI)

      Constructs a new empty document based on a new empty document got from the default DOM implementation. This can theoretically result in a ParserConfigurationException, but shouldn't do for any sensibly set up JVM - any such condition is rethrown as a RuntimeException.
      Parameters:
        `documentURI` - location of the document, or `null`

  - ### Method Detail

    - #### getDelegator

          protected DelegatingNode getDelegator(org.w3c.dom.Node baseNode)

      Returns the node in this document which delegates to (is based on) a given node in the base document. If this node has not previously been encountered, it will be created here.
      Parameters:
        `baseNode` - node in the base document
      Returns:
        corresponding node in this document

    - #### getBaseDocument

          protected org.w3c.dom.Document getBaseDocument()

      Returns the base document (the one to which this delegates).
      Returns:
        base document

    - #### createDelegatingSimpleNode

          protected DelegatingNode createDelegatingSimpleNode(org.w3c.dom.Node baseNode)

      Creates a new node in this document that delegates to an object of class `Node` (not one of its subclasses) in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingAttr

          protected DelegatingAttr createDelegatingAttr(org.w3c.dom.Attr baseNode)

      Creates a new node in this document that delegates to an object of class `Attr` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingAttr

          protected DelegatingAttr createDelegatingAttr(org.w3c.dom.Attr baseNode,
                                                        boolean isId)

      Creates a new node in this document that delegates to an object of class `Attr` and knows whether it is an ID-type attribute or not. This is not called by any method of this class, but can be used by subclass implementations of `createDelegatingAttr(org.w3c.dom.Attr)`.
      Parameters:
        `baseNode` - delegate node
        `isId` - true if this node knows it is an ID, false if it knows it isn't
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingCDATASection

          protected DelegatingCDATASection createDelegatingCDATASection(org.w3c.dom.CDATASection baseNode)

      Creates a new node in this document that delegates to an object of class `CDATASection` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingCharacterData

          protected DelegatingCharacterData createDelegatingCharacterData(org.w3c.dom.CharacterData baseNode)

      Creates a new node in this document that delegates to an object of class `CharacterData` (not one of its subclasses) in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingComment

          protected DelegatingComment createDelegatingComment(org.w3c.dom.Comment baseNode)

      Creates a new node in this document that delegates to an object of class `Comment` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingDocumentFragment

          protected DelegatingDocumentFragment createDelegatingDocumentFragment(org.w3c.dom.DocumentFragment baseNode)

      Creates a new node in this document that delegates to an object of class `DocumentFragment` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingDocumentType

          protected DelegatingDocumentType createDelegatingDocumentType(org.w3c.dom.DocumentType baseNode)

      Creates a new node in this document that delegates to an object of class `DocumentType` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingElement

          protected DelegatingElement createDelegatingElement(org.w3c.dom.Element baseNode)

      Creates a new node in this document that delegates to an object of class `Element` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingEntity

          protected DelegatingEntity createDelegatingEntity(org.w3c.dom.Entity baseNode)

      Creates a new node in this document that delegates to an object of class `Entity` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingEntityReference

          protected DelegatingEntityReference createDelegatingEntityReference(org.w3c.dom.EntityReference baseNode)

      Creates a new node in this document that delegates to an object of class `EntityReference` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingNotation

          protected DelegatingNotation createDelegatingNotation(org.w3c.dom.Notation baseNode)

      Creates a new node in this document that delegates to an object of class `Notation` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingProcessingInstruction

          protected DelegatingProcessingInstruction createDelegatingProcessingInstruction(org.w3c.dom.ProcessingInstruction baseNode)

      Creates a new node in this document that delegates to an object of class `ProcessingInstruction` in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingText

          protected DelegatingText createDelegatingText(org.w3c.dom.Text baseNode)

      Creates a new node in this document that delegates to an object of class `Text` (not one of its subclasses) in the base model. This may be overridden to create specialised node types.
      Parameters:
        `baseNode` - delegate node
      Returns:
        new node in this model based on `baseNode`

    - #### createDelegatingNodeList

          protected org.w3c.dom.NodeList createDelegatingNodeList(org.w3c.dom.NodeList baseList)

      Returns a NodeList which will dispense nodes in this document.
      Parameters:
        `baseList` - node list which dispenses nodes in the base document
      Returns:
        equivalent of `baseList` in this document

    - #### createDelegatingNamedNodeMap

          protected org.w3c.dom.NamedNodeMap createDelegatingNamedNodeMap(org.w3c.dom.NamedNodeMap baseMap)

      Returns a NamedNodeMap which will dispense nodes in this document.
      Parameters:
        `baseMap` - node map which dispenses nodes in the base document
      Returns:
        equivalent of `baseMap` in this document

    - #### getImplementation

          public org.w3c.dom.DOMImplementation getImplementation()

      Returns the implementation of the base document.
      Specified by:
        `getImplementation` in interface `org.w3c.dom.Document`

    - #### getDoctype

          public org.w3c.dom.DocumentType getDoctype()

      Specified by:
        `getDoctype` in interface `org.w3c.dom.Document`

    - #### getDocumentElement

          public org.w3c.dom.Element getDocumentElement()

      Specified by:
        `getDocumentElement` in interface `org.w3c.dom.Document`

    - #### createElement

          public org.w3c.dom.Element createElement(java.lang.String tagName)

      Specified by:
        `createElement` in interface `org.w3c.dom.Document`

    - #### createDocumentFragment

          public org.w3c.dom.DocumentFragment createDocumentFragment()

      Specified by:
        `createDocumentFragment` in interface `org.w3c.dom.Document`

    - #### createTextNode

          public org.w3c.dom.Text createTextNode(java.lang.String data)

      Specified by:
        `createTextNode` in interface `org.w3c.dom.Document`

    - #### createComment

          public org.w3c.dom.Comment createComment(java.lang.String data)

      Specified by:
        `createComment` in interface `org.w3c.dom.Document`

    - #### createCDATASection

          public org.w3c.dom.CDATASection createCDATASection(java.lang.String data)

      Specified by:
        `createCDATASection` in interface `org.w3c.dom.Document`

    - #### createProcessingInstruction

          public org.w3c.dom.ProcessingInstruction createProcessingInstruction(java.lang.String target,
                                                                               java.lang.String data)

      Specified by:
        `createProcessingInstruction` in interface `org.w3c.dom.Document`

    - #### createAttribute

          public org.w3c.dom.Attr createAttribute(java.lang.String name)

      Specified by:
        `createAttribute` in interface `org.w3c.dom.Document`

    - #### createEntityReference

          public org.w3c.dom.EntityReference createEntityReference(java.lang.String name)

      Specified by:
        `createEntityReference` in interface `org.w3c.dom.Document`

    - #### getElementsByTagName

          public org.w3c.dom.NodeList getElementsByTagName(java.lang.String tagname)

      Specified by:
        `getElementsByTagName` in interface `org.w3c.dom.Document`

    - #### importNode

          public org.w3c.dom.Node importNode(org.w3c.dom.Node importedNode,
                                             boolean deep)

      Specified by:
        `importNode` in interface `org.w3c.dom.Document`

    - #### createElementNS

          public org.w3c.dom.Element createElementNS(java.lang.String namespaceURI,
                                                     java.lang.String qualifiedName)

      Specified by:
        `createElementNS` in interface `org.w3c.dom.Document`

    - #### createAttributeNS

          public org.w3c.dom.Attr createAttributeNS(java.lang.String namespaceURI,
                                                    java.lang.String qualifiedName)

      Specified by:
        `createAttributeNS` in interface `org.w3c.dom.Document`

    - #### getElementsByTagNameNS

          public org.w3c.dom.NodeList getElementsByTagNameNS(java.lang.String namespaceURI,
                                                             java.lang.String localName)

      Specified by:
        `getElementsByTagNameNS` in interface `org.w3c.dom.Document`

    - #### getElementById

          public org.w3c.dom.Element getElementById(java.lang.String elementId)

      Specified by:
        `getElementById` in interface `org.w3c.dom.Document`

    - #### getInputEncoding

          public java.lang.String getInputEncoding()

      Specified by:
        `getInputEncoding` in interface `org.w3c.dom.Document`

    - #### getXmlEncoding

          public java.lang.String getXmlEncoding()

      Specified by:
        `getXmlEncoding` in interface `org.w3c.dom.Document`

    - #### getXmlStandalone

          public boolean getXmlStandalone()

      Specified by:
        `getXmlStandalone` in interface `org.w3c.dom.Document`

    - #### setXmlStandalone

          public void setXmlStandalone(boolean xmlStandalone)

      Specified by:
        `setXmlStandalone` in interface `org.w3c.dom.Document`

    - #### getXmlVersion

          public java.lang.String getXmlVersion()

      Specified by:
        `getXmlVersion` in interface `org.w3c.dom.Document`

    - #### setXmlVersion

          public void setXmlVersion(java.lang.String xmlVersion)

      Specified by:
        `setXmlVersion` in interface `org.w3c.dom.Document`

    - #### getStrictErrorChecking

          public boolean getStrictErrorChecking()

      Specified by:
        `getStrictErrorChecking` in interface `org.w3c.dom.Document`

    - #### setStrictErrorChecking

          public void setStrictErrorChecking(boolean strictErrorChecking)

      Specified by:
        `setStrictErrorChecking` in interface `org.w3c.dom.Document`

    - #### getDocumentURI

          public java.lang.String getDocumentURI()

      Specified by:
        `getDocumentURI` in interface `org.w3c.dom.Document`

    - #### setDocumentURI

          public void setDocumentURI(java.lang.String documentURI)

      Specified by:
        `setDocumentURI` in interface `org.w3c.dom.Document`

    - #### adoptNode

          public org.w3c.dom.Node adoptNode(org.w3c.dom.Node source)

      Specified by:
        `adoptNode` in interface `org.w3c.dom.Document`

    - #### getDomConfig

          public org.w3c.dom.DOMConfiguration getDomConfig()

      Specified by:
        `getDomConfig` in interface `org.w3c.dom.Document`

    - #### normalizeDocument

          public void normalizeDocument()

      Specified by:
        `normalizeDocument` in interface `org.w3c.dom.Document`

    - #### renameNode

          public org.w3c.dom.Node renameNode(org.w3c.dom.Node node,
                                             java.lang.String namespaceURI,
                                             java.lang.String qualifiedName)

      Specified by:
        `renameNode` in interface `org.w3c.dom.Document`