Class XSLStyleSheet

  • All Implemented Interfaces:
    NodeInfo, javax.xml.transform.dom.DOMLocator, javax.xml.transform.Source, javax.xml.transform.SourceLocator, org.w3c.dom.Element, org.w3c.dom.NamedNodeMap, org.w3c.dom.Node, org.xml.sax.Locator

    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.
    • Constructor Detail

      • XSLStyleSheet

        public XSLStyleSheet()
    • Method Detail

      • setPreparedStyleSheet

        public void setPreparedStyleSheet​(PreparedStyleSheet sheet)
        Create link to the owning PreparedStyleSheet object
      • getRuleManager

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

        protected Mode getStripperRules()
        Get the rules determining which nodes are to be stripped from the tree
      • newStripper

        public Stripper newStripper()
        Create a Stripper which handles whitespace stripping definitions
      • stripsWhitespace

        public boolean stripsWhitespace()
        Determine whether this stylesheet does any whitespace stripping
      • getKeyManager

        public KeyManager getKeyManager()
        Get the KeyManager which handles key definitions
      • getDecimalFormatManager

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

        public PreviewManager getPreviewManager()
        Get the PreviewManager which handles saxon:preview element definitions
        Returns:
        null if there are no saxon:preview elements
      • setPreviewManager

        public void setPreviewManager​(PreviewManager pm)
        Set the preview manager
      • setPrecedence

        public void setPrecedence​(int prec)
        Set the import precedence of this stylesheet
      • getPrecedence

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

        public int getMinImportPrecedence()
        Get the minimum import precedence of this stylesheet, that is, the lowest precedence of any stylesheet imported by this one
      • 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
      • setImporter

        public void setImporter​(XSLStyleSheet importer)
        Set the StyleSheet that included or imported this one.
      • getImporter

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

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

        public boolean wasIncluded()
        Determine whether this stylesheet was included (by its "importer") using an xsl:include statement as distinct from xsl:import.
      • getTopLevel

        public java.util.Vector getTopLevel()
        Get the top level elements in this stylesheet, after applying include/import
      • allocateSlotNumber

        public int allocateSlotNumber()
        Allocate a slot number for a global variable or parameter
      • allocateLocalSlots

        public void allocateLocalSlots​(int n)
        Ensure there is enuogh space for local variables or parameters in any template
      • prepareAttributes

        public void prepareAttributes()
                               throws javax.xml.transform.TransformerConfigurationException
        Prepare the attributes on the stylesheet element
        Specified by:
        prepareAttributes in class StyleElement
        Throws:
        javax.xml.transform.TransformerConfigurationException
      • processVersionAttribute

        protected void processVersionAttribute​(int nc)
        Process the version attribute - mandatory on this element (but checked elsewhere)
        Overrides:
        processVersionAttribute in class StyleElement
        Parameters:
        nc - the name code of the attribute required
      • getNamespaceAlias

        protected short 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 code of the result uri to be used: return the stylesheet uri unchanged if no alias is defined
      • validate

        public void validate()
                      throws javax.xml.transform.TransformerConfigurationException
        Validate this element
        Overrides:
        validate in class StyleElement
        Throws:
        javax.xml.transform.TransformerConfigurationException
      • preprocess

        public void preprocess()
                        throws javax.xml.transform.TransformerConfigurationException
        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.
        Overrides:
        preprocess in class StyleElement
        Throws:
        javax.xml.transform.TransformerConfigurationException
      • spliceIncludes

        public void spliceIncludes()
                            throws javax.xml.transform.TransformerConfigurationException
        Process xsl:include and xsl:import elements.
        Throws:
        javax.xml.transform.TransformerConfigurationException
      • hasNamespaceAliases

        protected boolean hasNamespaceAliases()
      • processAllAttributes

        public void processAllAttributes()
                                  throws javax.xml.transform.TransformerConfigurationException
        Process the attributes of every node in the stylesheet
        Overrides:
        processAllAttributes in class StyleElement
        Throws:
        javax.xml.transform.TransformerConfigurationException
      • initialiseBindery

        public void initialiseBindery​(Bindery bindery)
        Allocate space in bindery for all the variables needed This has to be done early to accommodate preview mode
      • gatherOutputProperties

        public void gatherOutputProperties​(java.util.Properties details)
        Update an output properties object using the xsl:output elements in the stylesheet. This method can be called before the source document is available; all properties will be returned as written, with attribute value templates and namespace prefixes unexpanded, and no validation performed.
      • updateOutputProperties

        public void updateOutputProperties​(java.util.Properties details,
                                           Context context)
                                    throws javax.xml.transform.TransformerException
        Update an output properties object using the xsl:output elements in the stylesheet. Note, as xsl:output now allows attribute value templates, this cannot be called until the source document is available.
        Throws:
        javax.xml.transform.TransformerException
      • getExternalJavaClass

        public java.lang.Class getExternalJavaClass​(java.lang.String uri)
                                             throws javax.xml.transform.TransformerException
        Get a Java class for a given namespace URI, if possible. return null if none is found.
        Throws:
        javax.xml.transform.TransformerException - if a class is found but cannot be loaded
      • process

        public void process​(Context context)
                     throws javax.xml.transform.TransformerException
        Process() is called once the source document is available. It activates those top-level stylesheet elements that were not dealt with at preprocessing stage, notably global variables and parameters, and xsl:output elements
        Specified by:
        process in class StyleElement
        Parameters:
        context - The context in the source XML document, giving access to the current node, the current variables, etc.
        Throws:
        javax.xml.transform.TransformerException