Package 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)
-
-
Field Summary
Fields Modifier and Type Field 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 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 InputStreambyte[][]
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 URLboolean
compile(java.net.URL url, java.lang.String name)
Compiles an XSL stylesheet pointed to by a URLboolean
compile(java.util.Vector stylesheets)
Compiles a set of stylesheets pointed to by a Vector of URLsboolean
compile(org.xml.sax.InputSource input, java.lang.String name)
Compiles an XSL stylesheet passed in through an InputStreamboolean
debug()
Get current debugging message settingvoid
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 achar[]
.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 messagesjava.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 stylesheetboolean
getTemplateInlining()
Return the state of the template inlining feature.java.util.Vector
getWarnings()
Get a Vector containing all compile warning messagesorg.xml.sax.XMLReader
getXMLReader()
Get the XMLReader to use for parsing the next input stylesheetboolean
hasIdCall()
void
init()
Initializes the compiler to compile a new stylesheetboolean
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 packagesvoid
printErrors()
Print all compile error messages to standard outputvoid
printWarnings()
Print all compile warning messages to standard outputint
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 anxsl:element
has a aname
attribute with variable parts and has nonamespace
attribute.void
setClassName(java.lang.String className)
Set the class name for the generated translet.void
setDebug(boolean debug)
Turn debugging messages on/offboolean
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 tovoid
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 classesvoid
setPIParameters(java.lang.String media, java.lang.String title, java.lang.String charset)
Set the parameters to use to locate the correctvoid
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/importvoid
setStylesheet(Stylesheet stylesheet)
Set the top-level stylesheetvoid
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
-
-
-
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
-
-
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 stylesheetname
- 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 contentsname
- 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 contentsname
- 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 generateinput
- An InputSource that will pass in the stylesheet contentsoutputType
- 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 generateinput
- 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 anxsl:element
has a aname
attribute with variable parts and has nonamespace
attribute.- Parameters:
prefixMap
- aHashtable
mapping namespace prefixes to URIs. Must not benull
. The default namespace and namespace undeclarations are represented by a zero-length string.ancestorID
- Theint
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 achar[]
. There may be more than one such array required.- Parameters:
index
- The index of thechar[]
. 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
-
-