org.apache.xalan.xsltc.compiler

Class XSLTC


public final class XSLTC
extends java.lang.Object

Authors:
Jacek Ambroziak
Santiago Pericas-Geertsen
G. Todd Miller
Morten Jorgensen
John Howard (johnh@schemasoft.com)

Field Summary

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

XSLTC()
XSLTC compiler constructor

Method Summary

int
addCharacterData(String newData)
Add literal text to char arrays that will be used to store character data in the stylesheet.
boolean
callsNodeset()
boolean
compile(InputStream stream, String name)
Compiles an XSL stylesheet passed in through an InputStream
byte[][]
compile(String name, InputSource input)
Compiles a stylesheet pointed to by a URL.
byte[][]
compile(String name, InputSource input, int outputType)
Compiles a stylesheet pointed to by a URL.
boolean
compile(URL url)
Compiles an XSL stylesheet pointed to by a URL
boolean
compile(URL url, String name)
Compiles an XSL stylesheet pointed to by a URL
boolean
compile(Vector stylesheets)
Compiles a set of stylesheets pointed to by a Vector of URLs
boolean
compile(InputSource input, String name)
Compiles an XSL stylesheet passed in through an InputStream
boolean
debug()
Get current debugging message setting
void
dumpClass(JavaClass clazz)
byte[][]
getBytecodes()
Returns an array of bytecode arrays generated by a compilation.
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.
String
getClassName()
Get the class name for the generated translet.
Vector
getErrors()
Get a Vector containing all compile error messages
String
getHelperClassName()
Returns a unique name for every helper class needed to execute a translet.
String
getJarFileName()
Vector
getNamesIndex()
Vector
getNamespaceIndex()
int[]
getNumberFieldIndexes()
Properties
getOutputProperties()
Only for user by the internal TrAX implementation.
Parser
getParser()
Only for user by the internal TrAX implementation.
Stylesheet
getStylesheet()
Returns the top-level stylesheet
Vector
getWarnings()
Get a Vector containing all compile warning messages
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()
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(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.
void
setClassName(String className)
Set the class name for the generated translet.
void
setDebug(boolean debug)
Turn debugging messages on/off
boolean
setDestDirectory(String dstDirName)
Set the destination directory for the translet.
void
setJarFileName(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
setPIParameters(String media, String title, String charset)
Set the parameters to use to locate the correct <?
void
setPackageName(String packageName)
Set an optional package name for the translet and auxiliary classes
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(XMLReader reader)
Set the XMLReader to use for parsing the next input stylesheet

Field Details

BYTEARRAY_AND_FILE_OUTPUT

public static final int BYTEARRAY_AND_FILE_OUTPUT

Field Value:
4


BYTEARRAY_AND_JAR_OUTPUT

public static final int BYTEARRAY_AND_JAR_OUTPUT

Field Value:
5


BYTEARRAY_OUTPUT

public static final int BYTEARRAY_OUTPUT

Field Value:
2


CLASSLOADER_OUTPUT

public static final int CLASSLOADER_OUTPUT

Field Value:
3


FILE_OUTPUT

public static final int FILE_OUTPUT

Field Value:
0


JAR_OUTPUT

public static final int JAR_OUTPUT

Field Value:
1

Constructor Details

XSLTC

public XSLTC()
XSLTC compiler constructor

Method Details

addCharacterData

public int addCharacterData(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


callsNodeset

public boolean callsNodeset()


compile

public boolean compile(InputStream stream,
                       String name)
Compiles an XSL stylesheet passed in through an InputStream

Parameters:
name - The name of the translet class to generate

Returns:
'true' if the compilation was successful


compile

public byte[][] compile(String name,
                        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


compile

public byte[][] compile(String name,
                        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 boolean compile(URL url)
Compiles an XSL stylesheet pointed to by a URL

Parameters:
url - An URL containing the input XSL stylesheet


compile

public boolean compile(URL url,
                       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(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


compile

public boolean compile(InputSource input,
                       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


debug

public boolean debug()
Get current debugging message setting


dumpClass

public void dumpClass(JavaClass clazz)


getBytecodes

public byte[][] getBytecodes()
Returns an array of bytecode arrays generated by a compilation.

Returns:
JVM bytecodes that represent translet class definition


getCharacterData

public 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.


getClassName

public String getClassName()
Get the class name for the generated translet.


getErrors

public Vector getErrors()
Get a Vector containing all compile error messages

Returns:
A Vector containing all compile error messages


getHelperClassName

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


getJarFileName

public String getJarFileName()


getNamesIndex

public Vector getNamesIndex()


getNamespaceIndex

public Vector getNamespaceIndex()


getNumberFieldIndexes

public int[] getNumberFieldIndexes()


getOutputProperties

public Properties getOutputProperties()
Only for user by the internal TrAX implementation.


getParser

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


getStylesheet

public Stylesheet getStylesheet()
Returns the top-level stylesheet


getWarnings

public Vector getWarnings()
Get a Vector containing all compile warning messages

Returns:
A Vector containing all compile error messages


getXMLReader

public XMLReader getXMLReader()
Get the XMLReader to use for parsing the next input stylesheet


hasIdCall

public boolean hasIdCall()


init

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


isMultiDocument

public boolean isMultiDocument()


nextAttributeSetSerial

public int nextAttributeSetSerial()


nextHelperClassSerial

public int nextHelperClassSerial()


nextModeSerial

public int nextModeSerial()


nextStepPatternSerial

public int nextStepPatternSerial()


nextStylesheetSerial

public int nextStylesheetSerial()


outputToJar

public void outputToJar()
            throws IOException
Generate output JAR-file and packages


printErrors

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


printWarnings

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


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.


registerNamespace

public int registerNamespace(String namespaceURI)
Registers a namespace and gives it a type so that it can be mapped to DOM namespace 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.


setClassName

public void setClassName(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


setDebug

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


setDestDirectory

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


setJarFileName

public void setJarFileName(String jarFileName)
Set the name of an optional JAR-file to dump the translet and auxiliary classes to


setOutputType

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


setPIParameters

public void setPIParameters(String media,
                            String title,
                            String charset)
Set the parameters to use to locate the correct <?xml-stylesheet ...?> 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.


setPackageName

public void setPackageName(String packageName)
Set an optional package name for the translet and auxiliary classes


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


setStylesheet

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


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).


setXMLReader

public void setXMLReader(XMLReader reader)
Set the XMLReader to use for parsing the next input stylesheet

Parameters:
reader - XMLReader (SAX2 parser) to use


Copyright B) 2004 Apache XML Project. All Rights Reserved.