Package net.sf.saxon.tree.tiny
Class TinyElementImpl
java.lang.Object
net.sf.saxon.tree.tiny.TinyNodeImpl
net.sf.saxon.tree.tiny.TinyParentNodeImpl
net.sf.saxon.tree.tiny.TinyElementImpl
- All Implemented Interfaces:
Source
,SourceLocator
,ActiveSource
,GroundedValue
,Item
,NodeInfo
,Sequence
,Location
,Locator
- Direct Known Subclasses:
TinyTextualElement
A node in the XML parse tree representing an XML element.
This class is an implementation of NodeInfo. The object is a wrapper around one entry in the arrays maintained by the TinyTree. Note that the same node might be represented by different TinyElementImpl objects at different times.
-
Field Summary
Fields inherited from class net.sf.saxon.tree.tiny.TinyNodeImpl
NODE_LETTER, nodeNr, parent, tree
-
Constructor Summary
ConstructorsConstructorDescriptionTinyElementImpl
(TinyTree tree, int nodeNr) Constructor - create a tiny element node -
Method Summary
Modifier and TypeMethodDescriptionatomize()
Get the typed value.protected void
checkNotNamespaceSensitiveElement
(SchemaType type, int nodeNr) Check whether the content of an element is namespace-sensitivevoid
Copy this node to a given receiverGet all the namespace bindings that are in-scope for this element.getAttributeValue
(int fp) Get the value of the attribute with a given fingerprint.getAttributeValue
(NamespaceUri uri, String local) Get the string value of a given attribute of this nodeGet the base URI of this element node.getDeclaredNamespaces
(NamespaceBinding[] buffer) Get all namespace undeclarations and undeclarations defined on this element.final int
Return the type of node.Get the type annotation of this node, if any.boolean
Ask whether the element is the root of a subtree in which no descendant element has any local namespace declarations or undeclarations; that is, all elements in the subtree have the same in-scope namespace bindings.boolean
isId()
Determine whether this node has the is-id propertyboolean
isIdref()
Determine whether this node has the is-idref propertyMethods inherited from class net.sf.saxon.tree.tiny.TinyParentNodeImpl
getStringValue, getUnicodeStringValue, hasChildNodes
Methods inherited from class net.sf.saxon.tree.tiny.TinyNodeImpl
compareOrder, equals, generateId, getColumnNumber, getConfiguration, getDisplayName, getFingerprint, getGenre, getLineNumber, getLocalPart, getNamePool, getNamespaceUri, getNodeNumber, getParent, getParentNodeNr, getPrefix, getRoot, getSequenceNumber, getSystemId, getTree, getTreeInfo, hasFingerprint, hashCode, hasURI, head, isAncestorOrSelf, isNilled, isSameNodeInfo, isStreamed, iterateAxis, iterateAxis, saveLocation, setParentNode, setSystemId
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface net.sf.saxon.om.GroundedValue
asIterable, concatenate, containsNode, effectiveBooleanValue, materialize
Methods inherited from interface net.sf.saxon.om.Item
getLength, getStringValue, itemAt, iterate, reduce, subsequence
Methods inherited from interface net.sf.saxon.om.NodeInfo
asActiveSource, attributes, children, children, deliver, getAttributeValue, getPublicId, getURI, toShortString
Methods inherited from interface net.sf.saxon.om.Sequence
makeRepeatable
-
Constructor Details
-
TinyElementImpl
Constructor - create a tiny element node- Parameters:
tree
- the Tinytree containing the nodenodeNr
- the node number
-
-
Method Details
-
getNodeKind
public final int getNodeKind()Return the type of node.- Returns:
- Type.ELEMENT
- See Also:
-
getBaseURI
Get the base URI of this element node. This will be the same as the System ID unless xml:base has been used.- Specified by:
getBaseURI
in interfaceNodeInfo
- Overrides:
getBaseURI
in classTinyNodeImpl
- Returns:
- the base URI of the node. This may be null if the base URI is unknown, including the case where the node has no parent.
-
getSchemaType
Get the type annotation of this node, if any. The type annotation is represented as SchemaType object.Types derived from a DTD are not reflected in the result of this method.
- Specified by:
getSchemaType
in interfaceNodeInfo
- Overrides:
getSchemaType
in classTinyNodeImpl
- Returns:
- For element and attribute nodes: the type annotation derived from schema validation (defaulting to xs:untyped and xs:untypedAtomic in the absence of schema validation). For comments, text nodes, processing instructions, and namespaces: null. For document nodes, either xs:untyped if the document has not been validated, or xs:anyType if it has.
- Since:
- 9.4
-
atomize
Get the typed value.- Returns:
- the typed value. It will be a Value representing a sequence whose items are atomic values.
- Throws:
XPathException
- if the node has no typed value, for example if it is an element node with element-only content
-
getDeclaredNamespaces
Get all namespace undeclarations and undeclarations defined on this element.- Specified by:
getDeclaredNamespaces
in interfaceNodeInfo
- Overrides:
getDeclaredNamespaces
in classTinyNodeImpl
- Parameters:
buffer
- If this is non-null, and the result array fits in this buffer, then the result may overwrite the contents of this array, to avoid the cost of allocating a new array on the heap.- Returns:
- An array of objects representing the namespace declarations and undeclarations present on this element. For a node other than an element, return null. Otherwise, the returned array is a sequence of namespace binding objects (essentially prefix/uri pairs) If the URI is null, then this is a namespace undeclaration rather than a declaration. The XML namespace is never included in the list. If the supplied array is larger than required, then the first unused entry will be set to null.
-
getAllNamespaces
Description copied from class:TinyNodeImpl
Get all the namespace bindings that are in-scope for this element.For an element return all the prefix-to-uri bindings that are in scope. This may include a binding to the default namespace (represented by a prefix of ""). It will never include "undeclarations" - that is, the namespace URI will never be empty; the effect of an undeclaration is to remove a binding from the in-scope namespaces, not to add anything.
For a node other than an element, returns null.
- Specified by:
getAllNamespaces
in interfaceNodeInfo
- Overrides:
getAllNamespaces
in classTinyNodeImpl
- Returns:
- the in-scope namespaces for an element, or null for any other kind of node.
-
hasUniformNamespaces
public boolean hasUniformNamespaces()Ask whether the element is the root of a subtree in which no descendant element has any local namespace declarations or undeclarations; that is, all elements in the subtree have the same in-scope namespace bindings.- Returns:
- true if it is known that no descendant elements have in-scope namespaces different from those of this element.
-
getAttributeValue
Get the string value of a given attribute of this node- Specified by:
getAttributeValue
in interfaceNodeInfo
- Overrides:
getAttributeValue
in classTinyNodeImpl
- Parameters:
uri
- the namespace URI of the attribute name. Supply the empty string for an attribute that is in no namespacelocal
- the local part of the attribute name.- Returns:
- the attribute value if it exists, or null if it does not exist. Always returns null if this node is not an element.
- Since:
- 9.4
-
getAttributeValue
Get the value of the attribute with a given fingerprint.- Parameters:
fp
- the fingerprint of the required attribute- Returns:
- the string value of the attribute if present, or null if absent
-
copy
Copy this node to a given receiver- Parameters:
receiver
- the destination of the copycopyOptions
- determines handling of namespaces, etclocation
- location information associated with the event- Throws:
XPathException
- if any downstream error occurs
-
checkNotNamespaceSensitiveElement
Check whether the content of an element is namespace-sensitive- Parameters:
type
- the type annotation of the nodenodeNr
- the node number of the element- Throws:
XPathException
- if an error occurs
-
isId
public boolean isId()Determine whether this node has the is-id property- Specified by:
isId
in interfaceNodeInfo
- Overrides:
isId
in classTinyNodeImpl
- Returns:
- true if the node is an ID
-
isIdref
public boolean isIdref()Determine whether this node has the is-idref property- Specified by:
isIdref
in interfaceNodeInfo
- Overrides:
isIdref
in classTinyNodeImpl
- Returns:
- true if the node is an IDREF or IDREFS element or attribute
-