net.sf.saxon.s9api

## Class XdmDestination

- java.lang.Object
- - net.sf.saxon.s9api.XdmDestination

- All Implemented Interfaces:
    Destination

      public class XdmDestination
      extends Object
      implements Destination

  An `XdmDestination` is a `Destination` in which an `XdmNode` is constructed to hold the output of a query or transformation: that is, a tree using Saxon's implementation of the XDM data model

  No data needs to be supplied to the `XdmDestination` object. The query or transformation populates an `XdmNode`, which may then be retrieved using the `getXdmNode` method.

  An `XdmDestination` is designed to hold a single tree rooted at a document or element node. It should therefore not be used as the destination of a query that produces multiple documents, multiple elements, nodes other than elements and documents, or atomic values. If the query does produce such a result, an exception will be thrown.

  An XdmDestination can be reused to hold the results of a second query or transformation only if the `reset()` method is first called to reset its state.

  If an XDM tree is to be built from a lexical XML document, or programmatically from the application by writing a sequence of events, the recommended mechanism is to use a `DocumentBuilder` rather than this class.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `XdmDestination()`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `close()` Close the destination, allowing resources to be released.
    `URI` | `getBaseURI()` Get the base URI that will be used for the document node when the XdmDestination is written to.
    `Receiver` | `getReceiver(Configuration config)` Return a Receiver.
    `TreeModel` | `getTreeModel()` Get the tree model to be used for documents constructed using this XdmDestination.
    `XdmNode` | `getXdmNode()` Return the node at the root of the tree, after it has been constructed.
    `void` | `reset()` Allow the `XdmDestination` to be reused, without resetting other properties of the destination.
    `void` | `setBaseURI(URI baseURI)` Set the base URI for the document node that will be created when the XdmDestination is written to.
    `void` | `setTreeModel(TreeModel model)` Set the tree model to be used for documents constructed using this XdmDestination.

    - ### Methods inherited from class java.lang.Object

      `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- - ### Constructor Detail

    - #### XdmDestination

          public XdmDestination()

  - ### Method Detail

    - #### setBaseURI

          public void setBaseURI(URI baseURI)

      Set the base URI for the document node that will be created when the XdmDestination is written to. This method must be called before writing to the destination; it has no effect on an XdmNode that has already been constructed.
      Parameters:
        `baseURI` - the base URI for the node that will be constructed when the XdmDestination is written to. This must be an absolute URI
      Throws:
        `IllegalArgumentException` - if the baseURI supplied is not an absolute URI
      Since:
        9.1

    - #### getBaseURI

          public URI getBaseURI()

      Get the base URI that will be used for the document node when the XdmDestination is written to.
      Returns:
        the base URI that will be used for the node that is constructed when the XdmDestination is written to.
      Since:
        9.1

    - #### setTreeModel

          public void setTreeModel(TreeModel model)

      Set the tree model to be used for documents constructed using this XdmDestination. By default, the TinyTree is used.
      Parameters:
        `model` - typically one of the constants `TreeModel.TINY_TREE`, `TreeModel.TINY_TREE_CONDENSED`, or `TreeModel.LINKED_TREE`. However, in principle a user-defined tree model can be used.
      Since:
        9.2

    - #### getTreeModel

          public TreeModel getTreeModel()

      Get the tree model to be used for documents constructed using this XdmDestination. By default, the TinyTree is used.
      Returns:
        the tree model in use: typically one of the constants `TreeModel.TINY_TREE`, `TreeModel.TINY_TREE_CONDENSED`, or `TreeModel.LINKED_TREE`. However, in principle a user-defined tree model can be used.
      Since:
        9.2

    - #### getReceiver

          public Receiver getReceiver(Configuration config)
                               throws SaxonApiException

      Return a Receiver. Saxon calls this method to obtain a Receiver, to which it then sends a sequence of events representing the content of an XML document.
      Specified by:
        `getReceiver` in interface `Destination`
      Parameters:
        `config` - The Saxon configuration. This is supplied so that the destination can use information from the configuration (for example, a reference to the name pool) to construct or configure the returned Receiver.
      Returns:
        the Receiver to which events are to be sent.
      Throws:
        `SaxonApiException` - if the Receiver cannot be created

    - #### close

          public void close()
                     throws SaxonApiException

      Close the destination, allowing resources to be released. Saxon calls this method when it has finished writing to the destination.
      Specified by:
        `close` in interface `Destination`
      Throws:
        `SaxonApiException` - if any failure occurs

    - #### getXdmNode

          public XdmNode getXdmNode()

      Return the node at the root of the tree, after it has been constructed.

      This method should not be called while the tree is under construction.

      Returns:
        the root node of the tree (always a document or element node); or null if nothing is written to the tree (for example, the result of a query that returns the empty sequence)
      Throws:
        `IllegalStateException` - if called during the execution of the process that is writing the tree.

    - #### reset

          public void reset()

      Allow the `XdmDestination` to be reused, without resetting other properties of the destination.

Copyright (c) 2004-2013 Saxonica Limited. All rights reserved.