org.apache.xml.utils

## Class StylesheetPIHandler

- java.lang.Object
- - org.xml.sax.helpers.DefaultHandler
  - - org.apache.xml.utils.StylesheetPIHandler

All Implemented Interfaces:
  ContentHandler, DTDHandler, EntityResolver, ErrorHandler

    public class StylesheetPIHandler
    extends DefaultHandler

Search for the xml-stylesheet processing instructions in an XML document.

See Also:
  Associating Style Sheets with XML documents, Version 1.0

### Constructor Summary

Constructors
Constructor and Description
`StylesheetPIHandler(java.lang.String baseID, java.lang.String media, java.lang.String title, java.lang.String charset)` Construct a StylesheetPIHandler instance that will search for xml-stylesheet PIs based on the given criteria.

### Method Summary

Methods
`Source` `getAssociatedStylesheet()` Return the last stylesheet found that match the constraints.
`java.lang.String` `getBaseId()`
`URIResolver` `getURIResolver()` Get the object that will be used to resolve URIs in href in xml-stylesheet processing instruction.
`void` `processingInstruction(java.lang.String target, java.lang.String data)` Handle the xml-stylesheet processing instruction.
`void` `setBaseId(java.lang.String baseId)` Added additional getter and setter methods for the Base Id to fix bugzilla bug 24187
`void` `setURIResolver(URIResolver resolver)` Get the object that will be used to resolve URIs in href in xml-stylesheet processing instruction.
`void` `startElement(java.lang.String namespaceURI, java.lang.String localName, java.lang.String qName, Attributes atts)` The spec notes that "The xml-stylesheet processing instruction is allowed only in the prolog of an XML document

### Methods inherited from class org.xml.sax.helpers.DefaultHandler

`characters, endDocument, endElement, endPrefixMapping, error, fatalError, ignorableWhitespace, notationDecl, resolveEntity, setDocumentLocator, skippedEntity, startDocument, startPrefixMapping, unparsedEntityDecl, warning`

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

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

### Constructor Detail

#### StylesheetPIHandler

    public StylesheetPIHandler(java.lang.String baseID,
                       java.lang.String media,
                       java.lang.String title,
                       java.lang.String charset)

Construct a StylesheetPIHandler instance that will search for xml-stylesheet PIs based on the given criteria.

Parameters:
  `baseID` - The base ID of the XML document, needed to resolve relative IDs.
  `media` - The desired media criteria.
  `title` - The desired title criteria.
  `charset` - The desired character set criteria.

### Method Detail

#### setURIResolver

    public void setURIResolver(URIResolver resolver)

Get the object that will be used to resolve URIs in href in xml-stylesheet processing instruction.

Parameters:
  `resolver` - An object that implements the URIResolver interface, or null.

#### getURIResolver

    public URIResolver getURIResolver()

Get the object that will be used to resolve URIs in href in xml-stylesheet processing instruction.

Returns:
  The URIResolver that was set with setURIResolver.

#### getAssociatedStylesheet

    public Source getAssociatedStylesheet()

Return the last stylesheet found that match the constraints.

Returns:
  Source object that references the last stylesheet reference that matches the constraints.

#### processingInstruction

    public void processingInstruction(java.lang.String target,
                             java.lang.String data)
                               throws SAXException

Handle the xml-stylesheet processing instruction.

Specified by:
  `processingInstruction` in interface `ContentHandler`
Overrides:
  `processingInstruction` in class `DefaultHandler`
Parameters:
  `target` - The processing instruction target.
  `data` - The processing instruction data, or null if none is supplied.
Throws:
  `SAXException` - Any SAX exception, possibly wrapping another exception.
See Also:
  `ContentHandler.processingInstruction(java.lang.String, java.lang.String)`, Associating Style Sheets with XML documents, Version 1.0

#### startElement

    public void startElement(java.lang.String namespaceURI,
                    java.lang.String localName,
                    java.lang.String qName,
                    Attributes atts)
                      throws SAXException

The spec notes that "The xml-stylesheet processing instruction is allowed only in the prolog of an XML document.", so, at least for right now, I'm going to go ahead an throw a TransformerException in order to stop the parse.

Specified by:
  `startElement` in interface `ContentHandler`
Overrides:
  `startElement` in class `DefaultHandler`
Parameters:
  `namespaceURI` - The Namespace URI, or an empty string.
  `localName` - The local name (without prefix), or empty string if not namespace processing.
  `qName` - The qualified name (with prefix).
  `atts` - The specified or defaulted attributes.
Throws:
  `StopParseException` - since there can be no valid xml-stylesheet processing instructions past the first element.
  `SAXException` - any SAX exception, possibly wrapping another exception
See Also:
  `ContentHandler.startElement(java.lang.String, java.lang.String, java.lang.String, org.xml.sax.Attributes)`

#### setBaseId

    public void setBaseId(java.lang.String baseId)

Added additional getter and setter methods for the Base Id to fix bugzilla bug 24187

#### getBaseId

    public java.lang.String getBaseId()