Internal data structures, constants and functions used by the XSLT engine. They are not part of the API or ABI, i.e. they can change without prior notice, use carefully. Table of Contents#define CHECK_STOPPED #define CHECK_STOPPED0 #define CHECK_STOPPEDE #define XML_CAST_FPTR #define XSLT_MAX_SORT #define XSLT_PAT_NO_PRIORITY #define XSLT_RUNTIME_EXTRA #define XSLT_RUNTIME_EXTRA_FREE #define XSLT_RUNTIME_EXTRA_LST Structure xsltDecimalFormat struct _xsltDecimalFormat
Typedef xsltDecimalFormat * xsltDecimalFormatPtr
Structure xsltDocument struct _xsltDocument
Typedef xsltDocument * xsltDocumentPtr
Structure xsltElemPreComp struct _xsltElemPreComp
Typedef xsltElemPreComp * xsltElemPreCompPtr
Enum xsltOutputType
Structure xsltRuntimeExtra struct _xsltRuntimeExtra
Typedef xsltRuntimeExtra *
Structure xsltStackElem struct _xsltStackElem
Typedef xsltStackElem * xsltStackElemPtr
Structure xsltStylePreComp struct _xsltStylePreComp
Typedef xsltStylePreComp * xsltStylePreCompPtr
Enum xsltStyleType
Structure xsltStylesheet struct _xsltStylesheet
Typedef xsltStylesheet * xsltStylesheetPtr
Structure xsltTemplate struct _xsltTemplate
Typedef xsltTemplate * xsltTemplatePtr
Structure xsltTransformContext struct _xsltTransformContext
Typedef xsltTransformContext * xsltTransformContextPtr
Enum xsltTransformState
int xsltAllocateExtra (xsltStylesheetPtr style)
int xsltAllocateExtraCtxt (xsltTransformContextPtr ctxt)
void xsltCompileAttr (xsltStylesheetPtr style, xmlAttrPtr attr)
xmlDocPtr xsltCreateRVT (xsltTransformContextPtr ctxt)
xsltDecimalFormatPtr xsltDecimalFormatGetByName (xsltStylesheetPtr sheet, xmlChar * name)
Function type: xsltElemPreCompDeallocator
void xsltElemPreCompDeallocator (xsltElemPreCompPtr comp)
xmlChar * xsltEvalAVT (xsltTransformContextPtr ctxt, void * avt, xmlNodePtr node)
xmlXPathError xsltFormatNumberConversion (xsltDecimalFormatPtr self, xmlChar * format, double number, xmlChar ** result)
void xsltFreeAVTList (void * avt)
void xsltFreeRVTs (xsltTransformContextPtr ctxt)
void xsltFreeStackElemList (xsltStackElemPtr elem)
void xsltFreeStylesheet (xsltStylesheetPtr sheet)
int xsltIsBlank (xmlChar * str)
xsltStylesheetPtr xsltLoadStylesheetPI (xmlDocPtr doc)
xsltStylesheetPtr xsltNewStylesheet (void)
void xsltNumberFormat (xsltTransformContextPtr ctxt, xsltNumberDataPtr data, xmlNodePtr node)
xsltStylesheetPtr xsltParseStylesheetDoc (xmlDocPtr doc)
xsltStylesheetPtr xsltParseStylesheetFile (const xmlChar * filename)
xsltStylesheetPtr xsltParseStylesheetImportedDoc (xmlDocPtr doc, xsltStylesheetPtr style)
void xsltParseStylesheetOutput (xsltStylesheetPtr style, xmlNodePtr cur)
xsltStylesheetPtr xsltParseStylesheetProcess (xsltStylesheetPtr ret, xmlDocPtr doc)
void xsltParseTemplateContent (xsltStylesheetPtr style, xmlNodePtr templ)
int xsltRegisterPersistRVT (xsltTransformContextPtr ctxt, xmlDocPtr RVT)
int xsltRegisterTmpRVT (xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Function type: xsltSortFunc
void xsltSortFunc (xsltTransformContextPtr ctxt, xmlNodePtr * sorts, int nbsorts)
Function type: xsltTransformFunction
void xsltTransformFunction (xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst, xsltElemPreCompPtr comp)
Description
Macro: CHECK_STOPPED#define CHECK_STOPPED Macro to check if the XSLT processing should be stopped. Will return from the function.
Macro: CHECK_STOPPED0#define CHECK_STOPPED0 Macro to check if the XSLT processing should be stopped. Will return from the function with a 0 value.
Macro: CHECK_STOPPEDE#define CHECK_STOPPEDE Macro to check if the XSLT processing should be stopped. Will goto the error: label.
Macro: XML_CAST_FPTR#define XML_CAST_FPTR Macro to do a casting from an object pointer to a function pointer without encountering a warning from gcc #define XML_CAST_FPTR(fptr) (*(void **)(&fptr)) This macro violated ISO C aliasing rules (gcc4 on s390 broke) so it is disabled now
Macro: XSLT_MAX_SORT#define XSLT_MAX_SORT Max number of specified xsl:sort on an element.
Macro: XSLT_PAT_NO_PRIORITY#define XSLT_PAT_NO_PRIORITY Specific value for pattern without priority expressed.
Macro: XSLT_RUNTIME_EXTRA#define XSLT_RUNTIME_EXTRA Macro used to define extra information stored in the context
Macro: XSLT_RUNTIME_EXTRA_FREE#define XSLT_RUNTIME_EXTRA_FREE Macro used to free extra information stored in the context
Macro: XSLT_RUNTIME_EXTRA_LST#define XSLT_RUNTIME_EXTRA_LST Macro used to access extra information stored in the context
Structure xsltDecimalFormat struct _xsltDecimalFormat {
struct _xsltDecimalFormat * next : chained list
xmlChar * name : Used for interpretation of pattern
xmlChar * digit
xmlChar * patternSeparator : May appear in result
xmlChar * minusSign
xmlChar * infinity
xmlChar * noNumber : Not-a-number Used for interpretation of
xmlChar * decimalPoint
xmlChar * grouping
xmlChar * percent
xmlChar * permille
xmlChar * zeroDigit
} Structure xsltDocument struct _xsltDocument {
struct _xsltDocument * next : documents are kept in a chained list
int main : is this the main document
xmlDocPtr doc : the parsed document
void * keys : key tables storage
struct _xsltDocument * includes : subsidiary includes
int preproc : pre-processing already done
} Structure xsltElemPreComp struct _xsltElemPreComp {
xsltElemPreCompPtr next : chained list
xsltStyleType type : type of the element
xsltTransformFunction func : handling function
xmlNodePtr inst : the instruction end of common part
xsltElemPreCompDeallocator free : the deallocator
} Enum xsltOutputType {
XSLT_OUTPUT_XML = 0
XSLT_OUTPUT_HTML = 1
XSLT_OUTPUT_TEXT = 2
}
Structure xsltRuntimeExtra struct _xsltRuntimeExtra {
void * info : pointer to the extra data
xmlFreeFunc deallocate : pointer to the deallocation routine
} Structure xsltStackElem struct _xsltStackElem {
struct _xsltStackElem * next : chained list
xsltStylePreCompPtr comp : the compiled form
int computed : was the evaluation done
const xmlChar * name : the local part of the name QName
const xmlChar * nameURI : the URI part of the name QName
const xmlChar * select : the eval string
xmlNodePtr tree : the tree if no eval string or the locat
xmlXPathObjectPtr value : The value if computed
} Structure xsltStylePreComp struct _xsltStylePreComp {
xsltElemPreCompPtr next : chained list
xsltStyleType type : type of the element
xsltTransformFunction func : handling function
xmlNodePtr inst : * Pre computed values. *
const xmlChar * stype : sort
int has_stype : sort
int number : sort
const xmlChar * order : sort
int has_order : sort
int descending : sort
const xmlChar * lang : sort
int has_lang : sort
const xmlChar * case_order : sort
int lower_first : sort
const xmlChar * use : copy, element
int has_use : copy, element
int noescape : text
const xmlChar * name : element, attribute, pi
int has_name : element, attribute, pi
const xmlChar * ns : element
int has_ns : element
const xmlChar * mode : apply-templates
const xmlChar * modeURI : apply-templates
const xmlChar * test : if
xsltTemplatePtr templ : call-template
const xmlChar * select : sort, copy-of, value-of, apply-template
int ver11 : document
const xmlChar * filename : document URL
int has_filename : document
xsltNumberData numdata : number
xmlXPathCompExprPtr comp : a precompiled XPath expression
xmlNsPtr * nsList : the namespaces in scope
int nsNr : the number of namespaces in scope
} Enum xsltStyleType {
XSLT_FUNC_COPY = 1
XSLT_FUNC_SORT = 2
XSLT_FUNC_TEXT = 3
XSLT_FUNC_ELEMENT = 4
XSLT_FUNC_ATTRIBUTE = 5
= 6
XSLT_FUNC_PI = 7
XSLT_FUNC_COPYOF = 8
XSLT_FUNC_VALUEOF = 9
XSLT_FUNC_NUMBER = 10
XSLT_FUNC_APPLYIMPORTS = 11
XSLT_FUNC_CALLTEMPLATE = 12
XSLT_FUNC_APPLYTEMPLATES = 13
XSLT_FUNC_CHOOSE = 14
XSLT_FUNC_IF = 15
XSLT_FUNC_FOREACH = 16
XSLT_FUNC_DOCUMENT = 17
XSLT_FUNC_WITHPARAM = 18
XSLT_FUNC_PARAM = 19
XSLT_FUNC_VARIABLE = 20
XSLT_FUNC_WHEN = 21
XSLT_FUNC_EXTENSION = 22
}
Structure xsltStylesheet struct _xsltStylesheet {
struct _xsltStylesheet * parent
struct _xsltStylesheet * next
struct _xsltStylesheet * imports
xsltDocumentPtr docList : * General data on the style sheet docume
xmlDocPtr doc : the parsed XML stylesheet
xmlHashTablePtr stripSpaces : the hash table of the strip-space and p
int stripAll : strip-space * (1) preserve-space * (-1)
xmlHashTablePtr cdataSection : * Global variable or parameters. *
xsltStackElemPtr variables : * Template descriptions. *
xsltTemplatePtr templates : the ordered list of templates
void * templatesHash : hash table or wherever compiled templat
void * rootMatch : template based on /
void * keyMatch : template based on key()
void * elemMatch : template based on *
void * attrMatch : template based on @*
void * parentMatch : template based on ..
void * textMatch : template based on text()
void * piMatch : template based on processing-instructio
void * commentMatch : * Namespace aliases. *
xmlHashTablePtr nsAliases : * Attribute sets. *
xmlHashTablePtr attributeSets : * Namespaces. *
xmlHashTablePtr nsHash : the set of namespaces in use
void * nsDefs : * Key definitions. *
void * keys : * Output related stuff. *
xmlChar * method : the output method
xmlChar * methodURI : associated namespace if any
xmlChar * version : version string
xmlChar * encoding : encoding string
int omitXmlDeclaration : * Number formatting. *
xsltDecimalFormatPtr decimalFormat
int standalone : standalone = "yes" | "no"
xmlChar * doctypePublic : doctype-public string
xmlChar * doctypeSystem : doctype-system string
int indent : should output being indented
xmlChar * mediaType : * Precomputed blocks. *
xsltElemPreCompPtr preComps : list of precomputed blocks
int warnings : number of warnings found at compilation
int errors : number of errors found at compilation
xmlChar * exclPrefix : last excluded prefixes
xmlChar ** exclPrefixTab : array of excluded prefixes
int exclPrefixNr : number of excluded prefixes in scope
int exclPrefixMax : size of the array
void * _private : * Extensions. *
xmlHashTablePtr extInfos : the extension data
int extrasNr : * For keeping track of nested includes *
xsltDocumentPtr includes : * dictionnary: shared between stylesheet
xmlDictPtr dict : * precompiled attribute value templates.
void * attVTs : * if namespace-alias has an alias for th
const xmlChar * defaultAlias : * bypass pre-processing (already done) (
int nopreproc : * all document text strings were interna
int internalized : * Literal Result Element as Stylesheet c
int literal_result
} Structure xsltTemplate struct _xsltTemplate {
struct _xsltTemplate * next : chained list sorted by priority
struct _xsltStylesheet * style : the containing stylesheet
xmlChar * match : the matching string
float priority : as given from the stylesheet, not compu
xmlChar * name : the local part of the name QName
xmlChar * nameURI : the URI part of the name QName
const xmlChar * mode : the local part of the mode QName
const xmlChar * modeURI : the URI part of the mode QName
xmlNodePtr content : the template replacement value
xmlNodePtr elem : the source element
int inheritedNsNr : number of inherited namespaces
xmlNsPtr * inheritedNs : inherited non-excluded namespaces Profi
int nbCalls : the number of time the template was cal
unsigned long time : the time spent in this template
} Structure xsltTransformContext struct _xsltTransformContext {
xsltStylesheetPtr style : the stylesheet used
xsltOutputType type : the type of output
xsltTemplatePtr templ : the current template
int templNr : Nb of templates in the stack
int templMax : Size of the templtes stack
xsltTemplatePtr * templTab : the template stack
xsltStackElemPtr vars : the current variable list
int varsNr : Nb of variable list in the stack
int varsMax : Size of the variable list stack
xsltStackElemPtr * varsTab : the variable list stack
int varsBase : * Extensions *
xmlHashTablePtr extFunctions : the extension functions
xmlHashTablePtr extElements : the extension elements
xmlHashTablePtr extInfos : the extension data
const xmlChar * mode : the current mode
const xmlChar * modeURI : the current mode URI
xsltDocumentPtr docList : the document list
xsltDocumentPtr document : the current document
xmlNodePtr node : the current node being processed
xmlNodeSetPtr nodeList : the current node list xmlNodePtr curren
xmlDocPtr output : the resulting document
xmlNodePtr insert : the insertion node
xmlXPathContextPtr xpathCtxt : the XPath context
xsltTransformState state : * Global variables *
xmlHashTablePtr globalVars : the global variables and params
xmlNodePtr inst : the instruction in the stylesheet
int xinclude : should XInclude be processed
const char * outputFile : the output URI if known
int profile : is this run profiled
long prof : the current profiled value
int profNr : Nb of templates in the stack
int profMax : Size of the templtaes stack
long * profTab : the profile template stack
void * _private : user defined data
int extrasNr : the number of extras used
int extrasMax : the number of extras allocated
xsltRuntimeExtraPtr extras : extra per runtime informations
xsltDocumentPtr styleList : the stylesheet docs list
void * sec : the security preferences if any
xmlGenericErrorFunc error : a specific error handler
void * errctx : context for the error handler
xsltSortFunc sortfunc : * handling of temporary Result Value Tre
xmlDocPtr tmpRVT : list of RVT without persistance
xmlDocPtr persistRVT : list of persistant RVTs
int ctxtflags : * Speed optimization when coalescing tex
const xmlChar * lasttext : last text node content
unsigned int lasttsize : last text node size
unsigned int lasttuse : * Per Context Debugging *
int debugStatus : the context level debug status
unsigned long * traceCode : pointer to the variable holding the mas
int parserOptions : * dictionnary: shared between stylesheet
xmlDictPtr dict : * temporary storage for doc ptr, current
xmlDocPtr tmpDoc : * all document text strings are internal
int internalized
} Enum xsltTransformState {
XSLT_STATE_OK = 0
XSLT_STATE_ERROR = 1
XSLT_STATE_STOPPED = 2
}
Function: xsltAllocateExtraint xsltAllocateExtra (xsltStylesheetPtr style)
Allocate an extra runtime information slot statically while compiling the stylesheet and return its number
style: | an XSLT stylesheet | Returns: | the number of the slot |
Function: xsltAllocateExtraCtxtint xsltAllocateExtraCtxt (xsltTransformContextPtr ctxt)
Allocate an extra runtime information slot at run-time and return its number This make sure there is a slot ready in the transformation context
ctxt: | an XSLT transformation context | Returns: | the number of the slot |
Function: xsltCompileAttrvoid xsltCompileAttr (xsltStylesheetPtr style, xmlAttrPtr attr)
Precompile an attribute in a stylesheet, basically it checks if it is an attrubute value template, and if yes establish some structures needed to process it at transformation time.
style: | a XSLT process context | attr: | the attribute coming from the stylesheet. |
Function: xsltCreateRVTxmlDocPtr xsltCreateRVT (xsltTransformContextPtr ctxt)
Create a result value tree
ctxt: | an XSLT transformation context | Returns: | the result value tree or NULL in case of error |
Function: xsltDecimalFormatGetByNamexsltDecimalFormatPtr xsltDecimalFormatGetByName (xsltStylesheetPtr sheet, xmlChar * name)
Find decimal-format by name
Function type: xsltElemPreCompDeallocatorFunction type: xsltElemPreCompDeallocator
void xsltElemPreCompDeallocator (xsltElemPreCompPtr comp)
Deallocates an #xsltElemPreComp structure. comp: | the #xsltElemPreComp to free up |
Function: xsltEvalAVTxmlChar * xsltEvalAVT (xsltTransformContextPtr ctxt, void * avt, xmlNodePtr node)
Process the given AVT, and return the new string value.
ctxt: | the XSLT transformation context | avt: | the prevompiled attribute value template info | node: | the node hosting the attribute | Returns: | the computed string value or NULL, must be deallocated by the caller. |
Function: xsltFormatNumberConversionxmlXPathError xsltFormatNumberConversion (xsltDecimalFormatPtr self, xmlChar * format, double number, xmlChar ** result)
format-number() uses the JDK 1.1 DecimalFormat class: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html Structure: pattern := subpattern{;subpattern} subpattern := {prefix}integer{.fraction}{suffix} prefix := '\\u0000'..'\\uFFFD' - specialCharacters suffix := '\\u0000'..'\\uFFFD' - specialCharacters integer := '#'* '0'* '0' fraction := '0'* '#'* Notation: X* 0 or more instances of X (X | Y) either X or Y. X..Y any character from X up to Y, inclusive. S - T characters in S, except those in T Special Characters: Symbol Meaning 0 a digit # a digit, zero shows as absent . placeholder for decimal separator , placeholder for grouping separator. ; separates formats. - default negative prefix. % multiply by 100 and show as percentage ? multiply by 1000 and show as per mille X any other characters can be used in the prefix or suffix ' used to quote special characters in a prefix or suffix.
self: | the decimal format | format: | the format requested | number: | the value to format | result: | the place to ouput the result | Returns: | a possible XPath error |
Function: xsltFreeAVTListvoid xsltFreeAVTList (void * avt)
Free up the memory associated to the attribute value templates
avt: | pointer to an list of AVT structures |
Function: xsltFreeRVTsvoid xsltFreeRVTs (xsltTransformContextPtr ctxt)
Free all the registered result value tree of the transformation
ctxt: | an XSLT transformation context |
Function: xsltFreeStackElemListvoid xsltFreeStackElemList (xsltStackElemPtr elem)
Free up the memory allocated by @elem
elem: | an XSLT stack element |
Function: xsltFreeStylesheetvoid xsltFreeStylesheet (xsltStylesheetPtr sheet)
Free up the memory allocated by @sheet
Function: xsltIsBlankint xsltIsBlank (xmlChar * str)
Check if a string is ignorable
str: | a string | Returns: | 1 if the string is NULL or made of blanks chars, 0 otherwise |
Function: xsltLoadStylesheetPIxsltStylesheetPtr xsltLoadStylesheetPI (xmlDocPtr doc)
This function tries to locate the stylesheet PI in the given document If found, and if contained within the document, it will extract that subtree to build the stylesheet to process @doc (doc itself will be modified). If found but referencing an external document it will attempt to load it and generate a stylesheet from it. In both cases, the resulting stylesheet and the document need to be freed once the transformation is done.
doc: | a document to process | Returns: | a new XSLT stylesheet structure or NULL if not found. |
Function: xsltNewStylesheetxsltStylesheetPtr xsltNewStylesheet (void)
Create a new XSLT Stylesheet
Function: xsltNumberFormatvoid xsltNumberFormat (xsltTransformContextPtr ctxt, xsltNumberDataPtr data, xmlNodePtr node)
Convert one number.
ctxt: | the XSLT transformation context | data: | the formatting informations | node: | the data to format |
Function: xsltParseStylesheetDocxsltStylesheetPtr xsltParseStylesheetDoc (xmlDocPtr doc)
parse an XSLT stylesheet building the associated structures
doc: | and xmlDoc parsed XML | Returns: | a new XSLT stylesheet structure. |
Function: xsltParseStylesheetFilexsltStylesheetPtr xsltParseStylesheetFile (const xmlChar * filename)
Load and parse an XSLT stylesheet
filename: | the filename/URL to the stylesheet | Returns: | a new XSLT stylesheet structure. |
Function: xsltParseStylesheetImportedDocxsltStylesheetPtr xsltParseStylesheetImportedDoc (xmlDocPtr doc, xsltStylesheetPtr style)
parse an XSLT stylesheet building the associated structures except the processing not needed for imported documents.
doc: | an xmlDoc parsed XML | style: | pointer to parent stylesheet | Returns: | a new XSLT stylesheet structure. |
Function: xsltParseStylesheetOutputvoid xsltParseStylesheetOutput (xsltStylesheetPtr style, xmlNodePtr cur)
parse an XSLT stylesheet output element and record information related to the stylesheet output
style: | the XSLT stylesheet | cur: | the "output" element |
Function: xsltParseStylesheetProcessxsltStylesheetPtr xsltParseStylesheetProcess (xsltStylesheetPtr ret, xmlDocPtr doc)
parse an XSLT stylesheet adding the associated structures
ret: | the XSLT stylesheet | doc: | and xmlDoc parsed XML | Returns: | the value of the 'ret' parameter if everything went right, NULL if something went amiss. |
Function: xsltParseTemplateContentvoid xsltParseTemplateContent (xsltStylesheetPtr style, xmlNodePtr templ)
parse a template content-model Clean-up the template content from unwanted ignorable blank nodes and process xslt:text
style: | the XSLT stylesheet | templ: | the container node (can be a document for literal results) |
Function: xsltRegisterPersistRVTint xsltRegisterPersistRVT (xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Register the result value tree for destruction at the end of the processing
ctxt: | an XSLT transformation context | RVT: | a result value tree | Returns: | 0 in case of success and -1 in case of error. |
Function: xsltRegisterTmpRVTint xsltRegisterTmpRVT (xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Register the result value tree for destruction at the end of the context
ctxt: | an XSLT transformation context | RVT: | a result value tree | Returns: | 0 in case of success and -1 in case of error. |
Function type: xsltSortFuncFunction type: xsltSortFunc
void xsltSortFunc (xsltTransformContextPtr ctxt, xmlNodePtr * sorts, int nbsorts)
Signature of the function to use during sorting ctxt: | a transformation context | sorts: | the node-set to sort | nbsorts: | the number of sorts |
Function type: xsltTransformFunctionFunction type: xsltTransformFunction
void xsltTransformFunction (xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst, xsltElemPreCompPtr comp)
Signature of the function associated to elements part of the stylesheet language like xsl:if or xsl:apply-templates. ctxt: | the XSLT transformation context | node: | the input node | inst: | the stylesheet node | comp: | the compiled information from the stylesheet |
Daniel Veillard |