Class StylesheetHandler
- All Implemented Interfaces:
TemplatesHandler
,NodeConsumer
,PrefixResolver
,ContentHandler
,DTDHandler
,EntityResolver
,ErrorHandler
-
Field Summary
FieldsModifier and TypeFieldDescriptionstatic final int
If getStylesheetType returns this value, the current stylesheet is an imported stylesheet.static final int
If getStylesheetType returns this value, the current stylesheet is an included stylesheet.static final int
If getStylesheetType returns this value, the current stylesheet is a root stylesheet. -
Constructor Summary
ConstructorsConstructorDescriptionStylesheetHandler
(TransformerFactoryImpl processor) Create a StylesheetHandler object, creating a root stylesheet as the target. -
Method Summary
Modifier and TypeMethodDescriptionvoid
characters
(char[] ch, int start, int length) Receive notification of character data inside an element.createXPath
(String str, ElemTemplateElement owningTemplate) Process an expression string into an XPath.void
Receive notification of the end of the document.void
endElement
(String uri, String localName, String rawName) Receive notification of the end of an element.void
endPrefixMapping
(String prefix) Receive notification of the end of a Namespace mapping.void
Receive notification of a recoverable XSLT processing error.void
Report a fatal XSLT processing error.Return the base identifier.boolean
Get the current stylesheet Locator object.getNamespaceForPrefix
(String prefix) Given a namespace, get the corrisponding prefix from the current namespace support context.getNamespaceForPrefix
(String prefix, Node context) Given a namespace, get the corrisponding prefix.boolean
Set the node that is originating the SAX event.Get the root of the XSLT Schema, which tells us how to transition content handlers, create elements, etc.boolean
Get the XSLT TransformerFactoryImpl for needed services.Return the stylesheet root that this handler is constructing.Get the base ID (URI or system ID) from where relative URLs will be resolved.When this object is used as a ContentHandler or ContentHandler, it will create a Templates object, which the caller can get once the SAX events have been completed.boolean
void
ignorableWhitespace
(char[] ch, int start, int length) Receive notification of ignorable whitespace in element content.boolean
Test whether the _last_ endDocument() has been processed.void
notationDecl
(String name, String publicId, String systemId) Receive notification of a notation declaration.void
processingInstruction
(String target, String data) Receive notification of a processing instruction.void
Push the current stylesheet being constructed.resolveEntity
(String publicId, String systemId) Resolve an external entity.void
setDocumentLocator
(Locator locator) Receive a Locator object for document events.void
Set the node that is originating the SAX event.void
setSystemId
(String baseID) Set the base ID (URL or system ID) for the stylesheet created by this builder.void
skippedEntity
(String name) Receive notification of a skipped entity.void
Receive notification of the beginning of the document.void
startElement
(String uri, String localName, String rawName, Attributes attributes) Receive notification of the start of an element.void
startPrefixMapping
(String prefix, String uri) Receive notification of the start of a Namespace mapping.void
unparsedEntityDecl
(String name, String publicId, String systemId, String notationName) Receive notification of an unparsed entity declaration.void
Warn the user of an problem.void
Receive notification of a XSLT processing warning.Methods inherited from class java.lang.Object
equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
Methods inherited from interface org.xml.sax.ContentHandler
declaration
-
Field Details
-
STYPE_ROOT
public static final int STYPE_ROOTIf getStylesheetType returns this value, the current stylesheet is a root stylesheet.- See Also:
-
STYPE_INCLUDE
public static final int STYPE_INCLUDEIf getStylesheetType returns this value, the current stylesheet is an included stylesheet.- See Also:
-
STYPE_IMPORT
public static final int STYPE_IMPORTIf getStylesheetType returns this value, the current stylesheet is an imported stylesheet.- See Also:
-
-
Constructor Details
-
StylesheetHandler
Create a StylesheetHandler object, creating a root stylesheet as the target.- Parameters:
processor
- non-null reference to the transformer factory that owns this handler.- Throws:
TransformerConfigurationException
- if a StylesheetRoot can not be constructed for some reason.
-
-
Method Details
-
createXPath
public XPath createXPath(String str, ElemTemplateElement owningTemplate) throws TransformerException Process an expression string into an XPath. Must be public for access by the AVT class.- Parameters:
str
- A non-null reference to a valid or invalid XPath expression string.- Returns:
- A non-null reference to an XPath object that represents the string argument.
- Throws:
TransformerException
- if the expression can not be processed.- See Also:
-
getNamespaceForPrefix
Given a namespace, get the corrisponding prefix from the current namespace support context.- Specified by:
getNamespaceForPrefix
in interfacePrefixResolver
- Parameters:
prefix
- The prefix to look up, which may be an empty string ("") for the default Namespace.- Returns:
- The associated Namespace URI, or null if the prefix is undeclared in this context.
-
getNamespaceForPrefix
Given a namespace, get the corrisponding prefix. This is here only to support thePrefixResolver
interface, and will throw an error if invoked on this object.- Specified by:
getNamespaceForPrefix
in interfacePrefixResolver
- Parameters:
prefix
- The prefix to look up, which may be an empty string ("") for the default Namespace.context
- The node context from which to look up the URI.- Returns:
- The associated Namespace URI, or null if the prefix is undeclared in this context.
-
getTemplates
When this object is used as a ContentHandler or ContentHandler, it will create a Templates object, which the caller can get once the SAX events have been completed.- Specified by:
getTemplates
in interfaceTemplatesHandler
- Returns:
- The stylesheet object that was created during the SAX event process, or null if no stylesheet has been created. Author Scott Boag
-
setSystemId
Set the base ID (URL or system ID) for the stylesheet created by this builder. This must be set in order to resolve relative URLs in the stylesheet.- Specified by:
setSystemId
in interfaceTemplatesHandler
- Parameters:
baseID
- Base URL for this stylesheet.
-
getSystemId
Get the base ID (URI or system ID) from where relative URLs will be resolved.- Specified by:
getSystemId
in interfaceTemplatesHandler
- Returns:
- The systemID that was set with
setSystemId(java.lang.String)
.
-
resolveEntity
Resolve an external entity.- Specified by:
resolveEntity
in interfaceEntityResolver
- Overrides:
resolveEntity
in classDefaultHandler
- Parameters:
publicId
- The public identifer, or null if none is available.systemId
- The system identifier provided in the XML document.- Returns:
- The new input source, or null to require the default behaviour.
- Throws:
SAXException
- if the entity can not be resolved.
-
notationDecl
Receive notification of a notation declaration.By default, do nothing. Application writers may override this method in a subclass if they wish to keep track of the notations declared in a document.
- Specified by:
notationDecl
in interfaceDTDHandler
- Overrides:
notationDecl
in classDefaultHandler
- Parameters:
name
- The notation name.publicId
- The notation public identifier, or null if not available.systemId
- The notation system identifier.- See Also:
-
unparsedEntityDecl
Receive notification of an unparsed entity declaration.- Specified by:
unparsedEntityDecl
in interfaceDTDHandler
- Overrides:
unparsedEntityDecl
in classDefaultHandler
- Parameters:
name
- The entity name.publicId
- The entity public identifier, or null if not available.systemId
- The entity system identifier.notationName
- The name of the associated notation.- See Also:
-
setDocumentLocator
Receive a Locator object for document events. This is called by the parser to push a locator for the stylesheet being parsed. The stack needs to be popped after the stylesheet has been parsed. We pop in popStylesheet.- Specified by:
setDocumentLocator
in interfaceContentHandler
- Overrides:
setDocumentLocator
in classDefaultHandler
- Parameters:
locator
- A locator for all SAX document events.- See Also:
-
startDocument
Receive notification of the beginning of the document.- Specified by:
startDocument
in interfaceContentHandler
- Overrides:
startDocument
in classDefaultHandler
- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
isStylesheetParsingComplete
public boolean isStylesheetParsingComplete()Test whether the _last_ endDocument() has been processed. This is needed as guidance for stylesheet optimization and compilation engines, which generally don't want to start until all included and imported stylesheets have been fully parsed.- Returns:
- true iff the complete stylesheet tree has been built.
-
endDocument
Receive notification of the end of the document.- Specified by:
endDocument
in interfaceContentHandler
- Overrides:
endDocument
in classDefaultHandler
- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
startPrefixMapping
Receive notification of the start of a Namespace mapping.By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).
- Specified by:
startPrefixMapping
in interfaceContentHandler
- Overrides:
startPrefixMapping
in classDefaultHandler
- Parameters:
prefix
- The Namespace prefix being declared.uri
- The Namespace URI mapped to the prefix.- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
endPrefixMapping
Receive notification of the end of a Namespace mapping.By default, do nothing. Application writers may override this method in a subclass to take specific actions at the start of each element (such as allocating a new tree node or writing output to a file).
- Specified by:
endPrefixMapping
in interfaceContentHandler
- Overrides:
endPrefixMapping
in classDefaultHandler
- Parameters:
prefix
- The Namespace prefix being declared.- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
startElement
public void startElement(String uri, String localName, String rawName, Attributes attributes) throws SAXException Receive notification of the start of an element.- Specified by:
startElement
in interfaceContentHandler
- Overrides:
startElement
in classDefaultHandler
- Parameters:
uri
- The Namespace URI, or an empty string.localName
- The local name (without prefix), or empty string if not namespace processing.rawName
- The qualified name (with prefix).attributes
- The specified or defaulted attributes.- Throws:
SAXException
-
endElement
Receive notification of the end of an element.- Specified by:
endElement
in interfaceContentHandler
- Overrides:
endElement
in classDefaultHandler
- Parameters:
uri
- The Namespace URI, or an empty string.localName
- The local name (without prefix), or empty string if not namespace processing.rawName
- The qualified name (with prefix).- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
characters
Receive notification of character data inside an element.- Specified by:
characters
in interfaceContentHandler
- Overrides:
characters
in classDefaultHandler
- Parameters:
ch
- The characters.start
- The start position in the character array.length
- The number of characters to use from the character array.- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
ignorableWhitespace
Receive notification of ignorable whitespace in element content.- Specified by:
ignorableWhitespace
in interfaceContentHandler
- Overrides:
ignorableWhitespace
in classDefaultHandler
- Parameters:
ch
- The whitespace characters.start
- The start position in the character array.length
- The number of characters to use from the character array.- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
processingInstruction
Receive notification of a processing instruction.The Parser will invoke this method once for each processing instruction found: note that processing instructions may occur before or after the main document element.
A SAX parser should never report an XML declaration (XML 1.0, section 2.8) or a text declaration (XML 1.0, section 4.3.1) using this method.
By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.
- Specified by:
processingInstruction
in interfaceContentHandler
- Overrides:
processingInstruction
in classDefaultHandler
- 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:
-
skippedEntity
Receive notification of a skipped entity.By default, do nothing. Application writers may override this method in a subclass to take specific actions for each processing instruction, such as setting status variables or invoking other methods.
- Specified by:
skippedEntity
in interfaceContentHandler
- Overrides:
skippedEntity
in classDefaultHandler
- Parameters:
name
- The name of the skipped entity.- Throws:
SAXException
- Any SAX exception, possibly wrapping another exception.- See Also:
-
warn
Warn the user of an problem.- Parameters:
msg
- An key into theXSLTErrorResources
table, that is one of the WG_ prefixed definitions.args
- An array of arguments for the given warning.- Throws:
SAXException
- that wraps aTransformerException
if the currentErrorListener.warning(javax.xml.transform.TransformerException)
method chooses to flag this condition as an error.
-
warning
Receive notification of a XSLT processing warning.- Specified by:
warning
in interfaceErrorHandler
- Overrides:
warning
in classDefaultHandler
- Parameters:
e
- The warning information encoded as an exception.- Throws:
SAXException
- that wraps aTransformerException
if the currentErrorListener.warning(javax.xml.transform.TransformerException)
method chooses to flag this condition as an error.
-
error
Receive notification of a recoverable XSLT processing error.- Specified by:
error
in interfaceErrorHandler
- Overrides:
error
in classDefaultHandler
- Parameters:
e
- The error information encoded as an exception.- Throws:
SAXException
- that wraps aTransformerException
if the currentErrorListener.error(javax.xml.transform.TransformerException)
method chooses to flag this condition as an error.
-
fatalError
Report a fatal XSLT processing error.- Specified by:
fatalError
in interfaceErrorHandler
- Overrides:
fatalError
in classDefaultHandler
- Parameters:
e
- The error information encoded as an exception.- Throws:
SAXException
- that wraps aTransformerException
if the currentErrorListener.fatalError(javax.xml.transform.TransformerException)
method chooses to flag this condition as an error.
-
getStylesheetProcessor
Get the XSLT TransformerFactoryImpl for needed services. TODO: This method should be renamed.- Returns:
- The TransformerFactoryImpl that owns this handler.
-
getStylesheetRoot
Return the stylesheet root that this handler is constructing.- Returns:
- The root stylesheet of the stylesheets tree.
-
pushStylesheet
Push the current stylesheet being constructed. If no other stylesheets have been pushed onto the stack, assume the argument is a stylesheet root, and also set the stylesheet root member.- Parameters:
s
- non-null reference to a stylesheet.
-
getSchema
Get the root of the XSLT Schema, which tells us how to transition content handlers, create elements, etc.- Returns:
- The root XSLT Schema, which should never be null.
-
getBaseIdentifier
Return the base identifier.- Specified by:
getBaseIdentifier
in interfacePrefixResolver
- Returns:
- The base identifier of the current stylesheet.
-
getLocator
Get the current stylesheet Locator object.- Returns:
- non-null reference to the current locator object.
-
setOriginatingNode
Set the node that is originating the SAX event.- Specified by:
setOriginatingNode
in interfaceNodeConsumer
- Parameters:
n
- Reference to node that originated the current event.- See Also:
-
getOriginatingNode
Set the node that is originating the SAX event.- Returns:
- Reference to node that originated the current event.
- See Also:
-
handlesNullPrefixes
public boolean handlesNullPrefixes()- Specified by:
handlesNullPrefixes
in interfacePrefixResolver
- See Also:
-
getOptimize
public boolean getOptimize()- Returns:
- Optimization flag
-
getIncremental
public boolean getIncremental()- Returns:
- Incremental flag
-
getSource_location
public boolean getSource_location()- Returns:
- Source Location flag
-