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