Class TinyDocumentImpl

    • Field Detail

      • charBuffer

        protected char[] charBuffer
      • charBufferLength

        protected int charBufferLength
      • numberOfNodes

        protected int numberOfNodes
      • lastLevelOneNode

        protected int lastLevelOneNode
      • nodeType

        protected byte[] nodeType
      • depth

        protected short[] depth
      • next

        protected int[] next
      • offset

        protected int[] offset
      • length

        protected int[] length
      • nameCode

        protected int[] nameCode
      • prior

        protected int[] prior
      • numberOfAttributes

        protected int numberOfAttributes
      • attParent

        protected int[] attParent
      • attCode

        protected int[] attCode
      • attValue

        protected String[] attValue
      • numberOfNamespaces

        protected int numberOfNamespaces
      • namespaceParent

        protected int[] namespaceParent
      • namespaceCode

        protected int[] namespaceCode
      • nodeNr

        protected int nodeNr
      • parent

        protected com.icl.saxon.tinytree.TinyNodeImpl parent
    • Constructor Detail

      • TinyDocumentImpl

        public TinyDocumentImpl()
    • Method Detail

      • setNamePool

        public void setNamePool​(NamePool pool)
        Set the name pool used for all names in this document
        Specified by:
        setNamePool in interface DocumentInfo
      • ensureNodeCapacity

        protected void ensureNodeCapacity()
      • ensureAttributeCapacity

        protected void ensureAttributeCapacity()
      • ensureNamespaceCapacity

        protected void ensureNamespaceCapacity()
      • addNode

        protected void addNode​(short type0,
                               int depth0,
                               int offset0,
                               int length0,
                               int nameCode0)
      • appendChars

        protected void appendChars​(char[] chars,
                                   int start,
                                   int length)
      • truncate

        protected void truncate​(int nodes)
        Truncate the tree: used in preview mode to delete an element after it has been processed
      • ensurePriorIndex

        protected void ensurePriorIndex()
        On demand, make an index for quick access to preceding-sibling nodes
      • addAttribute

        protected void addAttribute​(int parent0,
                                    int code0,
                                    String type0,
                                    String value0)
      • addNamespace

        protected void addNamespace​(int parent0,
                                    int nscode0)
      • getNode

        public com.icl.saxon.tinytree.TinyNodeImpl getNode​(int nr)
      • getSequenceNumber

        public long getSequenceNumber()
        Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive.
      • getAttributeNode

        protected com.icl.saxon.tinytree.TinyAttributeImpl getAttributeNode​(int nr)
        Make a (transient) attribute node from the array of attributes
      • isUsingNamespaces

        protected boolean isUsingNamespaces()
        determine whether this document uses namespaces
      • getNamespaceNode

        protected com.icl.saxon.tinytree.TinyNamespaceImpl getNamespaceNode​(int nr)
        Make a (transient) namespace node from the array of namespace declarations
      • setSystemId

        public void setSystemId​(String uri)
        Set the system id of this node
        Specified by:
        setSystemId in interface Source
      • getSystemId

        public String getSystemId()
        Get the system id of this root node
        Specified by:
        getSystemId in interface NodeInfo
        Specified by:
        getSystemId in interface Source
        Specified by:
        getSystemId in interface SourceLocator
        Returns:
        the System Identifier of the entity in the source document containing the node, or null if not known. Note this is not the same as the base URI: the base URI can be modified by xml:base, but the system ID cannot.
      • getBaseURI

        public String getBaseURI()
        Get the base URI of this root node. For a root node the base URI is the same as the System ID.
        Specified by:
        getBaseURI in interface Node
        Specified by:
        getBaseURI in interface NodeInfo
      • setSystemId

        protected void setSystemId​(int seq,
                                   String uri)
        Set the system id of an element in the document
      • getSystemId

        protected String getSystemId​(int seq)
        Get the system id of an element in the document
      • setLineNumbering

        public void setLineNumbering()
        Set line numbering on
      • setLineNumber

        protected void setLineNumber​(int sequence,
                                     int line)
        Set the line number for an element. Ignored if line numbering is off.
      • getLineNumber

        protected int getLineNumber​(int sequence)
        Get the line number for an element. Return -1 if line numbering is off.
      • getNodeType

        public final short getNodeType()
        Return the type of node.
        Specified by:
        getNodeType in interface Node
        Specified by:
        getNodeType in interface NodeInfo
        Returns:
        NodeInfo.ROOT (always)
      • getParent

        public NodeInfo getParent()
        Find the parent node of this node.
        Specified by:
        getParent in interface NodeInfo
        Returns:
        The Node object describing the containing element or root node.
      • getDocumentRoot

        public DocumentInfo getDocumentRoot()
        Get the root (document) node
        Specified by:
        getDocumentRoot in interface NodeInfo
        Returns:
        the DocumentInfo representing this document
      • generateId

        public String generateId()
        Get a character string that uniquely identifies this node within the document
        Specified by:
        generateId in interface NodeInfo
        Returns:
        the empty string
      • getAllElements

        protected AxisEnumeration getAllElements​(int fingerprint)
        Get a list of all elements with a given name. This is implemented as a memo function: the first time it is called for a particular element type, it remembers the result for next time.
      • selectID

        public NodeInfo selectID​(String id)
        Get the element with a given ID.
        Specified by:
        selectID in interface DocumentInfo
        Parameters:
        id - The unique ID of the required element, previously registered using registerID()
        Returns:
        The NodeInfo (always an Element) for the given ID if one has been registered, otherwise null.
      • getKeyIndex

        public Hashtable getKeyIndex​(KeyManager keymanager,
                                     int fingerprint)
        Get the index for a given key
        Specified by:
        getKeyIndex in interface DocumentInfo
        Parameters:
        keymanager - The key manager managing this key
        fingerprint - The fingerprint of the name of the key (unique with the key manager)
        Returns:
        The index, if one has been built, in the form of a Hashtable that maps the key value to a set of nodes having that key value. If no index has been built, returns null.
      • setKeyIndex

        public void setKeyIndex​(KeyManager keymanager,
                                int fingerprint,
                                Hashtable keyindex)
        Set the index for a given key. The method is synchronized because the same document can be used by several stylesheets at the same time.
        Specified by:
        setKeyIndex in interface DocumentInfo
        Parameters:
        keymanager - The key manager managing this key
        fingerprint - The fingerprint of the name of the key (unique with the key manager)
        keyindex - the index, in the form of a Hashtable that maps the key value to a set of nodes having that key value. Or the String "under construction", indicating that the index is being built.
      • setUnparsedEntity

        protected void setUnparsedEntity​(String name,
                                         String uri)
        Set an unparsed entity URI associated with this document. For system use only, while building the document.
      • getUnparsedEntity

        public String getUnparsedEntity​(String name)
        Get the unparsed entity with a given name
        Specified by:
        getUnparsedEntity in interface DocumentInfo
        Parameters:
        name - the name of the entity
        Returns:
        the URI of the entity if there is one, or empty string if not
      • diagnosticDump

        public void diagnosticDump()
        Produce diagnostic print of main tree arrays
      • adoptNode

        public Node adoptNode​(Node source)
                       throws DOMException
        Attempts to adopt a node from another document to this document.
        Specified by:
        adoptNode in interface Document
        Parameters:
        source - The node to move into this document.
        Returns:
        The adopted node, or null if this operation fails, such as when the source node comes from a different implementation.
        Throws:
        DOMException - NOT_SUPPORTED_ERR: Raised if the source node is of type DOCUMENT, DOCUMENT_TYPE.
        NO_MODIFICATION_ALLOWED_ERR: Raised when the source node is readonly.
        Since:
        DOM Level 3
      • getDocumentURI

        public String getDocumentURI()
        The location of the document or null if undefined or if the Document was created using DOMImplementation.createDocument. No lexical checking is performed when setting this attribute; this could result in a null value returned when using Node.baseURI .
        Beware that when the Document supports the feature "HTML" [DOM Level 2 HTML] , the href attribute of the HTML BASE element takes precedence over this attribute when computing Node.baseURI.
        Specified by:
        getDocumentURI in interface Document
        Since:
        DOM Level 3
      • getDomConfig

        public DOMConfiguration getDomConfig()
        The configuration used when Document.normalizeDocument() is invoked.
        Specified by:
        getDomConfig in interface Document
        Since:
        DOM Level 3
      • getInputEncoding

        public String getInputEncoding()
        An attribute specifying the encoding used for this document at the time of the parsing. This is null when it is not known, such as when the Document was created in memory.
        Specified by:
        getInputEncoding in interface Document
        Since:
        DOM Level 3
      • getStrictErrorChecking

        public boolean getStrictErrorChecking()
        An attribute specifying whether error checking is enforced or not. When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException on DOM operations or report errors while using Document.normalizeDocument(). In case of error, the behavior is undefined. This attribute is true by default.
        Specified by:
        getStrictErrorChecking in interface Document
        Since:
        DOM Level 3
      • getXmlEncoding

        public String getXmlEncoding()
        An attribute specifying, as part of the XML declaration, the encoding of this document. This is null when unspecified or when it is not known, such as when the Document was created in memory.
        Specified by:
        getXmlEncoding in interface Document
        Since:
        DOM Level 3
      • getXmlStandalone

        public boolean getXmlStandalone()
        An attribute specifying, as part of the XML declaration, whether this document is standalone. This is false when unspecified.

        Note: No verification is done on the value when setting this attribute. Applications should use Document.normalizeDocument() with the "validate" parameter to verify if the value matches the validity constraint for standalone document declaration as defined in [XML 1.0].

        Specified by:
        getXmlStandalone in interface Document
        Since:
        DOM Level 3
      • getXmlVersion

        public String getXmlVersion()
        An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if this document supports the "XML" feature, the value is "1.0".
        Specified by:
        getXmlVersion in interface Document
        Since:
        DOM Level 3
      • normalizeDocument

        public void normalizeDocument()
        This method acts as if the document was going through a save and load cycle, putting the document in a "normal" form.
        Specified by:
        normalizeDocument in interface Document
        Since:
        DOM Level 3
      • renameNode

        public Node renameNode​(Node n,
                               String namespaceURI,
                               String qualifiedName)
                        throws DOMException
        Rename an existing node of type ELEMENT_NODE or ATTRIBUTE_NODE.
        Specified by:
        renameNode in interface Document
        Parameters:
        n - The node to rename.
        namespaceURI - The new namespace URI.
        qualifiedName - The new qualified name.
        Returns:
        The renamed node. This is either the specified node or the new node that was created to replace the specified node.
        Throws:
        DOMException - NOT_SUPPORTED_ERR: Raised when the type of the specified node is neither ELEMENT_NODE nor ATTRIBUTE_NODE, or if the implementation does not support the renaming of the document element.
        INVALID_CHARACTER_ERR: Raised if the new qualified name is not an XML name according to the XML version in use specified in the Document.xmlVersion attribute.
        WRONG_DOCUMENT_ERR: Raised when the specified node was created from a different document than this document.
        NAMESPACE_ERR: Raised if the qualifiedName is a malformed qualified name, if the qualifiedName has a prefix and the namespaceURI is null, or if the qualifiedName has a prefix that is "xml" and the namespaceURI is different from " http://www.w3.org/XML/1998/namespace" [XML Namespaces] . Also raised, when the node being renamed is an attribute, if the qualifiedName, or its prefix, is "xmlns" and the namespaceURI is different from "http://www.w3.org/2000/xmlns/".
        Since:
        DOM Level 3
      • setDocumentURI

        public void setDocumentURI​(String documentURI)
        The location of the document or null if undefined or if the Document was created using DOMImplementation.createDocument. No lexical checking is performed when setting this attribute; this could result in a null value returned when using Node.baseURI .
        Beware that when the Document supports the feature "HTML" [DOM Level 2 HTML] , the href attribute of the HTML BASE element takes precedence over this attribute when computing Node.baseURI.
        Specified by:
        setDocumentURI in interface Document
        Since:
        DOM Level 3
      • setStrictErrorChecking

        public void setStrictErrorChecking​(boolean strictErrorChecking)
        An attribute specifying whether error checking is enforced or not. When set to false, the implementation is free to not test every possible error case normally defined on DOM operations, and not raise any DOMException on DOM operations or report errors while using Document.normalizeDocument(). In case of error, the behavior is undefined. This attribute is true by default.
        Specified by:
        setStrictErrorChecking in interface Document
        Since:
        DOM Level 3
      • setXmlStandalone

        public void setXmlStandalone​(boolean xmlStandalone)
                              throws DOMException
        An attribute specifying, as part of the XML declaration, whether this document is standalone. This is false when unspecified.

        Note: No verification is done on the value when setting this attribute. Applications should use Document.normalizeDocument() with the "validate" parameter to verify if the value matches the validity constraint for standalone document declaration as defined in [XML 1.0].

        Specified by:
        setXmlStandalone in interface Document
        Throws:
        DOMException - NOT_SUPPORTED_ERR: Raised if this document does not support the "XML" feature.
        Since:
        DOM Level 3
      • setXmlVersion

        public void setXmlVersion​(String xmlVersion)
                           throws DOMException
        An attribute specifying, as part of the XML declaration, the version number of this document. If there is no declaration and if this document supports the "XML" feature, the value is "1.0". If this document does not support the "XML" feature, the value is always null. Changing this attribute will affect methods that check for invalid characters in XML names. Application should invoke Document.normalizeDocument() in order to check for invalid characters in the Nodes that are already part of this Document.
        DOM applications may use the DOMImplementation.hasFeature(feature, version) method with parameter values "XMLVersion" and "1.0" (respectively) to determine if an implementation supports [XML 1.0]. DOM applications may use the same method with parameter values "XMLVersion" and "1.1" (respectively) to determine if an implementation supports [XML 1.1]. In both cases, in order to support XML, an implementation must also support the "XML" feature defined in this specification. Document objects supporting a version of the "XMLVersion" feature must not raise a NOT_SUPPORTED_ERR exception for the same version number when using Document.xmlVersion.
        Specified by:
        setXmlVersion in interface Document
        Throws:
        DOMException - NOT_SUPPORTED_ERR: Raised if the version is set to a value that is not supported by this Document or if this document does not support the "XML" feature.
        Since:
        DOM Level 3
      • hasChildNodes

        public boolean hasChildNodes()
        Determine if the node has children.
        Specified by:
        hasChildNodes in interface Node
        Specified by:
        hasChildNodes in interface NodeInfo
        Returns:
        true if this node has any attributes, false otherwise.
      • getStringValue

        public String getStringValue()
        Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
        Returns:
        the accumulated character content of the element, including descendant elements.
      • setParentNode

        protected void setParentNode​(com.icl.saxon.tinytree.TinyNodeImpl parent)
        Set the parent of this node. Providing this information is useful, if it is known, because otherwise getParent() has to search backwards through the document.
      • isSameNodeInfo

        public boolean isSameNodeInfo​(NodeInfo other)
        Determine whether this is the same node as another node
        Specified by:
        isSameNodeInfo in interface NodeInfo
        Specified by:
        isSameNodeInfo in class AbstractNode
        Returns:
        true if this Node object and the supplied Node object represent the same node in the tree.
      • setLineNumber

        public void setLineNumber​(int line)
        Set the line number of the node within its source document entity
      • compareOrder

        public final int compareOrder​(NodeInfo other)
        Determine the relative position of this node and another node, in document order. The other node will always be in the same document.
        Specified by:
        compareOrder in interface NodeInfo
        Specified by:
        compareOrder in class AbstractNode
        Parameters:
        other - The other node, whose position is to be compared with this node
        Returns:
        -1 if this node precedes the other node, +1 if it follows the other node, or 0 if they are the same node. (In this case, isSameNode() will always return true, and the two nodes will produce the same result for generateId())
      • getPrefix

        public String getPrefix()
        Get the prefix part of the name of this node. This is the name before the ":" if any.
        Specified by:
        getPrefix in interface Node
        Specified by:
        getPrefix in interface NodeInfo
        Specified by:
        getPrefix in class AbstractNode
        Returns:
        the prefix part of the name. For an unnamed node, return "".
      • getURI

        public String getURI()
        Get the URI part of the name of this node. This is the URI corresponding to the prefix, or the URI of the default namespace if appropriate.
        Specified by:
        getURI in interface NodeInfo
        Specified by:
        getURI in class AbstractNode
        Returns:
        The URI of the namespace of this node. For an unnamed node, or for an element or attribute in the default namespace, return an empty string.
      • getDisplayName

        public String getDisplayName()
        Get the display name of this node. For elements and attributes this is [prefix:]localname. For unnamed nodes, it is an empty string.
        Specified by:
        getDisplayName in interface NodeInfo
        Overrides:
        getDisplayName in class AbstractNode
        Returns:
        The display name of this node. For a node with no name, return an empty string.
      • getEnumeration

        public AxisEnumeration getEnumeration​(byte axisNumber,
                                              NodeTest nodeTest)
        Return an enumeration over the nodes reached by the given axis from this node
        Specified by:
        getEnumeration in interface NodeInfo
        Specified by:
        getEnumeration in class AbstractNode
        Parameters:
        axisNumber - Identifies the required axis, eg. Axis.CHILD or Axis.PARENT
        nodeTest - A pattern to be matched by the returned nodes
        Returns:
        a AxisEnumeration that scans the nodes reached by the axis in turn.
      • hasAttributes

        public boolean hasAttributes()
        Returns whether this node has any attributes.
        Specified by:
        hasAttributes in interface Node
        Specified by:
        hasAttributes in class AbstractNode
        Returns:
        true if this node has any attributes, false otherwise.
        Since:
        DOM Level 2
      • getAttributeValue

        public String getAttributeValue​(String uri,
                                        String localName)
        Find the value of a given attribute of this node.
        This method is defined on all nodes to meet XSL requirements, but for nodes other than elements it will always return null.
        Specified by:
        getAttributeValue in interface NodeInfo
        Specified by:
        getAttributeValue in class AbstractNode
        Parameters:
        uri - the namespace uri of an attribute
        localName - the local name of an attribute
        Returns:
        the value of the attribute, if it exists, otherwise null
      • getAttributeValue

        public String getAttributeValue​(int fingerprint)
        Get the value of a given attribute of this node
        Specified by:
        getAttributeValue in interface NodeInfo
        Specified by:
        getAttributeValue in class AbstractNode
        Parameters:
        fingerprint - The fingerprint of the attribute name
        Returns:
        the attribute value if it exists or null if not
      • outputNamespaceNodes

        public void outputNamespaceNodes​(Outputter out,
                                         boolean includeAncestors)
                                  throws TransformerException
        Output all namespace nodes associated with this element. Does nothing if the node is not an element.
        Specified by:
        outputNamespaceNodes in interface NodeInfo
        Overrides:
        outputNamespaceNodes in class AbstractNode
        Parameters:
        out - The relevant outputter
        includeAncestors - True if namespaces declared on ancestor elements must be output; false if it is known that these are already on the result tree
        Throws:
        TransformerException