org.apache.xalan.xsltc.compiler

## Class XSLTC

- java.lang.Object
- - org.apache.xalan.xsltc.compiler.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)

- - ### Nested Class Summary

    Nested Classes
    Modifier and Type | Class and Description
    --- | ---
    `class` | `XSLTC.ByteArrayClassLoader`

  - ### Field Summary

    Fields
    Modifier and Type | Field and Description
    --- | ---
    `static int` | `BYTEARRAY_AND_FILE_OUTPUT`
    `static int` | `BYTEARRAY_AND_JAR_OUTPUT`
    `static int` | `BYTEARRAY_OUTPUT`
    `static int` | `CLASSLOADER_OUTPUT`
    `static int` | `FILE_OUTPUT`
    `static int` | `JAR_OUTPUT`

  - ### Constructor Summary

    Constructors
    Constructor and Description
    `XSLTC()` XSLTC compiler constructor

  - ### Method Summary

    All Methods Instance Methods Concrete Methods
    Modifier and Type | Method and 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(org.xml.sax.InputSource input, java.lang.String name)` Compiles an XSL stylesheet passed in through an InputStream
    `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` | `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(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` | `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` | `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`

- - ### Field Detail

    - #### FILE_OUTPUT

          public static final int FILE_OUTPUT

      See Also:
        Constant Field Values

    - #### JAR_OUTPUT

          public static final int JAR_OUTPUT

      See Also:
        Constant Field Values

    - #### BYTEARRAY_OUTPUT

          public static final int BYTEARRAY_OUTPUT

      See Also:
        Constant Field Values

    - #### CLASSLOADER_OUTPUT

          public static final int CLASSLOADER_OUTPUT

      See Also:
        Constant Field Values

    - #### BYTEARRAY_AND_FILE_OUTPUT

          public static final int BYTEARRAY_AND_FILE_OUTPUT

      See Also:
        Constant Field Values

    - #### BYTEARRAY_AND_JAR_OUTPUT

          public static final int BYTEARRAY_AND_JAR_OUTPUT

      See Also:
        Constant Field Values

  - ### 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

Copyright © 2023 Apache XML Project. All Rights Reserved.