net.sf.saxon.style

Class XSLStylesheet

Implemented Interfaces:
Locator, Container, Locator, Serializable, Source, SourceLocator, FingerprintedNode, InstructionInfo, Item, LocationProvider, NamespaceResolver, NodeInfo, PullEvent, SaxonLocator, ValueRepresentation

public class XSLStylesheet
extends StyleElement

An xsl:stylesheet or xsl:transform element in the stylesheet.
Note this element represents a stylesheet module, not necessarily the whole stylesheet. However, much of the functionality (and the fields) are relevant only to the top-level module.

Field Summary

static int
ANNOTATION_PRESERVE
static int
ANNOTATION_STRIP

Fields inherited from class net.sf.saxon.style.StyleElement

REPORT_ALWAYS, REPORT_IF_INSTANTIATED, REPORT_UNLESS_FALLBACK_AVAILABLE, REPORT_UNLESS_FORWARDS_COMPATIBLE, defaultCollationName, defaultXPathNamespace, extensionNamespaces, reportingCircumstances, staticContext, validationError, version

Fields inherited from class net.sf.saxon.tree.ElementWithAttributes

attributeList, namespaceList

Fields inherited from class net.sf.saxon.tree.ElementImpl

nameCode, root

Fields inherited from class net.sf.saxon.tree.ParentNodeImpl

sequence

Fields inherited from class net.sf.saxon.tree.NodeImpl

NODE_LETTER, index, parent

Fields inherited from interface net.sf.saxon.om.NodeInfo

ALL_NAMESPACES, EMPTY_NAMESPACE_LIST, IS_DTD_TYPE, IS_NILLED, LOCAL_NAMESPACES, NO_NAMESPACES

Fields inherited from interface net.sf.saxon.om.ValueRepresentation

EMPTY_VALUE_ARRAY

Method Summary

protected void
addImportedSchema(String targetNamespace)
int
allocateGlobalSlot(StructuredQName qName)
Allocate a slot number for a global variable or parameter
void
allocatePatternSlots(int n)
Ensure there is enough space for local variables or parameters when evaluating the match pattern of template rules
int
allocateUniqueParameterNumber(StructuredQName qName)
Allocate a unique number to a local parameter name.
boolean
allowsAllBuiltInTypes()
Determine whether the use of non-primitive built-in types has been enabled for this stylesheet (This is relevant only for Saxon-B: such types are always permitted in Saxon-SA)
Expression
compile(Executable exec)
Dummy compile() method to satisfy the interface
Executable
compileStylesheet()
Compile the stylesheet to create an executable.
protected void
declareJavaClass(String uri, Class theClass)
Declare a URI that maps to a Java class containing extension functions
protected void
declareXQueryFunction(XQueryFunction function)
Declare an imported XQuery function
protected StringCollator
findCollation(String name)
Find a named collation.
Properties
gatherOutputProperties(StructuredQName formatQName)
Create an output properties object representing the xsl:output elements in the stylesheet.
XSLCharacterMap
getCharacterMap(StructuredQName name)
Get a character map, identified by the fingerprint of its name.
CollationMap
getCollationMap()
Get the collation map
DecimalFormatManager
getDecimalFormatManager()
Get the DecimalFormatManager which handles decimal-format definitions
String
getDefaultCollationName()
Get the name of the default collation
int
getDefaultValidation()
Get the value of the default validation attribute
Executable
getExecutable()
Get the run-time Executable object
FunctionLibrary
getFunctionLibrary()
Get the function library.
XSLVariableDeclaration
getGlobalVariable(StructuredQName qName)
Get the global variable or parameter with a given name (taking precedence rules into account)
protected HashSet
getImportedSchemaTable()
XSLStylesheet
getImporter()
Get the StyleSheet that included or imported this one.
int
getInputTypeAnnotations()
Get the value of the input-type-annotations attribute, for this module combined with that of all included/imported modules.
int
getInputTypeAnnotationsAttribute()
Get the value of the input-type-annotations attribute, for this module alone.
KeyManager
getKeyManager()
Get the KeyManager which handles key definitions
LocationMap
getLocationMap()
Get the locationMap object
int
getMinImportPrecedence()
Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
protected int
getNamespaceAlias(short uriCode)
Get the declared namespace alias for a given namespace URI code if there is one.
int
getPrecedence()
Get the import precedence of this stylesheet
PreparedStylesheet
getPreparedStylesheet()
Get the owning PreparedStylesheet object
RuleManager
getRuleManager()
Get the RuleManager which handles template rules
protected Mode
getStripperRules()
Get the rules determining which nodes are to be stripped from the tree
List
getTopLevel()
Get the top level elements in this stylesheet, after applying include/import
protected boolean
hasNamespaceAliases()
protected boolean
isAliasResultNamespace(short uriCode)
Determine if a namespace is included in the result-prefix of a namespace-alias
protected boolean
isImportedSchema(String targetNamespace)
Get an imported schema with a given namespace
void
prepareAttributes()
Prepare the attributes on the stylesheet element
void
preprocess()
Preprocess does all the processing possible before the source document is available.
void
processAllAttributes()
Process the attributes of every node in the stylesheet
void
setCollation(String name, StringCollator collation)
Register a named collation (actually a StringCollator)
void
setImporter(XSLStylesheet importer)
Set the StyleSheet that included or imported this one.
void
setInputTypeAnnotations(int annotations)
Set the value of the input-type-annotations attribute, for this module combined with that of all included/imported modules.
void
setMinImportPrecedence(int precedence)
Set the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
void
setNeedsDynamicOutputProperties(boolean b)
Set that this stylesheet needs dynamic output properties
void
setPrecedence(int prec)
Set the import precedence of this stylesheet
void
setPreparedStylesheet(PreparedStylesheet sheet)
Create link to the owning PreparedStylesheet object
void
setWasIncluded()
Indicate that this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import
void
spliceIncludes()
Process xsl:include and xsl:import elements.
boolean
stripsWhitespace()
Determine whether this stylesheet does any whitespace stripping
void
validate()
Validate this element

Methods inherited from class net.sf.saxon.style.StyleElement

allocateLocationId, allocatePatternSlots, allocateSlots, backwardsCompatibleModeIsEnabled, bindVariable, checkEmpty, checkSortComesFirst, checkTopLevel, checkUnknownAttribute, checkWithinTemplate, compile, compileError, compileError, compileError, compileSequenceConstructor, compileWarning, definesExcludedNamespace, definesExtensionElement, fallbackProcessing, fixupReferences, forwardsCompatibleModeIsEnabled, getAllStylesheetFunctions, getAttributeSets, getAttributeValue, getCommonChildItemType, getConstructType, getContainingSlotManager, getContainingStylesheet, getDefaultCollationName, getDefaultXPathNamespace, getExecutable, getHostLanguage, getLastChildInstruction, getLineNumber, getLineNumber, getLocationProvider, getNamespaceResolver, getObjectName, getObjectName, getPrecedence, getPreparedStylesheet, getPrincipalStylesheet, getProperties, getProperty, getReturnedItemType, getSchemaType, getStaticContext, getStylesheetFunction, getSystemId, getTypeAnnotation, getVersion, getWithParamInstructions, isExcludedNamespace, isExplaining, isExtensionNamespace, isInstruction, isPermittedChild, isTopLevel, issueWarning, issueWarning, makeAttributeValueTemplate, makeExpression, makeExpressionVisitor, makeNamespaceContext, makePattern, makeQName, makeSequenceType, makeSortKeys, makeTraceInstruction, markTailCalls, mayContainFallback, mayContainSequenceConstructor, postValidate, prepareAttributes, processAllAttributes, processAttributes, processDefaultCollationAttribute, processDefaultXPathNamespaceAttribute, processExcludedNamespaces, processExtensionElementAttribute, processVersionAttribute, replaceSubExpression, reportAbsence, setLineNumber, setObjectName, setValidationError, substituteFor, typeCheck, typeCheck, undeclaredNamespaceError, validate, validateChildren, validateSubtree

Methods inherited from class net.sf.saxon.tree.ElementWithAttributes

copy, getAttributeList, getAttributeValue, getDeclaredNamespaces, getInScopeNamespaceCodes, getPrefixForURI, getURICodeForPrefix, getURIForPrefix, initialise, iteratePrefixes, setNamespaceDeclarations

Methods inherited from class net.sf.saxon.tree.ElementImpl

copy, generateId, getAttributeList, getBaseURI, getDeclaredNamespaces, getDocumentRoot, getLineNumber, getNameCode, getNodeKind, getRoot, getSystemId, initialise, setLineNumber, setNameCode, setSystemId

Methods inherited from class net.sf.saxon.tree.ParentNodeImpl

addChild, compact, enumerateChildren, getFirstChild, getLastChild, getNthChild, getSequenceNumber, getStringValue, getStringValueCS, hasChildNodes, useChildrenArray

Methods inherited from class net.sf.saxon.tree.NodeImpl

atomize, compareOrder, equals, generateId, getAttributeValue, getBaseURI, getColumnNumber, getConfiguration, getDeclaredNamespaces, getDisplayName, getDocumentNumber, getDocumentRoot, getFingerprint, getFirstChild, getLastChild, getLineNumber, getLocalPart, getNameCode, getNamePool, getNextInDocument, getNextSibling, getParent, getPrefix, getPreviousInDocument, getPreviousSibling, getPublicId, getRoot, getSequenceNumber, getStringValueCS, getSystemId, getTypeAnnotation, getTypedValue, getURI, hasChildNodes, hashCode, isSameNodeInfo, iterateAxis, iterateAxis, setSystemId

Field Details

ANNOTATION_PRESERVE

public static final int ANNOTATION_PRESERVE
Field Value:
2

ANNOTATION_STRIP

public static final int ANNOTATION_STRIP
Field Value:
1

Method Details

addImportedSchema

protected void addImportedSchema(String targetNamespace)

allocateGlobalSlot

public int allocateGlobalSlot(StructuredQName qName)
Allocate a slot number for a global variable or parameter
Parameters:
qName - the name of the variable or parameter
Returns:
int the allocated slot number

allocatePatternSlots

public void allocatePatternSlots(int n)
Ensure there is enough space for local variables or parameters when evaluating the match pattern of template rules
Parameters:
n - the number of slots to be allocated

allocateUniqueParameterNumber

public int allocateUniqueParameterNumber(StructuredQName qName)
Allocate a unique number to a local parameter name. This should only be called on the principal stylesheet module.
Parameters:
qName - the local parameter name
Returns:
an integer that uniquely identifies this parameter name within the stylesheet

allowsAllBuiltInTypes

public boolean allowsAllBuiltInTypes()
Determine whether the use of non-primitive built-in types has been enabled for this stylesheet (This is relevant only for Saxon-B: such types are always permitted in Saxon-SA)
Returns:
true if all built-in types can be used

compile

public Expression compile(Executable exec)
Dummy compile() method to satisfy the interface
Overrides:
compile in interface StyleElement

compileStylesheet

public Executable compileStylesheet()
            throws XPathException
Compile the stylesheet to create an executable.
Returns:
the Executable representing the compiled stylesheet

declareJavaClass

protected void declareJavaClass(String uri,
                                Class theClass)
Declare a URI that maps to a Java class containing extension functions
Parameters:
uri - the namespace uri used in the function names
theClass - the Java class containing methods accessible using this URI

declareXQueryFunction

protected void declareXQueryFunction(XQueryFunction function)
            throws XPathException
Declare an imported XQuery function
Parameters:
function - the imported function

findCollation

protected StringCollator findCollation(String name)
Find a named collation. Note this method should only be used at compile-time, before declarations have been pre-processed. After that time, use getCollation().
Parameters:
name - identifies the name of the collation required; null indicates that the default collation is required
Returns:
null if the collation is not found

gatherOutputProperties

public Properties gatherOutputProperties(StructuredQName formatQName)
            throws XPathException
Create an output properties object representing the xsl:output elements in the stylesheet.
Parameters:
formatQName - The name of the output format required. If set to null, gathers information for the unnamed output format
Returns:
the Properties object containing the details of the specified output format
Throws:
XPathException - if a named output format does not exist in the stylesheet

getCharacterMap

public XSLCharacterMap getCharacterMap(StructuredQName name)
Get a character map, identified by the fingerprint of its name. Search backwards through the stylesheet.
Parameters:
name - The character map name being sought
Returns:
the identified character map, or null if not found

getCollationMap

public CollationMap getCollationMap()
Get the collation map
Returns:
the CollationMap

getDecimalFormatManager

public DecimalFormatManager getDecimalFormatManager()
Get the DecimalFormatManager which handles decimal-format definitions
Returns:
the DecimalFormatManager for this stylesheet

getDefaultCollationName

public String getDefaultCollationName()
Get the name of the default collation
Overrides:
getDefaultCollationName in interface StyleElement

getDefaultValidation

public int getDefaultValidation()
Get the value of the default validation attribute

getExecutable

public Executable getExecutable()
Get the run-time Executable object
Specified by:
getExecutable in interface Container
Overrides:
getExecutable in interface StyleElement

getFunctionLibrary

public FunctionLibrary getFunctionLibrary()
Get the function library. Available only on the principal stylesheet module
Returns:
the function library

getGlobalVariable

public XSLVariableDeclaration getGlobalVariable(StructuredQName qName)
Get the global variable or parameter with a given name (taking precedence rules into account)
Parameters:
qName - name of the global variable or parameter
Returns:
the variable declaration

getImportedSchemaTable

protected HashSet getImportedSchemaTable()

getImporter

public XSLStylesheet getImporter()
Get the StyleSheet that included or imported this one.
Returns:
null if this is the principal stylesheet

getInputTypeAnnotations

public int getInputTypeAnnotations()
Returns:
the value of the input-type-annotations attribute, for this module combined with that of all included/imported modules

getInputTypeAnnotationsAttribute

public int getInputTypeAnnotationsAttribute()
            throws XPathException
Get the value of the input-type-annotations attribute, for this module alone. The value is an or-ed combination of the two bits ANNOTATION_STRIP and ANNOTATION_PRESERVE
Returns:
the value if the input-type-annotations attribute in this stylesheet module

getKeyManager

public KeyManager getKeyManager()
Get the KeyManager which handles key definitions
Returns:
the key manager

getLocationMap

public LocationMap getLocationMap()
Get the locationMap object
Returns:
the LocationMap

getMinImportPrecedence

public int getMinImportPrecedence()
Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
Returns:
the minimum precedence of imported stylesheet modules

getNamespaceAlias

protected int getNamespaceAlias(short uriCode)
Get the declared namespace alias for a given namespace URI code if there is one. If there is more than one, we get the last.
Parameters:
uriCode - The code of the uri used in the stylesheet.
Returns:
The namespace code to be used (prefix in top half, uri in bottom half): return -1 if no alias is defined

getPrecedence

public int getPrecedence()
Get the import precedence of this stylesheet
Overrides:
getPrecedence in interface StyleElement

getPreparedStylesheet

public PreparedStylesheet getPreparedStylesheet()
Get the owning PreparedStylesheet object
Overrides:
getPreparedStylesheet in interface StyleElement

getRuleManager

public RuleManager getRuleManager()
Get the RuleManager which handles template rules
Returns:
the template rule manager

getStripperRules

protected Mode getStripperRules()
Get the rules determining which nodes are to be stripped from the tree
Returns:
the Mode object holding the whitespace stripping rules. The stripping rules defined in xsl:strip-space are managed in the same way as template rules, hence the use of a special Mode object

getTopLevel

public List getTopLevel()
Get the top level elements in this stylesheet, after applying include/import
Returns:
a list of top-level elements in this stylesheet module or in those modules that it includes or imports

hasNamespaceAliases

protected boolean hasNamespaceAliases()

isAliasResultNamespace

protected boolean isAliasResultNamespace(short uriCode)
Determine if a namespace is included in the result-prefix of a namespace-alias
Parameters:
uriCode - the namepool code of the URI
Returns:
true if an xsl:namespace-alias has been defined for this namespace URI

isImportedSchema

protected boolean isImportedSchema(String targetNamespace)
Get an imported schema with a given namespace
Parameters:
targetNamespace - The target namespace of the required schema. Supply an empty string for the default namespace
Returns:
the required Schema, or null if no such schema has been imported

prepareAttributes

public void prepareAttributes()
            throws XPathException
Prepare the attributes on the stylesheet element
Overrides:
prepareAttributes in interface StyleElement

preprocess

public void preprocess()
            throws XPathException
Preprocess does all the processing possible before the source document is available. It is done once per stylesheet, so the stylesheet can be reused for multiple source documents. The method is called only on the XSLStylesheet element representing the principal stylesheet module

processAllAttributes

public void processAllAttributes()
            throws XPathException
Process the attributes of every node in the stylesheet
Overrides:
processAllAttributes in interface StyleElement

setCollation

public void setCollation(String name,
                         StringCollator collation)
Register a named collation (actually a StringCollator)
Parameters:
name - the name of the collation
collation - the StringCollator that implements this collation

setImporter

public void setImporter(XSLStylesheet importer)
Set the StyleSheet that included or imported this one.
Parameters:
importer - the stylesheet module that included or imported this module

setInputTypeAnnotations

public void setInputTypeAnnotations(int annotations)
            throws XPathException
Set the value of the input-type-annotations attribute, for this module combined with that of all included/imported modules. The value is an or-ed combination of the two bits ANNOTATION_STRIP and ANNOTATION_PRESERVE
Parameters:
annotations - the value of the input-type-annotations attribute, for this module combined with that of all included/imported modules.

setMinImportPrecedence

public void setMinImportPrecedence(int precedence)
Set the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
Parameters:
precedence - the precedence of the first stylesheet module that this one imports

setNeedsDynamicOutputProperties

public void setNeedsDynamicOutputProperties(boolean b)
Set that this stylesheet needs dynamic output properties
Parameters:
b - true if this stylesheet needs dynamic output properties

setPrecedence

public void setPrecedence(int prec)
Set the import precedence of this stylesheet
Parameters:
prec - the import precedence. Higher numbers indicate higher precedence, but the actual number has no significance

setPreparedStylesheet

public void setPreparedStylesheet(PreparedStylesheet sheet)
Create link to the owning PreparedStylesheet object
Parameters:
sheet - the PreparedStylesheet

setWasIncluded

public void setWasIncluded()
Indicate that this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import

spliceIncludes

public void spliceIncludes()
            throws XPathException
Process xsl:include and xsl:import elements.

stripsWhitespace

public boolean stripsWhitespace()
Determine whether this stylesheet does any whitespace stripping
Returns:
true if this stylesheet strips whitespace from source documents

validate

public void validate()
            throws XPathException
Validate this element
Overrides:
validate in interface StyleElement