com.icl.saxon.tree
Class NamespaceImpl

java.lang.Object
  |
  +--com.icl.saxon.tree.NodeImpl
        |
        +--com.icl.saxon.tree.NamespaceImpl
All Implemented Interfaces:
NamespaceInfo, org.w3c.dom.Node, NodeInfo

public final class NamespaceImpl
extends com.icl.saxon.tree.NodeImpl
implements NamespaceInfo

A node in the XML parse tree representing a Namespace. Note that this is generated only "on demand", when the namespace axis is expanded.


Field Summary
protected static NodeInfo[] emptyArray
           
protected static SingletonEnumeration emptyEnumeration
           
protected  int index
           
protected  com.icl.saxon.tree.ParentNodeImpl parent
           
 
Fields inherited from interface com.icl.saxon.om.NodeInfo
ATTRIBUTE, COMMENT, ELEMENT, NAMESPACE, NODE, NODE_TYPE_NAMES, NONE, NUMBER_OF_TYPES, PI, ROOT, TEXT
 
Fields inherited from interface org.w3c.dom.Node
ATTRIBUTE_NODE, CDATA_SECTION_NODE, COMMENT_NODE, DOCUMENT_FRAGMENT_NODE, DOCUMENT_NODE, DOCUMENT_TYPE_NODE, ELEMENT_NODE, ENTITY_NODE, ENTITY_REFERENCE_NODE, NOTATION_NODE, PROCESSING_INSTRUCTION_NODE, TEXT_NODE
 
Constructor Summary
NamespaceImpl(ElementImpl element, int nsCode, int index)
          Construct a Namespace node
 
Method Summary
 org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
          Adds the node newChild to the end of the list of children of this node.
 org.w3c.dom.Node cloneNode(boolean deep)
          Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes.
 void copy(Outputter out)
          Copy this node to a given outputter
 void copyStringValue(Outputter out)
          Copy the string-value of this node to a given outputter
 void defaultAction(Context c)
          Perform default action for this kind of node (built-in template rule)
protected  void disallowUpdate()
          Internal method used to indicate that update operations are not allowed
 NodeEnumeration enumerateChildren()
          Get an enumeration of the children of this node
 NodeInfo[] getAllChildNodes()
          Get all child nodes of the node - default implementation used for leaf nodes
 org.w3c.dom.NamedNodeMap getAttributes()
          Return a NamedNodeMap containing the attributes of this node (if it is an Element ) or null otherwise.
 java.lang.String getAttributeValue(int fingerprint)
          Get the value of a given attribute of this node
 java.lang.String getAttributeValue(java.lang.String name)
          Find the value of a given attribute of this node.
 java.lang.String getAttributeValue(java.lang.String uri, java.lang.String localName)
          Find the value of a given attribute of this node.
 org.w3c.dom.NodeList getChildNodes()
          Return a NodeList that contains all children of this node.
 java.lang.String getDisplayName()
          Get the display name of this node.
 org.w3c.dom.Element getDocumentElement()
          Get the outermost element.
 DocumentInfo getDocumentRoot()
          Get the root (document) node
 int getFingerprint()
          Get the fingerprint of the node.
 org.w3c.dom.Node getFirstChild()
          Get first child - default implementation used for leaf nodes
 int getIndex()
          Get the index of this node, i.e.
 org.w3c.dom.Node getLastChild()
          Get last child - default implementation used for leaf nodes
 int getLineNumber()
          Get the line number of the node within its source document entity
 java.lang.String getLocalName()
          Get the local name of this node.
 int getNameCode()
          Get the namecode for this name.
 NamePool getNamePool()
          Get the NamePool
 int getNamespaceCode()
          Get the namespace code for this prefix/uri pair.
 java.lang.String getNamespacePrefix()
          Get the prefix of the namespace that this node relates to
 java.lang.String getNamespaceURI()
          Get the uri of the namespace that this node relates to
 NodeInfo getNextInDocument()
          Get the next node in document order.
 NodeInfo getNextInDocument(NodeInfo anchor)
          Get the next node in document order
 org.w3c.dom.Node getNextSibling()
          Get next sibling - not defined for namespace nodes
 java.lang.String getNodeName()
          Get the name of this node, following the DOM rules (which aren't actually defined for Namespace nodes...)
 short getNodeType()
          Return the type of node.
 java.lang.String getNodeValue()
          Get the node value as defined in the DOM.
 int getNumberOfChildren()
          Get the number of children.
 org.w3c.dom.Document getOwnerDocument()
          Return the Document object associated with this node.
 org.w3c.dom.Node getParentNode()
          Find the parent node of this node.
 java.lang.String getPath()
          Generate a path to this node
 java.lang.String getPrefix()
          Get the prefix part of the name of this node.
 NodeInfo getPreviousInDocument()
          Get the previous node in document order.
 org.w3c.dom.Node getPreviousSibling()
          Get previous sibling - not defined for namespace nodes
 java.lang.String getPublicId()
          Get the public identifier of the document entity containing this node.
 long getSequenceNumber()
          Get the node sequence number (in document order).
 java.lang.String getSequentialKey()
          Get sequential key.
 java.lang.String getSystemId()
          Get the base URL for the node.
 java.lang.String getURI()
          Get the URI part of the name of this node.
 short getURICode()
          Get URI code.
 java.lang.String getValue()
          Return the string value of the node.
 boolean hasAttributes()
          Returns whether this node (if it is an element) has any attributes.
 boolean hasChildNodes()
          Determine whether the node has any children.
 org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild, org.w3c.dom.Node refChild)
          Insert the node newChild before the existing child node refChild.
 boolean isa(int nodeType)
          Determine whether the node is of a given type.
 boolean isDocumentElement()
          Determine whether this node is the outermost element.
 boolean isSameNode(NodeInfo other)
          Determine whether this is the same node as another node
 boolean isSupported(java.lang.String feature, java.lang.String version)
          Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.
 void normalize()
          Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.
 org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild)
          Remove the child node indicated by oldChild from the list of children, and returns it.
 void removeNode()
          Remove this node from the tree.
 org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild, org.w3c.dom.Node oldChild)
          Replace the child node oldChild with newChild in the list of children, and returns the oldChild node.
 void setNamespaceCode(int nsCode)
          Change the uri of the namespace that this node relates to (used to implement xsl:namespace-alias)
 void setNodeValue(java.lang.String nodeValue)
          Set the node value.
 void setPrefix(java.lang.String prefix)
          Set the namespace prefix of this node.
 java.lang.String toString()
          Diagnostic output
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, wait, wait, wait
 
Methods inherited from interface com.icl.saxon.om.NodeInfo
copyStringValue, enumerateChildren, getAllChildNodes, getAttributeValue, getAttributeValue, getAttributeValue, getDisplayName, getDocumentElement, getDocumentRoot, getFingerprint, getIndex, getLineNumber, getLocalName, getNextInDocument, getNumberOfChildren, getPrefix, getSystemId, getURI, getURICode, isDocumentElement
 
Methods inherited from interface org.w3c.dom.Node
appendChild, cloneNode, getAttributes, getChildNodes, getFirstChild, getLastChild, getNodeValue, getOwnerDocument, getParentNode, hasAttributes, hasChildNodes, insertBefore, isSupported, normalize, removeChild, replaceChild, setNodeValue, setPrefix
 

Field Detail

emptyArray

protected static NodeInfo[] emptyArray

emptyEnumeration

protected static SingletonEnumeration emptyEnumeration

parent

protected com.icl.saxon.tree.ParentNodeImpl parent

index

protected int index
Constructor Detail

NamespaceImpl

public NamespaceImpl(ElementImpl element,
                     int nsCode,
                     int index)
              throws org.xml.sax.SAXException
Construct a Namespace node
Parameters:
element - The element owning the namespace node
nsCode - The namespace code
index - Integer identifying this namespace node among the nodes for its parent
Method Detail

getNameCode

public int getNameCode()
Get the namecode for this name. Not the same as the namespace code!
Specified by:
getNameCode in interface NodeInfo
Overrides:
getNameCode in class com.icl.saxon.tree.NodeImpl

getNamespaceCode

public int getNamespaceCode()
Get the namespace code for this prefix/uri pair. Not the same as the name code!
Specified by:
getNamespaceCode in interface NamespaceInfo

isSameNode

public boolean isSameNode(NodeInfo other)
Determine whether this is the same node as another node
Specified by:
isSameNode in interface NodeInfo
Overrides:
isSameNode in class com.icl.saxon.tree.NodeImpl
Returns:
true if this Node object and the supplied Node object represent the same node in the tree.

getNamespacePrefix

public java.lang.String getNamespacePrefix()
Get the prefix of the namespace that this node relates to
Specified by:
getNamespacePrefix in interface NamespaceInfo

getNamespaceURI

public java.lang.String getNamespaceURI()
Get the uri of the namespace that this node relates to
Specified by:
getNamespaceURI in interface NamespaceInfo
Overrides:
getNamespaceURI in class com.icl.saxon.tree.NodeImpl

setNamespaceCode

public void setNamespaceCode(int nsCode)
Change the uri of the namespace that this node relates to (used to implement xsl:namespace-alias)

getNodeType

public final short getNodeType()
Return the type of node.
Specified by:
getNodeType in interface NodeInfo
Returns:
NodeInfo.NAMESPACE

getValue

public java.lang.String getValue()
Return the string value of the node.
Specified by:
getValue in interface NodeInfo
Returns:
the namespace uri

getNodeName

public java.lang.String getNodeName()
Get the name of this node, following the DOM rules (which aren't actually defined for Namespace nodes...)
Specified by:
getNodeName in interface NodeInfo
Overrides:
getNodeName in class com.icl.saxon.tree.NodeImpl
Returns:
the namespace prefix

getNextSibling

public org.w3c.dom.Node getNextSibling()
Get next sibling - not defined for namespace nodes
Specified by:
getNextSibling in interface org.w3c.dom.Node
Overrides:
getNextSibling in class com.icl.saxon.tree.NodeImpl
Following copied from class: com.icl.saxon.tree.NodeImpl
Returns:
The next sibling node of the required type. Returns null if the current node is the last child of its parent.

getPreviousSibling

public org.w3c.dom.Node getPreviousSibling()
Get previous sibling - not defined for namespace nodes
Specified by:
getPreviousSibling in interface org.w3c.dom.Node
Overrides:
getPreviousSibling in class com.icl.saxon.tree.NodeImpl
Following copied from class: com.icl.saxon.tree.NodeImpl
Returns:
The previous sibling node. Returns null if the current node is the first child of its parent.

getPreviousInDocument

public NodeInfo getPreviousInDocument()
Get the previous node in document order. Not supported for namespace nodes.
Specified by:
getPreviousInDocument in interface NodeInfo
Overrides:
getPreviousInDocument in class com.icl.saxon.tree.NodeImpl
Following copied from interface: com.icl.saxon.om.NodeInfo
Returns:
the previous node in the document, or null if there is no such node

getNextInDocument

public NodeInfo getNextInDocument()
Get the next node in document order. Not supported for namespace nodes.
Throws:
SAXException, - always

getSequentialKey

public java.lang.String getSequentialKey()
Get sequential key. Returns key of owning element with the namespace prefix as a suffix
Specified by:
getSequentialKey in interface NodeInfo
Overrides:
getSequentialKey in class com.icl.saxon.tree.NodeImpl
Following copied from interface: com.icl.saxon.om.NodeInfo
Returns:
a string.

copy

public void copy(Outputter out)
          throws org.xml.sax.SAXException
Copy this node to a given outputter
Specified by:
copy in interface NodeInfo

defaultAction

public void defaultAction(Context c)
Perform default action for this kind of node (built-in template rule)
Specified by:
defaultAction in interface NodeInfo

getSequenceNumber

public long getSequenceNumber()
Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive. In the current implementation, parent nodes (elements and roots) have a zero least-significant word, while namespaces, attributes, text nodes, comments, and PIs have the top word the same as their owner and the bottom half reflecting their relative position.
Specified by:
getSequenceNumber in interface NodeInfo
Overrides:
getSequenceNumber in class com.icl.saxon.tree.NodeImpl

getPath

public java.lang.String getPath()
Generate a path to this node
Specified by:
getPath in interface NodeInfo

toString

public java.lang.String toString()
Diagnostic output
Overrides:
toString in class com.icl.saxon.tree.NodeImpl

getFingerprint

public int getFingerprint()
Get the fingerprint of the node. This is used to compare whether two nodes have equivalent names.
Specified by:
getFingerprint in interface NodeInfo

getSystemId

public java.lang.String getSystemId()
Get the base URL for the node. Default implementation for child nodes.
Specified by:
getSystemId in interface NodeInfo
Following copied from interface: com.icl.saxon.om.NodeInfo
Returns:
the System Identifier of the entity in the source document containing the node, or null if not known

getNamePool

public NamePool getNamePool()
Get the NamePool

getPrefix

public java.lang.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 NodeInfo
Returns:
the prefix part of the name. For an unnamed node, return an empty string.

getURI

public java.lang.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
Returns:
The URI of the namespace of this node. For the default namespace, return an empty string. For an unnamed node, return null.

getURICode

public short getURICode()
Get URI code. This is a number that uniquely identifies the namespace URI of the node, within its NamePool
Specified by:
getURICode in interface NodeInfo

getDisplayName

public java.lang.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
Returns:
The display name of this node. For a node with no name, return an empty string.

getLocalName

public java.lang.String getLocalName()
Get the local name of this node.
Specified by:
getLocalName in interface NodeInfo
Returns:
The local name of this node. For a node with no name, return an empty string.

getLineNumber

public int getLineNumber()
Get the line number of the node within its source document entity
Specified by:
getLineNumber in interface NodeInfo
Following copied from interface: com.icl.saxon.om.NodeInfo
Returns:
the line number of the node in its original source document; or -1 if not available

getPublicId

public java.lang.String getPublicId()
Get the public identifier of the document entity containing this node. This is not currently maintained: return null

getIndex

public final int getIndex()
Get the index of this node, i.e. its position among its siblings
Specified by:
getIndex in interface NodeInfo
Following copied from interface: com.icl.saxon.om.NodeInfo
Returns:
the number of preceding sibling nodes at the same level

getParentNode

public final org.w3c.dom.Node getParentNode()
Find the parent node of this node.
Specified by:
getParentNode in interface org.w3c.dom.Node
Returns:
The Node object describing the containing element or root node.

getFirstChild

public org.w3c.dom.Node getFirstChild()
Get first child - default implementation used for leaf nodes
Specified by:
getFirstChild in interface org.w3c.dom.Node
Returns:
null

getLastChild

public org.w3c.dom.Node getLastChild()
Get last child - default implementation used for leaf nodes
Specified by:
getLastChild in interface org.w3c.dom.Node
Returns:
null

getNumberOfChildren

public int getNumberOfChildren()
Get the number of children.
Specified by:
getNumberOfChildren in interface NodeInfo

getAllChildNodes

public NodeInfo[] getAllChildNodes()
Get all child nodes of the node - default implementation used for leaf nodes
Specified by:
getAllChildNodes in interface NodeInfo
Returns:
an empty array

enumerateChildren

public NodeEnumeration enumerateChildren()
Get an enumeration of the children of this node
Specified by:
enumerateChildren in interface NodeInfo

isa

public final boolean isa(int nodeType)
Determine whether the node is of a given type.

Note, this can also be done by testing the node using "instanceof". But this is inconvenient when passing the class as a parameter to another routine.

Parameters:
nodeType - One of the specific node types such as ELEMENT or TEXT, or the general node type NODE
Returns:
true if the node is an instance of the specified node type

hasAttributes

public boolean hasAttributes()
Returns whether this node (if it is an element) has any attributes.
Specified by:
hasAttributes in interface org.w3c.dom.Node
Returns:
true if this node has any attributes, false otherwise.
Since:
DOM Level 2

getAttributeValue

public java.lang.String getAttributeValue(java.lang.String uri,
                                          java.lang.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
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 java.lang.String getAttributeValue(java.lang.String name)
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
Parameters:
name - the name of an attribute. This must be an unqualified attribute name, i.e. one with no namespace prefix.
Returns:
the value of the attribute, if it exists, otherwise null

getAttributeValue

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

isDocumentElement

public boolean isDocumentElement()
Determine whether this node is the outermost element.
Specified by:
isDocumentElement in interface NodeInfo
Returns:
True if this element is the document (outermost) element.

getDocumentElement

public org.w3c.dom.Element getDocumentElement()
Get the outermost element.
Specified by:
getDocumentElement in interface NodeInfo
Returns:
the ElementInfo for the outermost element of the document. If the document is not well-formed, this returns the last element child of the root if there is one, otherwise null.

getDocumentRoot

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

getNextInDocument

public NodeInfo getNextInDocument(NodeInfo anchor)
Get the next node in document order
Specified by:
getNextInDocument in interface NodeInfo
Parameters:
anchor: - the scan stops when it reaches a node that is not a descendant of the specified anchor node
Returns:
the next node in the document, or null if there is no such node

copyStringValue

public void copyStringValue(Outputter out)
                     throws org.xml.sax.SAXException
Copy the string-value of this node to a given outputter
Specified by:
copyStringValue in interface NodeInfo

removeNode

public void removeNode()
                throws org.xml.sax.SAXException
Remove this node from the tree. For system use only. When one or more nodes have been removed, renumberChildren() must be called to adjust the numbering of remaining nodes. PRECONDITION: The node must have a parent node.

getNodeValue

public java.lang.String getNodeValue()
Get the node value as defined in the DOM. This is not the same as the XPath string-value.
Specified by:
getNodeValue in interface org.w3c.dom.Node

setNodeValue

public void setNodeValue(java.lang.String nodeValue)
                  throws org.w3c.dom.DOMException
Set the node value. DOM method: always fails
Specified by:
setNodeValue in interface org.w3c.dom.Node

getChildNodes

public org.w3c.dom.NodeList getChildNodes()
Return a NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes.
Specified by:
getChildNodes in interface org.w3c.dom.Node

getAttributes

public org.w3c.dom.NamedNodeMap getAttributes()
Return a NamedNodeMap containing the attributes of this node (if it is an Element ) or null otherwise. (DOM method)
Specified by:
getAttributes in interface org.w3c.dom.Node

getOwnerDocument

public org.w3c.dom.Document getOwnerDocument()
Return the Document object associated with this node. (DOM mehod)
Specified by:
getOwnerDocument in interface org.w3c.dom.Node

insertBefore

public org.w3c.dom.Node insertBefore(org.w3c.dom.Node newChild,
                                     org.w3c.dom.Node refChild)
                              throws org.w3c.dom.DOMException
Insert the node newChild before the existing child node refChild. DOM method: always fails.
Specified by:
insertBefore in interface org.w3c.dom.Node
Parameters:
newChild - The node to insert.
refChild - The reference node, i.e., the node before which the new node must be inserted.
Returns:
The node being inserted.
Throws:
org.w3c.dom.DOMException - NO_MODIFICATION_ALLOWED_ERR: Always raised.

replaceChild

public org.w3c.dom.Node replaceChild(org.w3c.dom.Node newChild,
                                     org.w3c.dom.Node oldChild)
                              throws org.w3c.dom.DOMException
Replace the child node oldChild with newChild in the list of children, and returns the oldChild node. Always fails.
Specified by:
replaceChild in interface org.w3c.dom.Node
Parameters:
newChild - The new node to put in the child list.
oldChild - The node being replaced in the list.
Returns:
The node replaced.
Throws:
org.w3c.dom.DOMException - NO_MODIFICATION_ALLOWED_ERR: Always raised.

removeChild

public org.w3c.dom.Node removeChild(org.w3c.dom.Node oldChild)
                             throws org.w3c.dom.DOMException
Remove the child node indicated by oldChild from the list of children, and returns it. DOM method: always fails.
Specified by:
removeChild in interface org.w3c.dom.Node
Parameters:
oldChild - The node being removed.
Returns:
The node removed.
Throws:
org.w3c.dom.DOMException - NO_MODIFICATION_ALLOWED_ERR: Always raised.

appendChild

public org.w3c.dom.Node appendChild(org.w3c.dom.Node newChild)
                             throws org.w3c.dom.DOMException
Adds the node newChild to the end of the list of children of this node. DOM method: always fails.
Specified by:
appendChild in interface org.w3c.dom.Node
Parameters:
newChild - The node to add.
Returns:
The node added.
Throws:
org.w3c.dom.DOMException -
NO_MODIFICATION_ALLOWED_ERR: Always raised.

hasChildNodes

public boolean hasChildNodes()
Determine whether the node has any children.
Specified by:
hasChildNodes in interface org.w3c.dom.Node
Returns:
true if the node has any children, false if the node has no children.

cloneNode

public org.w3c.dom.Node cloneNode(boolean deep)
Returns a duplicate of this node, i.e., serves as a generic copy constructor for nodes. The duplicate node has no parent. Not implemented: always returns null. (Because trees are read-only, there would be no way of using the resulting node.)
Specified by:
cloneNode in interface org.w3c.dom.Node
Parameters:
deep - If true , recursively clone the subtree under the specified node; if false , clone only the node itself (and its attributes, if it is an Element ).
Returns:
The duplicate node.

normalize

public void normalize()
Puts all Text nodes in the full depth of the sub-tree underneath this Node, including attribute nodes, into a "normal" form where only structure (e.g., elements, comments, processing instructions, CDATA sections, and entity references) separates Text nodes, i.e., there are neither adjacent Text nodes nor empty Text nodes.
Specified by:
normalize in interface org.w3c.dom.Node
Since:
DOM Level 2

isSupported

public boolean isSupported(java.lang.String feature,
                           java.lang.String version)
Tests whether the DOM implementation implements a specific feature and that feature is supported by this node.
Specified by:
isSupported in interface org.w3c.dom.Node
Parameters:
feature - The name of the feature to test. This is the same name which can be passed to the method hasFeature on DOMImplementation .
version - This is the version number of the feature to test. In Level 2, version 1, this is the string "2.0". If the version is not specified, supporting any version of the feature will cause the method to return true .
Returns:
Returns true if the specified feature is supported on this node, false otherwise.
Since:
DOM Level 2

setPrefix

public void setPrefix(java.lang.String prefix)
               throws org.w3c.dom.DOMException
Set the namespace prefix of this node. Always fails.
Specified by:
setPrefix in interface org.w3c.dom.Node

disallowUpdate

protected void disallowUpdate()
                       throws org.w3c.dom.DOMException
Internal method used to indicate that update operations are not allowed