net.sf.saxon.event

## Class Stripper

- java.lang.Object
- - net.sf.saxon.event.SequenceReceiver
  - - net.sf.saxon.event.ProxyReceiver
    - - net.sf.saxon.event.Stripper

- All Implemented Interfaces:
    Result, Receiver

      public class Stripper
      extends ProxyReceiver

  The RuleBasedStripper class performs whitespace stripping according to the rules of the xsl:strip-space and xsl:preserve-space instructions. It maintains details of which elements need to be stripped. The code is written to act as a SAX-like filter to do the stripping.
  Author:
    Michael H. Kay

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `static class` | `Stripper.StripRuleTarget`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static byte` | `ALWAYS_PRESERVE`
    `static byte` | `ALWAYS_STRIP`
    `static byte` | `ASSERTIONS_EXIST`
    `static Stripper.StripRuleTarget` | `PRESERVE`
    `static byte` | `PRESERVE_PARENT`
    `protected SpaceStrippingRule` | `rule`
    `static byte` | `SIMPLE_CONTENT`
    `static Stripper.StripRuleTarget` | `STRIP`
    `static byte` | `STRIP_DEFAULT`

    - ### Fields inherited from class net.sf.saxon.event.ProxyReceiver

      `nextReceiver`

    - ### Fields inherited from class net.sf.saxon.event.SequenceReceiver

      `pipelineConfiguration, previousAtomic, systemId`

    - ### Fields inherited from interface javax.xml.transform.Result

      `PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `Stripper(SpaceStrippingRule rule, Receiver next)`

  - ### Method Summary

    Methods
    Modifier and Type | Method and Description
    --- | ---
    `void` | `attribute(NodeName nameCode, SimpleType typeCode, CharSequence value, int locationId, int properties)` Notify an attribute.
    `void` | `characters(CharSequence chars, int locationId, int properties)` Handle a text node
    `void` | `endElement()` Handle an end-of-element event
    `Stripper` | `getAnother(Receiver next)` Get a clean copy of this stripper.
    `byte` | `isSpacePreserving(NodeName name)` Decide whether an element is in the set of white-space preserving element types
    `void` | `open()` Callback interface for SAX: not for application use
    `void` | `startElement(NodeName elemName, SchemaType type, int locationId, int properties)` Notify the start of an element
    `boolean` | `usesTypeAnnotations()` Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations supplied on element and attribute events

    - ### Methods inherited from class net.sf.saxon.event.ProxyReceiver

      `append, close, comment, endDocument, getNamePool, getUnderlyingReceiver, namespace, processingInstruction, setPipelineConfiguration, setSystemId, setUnderlyingReceiver, setUnparsedEntity, startContent, startDocument`

    - ### Methods inherited from class net.sf.saxon.event.SequenceReceiver

      `append, getConfiguration, getPipelineConfiguration, getSystemId`

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

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

- - ### Field Detail

    - #### STRIP

          public static final Stripper.StripRuleTarget STRIP

    - #### PRESERVE

          public static final Stripper.StripRuleTarget PRESERVE

    - #### rule

          protected SpaceStrippingRule rule

    - #### ALWAYS_PRESERVE

          public static final byte ALWAYS_PRESERVE

      See Also:
        Constant Field Values

    - #### ALWAYS_STRIP

          public static final byte ALWAYS_STRIP

      See Also:
        Constant Field Values

    - #### STRIP_DEFAULT

          public static final byte STRIP_DEFAULT

      See Also:
        Constant Field Values

    - #### PRESERVE_PARENT

          public static final byte PRESERVE_PARENT

      See Also:
        Constant Field Values

    - #### SIMPLE_CONTENT

          public static final byte SIMPLE_CONTENT

      See Also:
        Constant Field Values

    - #### ASSERTIONS_EXIST

          public static final byte ASSERTIONS_EXIST

      See Also:
        Constant Field Values

  - ### Constructor Detail

    - #### Stripper

          public Stripper(SpaceStrippingRule rule,
                  Receiver next)

  - ### Method Detail

    - #### getAnother

          public Stripper getAnother(Receiver next)

      Get a clean copy of this stripper. The new copy shares the same PipelineConfiguration as the original, but the underlying receiver (that is, the destination for post-stripping events) is changed.
      Parameters:
        `next` - the next receiver in the pipeline for the new Stripper
      Returns:
        a dublicate of this Stripper, with the output sent to "next".

    - #### isSpacePreserving

          public final byte isSpacePreserving(NodeName name)
                                       throws XPathException

      Decide whether an element is in the set of white-space preserving element types
      Parameters:
        `name` - Identifies the name of the element whose whitespace is to be preserved
      Returns:
        ALWAYS_PRESERVE if the element is in the set of white-space preserving element types, ALWAYS_STRIP if the element is to be stripped regardless of the xml:space setting, and STRIP_DEFAULT otherwise
      Throws:
        `XPathException` - if the rules are ambiguous and ambiguities are to be reported as errors

    - #### open

          public void open()
                    throws XPathException

      Callback interface for SAX: not for application use
      Specified by:
        `open` in interface `Receiver`
      Overrides:
        `open` in class `ProxyReceiver`
      Throws:
        `XPathException` - if an error occurs

    - #### startElement

          public void startElement(NodeName elemName,
                          SchemaType type,
                          int locationId,
                          int properties)
                            throws XPathException

      Description copied from class: `ProxyReceiver`
      Notify the start of an element
      Specified by:
        `startElement` in interface `Receiver`
      Overrides:
        `startElement` in class `ProxyReceiver`
      Parameters:
        `elemName` - integer code identifying the name of the element within the name pool.
        `type` - integer code identifying the element's type within the name pool.
        `locationId` - an integer which can be interpreted using a `LocationProvider` to return information such as line number and system ID. If no location information is available, the value zero is supplied.
        `properties` - properties of the element node
      Throws:
        `XPathException` - if an error occurs

    - #### attribute

          public void attribute(NodeName nameCode,
                       SimpleType typeCode,
                       CharSequence value,
                       int locationId,
                       int properties)
                         throws XPathException

      Description copied from class: `ProxyReceiver`
      Notify an attribute. Attributes are notified after the startElement event, and before any children. Namespaces and attributes may be intermingled.
      Specified by:
        `attribute` in interface `Receiver`
      Overrides:
        `attribute` in class `ProxyReceiver`
      Parameters:
        `nameCode` - The name of the attribute, as held in the name pool
        `typeCode` - The type of the attribute, as held in the name pool
        `value` - the string value of the attribute
        `locationId` - an integer which can be interpreted using a `LocationProvider` to return information such as line number and system ID. If no location information is available, the value zero is supplied.
        `properties` - Bit significant value. The following bits are defined:
        DISABLE_ESCAPING
      Disable escaping for this attribute
        NO_SPECIAL_CHARACTERS
      Attribute value contains no special characters
      Throws:
        `XPathException` - if an error occurs

    - #### endElement

          public void endElement()
                          throws XPathException

      Handle an end-of-element event
      Specified by:
        `endElement` in interface `Receiver`
      Overrides:
        `endElement` in class `ProxyReceiver`
      Throws:
        `XPathException` - if an error occurs

    - #### characters

          public void characters(CharSequence chars,
                        int locationId,
                        int properties)
                          throws XPathException

      Handle a text node
      Specified by:
        `characters` in interface `Receiver`
      Overrides:
        `characters` in class `ProxyReceiver`
      Parameters:
        `chars` - The characters
        `locationId` - an integer which can be interpreted using a `LocationProvider` to return information such as line number and system ID. If no location information is available, the value zero is supplied.
        `properties` - Bit significant value. The following bits are defined:
      DISABLE_ESCAPING
        Disable escaping for this text node
      USE_CDATA
        Output as a CDATA section
      Throws:
        `XPathException` - if an error occurs

    - #### usesTypeAnnotations

          public boolean usesTypeAnnotations()

      Ask whether this Receiver (or the downstream pipeline) makes any use of the type annotations supplied on element and attribute events
      Specified by:
        `usesTypeAnnotations` in interface `Receiver`
      Overrides:
        `usesTypeAnnotations` in class `ProxyReceiver`
      Returns:
        true if the Receiver makes any use of this information. If false, the caller may supply untyped nodes instead of supplying the type annotation

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