Class DOMObjectModel

  • All Implemented Interfaces:
    java.io.Serializable, ExternalObjectModel

    public class DOMObjectModel
    extends java.lang.Object
    implements ExternalObjectModel, java.io.Serializable
    This interface must be implemented by any third-party object model that can be wrapped with a wrapper that implements the Saxon Object Model (the NodeInfo interface). This implementation of the interface supports wrapping of DOM Documents.
    See Also:
    Serialized Form
    • Constructor Summary

      Constructors 
      Constructor Description
      DOMObjectModel()
      Create an instance of the DOMObjectModel class.
    • Method Summary

      All Methods Static Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      Receiver getDocumentBuilder​(javax.xml.transform.Result result)
      Test whether this object model recognizes a particular kind of JAXP Result object, and if it does, return a Receiver that builds an instance of this data model from a sequence of events.
      java.lang.String getIdentifyingURI()
      Get the URI of the external object model as used in the JAXP factory interfaces for obtaining an XPath implementation
      static DOMObjectModel getInstance()
      Get a reusable instance instance of this class.
      JPConverter getJPConverter​(java.lang.Class targetClass)
      Get a converter from XPath values to values in the external object model
      PJConverter getNodeListCreator​(java.lang.Object node)
      Get a converter that converts a sequence of XPath nodes to this model's representation of a node list.
      PJConverter getPJConverter​(java.lang.Class targetClass)
      Get a converter from XPath values to values in the external object model
      static void main​(java.lang.String[] args)
      Test showing a DOM NodeList returned by an extension function
      boolean sendSource​(javax.xml.transform.Source source, Receiver receiver, PipelineConfiguration pipe)
      Test whether this object model recognizes a particular kind of JAXP Source object, and if it does, send the contents of the document to a supplied Receiver, and return true.
      static org.w3c.dom.NodeList sortArrayToNodeList​(Value source)
      Sample extension function
      NodeInfo unravel​(javax.xml.transform.Source source, Configuration config)
      Wrap or unwrap a node using this object model to return the corresponding Saxon node.
      • Methods inherited from class java.lang.Object

        clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • DOMObjectModel

        public DOMObjectModel()
        Create an instance of the DOMObjectModel class.

        When possible, use the getInstance() method in preference, as the instance is then reusable.

    • Method Detail

      • getInstance

        public static DOMObjectModel getInstance()
        Get a reusable instance instance of this class.

        Note, this is not actually a singleton instance; the class also has a public constructor, which is needed to support the automatic loading of object models into the Configuration.

        Returns:
        the singleton instance
      • getIdentifyingURI

        public java.lang.String getIdentifyingURI()
        Get the URI of the external object model as used in the JAXP factory interfaces for obtaining an XPath implementation
        Specified by:
        getIdentifyingURI in interface ExternalObjectModel
      • getPJConverter

        public PJConverter getPJConverter​(java.lang.Class targetClass)
        Get a converter from XPath values to values in the external object model
        Specified by:
        getPJConverter in interface ExternalObjectModel
        Parameters:
        targetClass - the required class of the result of the conversion. If this class represents a node or list of nodes in the external object model, the method should return a converter that takes a native node or sequence of nodes as input and returns a node or sequence of nodes in the external object model representation. Otherwise, it should return null.
        Returns:
        a converter, if the targetClass is recognized as belonging to this object model; otherwise null
      • getJPConverter

        public JPConverter getJPConverter​(java.lang.Class targetClass)
        Description copied from interface: ExternalObjectModel
        Get a converter from XPath values to values in the external object model
        Specified by:
        getJPConverter in interface ExternalObjectModel
        Parameters:
        targetClass - the required class of the result of the conversion. If this class represents a node or list of nodes in the external object model, the method should return a converter that takes an object of this class as input and returns a node or sequence of nodes in the native Saxon representation. Otherwise, it should return null.
        Returns:
        a converter, if the targetClass is recognized as belonging to this object model; otherwise null
      • getNodeListCreator

        public PJConverter getNodeListCreator​(java.lang.Object node)
        Get a converter that converts a sequence of XPath nodes to this model's representation of a node list.
        Specified by:
        getNodeListCreator in interface ExternalObjectModel
        Parameters:
        node - an example of the kind of node used in this model
        Returns:
        if the model does not recognize this node as one of its own, return null. Otherwise return a PJConverter that takes a list of XPath nodes (represented as NodeInfo objects) and returns a collection of nodes in this object model
      • getDocumentBuilder

        public Receiver getDocumentBuilder​(javax.xml.transform.Result result)
                                    throws XPathException
        Test whether this object model recognizes a particular kind of JAXP Result object, and if it does, return a Receiver that builds an instance of this data model from a sequence of events. If the Result is not recognised, return null.
        Specified by:
        getDocumentBuilder in interface ExternalObjectModel
        Parameters:
        result - a JAXP result object
        Returns:
        a Receiver that writes to that result, if available; or null otherwise
        Throws:
        XPathException
      • sendSource

        public boolean sendSource​(javax.xml.transform.Source source,
                                  Receiver receiver,
                                  PipelineConfiguration pipe)
                           throws XPathException
        Test whether this object model recognizes a particular kind of JAXP Source object, and if it does, send the contents of the document to a supplied Receiver, and return true. Otherwise, return false
        Specified by:
        sendSource in interface ExternalObjectModel
        Parameters:
        source - a JAXP Source object
        receiver - the Receiver that is to receive the data from the Source
        pipe - configuration information
        Returns:
        true if the data from the Source has been sent to the Receiver, false otherwise
        Throws:
        XPathException
      • unravel

        public NodeInfo unravel​(javax.xml.transform.Source source,
                                Configuration config)
        Wrap or unwrap a node using this object model to return the corresponding Saxon node. If the supplied source does not belong to this object model, return null
        Specified by:
        unravel in interface ExternalObjectModel
        Parameters:
        source - a JAXP Source object
        config - the Saxon configuration
        Returns:
        a NodeInfo corresponding to the Source, if this can be constructed; otherwise null
      • main

        public static void main​(java.lang.String[] args)
                         throws java.lang.Exception
        Test showing a DOM NodeList returned by an extension function
        Throws:
        java.lang.Exception
      • sortArrayToNodeList

        public static org.w3c.dom.NodeList sortArrayToNodeList​(Value source)
                                                        throws java.lang.Exception
        Sample extension function
        Parameters:
        source -
        Returns:
        Throws:
        java.lang.Exception