Package net.sf.saxon.dom

## Class DocumentWrapper

- java.lang.Object
- - net.sf.saxon.om.GenericTreeInfo
  - - net.sf.saxon.dom.DocumentWrapper

- All Implemented Interfaces:
    `javax.xml.transform.Source`, `TreeInfo`

      public class DocumentWrapper
      extends GenericTreeInfo

  The tree info object for a tree implemented as a wrapper around a DOM Document.

  Because the DOM is not thread-safe even when reading, and because Saxon-EE can spawn multiple threads that access the same input tree, all methods that invoke DOM methods are synchronized on the Document node

- - ### Field Summary

    Fields
    Modifier and Type | Field | Description
    --- | --- | ---
    `org.w3c.dom.Node` | `docNode` |
    `protected boolean` | `domLevel3` |

    - ### Fields inherited from class net.sf.saxon.om.GenericTreeInfo

      `root`

  - ### Constructor Summary

    Constructors
    Constructor | Description
    --- | ---
    `DocumentWrapper​(org.w3c.dom.Node doc, java.lang.String baseURI, Configuration config)` | Wrap a DOM Document or DocumentFragment node

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method | Description
    --- | --- | ---
    `int` | `getDOMLevel()` | Get the level of DOM interface to be used
    `java.lang.String[]` | `getUnparsedEntity​(java.lang.String name)` | Get the unparsed entity with a given name
    `java.util.Iterator<java.lang.String>` | `getUnparsedEntityNames()` | Get the list of unparsed entities defined in this document
    `NodeInfo` | `selectID​(java.lang.String id, boolean getParent)` | Get the element with a given ID, if any
    `void` | `setDOMLevel​(int level)` | Set the level of DOM interface to be used
    `DOMNodeWrapper` | `wrap​(org.w3c.dom.Node node)` | Create a wrapper for a node in this document

    - ### Methods inherited from class net.sf.saxon.om.GenericTreeInfo

      `getConfiguration, getDocumentNumber, getPublicId, getRootNode, getSpaceStrippingRule, getSystemId, getUserData, isStreamed, setConfiguration, setDocumentNumber, setRootNode, setSpaceStrippingRule, setSystemId, setUserData`

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

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

    - ### Methods inherited from interface javax.xml.transform.Source

      `isEmpty`

    - ### Methods inherited from interface net.sf.saxon.om.TreeInfo

      `isMutable, isTyped`

- - ### Field Detail

    - #### domLevel3

          protected boolean domLevel3

    - #### docNode

          public final org.w3c.dom.Node docNode

  - ### Constructor Detail

    - #### DocumentWrapper

          public DocumentWrapper​(org.w3c.dom.Node doc,
                                 java.lang.String baseURI,
                                 Configuration config)

      Wrap a DOM Document or DocumentFragment node
      Parameters:
        `doc` - a DOM Document or DocumentFragment node
        `baseURI` - the base URI of the document
        `config` - the Saxon configuration

  - ### Method Detail

    - #### wrap

          public DOMNodeWrapper wrap​(org.w3c.dom.Node node)

      Create a wrapper for a node in this document
      Parameters:
        `node` - the DOM node to be wrapped. This must be a node within the document wrapped by this DocumentWrapper
      Returns:
        the wrapped node
      Throws:
        `java.lang.IllegalArgumentException` - if the node is not a descendant of the Document node wrapped by this DocumentWrapper

    - #### setDOMLevel

          public void setDOMLevel​(int level)

      Set the level of DOM interface to be used
      Parameters:
        `level` - the DOM level. Must be 2 or 3. By default Saxon assumes that DOM level 3 is available; this parameter can be set to the value 2 to indicate that Saxon should not use methods unless they are available in DOM level 2. From Saxon 9.2, this switch remains available, but the use of DOM level 2 is untested and unsupported.

    - #### getDOMLevel

          public int getDOMLevel()

      Get the level of DOM interface to be used
      Returns:
        the DOM level. Always 2 or 3.

    - #### selectID

          public NodeInfo selectID​(java.lang.String id,
                                   boolean getParent)

      Get the element with a given ID, if any
      Specified by:
        `selectID` in interface `TreeInfo`
      Overrides:
        `selectID` in class `GenericTreeInfo`
      Parameters:
        `id` - the required ID value
        `getParent` - true if the parent of the element having the given ID value is required
      Returns:
        a NodeInfo representing the element with the given ID, or null if there is no such element. This implementation does not necessarily conform to the rule that if an invalid document contains two elements with the same ID, the one that comes last should be returned.

    - #### getUnparsedEntityNames

          public java.util.Iterator<java.lang.String> getUnparsedEntityNames()

      Get the list of unparsed entities defined in this document
      Specified by:
        `getUnparsedEntityNames` in interface `TreeInfo`
      Overrides:
        `getUnparsedEntityNames` in class `GenericTreeInfo`
      Returns:
        an Iterator, whose items are of type String, containing the names of all unparsed entities defined in this document. If there are no unparsed entities or if the information is not available then an empty iterator is returned
      Since:
        9.1 (implemented for this subclass since 9.2)

    - #### getUnparsedEntity

          public java.lang.String[] getUnparsedEntity​(java.lang.String name)

      Get the unparsed entity with a given name
      Specified by:
        `getUnparsedEntity` in interface `TreeInfo`
      Overrides:
        `getUnparsedEntity` in class `GenericTreeInfo`
      Parameters:
        `name` - the name of the entity
      Returns:
        if the entity exists, return an array of two Strings, the first holding the system ID of the entity (as an absolute URI if possible), the second holding the public ID if there is one, or null if not. If the entity does not exist, the method returns null. Applications should be written on the assumption that this array may be extended in the future to provide additional information.
      Since:
        8.4 (implemented for this subclass since 9.2)