### ----------------------------------------------------
### -- LibXSLT
### -- Licenses: Artistic-2.0
### -- Authors: David Warring
### -- File: etc/libxslt-api.xml
### ----------------------------------------------------
### -- Chunk 4 of 8
'/>
      <field name='principal' type='xsltStylesheetPtr' info='* Compilation context used during compile-time.
*'/>
      <field name='compCtxt' type='xsltCompilerCtxtPtr' info=' TODO: Change this to (void *).'/>
      <field name='principalData' type='xsltPrincipalStylesheetDataPtr' info='* Forwards-compatible processing
*'/>
      <field name='forwards_compatible' type='int' info=''/>
      <field name='namedTemplates' type='xmlHashTablePtr' info=' hash table of named templates'/>
      <field name='xpathCtxt' type='xmlXPathContextPtr' info=''/>
    </struct>
    <typedef name='xsltStylesheetPtr' file='xsltInternals' type='xsltStylesheet *'/>
    <struct name='xsltTemplate' file='xsltInternals' type='struct _xsltTemplate'>
      <field name='next' type='struct _xsltTemplate *' info=' chained list sorted by priority'/>
      <field name='style' type='struct _xsltStylesheet *' info=' the containing stylesheet'/>
      <field name='match' type='xmlChar *' info=' the matching string'/>
      <field name='priority' type='float' info=' as given from the stylesheet, not computed'/>
      <field name='name' type='const xmlChar *' info=' the local part of the name QName'/>
      <field name='nameURI' type='const xmlChar *' info=' the URI part of the name QName'/>
      <field name='mode' type='const xmlChar *' info=' the local part of the mode QName'/>
      <field name='modeURI' type='const xmlChar *' info=' the URI part of the mode QName'/>
      <field name='content' type='xmlNodePtr' info=' the template replacement value'/>
      <field name='elem' type='xmlNodePtr' info='* TODO: @inheritedNsNr and @inheritedNs won&apos;t be used in the
*  refactored code.
*'/>
      <field name='inheritedNsNr' type='int' info=' number of inherited namespaces'/>
      <field name='inheritedNs' type='xmlNsPtr *' info=' inherited non-excluded namespaces Profiling information'/>
      <field name='nbCalls' type='int' info=' the number of time the template was called'/>
      <field name='time' type='unsigned long' info=' the time spent in this template'/>
      <field name='params' type='void *' info=' xsl:param instructions'/>
      <field name='templNr' type='int' info=' Nb of templates in the stack'/>
      <field name='templMax' type='int' info=' Size of the templtes stack'/>
      <field name='templCalledTab' type='xsltTemplatePtr *' info=' templates called'/>
      <field name='templCountTab' type='int *' info=' .. and how often'/>
    </struct>
    <typedef name='xsltTemplatePtr' file='xsltInternals' type='xsltTemplate *'/>
    <struct name='xsltTransformCache' file='xsltInternals' type='struct _xsltTransformCache'>
      <field name='RVT' type='xmlDocPtr' info=''/>
      <field name='nbRVT' type='int' info=''/>
      <field name='stackItems' type='xsltStackElemPtr' info=''/>
      <field name='nbStackItems' type='int' info=''/>
      <field name='dbgCachedRVTs' type='int' info=''/>
      <field name='dbgReusedRVTs' type='int' info=''/>
      <field name='dbgCachedVars' type='int' info=''/>
      <field name='dbgReusedVars' type='int' info=''/>
    </struct>
    <typedef name='xsltTransformCachePtr' file='xsltInternals' type='xsltTransformCache *'/>
    <struct name='xsltTransformContext' file='xsltInternals' type='struct _xsltTransformContext'>
      <field name='style' type='xsltStylesheetPtr' info=' the stylesheet used'/>
      <field name='type' type='xsltOutputType' info=' the type of output'/>
      <field name='templ' type='xsltTemplatePtr' info=' the current template'/>
      <field name='templNr' type='int' info=' Nb of templates in the stack'/>
      <field name='templMax' type='int' info=' Size of the templtes stack'/>
      <field name='templTab' type='xsltTemplatePtr *' info=' the template stack'/>
      <field name='vars' type='xsltStackElemPtr' info=' the current variable list'/>
      <field name='varsNr' type='int' info=' Nb of variable list in the stack'/>
      <field name='varsMax' type='int' info=' Size of the variable list stack'/>
      <field name='varsTab' type='xsltStackElemPtr *' info=' the variable list stack'/>
      <field name='varsBase' type='int' info='* Extensions
*'/>
      <field name='extFunctions' type='xmlHashTablePtr' info=' the extension functions'/>
      <field name='extElements' type='xmlHashTablePtr' info=' the extension elements'/>
      <field name='extInfos' type='xmlHashTablePtr' info=' the extension data'/>
      <field name='mode' type='const xmlChar *' info=' the current mode'/>
      <field name='modeURI' type='const xmlChar *' info=' the current mode URI'/>
      <field name='docList' type='xsltDocumentPtr' info=' the document list'/>
      <field name='document' type='xsltDocumentPtr' info=' the current source document; can be NULL if an RTF'/>
      <field name='node' type='xmlNodePtr' info=' the current node being processed'/>
      <field name='nodeList' type='xmlNodeSetPtr' info=' the current node list xmlNodePtr current;			the node'/>
      <field name='output' type='xmlDocPtr' info=' the resulting document'/>
      <field name='insert' type='xmlNodePtr' info=' the insertion node'/>
      <field name='xpathCtxt' type='xmlXPathContextPtr' info=' the XPath context'/>
      <field name='state' type='xsltTransformState' info='* Global variables
*'/>
      <field name='globalVars' type='xmlHashTablePtr' info=' the global variables and params'/>
      <field name='inst' type='xmlNodePtr' info=' the instruction in the stylesheet'/>
      <field name='xinclude' type='int' info=' should XInclude be processed'/>
      <field name='outputFile' type='const char *' info=' the output URI if known'/>
      <field name='profile' type='int' info=' is this run profiled'/>
      <field name='prof' type='long' info=' the current profiled value'/>
      <field name='profNr' type='int' info=' Nb of templates in the stack'/>
      <field name='profMax' type='int' info=' Size of the templtaes stack'/>
      <field name='profTab' type='long *' info=' the profile template stack'/>
      <field name='_private' type='void *' info=' user defined data'/>
      <field name='extrasNr' type='int' info=' the number of extras used'/>
      <field name='extrasMax' type='int' info=' the number of extras allocated'/>
      <field name='extras' type='xsltRuntimeExtraPtr' info=' extra per runtime information'/>
      <field name='styleList' type='xsltDocumentPtr' info=' the stylesheet docs list'/>
      <field name='sec' type='void *' info=' the security preferences if any'/>
      <field name='error' type='xmlGenericErrorFunc' info=' a specific error handler'/>
      <field name='errctx' type='void *' info=' context for the error handler'/>
      <field name='sortfunc' type='xsltSortFunc' info='* handling of temporary Result Value Tree
* (XSLT 1.0 term: &quot;Result Tree Fragment&quot;)
*'/>
      <field name='tmpRVT' type='xmlDocPtr' info=' list of RVT without persistance'/>
      <field name='persistRVT' type='xmlDocPtr' info=' list of persistant RVTs'/>
      <field name='ctxtflags' type='int' info='* Speed optimization when coalescing text nodes
*'/>
      <field name='lasttext' type='const xmlChar *' info=' last text node content'/>
      <field name='lasttsize' type='int' info=' last text node size'/>
      <field name='lasttuse' type='int' info='* Per Context Debugging
*'/>
      <field name='debugStatus' type='int' info=' the context level debug status'/>
      <field name='traceCode' type='unsigned long *' info=' pointer to the variable holding the mask'/>
      <field name='parserOptions' type='int' info='* dictionary: shared between stylesheet, context and documents.
*'/>
      <field name='dict' type='xmlDictPtr' info=''/>
      <field name='tmpDoc' type='xmlDocPtr' info='* all document text strings are internalized
*'/>
      <field name='internalized' type='int' info=''/>
      <field name='nbKeys' type='int' info=''/>
      <field name='hasTemplKeyPatterns' type='int' info=''/>
      <field name='currentTemplateRule' type='xsltTemplatePtr' info=' the Current Template Rule'/>
      <field name='initialContextNode' type='xmlNodePtr' info=''/>
      <field name='initialContextDoc' type='xmlDocPtr' info=''/>
      <field name='cache' type='xsltTransformCachePtr' info=''/>
      <field name='contextVariable' type='void *' info=' the current variable item'/>
      <field name='localRVT' type='xmlDocPtr' info=' list of local tree fragments; will be freed when
the instruction which created the fragment
exits'/>
      <field name='localRVTBase' type='xmlDocPtr' info=' Obsolete'/>
      <field name='keyInitLevel' type='int' info=' Needed to catch recursive keys issues'/>
      <field name='depth' type='int' info=' Needed to catch recursions'/>
      <field name='maxTemplateDepth' type='int' info=''/>
      <field name='maxTemplateVars' type='int' info=''/>
      <field name='opLimit' type='unsigned long' info=''/>
      <field name='opCount' type='unsigned long' info=''/>
    </struct>
    <typedef name='xsltTransformContextPtr' file='xsltInternals' type='xsltTransformContext *'/>
    <typedef name='xsltTransformState' file='xsltInternals' type='enum'/>
    <struct name='xsltVarInfo' file='xsltInternals' type='struct _xsltVarInfo'>
      <field name='next' type='xsltVarInfoPtr' info=' next in the list'/>
      <field name='prev' type='xsltVarInfoPtr' info=''/>
      <field name='depth' type='int' info=' the depth in the tree'/>
      <field name='name' type='const xmlChar *' info=''/>
      <field name='nsName' type='const xmlChar *' info=''/>
    </struct>
    <typedef name='xsltVarInfoPtr' file='xsltInternals' type='xsltVarInfo *'/>
    <variable name='xslDebugStatus' file='xsltutils' type='int'/>
    <variable name='xsltConstNamespaceNameXSLT' file='xsltInternals' type='const xmlChar *'/>
    <variable name='xsltDocDefaultLoader' file='documents' type='xsltDocLoaderFunc'/>
    <variable name='xsltEngineVersion' file='xslt' type='const char *'/>
    <variable name='xsltExtMarker' file='preproc' type='const xmlChar *'/>
    <variable name='xsltGenericDebug' file='xsltutils' type='xmlGenericErrorFunc'/>
    <variable name='xsltGenericDebugContext' file='xsltutils' type='void *'/>
    <variable name='xsltGenericError' file='xsltutils' type='xmlGenericErrorFunc'/>
    <variable name='xsltGenericErrorContext' file='xsltutils' type='void *'/>
    <variable name='xsltLibxmlVersion' file='xslt' type='const int'/>
    <variable name='xsltLibxsltVersion' file='xslt' type='const int'/>
    <variable name='xsltMaxDepth' file='xslt' type='int'/>
    <variable name='xsltMaxVars' file='xslt' type='int'/>
    <variable name='xsltXSLTAttrMarker' file='xsltInternals' type='const xmlChar *'/>
    <function name='xslAddCall' file='xsltutils'>
      <info>Add template &quot;call&quot; to call stack</info>
      <return type='int' info=': 1 on sucess 0 otherwise an error may be printed if WITH_XSLT_DEBUG_BREAKPOINTS is defined'/>
      <arg name='templ' type='xsltTemplatePtr' info='current template being applied'/>
      <arg name='source' type='xmlNodePtr' info='the source node being processed'/>
    </function>
    <function name='xslDropCall' file='xsltutils'>
      <info>Drop the topmost item off the call stack</info>
      <return type='void'/>
    </function>
    <function name='xslHandleDebugger' file='transform'>
      <info>If either cur or node are a breakpoint, or xslDebugStatus in state where debugging must occcur at this time then transfer control to the xslDebugBreak function</info>
      <return type='void'/>
      <arg name='cur' type='xmlNodePtr' info='source node being executed'/>
      <arg name='node' type='xmlNodePtr' info='data node being processed'/>
      <arg name='templ' type='xsltTemplatePtr' info='temlate that applies to node'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the xslt transform context'/>
    </function>
    <functype name='xsltAddCallCallback' file='xsltutils'>
      <info></info>
      <return type='int' info=''/>
      <arg name='templ' type='xsltTemplatePtr' info=''/>
      <arg name='source' type='xmlNodePtr' info=''/>
    </functype>
    <function name='xsltAddKey' file='keys'>
      <info>add a key definition to a stylesheet</info>
      <return type='int' info='0 in case of success, and -1 in case of failure.'/>
      <arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
      <arg name='name' type='const xmlChar *' info='the key name or NULL'/>
      <arg name='nameURI' type='const xmlChar *' info='the name URI or NULL'/>
      <arg name='match' type='const xmlChar *' info='the match value'/>
      <arg name='use' type='const xmlChar *' info='the use value'/>
      <arg name='inst' type='xmlNodePtr' info='the key instruction'/>
    </function>
    <function name='xsltAddStackElemList' file='variables'>
      <info>Push an element list onto the stack.</info>
      <return type='int' info='0 in case of success, -1 in case of failure.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='xn XSLT transformation context'/>
      <arg name='elems' type='xsltStackElemPtr' info='a stack element list'/>
    </function>
    <function name='xsltAddTemplate' file='pattern'>
      <info>Register the XSLT pattern associated to @cur</info>
      <return type='int' info='-1 in case of error, 0 otherwise'/>
      <arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
      <arg name='cur' type='xsltTemplatePtr' info='an XSLT template'/>
      <arg name='mode' type='const xmlChar *' info='the mode name or NULL'/>
      <arg name='modeURI' type='const xmlChar *' info='the mode URI or NULL'/>
    </function>
    <function name='xsltAllocateExtra' file='xsltInternals'>
      <info>Allocate an extra runtime information slot statically while compiling the stylesheet and return its number</info>
      <return type='int' info='the number of the slot'/>
      <arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
    </function>
    <function name='xsltAllocateExtraCtxt' file='xsltInternals'>
      <info>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</info>
      <return type='int' info='the number of the slot'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
    </function>
    <function name='xsltApplyAttributeSet' file='attributes'>
      <info>Apply the xsl:use-attribute-sets. If @attrSets is NULL, then @inst will be used to exctract this value. If both, @attrSets and @inst, are NULL, then this will do nothing.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT stylesheet'/>
      <arg name='node' type='xmlNodePtr' info='the node in the source tree.'/>
      <arg name='inst' type='xmlNodePtr' info='the attribute node &quot;xsl:use-attribute-sets&quot;'/>
      <arg name='attrSets' type='const xmlChar *' info='the list of QNames of the attribute-sets to be applied'/>
    </function>
    <function name='xsltApplyImports' file='transform'>
      <info>Process the XSLT apply-imports element.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
      <arg name='contextNode' type='xmlNodePtr' info='the current node in the source tree.'/>
      <arg name='inst' type='xmlNodePtr' info='the element node of the XSLT &apos;apply-imports&apos; instruction'/>
      <arg name='comp' type='xsltElemPreCompPtr' info='the compiled instruction'/>
    </function>
    <function name='xsltApplyOneTemplate' file='transform'>
      <info>Processes a sequence constructor on the current node in the source tree.  @params are the already computed variable stack items; this function pushes them on the variable stack, and pops them before exiting; it&apos;s left to the caller to free or reuse @params afterwards. The initial states of the variable stack will always be restored before this function exits. NOTE that this does *not* initiate a new distinct variable scope; i.e. variables already on the stack are visible to the process. The caller&apos;s side needs to start a new variable scope if needed (e.g. in exsl:function).  @templ is obsolete and not used anymore (e.g. &lt;exslt:function&gt; does not provide a @templ); a non-NULL @templ might raise an error in the future.  BIG NOTE: This function is not intended to process the content of an xsl:template; it does not expect xsl:param instructions in @list and will report errors if found.  Called by: - xsltEvalVariable() (variables.c) - exsltFuncFunctionFunction() (libexsl/functions.c)</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='contextNode' type='xmlNodePtr' info='the node in the source tree.'/>
      <arg name='list' type='xmlNodePtr' info='the nodes of a sequence constructor'/>
      <arg name='templ' type='xsltTemplatePtr' info='not used'/>
      <arg name='params' type='xsltStackElemPtr' info='a set of parameters (xsl:param) or NULL'/>
    </function>
    <function name='xsltApplyStripSpaces' file='transform'>
      <info>Strip the unwanted ignorable spaces from the input tree</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='node' type='xmlNodePtr' info='the root of the XML tree'/>
    </function>
    <function name='xsltApplyStylesheet' file='transform'>
      <info>Apply the stylesheet to the document NOTE: This may lead to a non-wellformed output XML wise !</info>
      <return type='xmlDocPtr' info='the result document or NULL in case of error'/>
      <arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
      <arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
      <arg name='params' type='const char **' info='a NULL terminated arry of parameters names/values tuples'/>
    </function>
    <function name='xsltApplyStylesheetUser' file='transform'>
      <info>Apply the stylesheet to the document and allow the user to provide its own transformation context.</info>
      <return type='xmlDocPtr' info='the result document or NULL in case of error'/>
      <arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
      <arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
      <arg name='params' type='const char **' info='a NULL terminated array of parameters names/values tuples'/>
      <arg name='output' type='const char *' info='the targetted output'/>
      <arg name='profile' type='FILE *' info='profile FILE * output or NULL'/>
      <arg name='userCtxt' type='xsltTransformContextPtr' info='user provided transform context'/>
    </function>
    <function name='xsltApplyTemplates' file='transform'>
      <info>Processes the XSLT &apos;apply-templates&apos; instruction on the current node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT transformation context'/>
      <arg name='node' type='xmlNodePtr' info='the &apos;current node&apos; in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the element node of an XSLT &apos;apply-templates&apos; instruction'/>
      <arg name='castedComp' type='xsltElemPreCompPtr' info='the compiled instruction'/>
    </function>
    <function name='xsltAttrListTemplateProcess' file='templates'>
      <info>Processes all attributes of a Literal Result Element. Attribute references are applied via xsl:use-attribute-set attributes. Copies all non XSLT-attributes over to the @target element and evaluates Attribute Value Templates.  Called by xsltApplySequenceConstructor() (transform.c).</info>
      <return type='xmlAttrPtr' info='a new list of attribute nodes, or NULL in case of error. (Don&apos;t assign the result to @target-&gt;properties; if the result is NULL, you&apos;ll get memory leaks, since the attributes will be disattached.)'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attributes will be grafted'/>
      <arg name='attrs' type='xmlAttrPtr' info='the first attribute'/>
    </function>
    <function name='xsltAttrTemplateProcess' file='templates'>
      <info>Process one attribute of a Literal Result Element (in the stylesheet). Evaluates Attribute Value Templates and copies the attribute over to the result element. This does *not* process attribute sets (xsl:use-attribute-set).</info>
      <return type='xmlAttrPtr' info='the generated attribute node.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
      <arg name='target' type='xmlNodePtr' info='the element where the attribute will be grafted'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute node of a literal result element'/>
    </function>
    <function name='xsltAttrTemplateValueProcess' file='templates'>
      <info>Process the given node and return the new string value.</info>
      <return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
      <arg name='str' type='const xmlChar *' info='the attribute template node value'/>
    </function>
    <function name='xsltAttrTemplateValueProcessNode' file='templates'>
      <info>Process the given string, allowing to pass a namespace mapping context and return the new string value.  Called by: - xsltAttrTemplateValueProcess() (templates.c) - xsltEvalAttrValueTemplate() (templates.c)  QUESTION: Why is this function public? It is not used outside of templates.c.</info>
      <return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
      <arg name='str' type='const xmlChar *' info='the attribute template node value'/>
      <arg name='inst' type='xmlNodePtr' info='the instruction (or LRE) in the stylesheet holding the attribute with an AVT'/>
    </function>
    <function name='xsltAttribute' file='transform'>
      <info>Process the xslt attribute node on the source node</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='contextNode' type='xmlNodePtr' info='the current node in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the xsl:attribute element'/>
      <arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
    </function>
    <function name='xsltCalibrateAdjust' file='xsltutils'>
      <info>Used for to correct the calibration for xsltTimestamp()</info>
      <return type='void'/>
      <arg name='delta' type='long' info='a negative dealy value found'/>
    </function>
    <function name='xsltCallTemplate' file='transform'>
      <info>Processes the XSLT call-template instruction on the source node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT transformation context'/>
      <arg name='node' type='xmlNodePtr' info='the &quot;current node&quot; in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the XSLT &apos;call-template&apos; instruction'/>
      <arg name='castedComp' type='xsltElemPreCompPtr' info='the compiled information of the instruction'/>
    </function>
    <function name='xsltCheckExtPrefix' file='extensions'>
      <info>Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltGetInheritedNsList() (xslt.c) xsltParseTemplateContent (xslt.c)</info>
      <return type='int' info='1 if this is an extension, 0 otherwise'/>
      <arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
      <arg name='URI' type='const xmlChar *' info='the namespace prefix (possibly NULL)'/>
    </function>
    <function name='xsltCheckExtURI' file='extensions'>
      <info>Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltPrecomputeStylesheet() (xslt.c) xsltParseTemplateContent (xslt.c)</info>
      <return type='int' info='1 if this is an extension, 0 otherwise'/>
      <arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
      <arg name='URI' type='const xmlChar *' info='the namespace URI (possibly NULL)'/>
    </function>
    <function name='xsltCheckRead' file='security'>
      <info>Check if the resource is allowed to be read</info>
      <return type='int' info='1 if read is allowed, 0 if not and -1 in case or error.'/>
      <arg name='sec' type='xsltSecurityPrefsPtr' info='the security options'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
      <arg name='URL' type='const xmlChar *' info='the resource to be read'/>
    </function>
    <function name='xsltCheckWrite' file='security'>
      <info>Check if the resource is allowed to be written, if necessary makes some preliminary work like creating directories</info>
      <return type='int' info='1 if write is allowed, 0 if not and -1 in case or error.'/>
      <arg name='sec' type='xsltSecurityPrefsPtr' info='the security options'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
      <arg name='URL' type='const xmlChar *' info='the resource to be written'/>
    </function>
    <function name='xsltChoose' file='transform'>
      <info>Processes the xsl:choose instruction on the source node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='contextNode' type='xmlNodePtr' info='the current node in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the xsl:choose instruction'/>
      <arg name='comp' type='xsltElemPreCompPtr' info='compiled information of the instruction'/>
    </function>
    <function name='xsltCleanupGlobals' file='xslt'>
      <info>Unregister all global variables set up by the XSLT library</info>
      <return type='void'/>
    </function>
    <function name='xsltCleanupTemplates' file='pattern'>
      <info>Cleanup the state of the templates used by the stylesheet and the ones it imports.</info>
      <return type='void'/>
      <arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
    </function>
    <function name='xsltComment' file='transform'>
      <info>Process the xslt comment node on the source node</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='node' type='xmlNodePtr' info='the node in the source tree.'/>
      <arg name='inst' type='xmlNodePtr' info='the xslt comment node'/>
      <arg name='comp' type='xsltElemPreCompPtr' info='precomputed information'/>
    </function>
    <function name='xsltCompileAttr' file='xsltInternals'>
      <info>Precompile an attribute in a stylesheet, basically it checks if it is an attribute value template, and if yes, establish some structures needed to process it at transformation time.</info>
      <return type='void'/>
      <arg name='style' type='xsltStylesheetPtr' info='a XSLT process context'/>
      <arg name='attr' type='xmlAttrPtr' info='the attribute coming from the stylesheet.'/>
    </function>
    <function name='xsltCompilePattern' file='pattern'>
      <info>Compile the XSLT pattern and generates a list of precompiled form suitable for fast matching.  [1] Pattern ::= LocationPathPattern | Pattern &apos;|&apos; LocationPathPattern</info>
      <return type='xsltCompMatchPtr' info='the generated pattern list or NULL in case of failure'/>
      <arg name='pattern' type='const xmlChar *' info='an XSLT pattern'/>
      <arg name='doc' type='xmlDocPtr' info='the containing document'/>
      <arg name='node' type='xmlNodePtr' info='the containing element'/>
      <arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
      <arg name='runtime' type='xsltTransformContextPtr' info='the transformation context, if done at run-time'/>
    </function>
    <function name='xsltComputeSortResult' file='xsltutils'>
      <info>reorder the current node list accordingly to the set of sorting requirement provided by the array of nodes.</info>
      <return type='xmlXPathObjectPtr *' info='a ordered XPath nodeset or NULL in case of error.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
      <arg name='sort' type='xmlNodePtr' info='node list'/>
    </function>
    <function name='xsltCopy' file='transform'>
      <info>Execute the XSLT-copy instruction on the source node.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT process context'/>
      <arg name='node' type='xmlNodePtr' info='the node in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the element node of the XSLT-copy instruction'/>
      <arg name='castedComp' type='xsltElemPreCompPtr' info='computed information of the XSLT-copy instruction'/>
    </function>
    <function name='xsltCopyNamespace' file='namespaces'>
      <info>Copies a namespace node (declaration). If @elem is not NULL, then the new namespace will be declared on @elem.</info>
      <return type='xmlNsPtr' info='a new xmlNsPtr, or NULL in case of an error.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
      <arg name='elem' type='xmlNodePtr' info='the target element node'/>
      <arg name='ns' type='xmlNsPtr' info='the namespace node'/>
    </function>
    <function name='xsltCopyNamespaceList' file='namespaces'>
      <info>Do a copy of an namespace list. If @node is non-NULL the new namespaces are added automatically. This handles namespaces aliases. This function is intended only for *internal* use at transformation-time for copying ns-declarations of Literal Result Elements.  Called by: xsltCopyTreeInternal() (transform.c) xsltShallowCopyElem() (transform.c)  REVISIT: This function won&apos;t be used in the refactored code.</info>
      <return type='xmlNsPtr' info='a new xmlNsPtr, or NULL in case of error.'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
      <arg name='node' type='xmlNodePtr' info='the target node'/>
      <arg name='cur' type='xmlNsPtr' info='the first namespace'/>
    </function>
    <function name='xsltCopyOf' file='transform'>
      <info>Process the XSLT copy-of instruction.</info>
      <return type='void'/>
      <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
      <arg name='node' type='xmlNodePtr' info='the current node in the source tree'/>
      <arg name='inst' type='xmlNodePtr' info='the element node of the X