net.sf.saxon.event

## Class LocationCopier

- java.lang.Object
- - net.sf.saxon.event.LocationCopier

- All Implemented Interfaces:
    CopyInformee, LocationProvider, SourceLocationProvider

      public class LocationCopier
      extends Object
      implements CopyInformee, SourceLocationProvider

  A Receiver that can be inserted into an event pipeline to copy location information. The class acts as a LocationProvider, so it supports getSystemId() and getLineNumber() methods; the location returned can vary for each node, and is set by the class generating the events. The class is used when it is necessary to copy a subtree along with its location information; for example, when copying an inline schema within a stylesheet to a separate schema document.

  Note: prior to 9.2, the LocationCopier was a ProxyReceiver that passed all events on the pipeline unchanged. It no longer does this, instead it is found as the LocationProvider on a pipeline, but does not itself see the pipeline events.

- - ### Constructor Summary

    Constructors
    Constructor and Description
    `LocationCopier(boolean wholeDocument)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `int` | `getColumnNumber(long locationId)` Get the column number within the document, entity, or module containing a particular location
    `int` | `getLineNumber(long locationId)` Get the line number within the document, entity or module containing a particular location
    `String` | `getSystemId(long locationId)` Get the URI of the document, entity, or module containing a particular location
    `int` | `notifyElementNode(NodeInfo element)` Provide information about the node being copied.

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

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

- - ### Constructor Detail

    - #### LocationCopier

          public LocationCopier(boolean wholeDocument)

  - ### Method Detail

    - #### notifyElementNode

          public int notifyElementNode(NodeInfo element)

      Provide information about the node being copied. This method is called immediately before the startElement call for the element node in question.
      Specified by:
        `notifyElementNode` in interface `CopyInformee`
      Parameters:
        `element` - the node being copied, which must be an element node
      Returns:
        int a locationId to be used when referring to this element in the pipeline

    - #### getSystemId

          public String getSystemId(long locationId)

      Description copied from interface: `LocationProvider`
      Get the URI of the document, entity, or module containing a particular location
      Specified by:
        `getSystemId` in interface `LocationProvider`
      Parameters:
        `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
        the URI of the document, XML entity or module. For a SourceLocationProvider this will be the URI of the document or entity (the URI that would be the base URI if there were no xml:base attributes). In other cases it may identify the query or stylesheet module currently being executed.

    - #### getLineNumber

          public int getLineNumber(long locationId)

      Description copied from interface: `LocationProvider`
      Get the line number within the document, entity or module containing a particular location
      Specified by:
        `getLineNumber` in interface `LocationProvider`
      Parameters:
        `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
        the line number within the document, entity or module, or -1 if no information is available.

    - #### getColumnNumber

          public int getColumnNumber(long locationId)

      Description copied from interface: `LocationProvider`
      Get the column number within the document, entity, or module containing a particular location
      Specified by:
        `getColumnNumber` in interface `LocationProvider`
      Parameters:
        `locationId` - identifier of the location in question (as passed down the Receiver pipeline)
      Returns:
        the column number within the document, entity, or module, or -1 if this is not available

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