org.apache.xpath
Class DOM2Helper

java.lang.Object
  |
  +--org.apache.xpath.DOMHelper
        |
        +--org.apache.xpath.DOM2Helper
Direct Known Subclasses:
StreeDOMHelper

public class DOM2Helper
extends DOMHelper

**For advanced use only** This class provides a DOM level 2 "helper", which provides services currently not provided be the DOM standard.


Constructor Summary
DOM2Helper()
          Construct an instance.
 
Method Summary
 void checkNode(Node node)
          **For internal use only** Check node to see if it was created by a DOM implementation that this helper is intended to support.
 Document getDocument()
          Query which document this helper is currently operating on.
 Element getElementByID(java.lang.String id, Document doc)
          Given an XML ID, return the element.
 java.lang.String getLocalNameOfNode(Node n)
          Returns the local name of the given node, as defined by the XML Namespaces specification.
 java.lang.String getNamespaceOfNode(Node n)
          Returns the Namespace Name (Namespace URI) for the given node.
 Node getParentOfNode(Node node)
          Get the XPath-model parent of a node.
 boolean isNodeAfter(Node node1, Node node2)
          Figure out whether node2 should be considered as being later in the document than node1, in Document Order as defined by the XPath model.
 void parse(InputSource source)
          **For internal use only** Parse an XML document.
 void setDocument(Document doc)
          Specify which document this helper is currently operating on.
 boolean supportsSAX()
          Returns true if the DOM implementation handled by this helper supports the SAX ContentHandler interface.
 
Methods inherited from class org.apache.xpath.DOMHelper
createDocument, getDOMFactory, getExpandedAttributeName, getExpandedElementName, getLevel, getNamespaceForPrefix, getNodeData, getNodeData, getRoot, getRootNode, getUniqueID, getUnparsedEntityURI, isIgnorableWhitespace, isNamespaceNode, setDOMFactory, shouldStripSourceNode
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

DOM2Helper

public DOM2Helper()
Construct an instance.
Method Detail

checkNode

public void checkNode(Node node)
               throws TransformerException
**For internal use only** Check node to see if it was created by a DOM implementation that this helper is intended to support. This is currently disabled, and assumes all nodes are acceptable rather than checking that they implement org.apache.xerces.dom.NodeImpl.
Parameters:
node - The node to be tested.
Throws:
TransformerException - if the node is not one which this DOM2Helper can support. If we return without throwing the exception, the node is compatable.

supportsSAX

public boolean supportsSAX()
Returns true if the DOM implementation handled by this helper supports the SAX ContentHandler interface.
Returns:
true (since Xerces does).

setDocument

public void setDocument(Document doc)
Specify which document this helper is currently operating on.
Parameters:
doc - The DOM Document node for this document.
See Also:
getDocument()

getDocument

public Document getDocument()
Query which document this helper is currently operating on.
Returns:
The DOM Document node for this document.
See Also:
setDocument(org.w3c.dom.Document)

parse

public void parse(InputSource source)
           throws TransformerException
**For internal use only** Parse an XML document.

Right now the Xerces DOMParser class is used. This needs fixing, either via jaxp, or via some other, standard method.

The application can use this method to instruct the SAX parser to begin parsing an XML document from any valid input source (a character stream, a byte stream, or a URI).

Applications may not invoke this method while a parse is in progress (they should create a new Parser instead for each additional XML document). Once a parse is complete, an application may reuse the same Parser object, possibly with a different input source.

Parameters:
source - The input source for the top-level of the XML document.
Throws:
TransformerException - if any checked exception is thrown.

getElementByID

public Element getElementByID(java.lang.String id,
                              Document doc)
Given an XML ID, return the element. This requires assistance from the DOM and parser, and is meaningful only in the context of a DTD or schema which declares attributes as being of type ID. This information may or may not be available in all parsers, may or may not be available for specific documents, and may or may not be available when validation is not turned on.
Parameters:
id - The ID to search for, as a String.
doc - The document to search within, as a DOM Document node.
Returns:
DOM Element node with an attribute of type ID whose value uniquely matches the requested id string, or null if there isn't such an element or if the DOM can't answer the question for other reasons.
Overrides:
getElementByID in class DOMHelper

isNodeAfter

public boolean isNodeAfter(Node node1,
                           Node node2)
Figure out whether node2 should be considered as being later in the document than node1, in Document Order as defined by the XPath model. This may not agree with the ordering defined by other XML applications.

There are some cases where ordering isn't defined, and neither are the results of this function -- though we'll generally return true.

TODO: Make sure this does the right thing with attribute nodes!!!

Parameters:
node1 - DOM Node to perform position comparison on.
node2 - DOM Node to perform position comparison on .
Returns:
false if node2 comes before node1, otherwise return true. You can think of this as (node1.documentOrderPosition <= node2.documentOrderPosition).
Overrides:
isNodeAfter in class DOMHelper

getParentOfNode

public Node getParentOfNode(Node node)
Get the XPath-model parent of a node. This version takes advantage of the DOM Level 2 Attr.ownerElement() method; the base version we would otherwise inherit is prepared to fall back on exhaustively walking the document to find an Attr's parent.
Parameters:
node - Node to be examined
Returns:
the DOM parent of the input node, if there is one, or the ownerElement if the input node is an Attr, or null if the node is a Document, a DocumentFragment, or an orphan.
Overrides:
getParentOfNode in class DOMHelper

getLocalNameOfNode

public java.lang.String getLocalNameOfNode(Node n)
Returns the local name of the given node, as defined by the XML Namespaces specification. This is prepared to handle documents built using DOM Level 1 methods by falling back upon explicitly parsing the node name.
Parameters:
n - Node to be examined
Returns:
String containing the local name, or null if the node was not assigned a Namespace.
Overrides:
getLocalNameOfNode in class DOMHelper

getNamespaceOfNode

public java.lang.String getNamespaceOfNode(Node n)
Returns the Namespace Name (Namespace URI) for the given node. In a Level 2 DOM, you can ask the node itself. Note, however, that doing so conflicts with our decision in getLocalNameOfNode not to trust the that the DOM was indeed created using the Level 2 methods. If Level 1 methods were used, these two functions will disagree with each other.

TODO: Reconcile with getLocalNameOfNode.

Parameters:
n - Node to be examined
Returns:
String containing the Namespace URI bound to this DOM node at the time the Node was created.
Overrides:
getNamespaceOfNode in class DOMHelper


Copyright � 2000 Apache XML Project. All Rights Reserved.