Class XSLTC


  • public final class XSLTC
    extends java.lang.Object
    Author:
    Jacek Ambroziak, Santiago Pericas-Geertsen, G. Todd Miller, Morten Jorgensen, John Howard (johnh@schemasoft.com)
    • Constructor Summary

      Constructors 
      Constructor Description
      XSLTC()
      XSLTC compiler constructor
    • Method Summary

      All Methods Instance Methods Concrete Methods 
      Modifier and Type Method Description
      int addCharacterData​(java.lang.String newData)
      Add literal text to char arrays that will be used to store character data in the stylesheet.
      boolean callsNodeset()  
      boolean compile​(java.io.InputStream stream, java.lang.String name)
      Compiles an XSL stylesheet passed in through an InputStream
      byte[][] compile​(java.lang.String name, org.xml.sax.InputSource input)
      Compiles a stylesheet pointed to by a URL.
      byte[][] compile​(java.lang.String name, org.xml.sax.InputSource input, int outputType)
      Compiles a stylesheet pointed to by a URL.
      boolean compile​(java.net.URL url)
      Compiles an XSL stylesheet pointed to by a URL
      boolean compile​(java.net.URL url, java.lang.String name)
      Compiles an XSL stylesheet pointed to by a URL
      boolean compile​(java.util.Vector stylesheets)
      Compiles a set of stylesheets pointed to by a Vector of URLs
      boolean compile​(org.xml.sax.InputSource input, java.lang.String name)
      Compiles an XSL stylesheet passed in through an InputStream
      boolean debug()
      Get current debugging message setting
      void dumpClass​(org.apache.bcel.classfile.JavaClass clazz)  
      byte[][] getBytecodes()
      Returns an array of bytecode arrays generated by a compilation.
      java.lang.String getCharacterData​(int index)
      Retrieve a string representation of the character data to be stored in the translet as a char[].
      int getCharacterDataCount()
      Get the number of char[] arrays, thus far, that will be created to store literal text in the stylesheet.
      java.lang.String getClassName()
      Get the class name for the generated translet.
      java.util.Vector getErrors()
      Get a Vector containing all compile error messages
      java.lang.String getHelperClassName()
      Returns a unique name for every helper class needed to execute a translet.
      java.lang.String getJarFileName()  
      java.util.Vector getNamesIndex()  
      java.util.Vector getNamespaceIndex()  
      java.util.Vector getNSAncestorPointers()  
      int[] getNumberFieldIndexes()  
      java.util.Properties getOutputProperties()
      Only for user by the internal TrAX implementation.
      Parser getParser()
      Only for user by the internal TrAX implementation.
      java.util.Vector getPrefixURIPairs()  
      java.util.Vector getPrefixURIPairsIdx()  
      Stylesheet getStylesheet()
      Returns the top-level stylesheet
      boolean getTemplateInlining()
      Return the state of the template inlining feature.
      java.util.Vector getWarnings()
      Get a Vector containing all compile warning messages
      org.xml.sax.XMLReader getXMLReader()
      Get the XMLReader to use for parsing the next input stylesheet
      boolean hasIdCall()  
      void init()
      Initializes the compiler to compile a new stylesheet
      boolean isMultiDocument()  
      boolean isSecureProcessing()
      Return the state of the secure processing feature.
      int nextAttributeSetSerial()  
      int nextHelperClassSerial()  
      int nextModeSerial()  
      int nextStepPatternSerial()  
      int nextStylesheetSerial()  
      void outputToJar()
      Generate output JAR-file and packages
      void printErrors()
      Print all compile error messages to standard output
      void printWarnings()
      Print all compile warning messages to standard output
      int registerAttribute​(org.apache.xalan.xsltc.compiler.QName name)
      Registers an attribute and gives it a type so that it can be mapped to DOM attribute types at run-time.
      int registerElement​(org.apache.xalan.xsltc.compiler.QName name)
      Registers an element and gives it a type so that it can be mapped to DOM element types at run-time.
      int registerNamespace​(java.lang.String namespaceURI)
      Registers a namespace and gives it a type so that it can be mapped to DOM namespace types at run-time.
      int registerNamespacePrefix​(java.lang.String name)
      Registers a namespace and gives it a type so that it can be mapped to DOM namespace types at run-time.
      int registerNamespacePrefix​(org.apache.xalan.xsltc.compiler.QName name)
      Registers a namespace prefix and gives it a type so that it can be mapped to DOM namespace types at run-time.
      int registerStylesheetPrefixMappingForRuntime​(java.util.Hashtable prefixMap, int ancestorID)
      Registers namespace declarations that the stylesheet might need to look up dynamically - for instance, if an xsl:element has a a name attribute with variable parts and has no namespace attribute.
      void setClassName​(java.lang.String className)
      Set the class name for the generated translet.
      void setDebug​(boolean debug)
      Turn debugging messages on/off
      boolean setDestDirectory​(java.lang.String dstDirName)
      Set the destination directory for the translet.
      void setJarFileName​(java.lang.String jarFileName)
      Set the name of an optional JAR-file to dump the translet and auxiliary classes to
      void setOutputType​(int type)
      Only for user by the internal TrAX implementation.
      void setPackageName​(java.lang.String packageName)
      Set an optional package name for the translet and auxiliary classes
      void setPIParameters​(java.lang.String media, java.lang.String title, java.lang.String charset)
      Set the parameters to use to locate the correct
      void setSecureProcessing​(boolean flag)
      Set the state of the secure processing feature.
      void setSourceLoader​(SourceLoader loader)
      Defines an external SourceLoader to provide the compiler with documents referenced in xsl:include/import
      void setStylesheet​(Stylesheet stylesheet)
      Set the top-level stylesheet
      void setTemplateInlining​(boolean templateInlining)
      Set a flag indicating if templates are to be inlined or not.
      void setXMLReader​(org.xml.sax.XMLReader reader)
      Set the XMLReader to use for parsing the next input stylesheet
      • Methods inherited from class java.lang.Object

        equals, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait
    • Constructor Detail

      • XSLTC

        public XSLTC()
        XSLTC compiler constructor
    • Method Detail

      • setSecureProcessing

        public void setSecureProcessing​(boolean flag)
        Set the state of the secure processing feature.
      • isSecureProcessing

        public boolean isSecureProcessing()
        Return the state of the secure processing feature.
      • getParser

        public Parser getParser()
        Only for user by the internal TrAX implementation.
      • setOutputType

        public void setOutputType​(int type)
        Only for user by the internal TrAX implementation.
      • getOutputProperties

        public java.util.Properties getOutputProperties()
        Only for user by the internal TrAX implementation.
      • init

        public void init()
        Initializes the compiler to compile a new stylesheet
      • setSourceLoader

        public void setSourceLoader​(SourceLoader loader)
        Defines an external SourceLoader to provide the compiler with documents referenced in xsl:include/import
        Parameters:
        loader - The SourceLoader to use for include/import
      • setTemplateInlining

        public void setTemplateInlining​(boolean templateInlining)
        Set a flag indicating if templates are to be inlined or not. The default is to do inlining, but this causes problems when the stylesheets have a large number of templates (e.g. branch targets exceeding 64K or a length of a method exceeding 64K).
      • getTemplateInlining

        public boolean getTemplateInlining()
        Return the state of the template inlining feature.
      • setPIParameters

        public void setPIParameters​(java.lang.String media,
                                    java.lang.String title,
                                    java.lang.String charset)
        Set the parameters to use to locate the correct processing instruction in the case where the input document to the compiler (and parser) is an XML document.
        Parameters:
        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.
      • compile

        public boolean compile​(java.net.URL url)
        Compiles an XSL stylesheet pointed to by a URL
        Parameters:
        url - An URL containing the input XSL stylesheet
      • compile

        public boolean compile​(java.net.URL url,
                               java.lang.String name)
        Compiles an XSL stylesheet pointed to by a URL
        Parameters:
        url - An URL containing the input XSL stylesheet
        name - The name to assign to the translet class
      • compile

        public boolean compile​(java.io.InputStream stream,
                               java.lang.String name)
        Compiles an XSL stylesheet passed in through an InputStream
        Parameters:
        stream - An InputStream that will pass in the stylesheet contents
        name - The name of the translet class to generate
        Returns:
        'true' if the compilation was successful
      • compile

        public boolean compile​(org.xml.sax.InputSource input,
                               java.lang.String name)
        Compiles an XSL stylesheet passed in through an InputStream
        Parameters:
        input - An InputSource that will pass in the stylesheet contents
        name - The name of the translet class to generate - can be null
        Returns:
        'true' if the compilation was successful
      • compile

        public boolean compile​(java.util.Vector stylesheets)
        Compiles a set of stylesheets pointed to by a Vector of URLs
        Parameters:
        stylesheets - A Vector containing URLs pointing to the stylesheets
        Returns:
        'true' if the compilation was successful
      • getBytecodes

        public byte[][] getBytecodes()
        Returns an array of bytecode arrays generated by a compilation.
        Returns:
        JVM bytecodes that represent translet class definition
      • compile

        public byte[][] compile​(java.lang.String name,
                                org.xml.sax.InputSource input,
                                int outputType)
        Compiles a stylesheet pointed to by a URL. The result is put in a set of byte arrays. One byte array for each generated class.
        Parameters:
        name - The name of the translet class to generate
        input - An InputSource that will pass in the stylesheet contents
        outputType - The output type
        Returns:
        JVM bytecodes that represent translet class definition
      • compile

        public byte[][] compile​(java.lang.String name,
                                org.xml.sax.InputSource input)
        Compiles a stylesheet pointed to by a URL. The result is put in a set of byte arrays. One byte array for each generated class.
        Parameters:
        name - The name of the translet class to generate
        input - An InputSource that will pass in the stylesheet contents
        Returns:
        JVM bytecodes that represent translet class definition
      • setXMLReader

        public void setXMLReader​(org.xml.sax.XMLReader reader)
        Set the XMLReader to use for parsing the next input stylesheet
        Parameters:
        reader - XMLReader (SAX2 parser) to use
      • getXMLReader

        public org.xml.sax.XMLReader getXMLReader()
        Get the XMLReader to use for parsing the next input stylesheet
      • getErrors

        public java.util.Vector getErrors()
        Get a Vector containing all compile error messages
        Returns:
        A Vector containing all compile error messages
      • getWarnings

        public java.util.Vector getWarnings()
        Get a Vector containing all compile warning messages
        Returns:
        A Vector containing all compile error messages
      • printErrors

        public void printErrors()
        Print all compile error messages to standard output
      • printWarnings

        public void printWarnings()
        Print all compile warning messages to standard output
      • isMultiDocument

        public boolean isMultiDocument()
      • callsNodeset

        public boolean callsNodeset()
      • hasIdCall

        public boolean hasIdCall()
      • setClassName

        public void setClassName​(java.lang.String className)
        Set the class name for the generated translet. This class name is overridden if multiple stylesheets are compiled in one go using the compile(Vector urls) method.
        Parameters:
        className - The name to assign to the translet class
      • getClassName

        public java.lang.String getClassName()
        Get the class name for the generated translet.
      • setDestDirectory

        public boolean setDestDirectory​(java.lang.String dstDirName)
        Set the destination directory for the translet. The current working directory will be used by default.
      • setPackageName

        public void setPackageName​(java.lang.String packageName)
        Set an optional package name for the translet and auxiliary classes
      • setJarFileName

        public void setJarFileName​(java.lang.String jarFileName)
        Set the name of an optional JAR-file to dump the translet and auxiliary classes to
      • getJarFileName

        public java.lang.String getJarFileName()
      • setStylesheet

        public void setStylesheet​(Stylesheet stylesheet)
        Set the top-level stylesheet
      • getStylesheet

        public Stylesheet getStylesheet()
        Returns the top-level stylesheet
      • registerAttribute

        public int registerAttribute​(org.apache.xalan.xsltc.compiler.QName name)
        Registers an attribute and gives it a type so that it can be mapped to DOM attribute types at run-time.
      • registerElement

        public int registerElement​(org.apache.xalan.xsltc.compiler.QName name)
        Registers an element and gives it a type so that it can be mapped to DOM element types at run-time.
      • registerNamespacePrefix

        public int registerNamespacePrefix​(org.apache.xalan.xsltc.compiler.QName name)
        Registers a namespace prefix and gives it a type so that it can be mapped to DOM namespace types at run-time.
      • registerNamespacePrefix

        public int registerNamespacePrefix​(java.lang.String name)
        Registers a namespace and gives it a type so that it can be mapped to DOM namespace types at run-time.
      • registerNamespace

        public int registerNamespace​(java.lang.String namespaceURI)
        Registers a namespace and gives it a type so that it can be mapped to DOM namespace types at run-time.
      • registerStylesheetPrefixMappingForRuntime

        public int registerStylesheetPrefixMappingForRuntime​(java.util.Hashtable prefixMap,
                                                             int ancestorID)
        Registers namespace declarations that the stylesheet might need to look up dynamically - for instance, if an xsl:element has a a name attribute with variable parts and has no namespace attribute.
        Parameters:
        prefixMap - a Hashtable mapping namespace prefixes to URIs. Must not be null. The default namespace and namespace undeclarations are represented by a zero-length string.
        ancestorID - The int node ID of the nearest ancestor in the stylesheet that declares namespaces, or a value less than zero if there is no such ancestor
        Returns:
        A new node ID for the stylesheet element
      • getNSAncestorPointers

        public java.util.Vector getNSAncestorPointers()
      • getPrefixURIPairs

        public java.util.Vector getPrefixURIPairs()
      • getPrefixURIPairsIdx

        public java.util.Vector getPrefixURIPairsIdx()
      • nextModeSerial

        public int nextModeSerial()
      • nextStylesheetSerial

        public int nextStylesheetSerial()
      • nextStepPatternSerial

        public int nextStepPatternSerial()
      • getNumberFieldIndexes

        public int[] getNumberFieldIndexes()
      • nextHelperClassSerial

        public int nextHelperClassSerial()
      • nextAttributeSetSerial

        public int nextAttributeSetSerial()
      • getNamesIndex

        public java.util.Vector getNamesIndex()
      • getNamespaceIndex

        public java.util.Vector getNamespaceIndex()
      • getHelperClassName

        public java.lang.String getHelperClassName()
        Returns a unique name for every helper class needed to execute a translet.
      • dumpClass

        public void dumpClass​(org.apache.bcel.classfile.JavaClass clazz)
      • outputToJar

        public void outputToJar()
                         throws java.io.IOException
        Generate output JAR-file and packages
        Throws:
        java.io.IOException
      • setDebug

        public void setDebug​(boolean debug)
        Turn debugging messages on/off
      • debug

        public boolean debug()
        Get current debugging message setting
      • getCharacterData

        public java.lang.String getCharacterData​(int index)
        Retrieve a string representation of the character data to be stored in the translet as a char[]. There may be more than one such array required.
        Parameters:
        index - The index of the char[]. Zero-based.
        Returns:
        String The character data to be stored in the corresponding char[].
      • getCharacterDataCount

        public int getCharacterDataCount()
        Get the number of char[] arrays, thus far, that will be created to store literal text in the stylesheet.
      • addCharacterData

        public int addCharacterData​(java.lang.String newData)
        Add literal text to char arrays that will be used to store character data in the stylesheet.
        Parameters:
        newData - String data to be added to char arrays. Pre-condition: newData.length() ≤ 21845
        Returns:
        int offset at which character data will be stored