biz.c24.io.api.data.saxon
Class SimpleElementNode

java.lang.Object
  extended by biz.c24.io.api.data.saxon.ElementNode
      extended by biz.c24.io.api.data.saxon.SimpleElementNode
All Implemented Interfaces:
ComponentNode, DataNode, Node, Source, net.sf.saxon.evpull.PullEvent, net.sf.saxon.om.Item, net.sf.saxon.om.NodeInfo, net.sf.saxon.om.ValueRepresentation

public class SimpleElementNode
extends ElementNode

An element node described in the schema as having a simple type. The information about a simple element in the C24 Integreation Objects model is dispersed: we need the value of the element, a pointer to the parent element, a pointer to the type information, and an indicator of the position of this element relative to its siblings.


Field Summary
 
Fields inherited from interface net.sf.saxon.om.NodeInfo
ALL_NAMESPACES, EMPTY_NAMESPACE_LIST, IS_DTD_TYPE, IS_NILLED, LOCAL_NAMESPACES, NO_NAMESPACES
 
Fields inherited from interface net.sf.saxon.om.ValueRepresentation
EMPTY_VALUE_ARRAY
 
Method Summary
 net.sf.saxon.value.Value atomize()
          Get the typed value.
 boolean equals(Object obj)
          Indicates whether some other object is "equal to" this one.
 String getAttributeValue(int fingerprint)
          Get the string value of a given attribute of this node
 int[] getDeclaredNamespaces(int[] buffer)
          Get all namespace declarations and undeclarations defined on this element.
 String getLocalPart()
          Get the local part of the name of this node.
 net.sf.saxon.om.NodeInfo getParent()
          Get the NodeInfo object representing the parent of this node
 String getPrefix()
          Get the prefix of the name of the node.
 CharSequence getStringValueCS()
          Get the string value of the item as a CharSequence.
 int getTypeAnnotation()
          Get the type annotation of this node, if any.
 DataComponent getUnderlyingComponent()
           
 Object getUnderlyingObject()
          Returns the underlying object, such as the String, Integer, Date, or ComplexDataObject.
 String getURI()
          Get the URI part of the name of this node.
 boolean hasChildNodes()
          Determine whether the node has any children.
 int hashCode()
          Returns a hash code value for the object.
 boolean isSameNodeInfo(net.sf.saxon.om.NodeInfo other)
          Determine whether this is the same node as another node.
 net.sf.saxon.om.AxisIterator iterateAxis(byte axisNumber, net.sf.saxon.pattern.NodeTest nodeTest)
          Return an iteration over all the nodes reached by the given axis from this node that match a given NodeTest
 
Methods inherited from class biz.c24.io.api.data.saxon.ElementNode
compareOrder, copy, generateId, getBaseURI, getConfiguration, getDisplayName, getDocumentNumber, getDocumentRoot, getFingerprint, getLineNumber, getNameCode, getNamePool, getNodeKind, getRelativePosition, getRoot, getStringValue, getSystemId, getTypedValue, iterateAxis, setSystemId
 
Methods inherited from class java.lang.Object
clone, finalize, getClass, notify, notifyAll, toString, wait, wait, wait
 

Method Detail

getUnderlyingObject

public Object getUnderlyingObject()
Description copied from interface: DataNode
Returns the underlying object, such as the String, Integer, Date, or ComplexDataObject.

Returns:
The underlying object.

getUnderlyingComponent

public DataComponent getUnderlyingComponent()

atomize

public net.sf.saxon.value.Value atomize()
Get the typed value. The result of this method will always be consistent with the method Item.getTypedValue(). However, this method is often more convenient and may be more efficient, especially in the common case where the value is expected to be a singleton.

Returns:
the typed value. This will either be a single AtomicValue or a Value whose items are atomic values.
Since:
8.5

getAttributeValue

public String getAttributeValue(int fingerprint)
Get the string value of a given attribute of this node

Parameters:
fingerprint - The fingerprint 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:
8.4

getLocalPart

public String getLocalPart()
Get the local part of the name of this node. This is the name after the ":" if any.

Returns:
the local part of the name. For an unnamed node, returns "". Unlike the DOM interface, this returns the full name in the case of a non-namespaced name.
Since:
8.4

getParent

public net.sf.saxon.om.NodeInfo getParent()
Get the NodeInfo object representing the parent of this node

Returns:
the parent of this node; null if this node has no parent
Since:
8.4

getPrefix

public String getPrefix()
Get the prefix of the name of the node. This is defined only for elements and attributes. If the node has no prefix, or for other kinds of node, returns a zero-length string.

Returns:
The prefix of the name of the node. For the C24 Integreation Objects implementation this is not necessarily the prefix used in the original source XML: it may be a different prefix that is bound to the same namespace URI.
Since:
8.4

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.

Returns:
The URI of the namespace of this node. For an unnamed node, or for an element or attribute that is not in a namespace, or for a processing instruction, returns an empty string.
Since:
8.4

getDeclaredNamespaces

public int[] getDeclaredNamespaces(int[] buffer)
Get all namespace declarations and undeclarations defined on this element.

This method is intended primarily for internal use. User applications needing information about the namespace context of a node should use iterateAxis(Axis.NAMESPACE).

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 integers 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 codes, whose meaning may be interpreted by reference to the name pool. The top half word of each namespace code represents the prefix, the bottom half represents the URI. If the bottom half is zero, 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 -1.

For a node other than an element, the method returns null.


hasChildNodes

public boolean hasChildNodes()
Determine whether the node has any children.

Note: the result is equivalent to
iterateAxis(Axis.CHILD).next() != null

Returns:
True if the node has one or more children
Since:
8.4

getTypeAnnotation

public int getTypeAnnotation()
Get the type annotation of this node, if any. The type annotation is represented as an integer; this is the fingerprint of the name of the type, as defined in the name pool. Anonymous types are given a system-defined name. The value of the type annotation can be used to retrieve the actual schema type definition using the method Configuration.getSchemaType(int).

The bit IS_DTD_TYPE (1<<30) will be set in the case of an attribute node if the type annotation is one of ID, IDREF, or IDREFS and this is derived from DTD rather than schema validation.

Returns:
the type annotation of the node, under the mask NamePool.FP_MASK, and optionally the bit setting IS_DTD_TYPE in the case of a DTD-derived ID or IDREF/S type (which is treated as untypedAtomic for the purposes of obtaining the typed value).

The result is undefined for nodes other than elements and attributes.

Since:
8.4

isSameNodeInfo

public boolean isSameNodeInfo(net.sf.saxon.om.NodeInfo other)
Determine whether this is the same node as another node.

Note that two different NodeInfo instances can represent the same conceptual node. Therefore the "==" operator should not be used to test node identity. The equals() method is not overridden for nodes, so it has the same effect as using "==".

Note: a.isSameNodeInfo(b) if and only if generateId(a)==generateId(b).

This method has the same semantics as isSameNode() in DOM Level 3, but works on Saxon NodeInfo objects rather than DOM Node objects.

Parameters:
other - the node to be compared with this node
Returns:
true if this NodeInfo object and the supplied NodeInfo object represent the same node in the tree.

equals

public boolean equals(Object obj)
Indicates whether some other object is "equal to" this one.

equals() returns the same result as isSameNodeInfo(): true if the two objects represent the same node

Specified by:
equals in interface net.sf.saxon.om.NodeInfo
Overrides:
equals in class Object
Parameters:
obj - the reference object with which to compare.
Returns:
true if this object is the same as the obj argument; false otherwise.
See Also:
hashCode()

hashCode

public int hashCode()
Returns a hash code value for the object.

Specified by:
hashCode in interface net.sf.saxon.om.NodeInfo
Overrides:
hashCode in class Object
Returns:
a hash code value for this object.
See Also:
Object.equals(Object)

iterateAxis

public net.sf.saxon.om.AxisIterator iterateAxis(byte axisNumber,
                                                net.sf.saxon.pattern.NodeTest nodeTest)
Return an iteration over all the nodes reached by the given axis from this node that match a given NodeTest

Parameters:
axisNumber - an integer identifying the axis; one of the constants defined in class Axis
nodeTest - A pattern to be matched by the returned nodes; nodes that do not match this pattern are not included in the result
Returns:
a NodeEnumeration that scans the nodes reached by the axis in turn.
Throws:
UnsupportedOperationException - if the namespace axis is requested and this axis is not supported for this implementation.
Since:
8.4
See Also:
Axis

getStringValueCS

public CharSequence getStringValueCS()
Get the string value of the item as a CharSequence. This is in some cases more efficient than the version of the method that returns a String. The method satisfies the rule that X.getStringValueCS().toString() returns a string that is equal to X.getStringValue().

Note that two CharSequence values of different types should not be compared using equals(), and for the same reason they should not be used as a key in a hash table.

If the calling code can handle any CharSequence, this method should be used. If the caller requires a string, the ElementNode.getStringValue() method is preferred.

Returns:
the string value of the item
Since:
8.4
See Also:
ElementNode.getStringValue()


C24 Technologies © 2002-2012: All Rights Reserved.