com.nwalsh.saxon
Class UnwrapLinksEmitter

java.lang.Object
  extended bycom.icl.saxon.output.Emitter
      extended bycom.nwalsh.saxon.CopyEmitter
          extended bycom.nwalsh.saxon.UnwrapLinksEmitter
All Implemented Interfaces:
Result

public class UnwrapLinksEmitter
extends CopyEmitter

Saxon extension to unwrap links in a result tree fragment.

$Id: UnwrapLinksEmitter.java,v 1.1 2002/06/26 11:02:05 nwalsh Exp $

Copyright (C) 2000, 2002 Norman Walsh.

This class provides the guts of a Saxon 6.* implementation of a link unwrapper.

The general design is this: the stylesheets construct a result tree fragment for some environment. Then the result tree fragment is "replayed" through the UnwrapLinksEmitter; the UnwrapLinksEmitter builds a new result tree fragment from this event stream with top-level links unwrapped. That RTF is returned. Note that only a single level of unwrapping is performed. This is clearly a crude implementation.

Change Log:

1.0

Initial release.

Version:
$Id: UnwrapLinksEmitter.java,v 1.1 2002/06/26 11:02:05 nwalsh Exp $
Author:
Norman Walsh ndw@nwalsh.com

Field Summary
protected  Stack elementStack
          A stack for the preserving information about open elements.
protected  boolean foStylesheet
          Is the stylesheet currently running an FO stylesheet?
protected static String foURI
          The FO namespace name.
protected  int htmlAFingerprint
           
protected  boolean inSkip
           
protected  int linkDepth
          Are we currently in a link? How deep?
protected  Stack saveStack
           
protected  int skipDepth
           
protected  boolean tryAgain
           
protected  int xhtmlAFingerprint
           
protected static String xhURI
          The XHTML namespace name.
 
Fields inherited from class com.nwalsh.saxon.CopyEmitter
namePool, rtf, rtfEmitter
 
Fields inherited from class com.icl.saxon.output.Emitter
locator, outputProperties, outputStream, systemId, writer
 
Fields inherited from interface javax.xml.transform.Result
PI_DISABLE_OUTPUT_ESCAPING, PI_ENABLE_OUTPUT_ESCAPING
 
Constructor Summary
UnwrapLinksEmitter(Controller controller, NamePool namePool, boolean foStylesheet)
          Constructor for the UnwrapLinksEmitter.
 
Method Summary
 void endElement(int nameCode)
          Process end element events.
 void startElement(int nameCode, Attributes attributes, int[] namespaces, int nscount)
          Process start element events.
 boolean tryAgain()
           
 
Methods inherited from class com.nwalsh.saxon.CopyEmitter
characters, comment, endDocument, getResultTreeFragment, processingInstruction, setDocumentLocator, setEscaping, setNamePool, setUnparsedEntity, setWriter, startDocument
 
Methods inherited from class com.icl.saxon.output.Emitter
getNamePool, getOutputProperties, getOutputStream, getSystemId, getWriter, makeEmitter, setOutputProperties, setOutputStream, setSystemId, usesWriter
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Field Detail

elementStack

protected Stack elementStack
A stack for the preserving information about open elements.


saveStack

protected Stack saveStack

foURI

protected static String foURI
The FO namespace name.


xhURI

protected static String xhURI
The XHTML namespace name.


foStylesheet

protected boolean foStylesheet
Is the stylesheet currently running an FO stylesheet?


linkDepth

protected int linkDepth
Are we currently in a link? How deep?


skipDepth

protected int skipDepth

htmlAFingerprint

protected int htmlAFingerprint

xhtmlAFingerprint

protected int xhtmlAFingerprint

inSkip

protected boolean inSkip

tryAgain

protected boolean tryAgain
Constructor Detail

UnwrapLinksEmitter

public UnwrapLinksEmitter(Controller controller,
                          NamePool namePool,
                          boolean foStylesheet)

Constructor for the UnwrapLinksEmitter.

Parameters:
namePool - The name pool to use for constructing elements and attributes.
foStylesheet - Is this an FO stylesheet?
Method Detail

startElement

public void startElement(int nameCode,
                         Attributes attributes,
                         int[] namespaces,
                         int nscount)
                  throws TransformerException
Process start element events.

Overrides:
startElement in class CopyEmitter
Throws:
TransformerException

endElement

public void endElement(int nameCode)
                throws TransformerException
Process end element events.

Overrides:
endElement in class CopyEmitter
Throws:
TransformerException

tryAgain

public boolean tryAgain()
                 throws TransformerException
Throws:
TransformerException