net.sf.saxon.event
Class CommentStripper

java.lang.Object
  extended by net.sf.saxon.event.SequenceReceiver
      extended by net.sf.saxon.event.ProxyReceiver
          extended by net.sf.saxon.event.CommentStripper
All Implemented Interfaces:
Result, Receiver

public class CommentStripper
extends ProxyReceiver

The CommentStripper class is a filter that removes all comments and processing instructions. It also concatenates text nodes that are split by comments and PIs. This follows the rules for processing stylesheets.

Author:
Michael H. Kay

Field Summary
 
Fields inherited from interface javax.xml.transform.Result
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING
 
Constructor Summary
CommentStripper()
          Default constructor for use in subclasses
 
Method Summary
 void characters(CharSequence chars, int locationId, int properties)
          Handle a text node.
 void comment(CharSequence chars, int locationId, int properties)
          Remove comments
 void endElement()
          Callback interface for SAX: not for application use
 void processingInstruction(String name, CharSequence data, int locationId, int properties)
          Remove processing instructions
 void startElement(int nameCode, int typeCode, int locationId, int properties)
          Notify the start of an element
 
Methods inherited from class net.sf.saxon.event.ProxyReceiver
append, attribute, close, endDocument, getConfiguration, getDocumentLocator, getNamePool, getUnderlyingReceiver, namespace, open, setPipelineConfiguration, setSystemId, setUnderlyingReceiver, setUnparsedEntity, startContent, startDocument
 
Methods inherited from class net.sf.saxon.event.SequenceReceiver
getPipelineConfiguration, getSystemId
 
Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

CommentStripper

public CommentStripper()
Default constructor for use in subclasses

Method Detail

startElement

public void startElement(int nameCode,
                         int typeCode,
                         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:
nameCode - integer code identifying the name of the element within the name pool.
typeCode - 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

endElement

public void endElement()
                throws XPathException
Callback interface for SAX: not for application use

Specified by:
endElement in interface Receiver
Overrides:
endElement in class ProxyReceiver
Throws:
XPathException

characters

public void characters(CharSequence chars,
                       int locationId,
                       int properties)
                throws XPathException
Handle a text node. Because we're often handling stylesheets on this path, whitespace text nodes will often be stripped but we can't strip them immediately because of the case [element] [!-- comment --]text[/element], where the space before the comment is considered significant. But it's worth going to some effort to avoid uncompressing the whitespace in the more common case, so that it can easily be detected and stripped downstream.

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

comment

public void comment(CharSequence chars,
                    int locationId,
                    int properties)
Remove comments

Specified by:
comment in interface Receiver
Overrides:
comment in class ProxyReceiver
Parameters:
chars - The content of the comment
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 - Additional information about the comment. The following bits are defined:
CHECKED
Comment is known to be legal (e.g. doesn't contain "--")

processingInstruction

public void processingInstruction(String name,
                                  CharSequence data,
                                  int locationId,
                                  int properties)
Remove processing instructions

Specified by:
processingInstruction in interface Receiver
Overrides:
processingInstruction in class ProxyReceiver
Parameters:
name - The PI name. This must be a legal name (it will not be checked).
data - The data portion of the processing instruction
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 - Additional information about the PI. The following bits are defined:
CHECKED
Data is known to be legal (e.g. doesn't contain "?>")


Copyright (C) Michael H. Kay. All rights reserved.