Class XMLWhiteSpaceHandler

java.lang.Object
org.apache.fop.fo.XMLWhiteSpaceHandler

public class XMLWhiteSpaceHandler extends Object
Class encapsulating the functionality for white-space-handling during refinement stage. The handleWhiteSpace() methods are called during FOTree-building and marker-cloning:
  • from FObjMixed.addChildNode()
  • from FObjMixed.endOfNode()
  • from FObjMixed.handleWhiteSpaceFor()

Each time one of the variants is called, white-space is handled for all FOText or Character nodes that were added:
  • either prior to newChild (and after the previous non-text child node)
  • or, if newChild is null, after the previous non-text child

The iteration always starts at firstTextNode, goes on until the last text-node is reached, and deals only with FOText or Character nodes.
Note: if the method is called from an inline's endOfNode(), there is too little context to decide whether trailing white-space may be removed, so the pending inline is stored in a List, together with an iterator for which the next() method returns the first in the trailing sequence of white- space characters. This List is processed again at the end of the ancestor block.
  • Constructor Details

    • XMLWhiteSpaceHandler

      public XMLWhiteSpaceHandler()
  • Method Details

    • handleWhiteSpace

      public void handleWhiteSpace(FObjMixed fo, FONode firstTextNode, FONode nextChild)
      Handle white-space for the fo that is passed in, starting at firstTextNode
      Parameters:
      fo - the FO for which to handle white-space
      firstTextNode - the node at which to start
      nextChild - the node that will be added to the list after firstTextNode
    • reset

      protected final void reset()
      Reset the handler, release all references
    • handleWhiteSpace

      public void handleWhiteSpace(FObjMixed fo, FONode firstTextNode)
      Handle white-space for the fo that is passed in, starting at firstTextNode (when a nested FO is encountered)
      Parameters:
      fo - the FO for which to handle white-space
      firstTextNode - the node at which to start