Class XSLStyleSheet

    • Field Detail

      • sequence

        protected int sequence
    • 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 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
      • 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
      • hasNamespaceAliases

        protected boolean hasNamespaceAliases()
      • 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​(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​(Properties details,
                                           Context context)
                                    throws 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:
        TransformerException
      • getExternalJavaClass

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

        public void process​(Context context)
                     throws 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:
        TransformerException
      • getSequenceNumber

        protected final long getSequenceNumber()
        Get the node sequence number (in document order). Sequence numbers are monotonic but not consecutive. In the current implementation, parent nodes (elements and roots) have a zero least-significant word, while namespaces, attributes, text nodes, comments, and PIs have the top word the same as their owner and the bottom half reflecting their relative position.
        Overrides:
        getSequenceNumber in class NodeImpl
      • hasChildNodes

        public final boolean hasChildNodes()
        Determine if the node has any children.
        Specified by:
        hasChildNodes in interface Node
        Specified by:
        hasChildNodes in interface NodeInfo
        Overrides:
        hasChildNodes in class NodeImpl
        Returns:
        true if the node has any children, false if the node has no children.
      • enumerateChildren

        public final AxisEnumeration enumerateChildren​(NodeTest test)
        Get an enumeration of the children of this node
      • getFirstChild

        public final Node getFirstChild()
        Get the first child node of the element
        Specified by:
        getFirstChild in interface Node
        Overrides:
        getFirstChild in class NodeImpl
        Returns:
        the first child node of the required type, or null if there are no children
      • getLastChild

        public final Node getLastChild()
        Get the last child node of the element
        Specified by:
        getLastChild in interface Node
        Overrides:
        getLastChild in class NodeImpl
        Returns:
        the last child of the element, or null if there are no children
      • getChildNodes

        public final NodeList getChildNodes()
        Return a NodeList that contains all children of this node. If there are no children, this is a NodeList containing no nodes.
        Specified by:
        getChildNodes in interface Node
        Overrides:
        getChildNodes in class NodeImpl
      • getNthChild

        protected final NodeImpl getNthChild​(int n)
        Get the nth child node of the element (numbering from 0)
        Returns:
        the last child of the element, or null if there is no n'th child
      • getStringValue

        public String getStringValue()
        Return the string-value of the node, that is, the concatenation of the character content of all descendent elements and text nodes.
        Returns:
        the accumulated character content of the element, including descendant elements.
      • useChildrenArray

        public void useChildrenArray​(NodeImpl[] array)
        Supply an array to be used for the array of children. For system use only.
      • addChild

        public void addChild​(NodeImpl node,
                             int index)
        Add a child node to this node. For system use only. Note: normalizing adjacent text nodes is the responsibility of the caller.
      • removeChild

        public void removeChild​(int index)
        Remove node at given index. Will always be followed by a renumberChildren().
      • renumberChildren

        public void renumberChildren()
        Renumber the children of a given parent node. For system use only
      • dropChildren

        public void dropChildren()
        Drop a branch of the tree. The target element remains in the tree, but its children are disconnected from the parent. Unless there are other references to the children (e.g. in a variable) they will be deleted from memory next time the garbage collector comes round.
      • compact

        public void compact​(int size)
        Compact the space used by this node
      • getNodeValue

        public String getNodeValue()
        Get the node value as defined in the DOM. This is not the same as the XPath string-value.
        Specified by:
        getNodeValue in interface Node
        Overrides:
        getNodeValue in class AbstractNode