org.jaxen.xom
Class DocumentNavigator

java.lang.Object
  extended by org.jaxen.DefaultNavigator
      extended by org.jaxen.xom.DocumentNavigator
All Implemented Interfaces:
java.io.Serializable, Navigator

public class DocumentNavigator
extends DefaultNavigator

Interface for navigating around the XOM object model.

This class is not intended for direct usage, but is used by the Jaxen engine during evaluation.

See Also:
XPath, Serialized Form

Nested Class Summary
private static class DocumentNavigator.IndexIterator
           
private static class DocumentNavigator.XPathNamespace
          Wrapper for XOM namespace nodes to give them a parent, as required by the XPath data model.
 
Field Summary
private static long serialVersionUID
           
 
Constructor Summary
DocumentNavigator()
           
 
Method Summary
private  boolean addNamespaceForElement(Element elt, java.lang.String uri, java.lang.String prefix, java.util.Map map)
           
 java.util.Iterator getAttributeAxisIterator(java.lang.Object o)
          Throws UnsupportedAxisException.
 java.lang.String getAttributeName(java.lang.Object o)
          Retrieve the local name of the given attribute node.
 java.lang.String getAttributeNamespaceUri(java.lang.Object o)
          Retrieve the namespace URI of the given attribute node.
 java.lang.String getAttributeQName(java.lang.Object o)
          Retrieve the qualified name of the given attribute node.
 java.lang.String getAttributeStringValue(java.lang.Object o)
          Retrieve the string-value of an attribute node.
 java.util.Iterator getChildAxisIterator(java.lang.Object o)
          Throws UnsupportedAxisException
 java.lang.String getCommentStringValue(java.lang.Object o)
          Retrieve the string-value of a comment node.
 java.lang.Object getDocument(java.lang.String s)
          Default implementation that always returns null.
 java.lang.Object getDocumentNode(java.lang.Object o)
          Returns the document node that contains the given context node.
 java.lang.String getElementName(java.lang.Object o)
          Retrieve the local name of the given element node.
 java.lang.String getElementNamespaceUri(java.lang.Object o)
          Retrieve the namespace URI of the given element node.
 java.lang.String getElementQName(java.lang.Object o)
          Retrieve the qualified name of the given element node.
 java.lang.String getElementStringValue(java.lang.Object o)
          Retrieve the string-value of an element node.
 java.util.Iterator getNamespaceAxisIterator(java.lang.Object o)
          Throws UnsupportedAxisException.
 java.lang.String getNamespacePrefix(java.lang.Object o)
          Retrieve the namespace prefix of a namespace node.
 java.lang.String getNamespaceStringValue(java.lang.Object o)
          Retrieve the string-value of a namespace node.
 java.util.Iterator getParentAxisIterator(java.lang.Object o)
          Throws UnsupportedAxisException
 java.lang.Object getParentNode(java.lang.Object o)
          Default inefficient implementation.
 java.util.Iterator getPrecedingAxisIterator(java.lang.Object o)
          Retrieve an Iterator matching the preceding XPath axis.
 java.util.Iterator getPrecedingSiblingAxisIterator(java.lang.Object o)
          Retrieve an Iterator matching the preceding-sibling XPath axis.
 java.lang.String getProcessingInstructionData(java.lang.Object o)
          Retrieve the data of a processing-instruction.
 java.lang.String getProcessingInstructionTarget(java.lang.Object o)
          Retrieve the target of a processing-instruction.
 java.lang.String getTextStringValue(java.lang.Object o)
          Retrieve the string-value of a text node.
 boolean isAttribute(java.lang.Object o)
          Returns whether the given object is an attribute node.
 boolean isComment(java.lang.Object o)
          Returns whether the given object is a comment node.
 boolean isDocument(java.lang.Object o)
          Returns whether the given object is a document node.
 boolean isElement(java.lang.Object o)
          Returns whether the given object is an element node.
 boolean isNamespace(java.lang.Object o)
          Returns whether the given object is a namespace node.
 boolean isProcessingInstruction(java.lang.Object o)
          Returns whether the given object is a processing-instruction node.
 boolean isText(java.lang.Object o)
          Returns whether the given object is a text node.
 XPath parseXPath(java.lang.String s)
          Returns a parsed form of the given XPath string, which will be suitable for queries on documents that use the same navigator as this one.
 java.lang.String translateNamespacePrefixToUri(java.lang.String s, java.lang.Object o)
          Translate a namespace prefix to a namespace URI, possibly considering a particular element node.
 
Methods inherited from class org.jaxen.DefaultNavigator
getAncestorAxisIterator, getAncestorOrSelfAxisIterator, getDescendantAxisIterator, getDescendantOrSelfAxisIterator, getElementById, getFollowingAxisIterator, getFollowingSiblingAxisIterator, getNodeType, getSelfAxisIterator
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

serialVersionUID

private static final long serialVersionUID
See Also:
Constant Field Values
Constructor Detail

DocumentNavigator

public DocumentNavigator()
Method Detail

isAttribute

public boolean isAttribute(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is an attribute node.

Parameters:
o - the object to test
Returns:
true if the object is an attribute node, else false

isComment

public boolean isComment(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is a comment node.

Parameters:
o - the object to test
Returns:
true if the object is a comment node, else false

isDocument

public boolean isDocument(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is a document node. A document node is the node that is selected by the XPath expression /.

Parameters:
o - the object to test
Returns:
true if the object is a document node, else false

isElement

public boolean isElement(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is an element node.

Parameters:
o - the object to test
Returns:
true if the object is an element node, else false

isNamespace

public boolean isNamespace(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is a namespace node.

Parameters:
o - the object to test
Returns:
true if the object is a namespace node, else false

isProcessingInstruction

public boolean isProcessingInstruction(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is a processing-instruction node.

Parameters:
o - the object to test
Returns:
true if the object is a processing-instruction node, else false

isText

public boolean isText(java.lang.Object o)
Description copied from interface: Navigator
Returns whether the given object is a text node.

Parameters:
o - the object to test
Returns:
true if the object is a text node, else false

getAttributeName

public java.lang.String getAttributeName(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the local name of the given attribute node.

Parameters:
o - the context attribute node
Returns:
the local name of the attribute node

getAttributeNamespaceUri

public java.lang.String getAttributeNamespaceUri(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the namespace URI of the given attribute node.

Parameters:
o - the context attribute node
Returns:
the namespace URI of the attribute node

getAttributeQName

public java.lang.String getAttributeQName(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the qualified name of the given attribute node.

Parameters:
o - the context attribute node
Returns:
the qualified name of the attribute node

getAttributeStringValue

public java.lang.String getAttributeStringValue(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the string-value of an attribute node. This should be the XML 1.0 normalized attribute value. This may be the empty string but must not be null.

Parameters:
o - the attribute node
Returns:
the string-value of the node

getCommentStringValue

public java.lang.String getCommentStringValue(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the string-value of a comment node. This may be the empty string if the comment is empty, but must not be null.

Parameters:
o - the comment node
Returns:
the string-value of the node

getElementName

public java.lang.String getElementName(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the local name of the given element node.

Parameters:
o - the context element node
Returns:
the local name of the element node

getElementNamespaceUri

public java.lang.String getElementNamespaceUri(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the namespace URI of the given element node.

Parameters:
o - the context element node
Returns:
the namespace URI of the element node

getElementQName

public java.lang.String getElementQName(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the qualified name of the given element node.

Parameters:
o - the context element node
Returns:
the qualified name of the element node

getElementStringValue

public java.lang.String getElementStringValue(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the string-value of an element node. This may be the empty string if the element is empty, but must not be null.

Parameters:
o - the comment node.
Returns:
the string-value of the node.

getNamespacePrefix

public java.lang.String getNamespacePrefix(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the namespace prefix of a namespace node.

Parameters:
o - the namespace node
Returns:
the prefix associated with the node

getNamespaceStringValue

public java.lang.String getNamespaceStringValue(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the string-value of a namespace node. This is generally the namespace URI. This may be the empty string but must not be null.

Parameters:
o - the namespace node
Returns:
the string-value of the node

getTextStringValue

public java.lang.String getTextStringValue(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the string-value of a text node. This must not be null and should not be the empty string. The XPath data model does not allow empty text nodes.

Parameters:
o - the text node
Returns:
the string-value of the node

getDocument

public java.lang.Object getDocument(java.lang.String s)
                             throws FunctionCallException
Description copied from class: DefaultNavigator
Default implementation that always returns null. Override in subclass if the subclass can load documents.

Specified by:
getDocument in interface Navigator
Overrides:
getDocument in class DefaultNavigator
Parameters:
s - the URL of the document to load
Returns:
null
Throws:
FunctionCallException - if an error occurs while loading the URL; e.g. an I/O error or the document is malformed

getDocumentNode

public java.lang.Object getDocumentNode(java.lang.Object o)
Description copied from interface: Navigator
Returns the document node that contains the given context node.

Specified by:
getDocumentNode in interface Navigator
Overrides:
getDocumentNode in class DefaultNavigator
Parameters:
o - the context node
Returns:
the document of the context node
See Also:
Navigator.isDocument(Object)

getAttributeAxisIterator

public java.util.Iterator getAttributeAxisIterator(java.lang.Object o)
Description copied from class: DefaultNavigator
Throws UnsupportedAxisException. Subclasses that support the attribute axis must override this method.

Specified by:
getAttributeAxisIterator in interface Navigator
Overrides:
getAttributeAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
never returns

getChildAxisIterator

public java.util.Iterator getChildAxisIterator(java.lang.Object o)
Description copied from class: DefaultNavigator
Throws UnsupportedAxisException

Specified by:
getChildAxisIterator in interface Navigator
Overrides:
getChildAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
never returns

getParentAxisIterator

public java.util.Iterator getParentAxisIterator(java.lang.Object o)
Description copied from class: DefaultNavigator
Throws UnsupportedAxisException

Specified by:
getParentAxisIterator in interface Navigator
Overrides:
getParentAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
never returns

getParentNode

public java.lang.Object getParentNode(java.lang.Object o)
Description copied from class: DefaultNavigator
Default inefficient implementation. Subclasses should override this method.

Specified by:
getParentNode in interface Navigator
Overrides:
getParentNode in class DefaultNavigator
Parameters:
o - the node whose parent to return
Returns:
the parent node
See Also:
Navigator.isDocument(java.lang.Object), Navigator.isElement(java.lang.Object)

getPrecedingAxisIterator

public java.util.Iterator getPrecedingAxisIterator(java.lang.Object o)
                                            throws UnsupportedAxisException
Description copied from interface: Navigator
Retrieve an Iterator matching the preceding XPath axis.

Specified by:
getPrecedingAxisIterator in interface Navigator
Overrides:
getPrecedingAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
an Iterator capable of traversing the axis, not null
Throws:
UnsupportedAxisException - if the semantics of the preceding axis are not supported by this object model

getPrecedingSiblingAxisIterator

public java.util.Iterator getPrecedingSiblingAxisIterator(java.lang.Object o)
                                                   throws UnsupportedAxisException
Description copied from interface: Navigator
Retrieve an Iterator matching the preceding-sibling XPath axis.

Specified by:
getPrecedingSiblingAxisIterator in interface Navigator
Overrides:
getPrecedingSiblingAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
an Iterator capable of traversing the axis, not null
Throws:
UnsupportedAxisException - if the semantics of the preceding-sibling axis are not supported by this object model

getProcessingInstructionData

public java.lang.String getProcessingInstructionData(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the data of a processing-instruction.

Specified by:
getProcessingInstructionData in interface Navigator
Overrides:
getProcessingInstructionData in class DefaultNavigator
Parameters:
o - the context processing-instruction node
Returns:
the data of the processing-instruction node

getProcessingInstructionTarget

public java.lang.String getProcessingInstructionTarget(java.lang.Object o)
Description copied from interface: Navigator
Retrieve the target of a processing-instruction.

Specified by:
getProcessingInstructionTarget in interface Navigator
Overrides:
getProcessingInstructionTarget in class DefaultNavigator
Parameters:
o - the context processing-instruction node
Returns:
the target of the processing-instruction node

translateNamespacePrefixToUri

public java.lang.String translateNamespacePrefixToUri(java.lang.String s,
                                                      java.lang.Object o)
Description copied from interface: Navigator
Translate a namespace prefix to a namespace URI, possibly considering a particular element node.

Strictly speaking, prefix-to-URI translation should occur irrespective of any element in the document. This method is provided to allow a non-conforming ease-of-use enhancement.

Specified by:
translateNamespacePrefixToUri in interface Navigator
Overrides:
translateNamespacePrefixToUri in class DefaultNavigator
Parameters:
s - the prefix to translate
o - the element to consider during translation
Returns:
the namespace URI associated with the prefix
See Also:
NamespaceContext

parseXPath

public XPath parseXPath(java.lang.String s)
                 throws SAXPathException
Description copied from interface: Navigator
Returns a parsed form of the given XPath string, which will be suitable for queries on documents that use the same navigator as this one.

Parameters:
s - the XPath expression
Returns:
a new XPath expression object
Throws:
SAXPathException - if the string is not a syntactically correct XPath expression
See Also:
XPath

addNamespaceForElement

private boolean addNamespaceForElement(Element elt,
                                       java.lang.String uri,
                                       java.lang.String prefix,
                                       java.util.Map map)

getNamespaceAxisIterator

public java.util.Iterator getNamespaceAxisIterator(java.lang.Object o)
Description copied from class: DefaultNavigator
Throws UnsupportedAxisException. Subclasses that support the namespace axis must override this method.

Specified by:
getNamespaceAxisIterator in interface Navigator
Overrides:
getNamespaceAxisIterator in class DefaultNavigator
Parameters:
o - the original context node
Returns:
never returns