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:
javax.xml.transform.Source
,javax.xml.transform.SourceLocator
,ActiveSource
,GroundedValue
,Item
,NodeInfo
,Sequence
,Location
,org.xml.sax.Locator
- Direct Known Subclasses:
TinyTextualElement
public class TinyElementImpl extends TinyParentNodeImpl
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
Constructors Constructor Description TinyElementImpl(TinyTree tree, int nodeNr)
Constructor - create a tiny element node
-
Method Summary
All Methods Instance Methods Concrete Methods Modifier and Type Method Description AtomicSequence
atomize()
Get the typed value.protected void
checkNotNamespaceSensitiveElement(SchemaType type, int nodeNr)
Check whether the content of an element is namespace-sensitivevoid
copy(Receiver receiver, int copyOptions, Location location)
Copy this node to a given receiverNamespaceMap
getAllNamespaces()
Get all the namespace bindings that are in-scope for this element.java.lang.String
getAttributeValue(int fp)
Get the value of the attribute with a given fingerprint.java.lang.String
getAttributeValue(java.lang.String uri, java.lang.String local)
Get the string value of a given attribute of this nodejava.lang.String
getBaseURI()
Get the base URI of this element node.NamespaceBinding[]
getDeclaredNamespaces(NamespaceBinding[] buffer)
Get all namespace undeclarations and undeclarations defined on this element.int
getNodeKind()
Return the type of node.SchemaType
getSchemaType()
Get the type annotation of this node, if any.java.lang.String
getURIForPrefix(java.lang.String prefix, boolean useDefault)
Get the namespace URI corresponding to a given prefix.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.boolean
isId()
Determine whether this node has the is-id propertyboolean
isIdref()
Determine whether this node has the is-idref property-
Methods 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, getNodeNumber, getParent, getParentNodeNr, getPrefix, getRoot, getSequenceNumber, getSystemId, getTree, getTreeInfo, getURI, hasFingerprint, hashCode, 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, getPublicId, toShortString
-
Methods inherited from interface net.sf.saxon.om.Sequence
makeRepeatable
-
-
-
-
Constructor Detail
-
TinyElementImpl
public TinyElementImpl(TinyTree tree, int nodeNr)
Constructor - create a tiny element node- Parameters:
tree
- the Tinytree containing the nodenodeNr
- the node number
-
-
Method Detail
-
getNodeKind
public final int getNodeKind()
Return the type of node.- Returns:
- Type.ELEMENT
- See Also:
Type
-
getBaseURI
public java.lang.String 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
public SchemaType 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
public AtomicSequence atomize() throws XPathException
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
public NamespaceBinding[] getDeclaredNamespaces(NamespaceBinding[] buffer)
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
public NamespaceMap 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
public java.lang.String getAttributeValue(java.lang.String uri, java.lang.String local)
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
public java.lang.String getAttributeValue(int fp)
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
public void copy(Receiver receiver, int copyOptions, Location location) throws XPathException
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
protected void checkNotNamespaceSensitiveElement(SchemaType type, int nodeNr) throws XPathException
Check whether the content of an element is namespace-sensitive- Parameters:
type
- the type annotation of the nodenodeNr
- the the node number of the elemente- Throws:
XPathException
- if an error occurs
-
getURIForPrefix
public java.lang.String getURIForPrefix(java.lang.String prefix, boolean useDefault)
Get the namespace URI corresponding to a given prefix. Return null if the prefix is not in scope.- Parameters:
prefix
- the namespace prefix. May be the zero-length string, indicating that there is no prefix. This indicates either the default namespace or the null namespace, depending on the value of useDefault.useDefault
- true if the default namespace is to be used when the prefix is "". If false, the method returns "" when the prefix is "".- Returns:
- the uri for the namespace, or null if the prefix is not in scope. The "null namespace" is represented by the pseudo-URI "".
-
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
-
-