net.sf.saxon
Class PreparedStylesheet

java.lang.Object
  extended by net.sf.saxon.expr.instruct.Executable
      extended by net.sf.saxon.PreparedStylesheet
All Implemented Interfaces:
Serializable, Templates

public class PreparedStylesheet
extends Executable
implements Templates, Serializable

This PreparedStylesheet class represents a Stylesheet that has been prepared for execution (or "compiled").

Note that the PreparedStylesheet object does not contain a reference to the source stylesheet tree (rooted at an XSLStyleSheet object). This allows the source tree to be garbage-collected when it is no longer required.

See Also:
Serialized Form

Constructor Summary
protected PreparedStylesheet(Configuration config, CompilerInfo info)
          Constructor - deliberately protected
 
Method Summary
static PreparedStylesheet compile(Source source, Configuration config, CompilerInfo info)
          Factory method to make a PreparedStylesheet
 void explain(ExpressionPresenter presenter)
          Produce an XML representation of the compiled and optimized stylesheet
 void explainNamedTemplates(ExpressionPresenter presenter)
          Explain the expression tree for named templates in a stylesheet
static Source getAssociatedStylesheet(Configuration config, Source source, String media, String title, String charset)
          Get the stylesheet specification(s) associated via the xml-stylesheet processing instruction (see http://www.w3.org/TR/xml-stylesheet/) with the document document specified in the source parameter, and that match the given criteria.
 PreparedStylesheet getCachedStylesheet(String href, String baseURI)
          Get a "next in chain" stylesheet.
 CompilerInfo getCompilerInfo()
          Get the CompilerInfo containing details of XSLT compilation options
 DecimalFormatManager getDecimalFormatManager()
          Get the DecimalFormatManager which handles decimal-format definitions
 int getErrorCount()
          Get the number of errors reported so far
 Executable getExecutable()
          Get the associated executable
 Template getNamedTemplate(StructuredQName qName)
          Get the named template with a given name.
 Properties getOutputProperties()
          Get the properties for xsl:output.
 String getReasonUnableToCompile()
          Determine whether this stylesheet can be compiled; and if it can't, return the reason why
 RuleManager getRuleManager()
          Get the RuleManager which handles template rules
 StyleNodeFactory getStyleNodeFactory()
          Get the StyleNodeFactory in use.
 boolean isCompileWithTracing()
          Determine whether trace hooks are included in the compiled code.
 Iterator<Template> iterateNamedTemplates()
          Iterate over all the named templates defined in this Executable
static PreparedStylesheet loadCompiledStylesheet(String fileName, Configuration config)
          Load a PreparedStylesheet from a compiled stylesheet stored in a file.
 DocumentImpl loadStylesheetModule(Source styleSource)
          Build the tree representation of a stylesheet module
 Transformer newTransformer()
          Make a Transformer from this Templates object.
protected  void prepare(Source styleSource)
          Prepare a stylesheet from a Source document
 void putCachedStylesheet(String href, String baseURI, PreparedStylesheet pss)
          Save a "next in chain" stylesheet in compiled form, so that it can be reused repeatedly.
 void putNamedTemplate(StructuredQName templateName, Template template)
          Register the named template with a given name
 void reportError(TransformerException err)
          Report a compile time error.
 void reportWarning(TransformerException err)
          Report a compile time warning.
 void setConfiguration(Configuration config)
          Set the configuration in which this stylesheet is compiled.
 void setDecimalFormatManager(DecimalFormatManager dfm)
          Set the DecimalFormatManager which handles decimal-format definitions
 void setReasonUnableToCompile(String reason)
          If this stylesheet can't be compiled, set a message explaining why
 void setRuleManager(RuleManager rm)
          Set the RuleManager that handles template rules
protected  void setStylesheetDocument(DocumentImpl doc)
          Create a PreparedStylesheet from a supplied DocumentInfo Note: the document must have been built using the StyleNodeFactory
 
Methods inherited from class net.sf.saxon.expr.instruct.Executable
addQueryLibraryModule, addRequiredParam, checkAllRequiredParamsArePresent, createsSecondaryResult, explainGlobalVariables, fixupQueryModules, getCharacterMapIndex, getCollationTable, getCompiledGlobalVariables, getConfiguration, getDefaultOutputProperties, getFunctionLibrary, getGlobalVariable, getGlobalVariableMap, getHostLanguage, getInitialContextItemVariableName, getKeyManager, getLargestPatternStackFrame, getLocationMap, getNamedCollation, getOutputProperties, getQueryLibraryModules, getQueryLibraryModules, getQueryModuleWithSystemId, getStripperRules, initializeBindery, isSchemaAware, newStripper, registerGlobalVariable, setCharacterMapIndex, setCollationTable, setCreatesSecondaryResult, setDefaultOutputProperties, setFunctionLibrary, setHostLanguage, setInitialContextItemVariableName, setKeyManager, setLocationMap, setOutputProperties, setPatternSlotSpace, setSchemaAware, setStripperRules, setStripsInputTypeAnnotations, setStripsWhitespace, stripsInputTypeAnnotations, stripsWhitespace
 
Methods inherited from class java.lang.Object
clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
 

Constructor Detail

PreparedStylesheet

protected PreparedStylesheet(Configuration config,
                             CompilerInfo info)
Constructor - deliberately protected

Parameters:
config - The Configuration set up by the TransformerFactory
info - Compilation options
Method Detail

compile

public static PreparedStylesheet compile(Source source,
                                         Configuration config,
                                         CompilerInfo info)
                                  throws TransformerConfigurationException
Factory method to make a PreparedStylesheet

Parameters:
source - the source of this principal stylesheet module
config - the Saxon configuration
info - compile-time options for this stylesheet compilation
Returns:
the prepared stylesheet
Throws:
TransformerConfigurationException

newTransformer

public Transformer newTransformer()
Make a Transformer from this Templates object.

Specified by:
newTransformer in interface Templates
Returns:
the new Transformer (always a Controller)
See Also:
Controller

setConfiguration

public void setConfiguration(Configuration config)
Set the configuration in which this stylesheet is compiled. Intended for internal use.

Overrides:
setConfiguration in class Executable
Parameters:
config - the configuration to be used.

getStyleNodeFactory

public StyleNodeFactory getStyleNodeFactory()
Get the StyleNodeFactory in use. The StyleNodeFactory determines which subclass of StyleElement to use for each element node in the stylesheet tree.

Returns:
the StyleNodeFactory

setDecimalFormatManager

public void setDecimalFormatManager(DecimalFormatManager dfm)
Set the DecimalFormatManager which handles decimal-format definitions

Parameters:
dfm - the DecimalFormatManager containing the named xsl:decimal-format definitions

getDecimalFormatManager

public DecimalFormatManager getDecimalFormatManager()
Get the DecimalFormatManager which handles decimal-format definitions

Returns:
the DecimalFormatManager containing the named xsl:decimal-format definitions

prepare

protected void prepare(Source styleSource)
                throws TransformerConfigurationException
Prepare a stylesheet from a Source document

Parameters:
styleSource - the source document containing the stylesheet
Throws:
TransformerConfigurationException - if compilation of the stylesheet fails for any reason

loadStylesheetModule

public DocumentImpl loadStylesheetModule(Source styleSource)
                                  throws XPathException
Build the tree representation of a stylesheet module

Parameters:
styleSource - the source of the module
Returns:
the root Document node of the tree containing the stylesheet module
Throws:
XPathException - if XML parsing or tree construction fails

setStylesheetDocument

protected void setStylesheetDocument(DocumentImpl doc)
                              throws XPathException
Create a PreparedStylesheet from a supplied DocumentInfo Note: the document must have been built using the StyleNodeFactory

Parameters:
doc - the document containing the stylesheet module
Throws:
XPathException - if the document supplied is not a stylesheet

getExecutable

public Executable getExecutable()
Get the associated executable

Returns:
the Executable for this stylesheet

setRuleManager

public void setRuleManager(RuleManager rm)
Set the RuleManager that handles template rules

Parameters:
rm - the RuleManager containing details of all the template rules

getRuleManager

public RuleManager getRuleManager()
Get the RuleManager which handles template rules

Returns:
the RuleManager registered with setRuleManager

getNamedTemplate

public Template getNamedTemplate(StructuredQName qName)
Get the named template with a given name.

Parameters:
qName - The template name
Returns:
The template (of highest import precedence) with this name if there is one; null if none is found.

putNamedTemplate

public void putNamedTemplate(StructuredQName templateName,
                             Template template)
Register the named template with a given name

Parameters:
templateName - the name of a named XSLT template
template - the template

iterateNamedTemplates

public Iterator<Template> iterateNamedTemplates()
Iterate over all the named templates defined in this Executable

Returns:
an iterator, the items returned being of class Template

explainNamedTemplates

public void explainNamedTemplates(ExpressionPresenter presenter)
Explain the expression tree for named templates in a stylesheet

Parameters:
presenter - destination for the explanatory output

isCompileWithTracing

public boolean isCompileWithTracing()
Determine whether trace hooks are included in the compiled code.

Returns:
true if trace hooks are included, false if not.
Since:
8.9

getOutputProperties

public Properties getOutputProperties()
Get the properties for xsl:output. JAXP method. The object returned will be a clone of the internal values, and thus it can be mutated without mutating the Templates object, and then handed in to the process method.

In Saxon, the properties object is a new, empty, Properties object that is backed by the live properties to supply default values for missing properties. This means that the property values must be read using the getProperty() method. Calling the get() method on the underlying Hashtable will return null.

In Saxon 8.x, this method gets the output properties for the unnamed output format in the stylesheet.

Specified by:
getOutputProperties in interface Templates
Returns:
A Properties object reflecting the output properties defined for the default (unnamed) output format in the stylesheet. It may be mutated and supplied to the setOutputProperties() method of the Transformer, without affecting other transformations that use the same stylesheet.
See Also:
Transformer.setOutputProperties(java.util.Properties)

reportError

public void reportError(TransformerException err)
                 throws TransformerException
Report a compile time error. This calls the errorListener to output details of the error, and increments an error count.

Parameters:
err - the exception containing details of the error
Throws:
TransformerException - if the ErrorListener decides that the error should be reported

getErrorCount

public int getErrorCount()
Get the number of errors reported so far

Returns:
the number of errors reported

reportWarning

public void reportWarning(TransformerException err)
Report a compile time warning. This calls the errorListener to output details of the warning.

Parameters:
err - an exception holding details of the warning condition to be reported

getCachedStylesheet

public PreparedStylesheet getCachedStylesheet(String href,
                                              String baseURI)
Get a "next in chain" stylesheet. This method is intended for internal use.

Parameters:
href - the relative URI of the next-in-chain stylesheet
baseURI - the baseURI against which this relativeURI is to be resolved
Returns:
the cached stylesheet if present in the cache, or null if not

putCachedStylesheet

public void putCachedStylesheet(String href,
                                String baseURI,
                                PreparedStylesheet pss)
Save a "next in chain" stylesheet in compiled form, so that it can be reused repeatedly. This method is intended for internal use.

Parameters:
href - the relative URI of the stylesheet
baseURI - the base URI against which the relative URI is resolved
pss - the prepared stylesheet object to be cached

getCompilerInfo

public CompilerInfo getCompilerInfo()
Get the CompilerInfo containing details of XSLT compilation options

Returns:
the CompilerInfo containing compilation options
Since:
9.2

explain

public void explain(ExpressionPresenter presenter)
Produce an XML representation of the compiled and optimized stylesheet

Parameters:
presenter - defines the destination and format of the output

getAssociatedStylesheet

public static Source getAssociatedStylesheet(Configuration config,
                                             Source source,
                                             String media,
                                             String title,
                                             String charset)
                                      throws TransformerConfigurationException
Get the stylesheet specification(s) associated via the xml-stylesheet processing instruction (see http://www.w3.org/TR/xml-stylesheet/) with the document document specified in the source parameter, and that match the given criteria. Note that it is possible to return several stylesheets, in which case they are applied as if they were a list of imports or cascades.

Parameters:
config - The Saxon Configuration
source - The XML source document.
media - The media attribute to be matched. May be null, in which case the prefered templates will be used (i.e. alternate = no).
title - The value of the title attribute to match. May be null.
charset - The value of the charset attribute to match. May be null.
Returns:
A Source object suitable for passing to the TransformerFactory.
Throws:
TransformerConfigurationException - if any problems occur

setReasonUnableToCompile

public void setReasonUnableToCompile(String reason)
If this stylesheet can't be compiled, set a message explaining why

Parameters:
reason - a message explaining why compilation is not possible

getReasonUnableToCompile

public String getReasonUnableToCompile()
Determine whether this stylesheet can be compiled; and if it can't, return the reason why

Returns:
null if the stylesheet can be compiled, or a message otherwise

loadCompiledStylesheet

public static PreparedStylesheet loadCompiledStylesheet(String fileName,
                                                        Configuration config)
                                                 throws IOException,
                                                        ClassNotFoundException
Load a PreparedStylesheet from a compiled stylesheet stored in a file.

Parameters:
fileName - The name of the file containing the compiled stylesheet (which is just the Java serialization of a PreparedStylesheet object).
config - the Configuration
Returns:
the PreparedStylesheet, which can be used in JAXP interfaces as the Templates object
Throws:
IOException
ClassNotFoundException


Copyright (c) 2004-2010 Saxonica Limited. All rights reserved.