Package com.nwalsh.saxon

# Class UnwrapLinksEmitter

java.lang.Object
com.icl.saxon.output.Emitter
com.nwalsh.saxon.CopyEmitter
com.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 1731 2002-06-26 11:03:05Z nwalsh $

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.

## Field Summary

Fields
Modifier and Type
Field
Description
`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

Constructors
Constructor
Description
`UnwrapLinksEmitter(com.icl.saxon.Controller controller, com.icl.saxon.om.NamePool namePool, boolean foStylesheet)`
Constructor for the UnwrapLinksEmitter.

## Method Summary

Modifier and Type
Method
Description
`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 Details

### 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 Details

### UnwrapLinksEmitter

public UnwrapLinksEmitter(com.icl.saxon.Controller controller, com.icl.saxon.om.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 Details

### 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`