Git conversion: Make reactos the root directory, move rosapps, rostests, wallpapers...
[reactos.git] / reactos / sdk / include / reactos / libs / libxslt / xsltInternals.h
diff --git a/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h b/reactos/sdk/include/reactos/libs/libxslt/xsltInternals.h
deleted file mode 100644 (file)
index 7123ace..0000000
+++ /dev/null
@@ -1,1972 +0,0 @@
-/*
- * Summary: internal data structures, constants and functions
- * Description: 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.
- *
- * Copy: See Copyright for the status of this software.
- *
- * Author: Daniel Veillard
- */
-
-#ifndef __XML_XSLT_INTERNALS_H__
-#define __XML_XSLT_INTERNALS_H__
-
-#include <libxml/tree.h>
-#include <libxml/hash.h>
-#include <libxml/xpath.h>
-#include <libxml/xmlerror.h>
-#include <libxml/dict.h>
-#include <libxml/xmlstring.h>
-#include <libxslt/xslt.h>
-#include "xsltexports.h"
-#include "xsltlocale.h"
-#include "numbersInternals.h"
-
-#ifdef __cplusplus
-extern "C" {
-#endif
-
-/* #define XSLT_DEBUG_PROFILE_CACHE */
-
-/**
- * XSLT_IS_TEXT_NODE:
- *
- * check if the argument is a text node
- */
-#define XSLT_IS_TEXT_NODE(n) ((n != NULL) && \
-    (((n)->type == XML_TEXT_NODE) || \
-     ((n)->type == XML_CDATA_SECTION_NODE)))
-
-
-/**
- * XSLT_MARK_RES_TREE_FRAG:
- *
- * internal macro to set up tree fragments
- */
-#define XSLT_MARK_RES_TREE_FRAG(n) \
-    (n)->name = (char *) xmlStrdup(BAD_CAST " fake node libxslt");
-
-/**
- * XSLT_IS_RES_TREE_FRAG:
- *
- * internal macro to test tree fragments
- */
-#define XSLT_IS_RES_TREE_FRAG(n) \
-    ((n != NULL) && ((n)->type == XML_DOCUMENT_NODE) && \
-     ((n)->name != NULL) && ((n)->name[0] == ' '))
-
-/**
- * XSLT_REFACTORED_KEYCOMP:
- *
- * Internal define to enable on-demand xsl:key computation.
- * That's the only mode now but the define is kept for compatibility
- */
-#define XSLT_REFACTORED_KEYCOMP
-
-/**
- * XSLT_FAST_IF:
- *
- * Internal define to enable usage of xmlXPathCompiledEvalToBoolean()
- * for XSLT "tests"; e.g. in <xsl:if test="/foo/bar">
- */
-#define XSLT_FAST_IF
-
-/**
- * XSLT_REFACTORED:
- *
- * Internal define to enable the refactored parts of Libxslt.
- */
-/* #define XSLT_REFACTORED */
-/* ==================================================================== */
-
-/**
- * XSLT_REFACTORED_VARS:
- *
- * Internal define to enable the refactored variable part of libxslt
- */
-#define XSLT_REFACTORED_VARS
-
-#ifdef XSLT_REFACTORED
-
-extern const xmlChar *xsltXSLTAttrMarker;
-
-
-/* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */
-
-/* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */
-
-/**
- * XSLT_REFACTORED_XSLT_NSCOMP
- *
- * Internal define to enable the pointer-comparison of
- * namespaces of XSLT elements.
- */
-/* #define XSLT_REFACTORED_XSLT_NSCOMP */
-
-/**
- * XSLT_REFACTORED_XPATHCOMP:
- *
- * Internal define to enable the optimization of the
- * compilation of XPath expressions.
- */
-#define XSLT_REFACTORED_XPATHCOMP
-
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP
-
-extern const xmlChar *xsltConstNamespaceNameXSLT;
-
-/**
- * IS_XSLT_ELEM_FAST:
- *
- * quick test to detect XSLT elements
- */
-#define IS_XSLT_ELEM_FAST(n) \
-    (((n) != NULL) && ((n)->ns != NULL) && \
-    ((n)->ns->href == xsltConstNamespaceNameXSLT))
-
-/**
- * IS_XSLT_ATTR_FAST:
- *
- * quick test to detect XSLT attributes
- */
-#define IS_XSLT_ATTR_FAST(a) \
-    (((a) != NULL) && ((a)->ns != NULL) && \
-    ((a)->ns->href == xsltConstNamespaceNameXSLT))
-
-/**
- * XSLT_HAS_INTERNAL_NSMAP:
- *
- * check for namespace mapping
- */
-#define XSLT_HAS_INTERNAL_NSMAP(s) \
-    (((s) != NULL) && ((s)->principal) && \
-     ((s)->principal->principalData) && \
-     ((s)->principal->principalData->nsMap))
-
-/**
- * XSLT_GET_INTERNAL_NSMAP:
- *
- * get pointer to namespace map
- */
-#define XSLT_GET_INTERNAL_NSMAP(s) ((s)->principal->principalData->nsMap)
-
-#else /* XSLT_REFACTORED_XSLT_NSCOMP */
-
-/**
- * IS_XSLT_ELEM_FAST:
- *
- * quick check whether this is an xslt element
- */
-#define IS_XSLT_ELEM_FAST(n) \
-    (((n) != NULL) && ((n)->ns != NULL) && \
-     (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
-
-/**
- * IS_XSLT_ATTR_FAST:
- *
- * quick check for xslt namespace attribute
- */
-#define IS_XSLT_ATTR_FAST(a) \
-    (((a) != NULL) && ((a)->ns != NULL) && \
-     (xmlStrEqual((a)->ns->href, XSLT_NAMESPACE)))
-
-
-#endif /* XSLT_REFACTORED_XSLT_NSCOMP */
-
-
-/**
- * XSLT_REFACTORED_MANDATORY_VERSION:
- *
- * TODO: Currently disabled to surpress regression test failures, since
- *  the old behaviour was that a missing version attribute
- *  produced a only a warning and not an error, which was incerrect.
- *  So the regression tests need to be fixed if this is enabled.
- */
-/* #define XSLT_REFACTORED_MANDATORY_VERSION */
-
-/**
- * xsltPointerList:
- *
- * Pointer-list for various purposes.
- */
-typedef struct _xsltPointerList xsltPointerList;
-typedef xsltPointerList *xsltPointerListPtr;
-struct _xsltPointerList {
-    void **items;
-    int number;
-    int size;
-};
-
-#endif
-
-/**
- * XSLT_REFACTORED_PARSING:
- *
- * Internal define to enable the refactored parts of Libxslt
- * related to parsing.
- */
-/* #define XSLT_REFACTORED_PARSING */
-
-/**
- * XSLT_MAX_SORT:
- *
- * Max number of specified xsl:sort on an element.
- */
-#define XSLT_MAX_SORT 15
-
-/**
- * XSLT_PAT_NO_PRIORITY:
- *
- * Specific value for pattern without priority expressed.
- */
-#define XSLT_PAT_NO_PRIORITY -12345789
-
-/**
- * xsltRuntimeExtra:
- *
- * Extra information added to the transformation context.
- */
-typedef struct _xsltRuntimeExtra xsltRuntimeExtra;
-typedef xsltRuntimeExtra *xsltRuntimeExtraPtr;
-struct _xsltRuntimeExtra {
-    void       *info;          /* pointer to the extra data */
-    xmlFreeFunc deallocate;    /* pointer to the deallocation routine */
-    union {                    /* dual-purpose field */
-        void   *ptr;           /* data not needing deallocation */
-       int    ival;            /* integer value storage */
-    } val;
-};
-
-/**
- * XSLT_RUNTIME_EXTRA_LST:
- * @ctxt: the transformation context
- * @nr: the index
- *
- * Macro used to access extra information stored in the context
- */
-#define XSLT_RUNTIME_EXTRA_LST(ctxt, nr) (ctxt)->extras[(nr)].info
-/**
- * XSLT_RUNTIME_EXTRA_FREE:
- * @ctxt: the transformation context
- * @nr: the index
- *
- * Macro used to free extra information stored in the context
- */
-#define XSLT_RUNTIME_EXTRA_FREE(ctxt, nr) (ctxt)->extras[(nr)].deallocate
-/**
- * XSLT_RUNTIME_EXTRA:
- * @ctxt: the transformation context
- * @nr: the index
- *
- * Macro used to define extra information stored in the context
- */
-#define        XSLT_RUNTIME_EXTRA(ctxt, nr, typ) (ctxt)->extras[(nr)].val.typ
-
-/**
- * xsltTemplate:
- *
- * The in-memory structure corresponding to an XSLT Template.
- */
-typedef struct _xsltTemplate xsltTemplate;
-typedef xsltTemplate *xsltTemplatePtr;
-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 computed */
-    const xmlChar *name; /* the local part of the name QName */
-    const 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 */
-
-    /*
-    * TODO: @inheritedNsNr and @inheritedNs won't be used in the
-    *  refactored code.
-    */
-    int inheritedNsNr;  /* number of inherited namespaces */
-    xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */
-
-    /* Profiling informations */
-    int nbCalls;        /* the number of time the template was called */
-    unsigned long time; /* the time spent in this template */
-    void *params;       /* xsl:param instructions */
-
-    int              templNr;          /* Nb of templates in the stack */
-    int              templMax;         /* Size of the templtes stack */
-    xsltTemplatePtr *templCalledTab;   /* templates called */
-    int             *templCountTab;  /* .. and how often */
-};
-
-/**
- * xsltDecimalFormat:
- *
- * Data structure of decimal-format.
- */
-typedef struct _xsltDecimalFormat xsltDecimalFormat;
-typedef xsltDecimalFormat *xsltDecimalFormatPtr;
-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 pattern and may appear in result */
-    xmlChar *decimalPoint;
-    xmlChar *grouping;
-    xmlChar *percent;
-    xmlChar *permille;
-    xmlChar *zeroDigit;
-};
-
-/**
- * xsltDocument:
- *
- * Data structure associated to a parsed document.
- */
-typedef struct _xsltDocument xsltDocument;
-typedef xsltDocument *xsltDocumentPtr;
-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 */
-    int nbKeysComputed;
-};
-
-/**
- * xsltKeyDef:
- *
- * Representation of an xsl:key.
- */
-typedef struct _xsltKeyDef xsltKeyDef;
-typedef xsltKeyDef *xsltKeyDefPtr;
-struct _xsltKeyDef {
-    struct _xsltKeyDef *next;
-    xmlNodePtr inst;
-    xmlChar *name;
-    xmlChar *nameURI;
-    xmlChar *match;
-    xmlChar *use;
-    xmlXPathCompExprPtr comp;
-    xmlXPathCompExprPtr usecomp;
-    xmlNsPtr *nsList;           /* the namespaces in scope */
-    int nsNr;                   /* the number of namespaces in scope */
-};
-
-/**
- * xsltKeyTable:
- *
- * Holds the computed keys for key definitions of the same QName.
- * Is owned by an xsltDocument.
- */
-typedef struct _xsltKeyTable xsltKeyTable;
-typedef xsltKeyTable *xsltKeyTablePtr;
-struct _xsltKeyTable {
-    struct _xsltKeyTable *next;
-    xmlChar *name;
-    xmlChar *nameURI;
-    xmlHashTablePtr keys;
-};
-
-/*
- * The in-memory structure corresponding to an XSLT Stylesheet.
- * NOTE: most of the content is simply linked from the doc tree
- *       structure, no specific allocation is made.
- */
-typedef struct _xsltStylesheet xsltStylesheet;
-typedef xsltStylesheet *xsltStylesheetPtr;
-
-typedef struct _xsltTransformContext xsltTransformContext;
-typedef xsltTransformContext *xsltTransformContextPtr;
-
-/**
- * xsltElemPreComp:
- *
- * The in-memory structure corresponding to element precomputed data,
- * designed to be extended by extension implementors.
- */
-typedef struct _xsltElemPreComp xsltElemPreComp;
-typedef xsltElemPreComp *xsltElemPreCompPtr;
-
-/**
- * xsltTransformFunction:
- * @ctxt: the XSLT transformation context
- * @node: the input node
- * @inst: the stylesheet node
- * @comp: the compiled information from the stylesheet
- *
- * Signature of the function associated to elements part of the
- * stylesheet language like xsl:if or xsl:apply-templates.
- */
-typedef void (*xsltTransformFunction) (xsltTransformContextPtr ctxt,
-                                      xmlNodePtr node,
-                                      xmlNodePtr inst,
-                                      xsltElemPreCompPtr comp);
-
-/**
- * xsltSortFunc:
- * @ctxt:    a transformation context
- * @sorts:   the node-set to sort
- * @nbsorts: the number of sorts
- *
- * Signature of the function to use during sorting
- */
-typedef void (*xsltSortFunc) (xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
-                             int nbsorts);
-
-typedef enum {
-    XSLT_FUNC_COPY=1,
-    XSLT_FUNC_SORT,
-    XSLT_FUNC_TEXT,
-    XSLT_FUNC_ELEMENT,
-    XSLT_FUNC_ATTRIBUTE,
-    XSLT_FUNC_COMMENT,
-    XSLT_FUNC_PI,
-    XSLT_FUNC_COPYOF,
-    XSLT_FUNC_VALUEOF,
-    XSLT_FUNC_NUMBER,
-    XSLT_FUNC_APPLYIMPORTS,
-    XSLT_FUNC_CALLTEMPLATE,
-    XSLT_FUNC_APPLYTEMPLATES,
-    XSLT_FUNC_CHOOSE,
-    XSLT_FUNC_IF,
-    XSLT_FUNC_FOREACH,
-    XSLT_FUNC_DOCUMENT,
-    XSLT_FUNC_WITHPARAM,
-    XSLT_FUNC_PARAM,
-    XSLT_FUNC_VARIABLE,
-    XSLT_FUNC_WHEN,
-    XSLT_FUNC_EXTENSION
-#ifdef XSLT_REFACTORED
-    ,
-    XSLT_FUNC_OTHERWISE,
-    XSLT_FUNC_FALLBACK,
-    XSLT_FUNC_MESSAGE,
-    XSLT_FUNC_INCLUDE,
-    XSLT_FUNC_ATTRSET,
-    XSLT_FUNC_LITERAL_RESULT_ELEMENT,
-    XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
-#endif
-} xsltStyleType;
-
-/**
- * xsltElemPreCompDeallocator:
- * @comp:  the #xsltElemPreComp to free up
- *
- * Deallocates an #xsltElemPreComp structure.
- */
-typedef void (*xsltElemPreCompDeallocator) (xsltElemPreCompPtr comp);
-
-/**
- * xsltElemPreComp:
- *
- * The basic structure for compiled items of the AST of the XSLT processor.
- * This structure is also intended to be extended by extension implementors.
- * TODO: This is somehow not nice, since it has a "free" field, which
- *   derived stylesheet-structs do not have.
- */
-struct _xsltElemPreComp {
-    xsltElemPreCompPtr next;           /* next item in the global chained
-                                          list hold by xsltStylesheet. */
-    xsltStyleType type;                /* type of the element */
-    xsltTransformFunction func;        /* handling function */
-    xmlNodePtr inst;                   /* the node in the stylesheet's tree
-                                          corresponding to this item */
-
-    /* end of common part */
-    xsltElemPreCompDeallocator free;   /* the deallocator */
-};
-
-/**
- * xsltStylePreComp:
- *
- * The abstract basic structure for items of the XSLT processor.
- * This includes:
- * 1) compiled forms of XSLT instructions (xsl:if, xsl:attribute, etc.)
- * 2) compiled forms of literal result elements
- * 3) compiled forms of extension elements
- */
-typedef struct _xsltStylePreComp xsltStylePreComp;
-typedef xsltStylePreComp *xsltStylePreCompPtr;
-
-#ifdef XSLT_REFACTORED
-
-/*
-* Some pointer-list utility functions.
-*/
-XSLTPUBFUN xsltPointerListPtr XSLTCALL
-               xsltPointerListCreate           (int initialSize);
-XSLTPUBFUN void XSLTCALL
-               xsltPointerListFree             (xsltPointerListPtr list);
-XSLTPUBFUN void XSLTCALL
-               xsltPointerListClear            (xsltPointerListPtr list);
-XSLTPUBFUN int XSLTCALL
-               xsltPointerListAddSize          (xsltPointerListPtr list,
-                                                void *item,
-                                                int initialSize);
-
-/************************************************************************
- *                                                                     *
- * Refactored structures                                                *
- *                                                                     *
- ************************************************************************/
-
-typedef struct _xsltNsListContainer xsltNsListContainer;
-typedef xsltNsListContainer *xsltNsListContainerPtr;
-struct _xsltNsListContainer {
-    xmlNsPtr *list;
-    int totalNumber;
-    int xpathNumber;
-};
-
-/**
- * XSLT_ITEM_COMPATIBILITY_FIELDS:
- *
- * Fields for API compatibility to the structure
- * _xsltElemPreComp which is used for extension functions.
- * Note that @next is used for storage; it does not reflect a next
- * sibling in the tree.
- * TODO: Evaluate if we really need such a compatibility.
- */
-#define XSLT_ITEM_COMPATIBILITY_FIELDS \
-    xsltElemPreCompPtr next;\
-    xsltStyleType type;\
-    xsltTransformFunction func;\
-    xmlNodePtr inst;
-
-/**
- * XSLT_ITEM_NAVIGATION_FIELDS:
- *
- * Currently empty.
- * TODO: It is intended to hold navigational fields in the future.
- */
-#define XSLT_ITEM_NAVIGATION_FIELDS
-/*
-    xsltStylePreCompPtr parent;\
-    xsltStylePreCompPtr children;\
-    xsltStylePreCompPtr nextItem;
-*/
-
-/**
- * XSLT_ITEM_NSINSCOPE_FIELDS:
- *
- * The in-scope namespaces.
- */
-#define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs;
-
-/**
- * XSLT_ITEM_COMMON_FIELDS:
- *
- * Common fields used for all items.
- */
-#define XSLT_ITEM_COMMON_FIELDS \
-    XSLT_ITEM_COMPATIBILITY_FIELDS \
-    XSLT_ITEM_NAVIGATION_FIELDS \
-    XSLT_ITEM_NSINSCOPE_FIELDS
-
-/**
- * _xsltStylePreComp:
- *
- * The abstract basic structure for items of the XSLT processor.
- * This includes:
- * 1) compiled forms of XSLT instructions (e.g. xsl:if, xsl:attribute, etc.)
- * 2) compiled forms of literal result elements
- * 3) various properties for XSLT instructions (e.g. xsl:when,
- *    xsl:with-param)
- *
- * REVISIT TODO: Keep this structure equal to the fields
- *   defined by XSLT_ITEM_COMMON_FIELDS
- */
-struct _xsltStylePreComp {
-    xsltElemPreCompPtr next;    /* next item in the global chained
-                                  list hold by xsltStylesheet */
-    xsltStyleType type;         /* type of the item */
-    xsltTransformFunction func; /* handling function */
-    xmlNodePtr inst;           /* the node in the stylesheet's tree
-                                  corresponding to this item. */
-    /* Currently no navigational fields. */
-    xsltNsListContainerPtr inScopeNs;
-};
-
-/**
- * xsltStyleBasicEmptyItem:
- *
- * Abstract structure only used as a short-cut for
- * XSLT items with no extra fields.
- * NOTE that it is intended that this structure looks the same as
- *  _xsltStylePreComp.
- */
-typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem;
-typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr;
-
-struct _xsltStyleBasicEmptyItem {
-    XSLT_ITEM_COMMON_FIELDS
-};
-
-/**
- * xsltStyleBasicExpressionItem:
- *
- * Abstract structure only used as a short-cut for
- * XSLT items with just an expression.
- */
-typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem;
-typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr;
-
-struct _xsltStyleBasicExpressionItem {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *select; /* TODO: Change this to "expression". */
-    xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */
-};
-
-/************************************************************************
- *                                                                     *
- * XSLT-instructions/declarations                                       *
- *                                                                     *
- ************************************************************************/
-
-/**
- * xsltStyleItemElement:
- *
- * <!-- Category: instruction -->
- * <xsl:element
- *  name = { qname }
- *  namespace = { uri-reference }
- *  use-attribute-sets = qnames>
- *  <!-- Content: template -->
- * </xsl:element>
- */
-typedef struct _xsltStyleItemElement xsltStyleItemElement;
-typedef xsltStyleItemElement *xsltStyleItemElementPtr;
-
-struct _xsltStyleItemElement {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *use;
-    int      has_use;
-    const xmlChar *name;
-    int      has_name;
-    const xmlChar *ns;
-    const xmlChar *nsPrefix;
-    int      has_ns;
-};
-
-/**
- * xsltStyleItemAttribute:
- *
- * <!-- Category: instruction -->
- * <xsl:attribute
- *  name = { qname }
- *  namespace = { uri-reference }>
- *  <!-- Content: template -->
- * </xsl:attribute>
- */
-typedef struct _xsltStyleItemAttribute xsltStyleItemAttribute;
-typedef xsltStyleItemAttribute *xsltStyleItemAttributePtr;
-
-struct _xsltStyleItemAttribute {
-    XSLT_ITEM_COMMON_FIELDS
-    const xmlChar *name;
-    int      has_name;
-    const xmlChar *ns;
-    const xmlChar *nsPrefix;
-    int      has_ns;
-};
-
-/**
- * xsltStyleItemText:
- *
- * <!-- Category: instruction -->
- * <xsl:text
- *  disable-output-escaping = "yes" | "no">
- *  <!-- Content: #PCDATA -->
- * </xsl:text>
- */
-typedef struct _xsltStyleItemText xsltStyleItemText;
-typedef xsltStyleItemText *xsltStyleItemTextPtr;
-
-struct _xsltStyleItemText {
-    XSLT_ITEM_COMMON_FIELDS
-    int      noescape;         /* text */
-};
-
-/**
- * xsltStyleItemComment:
- *
- * <!-- Category: instruction -->
- *  <xsl:comment>
- *  <!-- Content: template -->
- * </xsl:comment>
- */
-typedef xsltStyleBasicEmptyItem xsltStyleItemComment;
-typedef xsltStyleItemComment *xsltStyleItemCommentPtr;
-
-/**
- * xsltStyleItemPI:
- *
- * <!-- Category: instruction -->
- *  <xsl:processing-instruction
- *  name = { ncname }>
- *  <!-- Content: template -->
- * </xsl:processing-instruction>
- */
-typedef struct _xsltStyleItemPI xsltStyleItemPI;
-typedef xsltStyleItemPI *xsltStyleItemPIPtr;
-
-struct _xsltStyleItemPI {
-    XSLT_ITEM_COMMON_FIELDS
-    const xmlChar *name;
-    int      has_name;
-};
-
-/**
- * xsltStyleItemApplyImports:
- *
- * <!-- Category: instruction -->
- * <xsl:apply-imports />
- */
-typedef xsltStyleBasicEmptyItem xsltStyleItemApplyImports;
-typedef xsltStyleItemApplyImports *xsltStyleItemApplyImportsPtr;
-
-/**
- * xsltStyleItemApplyTemplates:
- *
- * <!-- Category: instruction -->
- *  <xsl:apply-templates
- *  select = node-set-expression
- *  mode = qname>
- *  <!-- Content: (xsl:sort | xsl:with-param)* -->
- * </xsl:apply-templates>
- */
-typedef struct _xsltStyleItemApplyTemplates xsltStyleItemApplyTemplates;
-typedef xsltStyleItemApplyTemplates *xsltStyleItemApplyTemplatesPtr;
-
-struct _xsltStyleItemApplyTemplates {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *mode;       /* apply-templates */
-    const xmlChar *modeURI;    /* apply-templates */
-    const xmlChar *select;     /* sort, copy-of, value-of, apply-templates */
-    xmlXPathCompExprPtr comp;  /* a precompiled XPath expression */
-    /* TODO: with-params */
-};
-
-/**
- * xsltStyleItemCallTemplate:
- *
- * <!-- Category: instruction -->
- *  <xsl:call-template
- *  name = qname>
- *  <!-- Content: xsl:with-param* -->
- * </xsl:call-template>
- */
-typedef struct _xsltStyleItemCallTemplate xsltStyleItemCallTemplate;
-typedef xsltStyleItemCallTemplate *xsltStyleItemCallTemplatePtr;
-
-struct _xsltStyleItemCallTemplate {
-    XSLT_ITEM_COMMON_FIELDS
-
-    xsltTemplatePtr templ;     /* call-template */
-    const xmlChar *name;       /* element, attribute, pi */
-    int      has_name;         /* element, attribute, pi */
-    const xmlChar *ns;         /* element */
-    int      has_ns;           /* element */
-    /* TODO: with-params */
-};
-
-/**
- * xsltStyleItemCopy:
- *
- * <!-- Category: instruction -->
- * <xsl:copy
- *  use-attribute-sets = qnames>
- *  <!-- Content: template -->
- * </xsl:copy>
- */
-typedef struct _xsltStyleItemCopy xsltStyleItemCopy;
-typedef xsltStyleItemCopy *xsltStyleItemCopyPtr;
-
-struct _xsltStyleItemCopy {
-   XSLT_ITEM_COMMON_FIELDS
-    const xmlChar *use;                /* copy, element */
-    int      has_use;          /* copy, element */
-};
-
-/**
- * xsltStyleItemIf:
- *
- * <!-- Category: instruction -->
- *  <xsl:if
- *  test = boolean-expression>
- *  <!-- Content: template -->
- * </xsl:if>
- */
-typedef struct _xsltStyleItemIf xsltStyleItemIf;
-typedef xsltStyleItemIf *xsltStyleItemIfPtr;
-
-struct _xsltStyleItemIf {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *test;       /* if */
-    xmlXPathCompExprPtr comp;  /* a precompiled XPath expression */
-};
-
-
-/**
- * xsltStyleItemCopyOf:
- *
- * <!-- Category: instruction -->
- * <xsl:copy-of
- *  select = expression />
- */
-typedef xsltStyleBasicExpressionItem xsltStyleItemCopyOf;
-typedef xsltStyleItemCopyOf *xsltStyleItemCopyOfPtr;
-
-/**
- * xsltStyleItemValueOf:
- *
- * <!-- Category: instruction -->
- * <xsl:value-of
- *  select = string-expression
- *  disable-output-escaping = "yes" | "no" />
- */
-typedef struct _xsltStyleItemValueOf xsltStyleItemValueOf;
-typedef xsltStyleItemValueOf *xsltStyleItemValueOfPtr;
-
-struct _xsltStyleItemValueOf {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *select;
-    xmlXPathCompExprPtr comp;  /* a precompiled XPath expression */
-    int      noescape;
-};
-
-/**
- * xsltStyleItemNumber:
- *
- * <!-- Category: instruction -->
- *  <xsl:number
- *  level = "single" | "multiple" | "any"
- *  count = pattern
- *  from = pattern
- *  value = number-expression
- *  format = { string }
- *  lang = { nmtoken }
- *  letter-value = { "alphabetic" | "traditional" }
- *  grouping-separator = { char }
- *  grouping-size = { number } />
- */
-typedef struct _xsltStyleItemNumber xsltStyleItemNumber;
-typedef xsltStyleItemNumber *xsltStyleItemNumberPtr;
-
-struct _xsltStyleItemNumber {
-    XSLT_ITEM_COMMON_FIELDS
-    xsltNumberData numdata;    /* number */
-};
-
-/**
- * xsltStyleItemChoose:
- *
- * <!-- Category: instruction -->
- *  <xsl:choose>
- *  <!-- Content: (xsl:when+, xsl:otherwise?) -->
- * </xsl:choose>
- */
-typedef xsltStyleBasicEmptyItem xsltStyleItemChoose;
-typedef xsltStyleItemChoose *xsltStyleItemChoosePtr;
-
-/**
- * xsltStyleItemFallback:
- *
- * <!-- Category: instruction -->
- *  <xsl:fallback>
- *  <!-- Content: template -->
- * </xsl:fallback>
- */
-typedef xsltStyleBasicEmptyItem xsltStyleItemFallback;
-typedef xsltStyleItemFallback *xsltStyleItemFallbackPtr;
-
-/**
- * xsltStyleItemForEach:
- *
- * <!-- Category: instruction -->
- * <xsl:for-each
- *   select = node-set-expression>
- *   <!-- Content: (xsl:sort*, template) -->
- * </xsl:for-each>
- */
-typedef xsltStyleBasicExpressionItem xsltStyleItemForEach;
-typedef xsltStyleItemForEach *xsltStyleItemForEachPtr;
-
-/**
- * xsltStyleItemMessage:
- *
- * <!-- Category: instruction -->
- * <xsl:message
- *   terminate = "yes" | "no">
- *   <!-- Content: template -->
- * </xsl:message>
- */
-typedef struct _xsltStyleItemMessage xsltStyleItemMessage;
-typedef xsltStyleItemMessage *xsltStyleItemMessagePtr;
-
-struct _xsltStyleItemMessage {
-    XSLT_ITEM_COMMON_FIELDS
-    int terminate;
-};
-
-/**
- * xsltStyleItemDocument:
- *
- * NOTE: This is not an instruction of XSLT 1.0.
- */
-typedef struct _xsltStyleItemDocument xsltStyleItemDocument;
-typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr;
-
-struct _xsltStyleItemDocument {
-    XSLT_ITEM_COMMON_FIELDS
-    int      ver11;            /* assigned: in xsltDocumentComp;
-                                  read: nowhere;
-                                  TODO: Check if we need. */
-    const xmlChar *filename;   /* document URL */
-    int has_filename;
-};
-
-/************************************************************************
- *                                                                     *
- * Non-instructions (actually properties of instructions/declarations)  *
- *                                                                     *
- ************************************************************************/
-
-/**
- * xsltStyleBasicItemVariable:
- *
- * Basic struct for xsl:variable, xsl:param and xsl:with-param.
- * It's currently important to have equal fields, since
- * xsltParseStylesheetCallerParam() is used with xsl:with-param from
- * the xslt side and with xsl:param from the exslt side (in
- * exsltFuncFunctionFunction()).
- *
- * FUTURE NOTE: In XSLT 2.0 xsl:param, xsl:variable and xsl:with-param
- *   have additional different fields.
- */
-typedef struct _xsltStyleBasicItemVariable xsltStyleBasicItemVariable;
-typedef xsltStyleBasicItemVariable *xsltStyleBasicItemVariablePtr;
-
-struct _xsltStyleBasicItemVariable {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *select;
-    xmlXPathCompExprPtr comp;
-
-    const xmlChar *name;
-    int      has_name;
-    const xmlChar *ns;
-    int      has_ns;
-};
-
-/**
- * xsltStyleItemVariable:
- *
- * <!-- Category: top-level-element -->
- * <xsl:param
- *   name = qname
- *   select = expression>
- *   <!-- Content: template -->
- * </xsl:param>
- */
-typedef xsltStyleBasicItemVariable xsltStyleItemVariable;
-typedef xsltStyleItemVariable *xsltStyleItemVariablePtr;
-
-/**
- * xsltStyleItemParam:
- *
- * <!-- Category: top-level-element -->
- * <xsl:param
- *   name = qname
- *   select = expression>
- *   <!-- Content: template -->
- * </xsl:param>
- */
-typedef struct _xsltStyleItemParam xsltStyleItemParam;
-typedef xsltStyleItemParam *xsltStyleItemParamPtr;
-
-struct _xsltStyleItemParam {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *select;
-    xmlXPathCompExprPtr comp;
-
-    const xmlChar *name;
-    int      has_name;
-    const xmlChar *ns;
-    int      has_ns;
-};
-
-/**
- * xsltStyleItemWithParam:
- *
- * <xsl:with-param
- *  name = qname
- *  select = expression>
- *  <!-- Content: template -->
- * </xsl:with-param>
- */
-typedef xsltStyleBasicItemVariable xsltStyleItemWithParam;
-typedef xsltStyleItemWithParam *xsltStyleItemWithParamPtr;
-
-/**
- * xsltStyleItemSort:
- *
- * Reflects the XSLT xsl:sort item.
- * Allowed parents: xsl:apply-templates, xsl:for-each
- * <xsl:sort
- *   select = string-expression
- *   lang = { nmtoken }
- *   data-type = { "text" | "number" | qname-but-not-ncname }
- *   order = { "ascending" | "descending" }
- *   case-order = { "upper-first" | "lower-first" } />
- */
-typedef struct _xsltStyleItemSort xsltStyleItemSort;
-typedef xsltStyleItemSort *xsltStyleItemSortPtr;
-
-struct _xsltStyleItemSort {
-    XSLT_ITEM_COMMON_FIELDS
-
-    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 */
-    xsltLocale locale;         /* sort */
-    const xmlChar *case_order; /* sort */
-    int      lower_first;      /* sort */
-
-    const xmlChar *use;
-    int      has_use;
-
-    const xmlChar *select;     /* sort, copy-of, value-of, apply-templates */
-
-    xmlXPathCompExprPtr comp;  /* a precompiled XPath expression */
-};
-
-
-/**
- * xsltStyleItemWhen:
- *
- * <xsl:when
- *   test = boolean-expression>
- *   <!-- Content: template -->
- * </xsl:when>
- * Allowed parent: xsl:choose
- */
-typedef struct _xsltStyleItemWhen xsltStyleItemWhen;
-typedef xsltStyleItemWhen *xsltStyleItemWhenPtr;
-
-struct _xsltStyleItemWhen {
-    XSLT_ITEM_COMMON_FIELDS
-
-    const xmlChar *test;
-    xmlXPathCompExprPtr comp;
-};
-
-/**
- * xsltStyleItemOtherwise:
- *
- * Allowed parent: xsl:choose
- * <xsl:otherwise>
- *   <!-- Content: template -->
- * </xsl:otherwise>
- */
-typedef struct _xsltStyleItemOtherwise xsltStyleItemOtherwise;
-typedef xsltStyleItemOtherwise *xsltStyleItemOtherwisePtr;
-
-struct _xsltStyleItemOtherwise {
-    XSLT_ITEM_COMMON_FIELDS
-};
-
-typedef struct _xsltStyleItemInclude xsltStyleItemInclude;
-typedef xsltStyleItemInclude *xsltStyleItemIncludePtr;
-
-struct _xsltStyleItemInclude {
-    XSLT_ITEM_COMMON_FIELDS
-    xsltDocumentPtr include;
-};
-
-/************************************************************************
- *                                                                     *
- *  XSLT elements in forwards-compatible mode                           *
- *                                                                     *
- ************************************************************************/
-
-typedef struct _xsltStyleItemUknown xsltStyleItemUknown;
-typedef xsltStyleItemUknown *xsltStyleItemUknownPtr;
-struct _xsltStyleItemUknown {
-    XSLT_ITEM_COMMON_FIELDS
-};
-
-
-/************************************************************************
- *                                                                     *
- *  Extension elements                                                  *
- *                                                                     *
- ************************************************************************/
-
-/*
- * xsltStyleItemExtElement:
- *
- * Reflects extension elements.
- *
- * NOTE: Due to the fact that the structure xsltElemPreComp is most
- * probably already heavily in use out there by users, so we cannot
- * easily change it, we'll create an intermediate structure which will
- * hold an xsltElemPreCompPtr.
- * BIG NOTE: The only problem I see here is that the user processes the
- *  content of the stylesheet tree, possibly he'll lookup the node->psvi
- *  fields in order to find subsequent extension functions.
- *  In this case, the user's code will break, since the node->psvi
- *  field will hold now the xsltStyleItemExtElementPtr and not
- *  the xsltElemPreCompPtr.
- *  However the place where the structure is anchored in the node-tree,
- *  namely node->psvi, has beed already once been moved from node->_private
- *  to node->psvi, so we have a precedent here, which, I think, should allow
- *  us to change such semantics without headaches.
- */
-typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement;
-typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr;
-struct _xsltStyleItemExtElement {
-    XSLT_ITEM_COMMON_FIELDS
-    xsltElemPreCompPtr item;
-};
-
-/************************************************************************
- *                                                                     *
- *  Literal result elements                                             *
- *                                                                     *
- ************************************************************************/
-
-typedef struct _xsltEffectiveNs xsltEffectiveNs;
-typedef xsltEffectiveNs *xsltEffectiveNsPtr;
-struct _xsltEffectiveNs {
-    xsltEffectiveNsPtr nextInStore; /* storage next */
-    xsltEffectiveNsPtr next; /* next item in the list */
-    const xmlChar *prefix;
-    const xmlChar *nsName;
-    /*
-    * Indicates if eclared on the literal result element; dunno if really
-    * needed.
-    */
-    int holdByElem;
-};
-
-/*
- * Info for literal result elements.
- * This will be set on the elem->psvi field and will be
- * shared by literal result elements, which have the same
- * excluded result namespaces; i.e., this *won't* be created uniquely
- * for every literal result element.
- */
-typedef struct _xsltStyleItemLRElementInfo xsltStyleItemLRElementInfo;
-typedef xsltStyleItemLRElementInfo *xsltStyleItemLRElementInfoPtr;
-struct _xsltStyleItemLRElementInfo {
-    XSLT_ITEM_COMMON_FIELDS
-    /*
-    * @effectiveNs is the set of effective ns-nodes
-    *  on the literal result element, which will be added to the result
-    *  element if not already existing in the result tree.
-    *  This means that excluded namespaces (via exclude-result-prefixes,
-    *  extension-element-prefixes and the XSLT namespace) not added
-    *  to the set.
-    *  Namespace-aliasing was applied on the @effectiveNs.
-    */
-    xsltEffectiveNsPtr effectiveNs;
-
-};
-
-#ifdef XSLT_REFACTORED
-
-typedef struct _xsltNsAlias xsltNsAlias;
-typedef xsltNsAlias *xsltNsAliasPtr;
-struct _xsltNsAlias {
-    xsltNsAliasPtr next; /* next in the list */
-    xmlNsPtr literalNs;
-    xmlNsPtr targetNs;
-    xmlDocPtr docOfTargetNs;
-};
-#endif
-
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP
-
-typedef struct _xsltNsMap xsltNsMap;
-typedef xsltNsMap *xsltNsMapPtr;
-struct _xsltNsMap {
-    xsltNsMapPtr next; /* next in the list */
-    xmlDocPtr doc;
-    xmlNodePtr elem; /* the element holding the ns-decl */
-    xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */
-    const xmlChar *origNsName; /* the original XML namespace name */
-    const xmlChar *newNsName; /* the mapped XML namespace name */
-};
-#endif
-
-/************************************************************************
- *                                                                     *
- *  Compile-time structures for *internal* use only                     *
- *                                                                     *
- ************************************************************************/
-
-typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData;
-typedef xsltPrincipalStylesheetData *xsltPrincipalStylesheetDataPtr;
-
-typedef struct _xsltNsList xsltNsList;
-typedef xsltNsList *xsltNsListPtr;
-struct _xsltNsList {
-    xsltNsListPtr next; /* next in the list */
-    xmlNsPtr ns;
-};
-
-/*
-* xsltVarInfo:
-*
-* Used at compilation time for parameters and variables.
-*/
-typedef struct _xsltVarInfo xsltVarInfo;
-typedef xsltVarInfo *xsltVarInfoPtr;
-struct _xsltVarInfo {
-    xsltVarInfoPtr next; /* next in the list */
-    xsltVarInfoPtr prev;
-    int depth; /* the depth in the tree */
-    const xmlChar *name;
-    const xmlChar *nsName;
-};
-
-/**
- * xsltCompilerNodeInfo:
- *
- * Per-node information during compile-time.
- */
-typedef struct _xsltCompilerNodeInfo xsltCompilerNodeInfo;
-typedef xsltCompilerNodeInfo *xsltCompilerNodeInfoPtr;
-struct _xsltCompilerNodeInfo {
-    xsltCompilerNodeInfoPtr next;
-    xsltCompilerNodeInfoPtr prev;
-    xmlNodePtr node;
-    int depth;
-    xsltTemplatePtr templ;   /* The owning template */
-    int category;           /* XSLT element, LR-element or
-                                extension element */
-    xsltStyleType type;
-    xsltElemPreCompPtr item; /* The compiled information */
-    /* The current in-scope namespaces */
-    xsltNsListContainerPtr inScopeNs;
-    /* The current excluded result namespaces */
-    xsltPointerListPtr exclResultNs;
-    /* The current extension instruction namespaces */
-    xsltPointerListPtr extElemNs;
-
-    /* The current info for literal result elements. */
-    xsltStyleItemLRElementInfoPtr litResElemInfo;
-    /*
-    * Set to 1 if in-scope namespaces changed,
-    *  or excluded result namespaces changed,
-    *  or extension element namespaces changed.
-    * This will trigger creation of new infos
-    *  for literal result elements.
-    */
-    int nsChanged;
-    int preserveWhitespace;
-    int stripWhitespace;
-    int isRoot; /* whether this is the stylesheet's root node */
-    int forwardsCompat; /* whether forwards-compatible mode is enabled */
-    /* whether the content of an extension element was processed */
-    int extContentHandled;
-    /* the type of the current child */
-    xsltStyleType curChildType;
-};
-
-/**
- * XSLT_CCTXT:
- *
- * get pointer to compiler context
- */
-#define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt)
-
-typedef enum {
-    XSLT_ERROR_SEVERITY_ERROR = 0,
-    XSLT_ERROR_SEVERITY_WARNING
-} xsltErrorSeverityType;
-
-typedef struct _xsltCompilerCtxt xsltCompilerCtxt;
-typedef xsltCompilerCtxt *xsltCompilerCtxtPtr;
-struct _xsltCompilerCtxt {
-    void *errorCtxt;            /* user specific error context */
-    /*
-    * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */
-    xsltErrorSeverityType errSeverity;
-    int warnings;              /* TODO: number of warnings found at
-                                   compilation */
-    int errors;                        /* TODO: number of errors found at
-                                   compilation */
-    xmlDictPtr dict;
-    xsltStylesheetPtr style;
-    int simplified; /* whether this is a simplified stylesheet */
-    /* TODO: structured/unstructured error contexts. */
-    int depth; /* Current depth of processing */
-
-    xsltCompilerNodeInfoPtr inode;
-    xsltCompilerNodeInfoPtr inodeList;
-    xsltCompilerNodeInfoPtr inodeLast;
-    xsltPointerListPtr tmpList; /* Used for various purposes */
-    /*
-    * The XSLT version as specified by the stylesheet's root element.
-    */
-    int isInclude;
-    int hasForwardsCompat; /* whether forwards-compatible mode was used
-                            in a parsing episode */
-    int maxNodeInfos; /* TEMP TODO: just for the interest */
-    int maxLREs;  /* TEMP TODO: just for the interest */
-    /*
-    * In order to keep the old behaviour, applying strict rules of
-    * the spec can be turned off. This has effect only on special
-    * mechanisms like whitespace-stripping in the stylesheet.
-    */
-    int strict;
-    xsltPrincipalStylesheetDataPtr psData;
-#ifdef XSLT_REFACTORED_XPATHCOMP
-    xmlXPathContextPtr xpathCtxt;
-#endif
-    xsltStyleItemUknownPtr unknownItem;
-    int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */
-    xsltNsAliasPtr nsAliases;
-    xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */
-    xsltVarInfoPtr ivar; /* topmost local variable/param. */
-};
-
-#else /* XSLT_REFACTORED */
-/*
-* The old structures before refactoring.
-*/
-
-/**
- * _xsltStylePreComp:
- *
- * The in-memory structure corresponding to XSLT stylesheet constructs
- * precomputed data.
- */
-struct _xsltStylePreComp {
-    xsltElemPreCompPtr next;   /* chained list */
-    xsltStyleType type;                /* type of the element */
-    xsltTransformFunction func; /* handling function */
-    xmlNodePtr inst;           /* the instruction */
-
-    /*
-     * 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 */
-    xsltLocale locale;         /* 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-templates */
-
-    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 */
-};
-
-#endif /* XSLT_REFACTORED */
-
-
-/*
- * The in-memory structure corresponding to an XSLT Variable
- * or Param.
- */
-typedef struct _xsltStackElem xsltStackElem;
-typedef xsltStackElem *xsltStackElemPtr;
-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 sequence constructor if no eval
-                                   string or the location */
-    xmlXPathObjectPtr value;   /* The value if computed */
-    xmlDocPtr fragment;                /* The Result Tree Fragments (needed for XSLT 1.0)
-                                  which are bound to the variable's lifetime. */
-    int level;                  /* the depth in the tree;
-                                   -1 if persistent (e.g. a given xsl:with-param) */
-    xsltTransformContextPtr context; /* The transformation context; needed to cache
-                                        the variables */
-    int flags;
-};
-
-#ifdef XSLT_REFACTORED
-
-struct _xsltPrincipalStylesheetData {
-    /*
-    * Namespace dictionary for ns-prefixes and ns-names:
-    * TODO: Shared between stylesheets, and XPath mechanisms.
-    *   Not used yet.
-    */
-    xmlDictPtr namespaceDict;
-    /*
-    * Global list of in-scope namespaces.
-    */
-    xsltPointerListPtr inScopeNamespaces;
-    /*
-    * Global list of information for [xsl:]excluded-result-prefixes.
-    */
-    xsltPointerListPtr exclResultNamespaces;
-    /*
-    * Global list of information for [xsl:]extension-element-prefixes.
-    */
-    xsltPointerListPtr extElemNamespaces;
-    xsltEffectiveNsPtr effectiveNs;
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP
-    /*
-    * Namespace name map to get rid of string comparison of namespace names.
-    */
-    xsltNsMapPtr nsMap;
-#endif
-};
-
-
-#endif
-/*
- * Note that we added a @compCtxt field to anchor an stylesheet compilation
- * context, since, due to historical reasons, various compile-time function
- * take only the stylesheet as argument and not a compilation context.
- */
-struct _xsltStylesheet {
-    /*
-     * The stylesheet import relation is kept as a tree.
-     */
-    struct _xsltStylesheet *parent;
-    struct _xsltStylesheet *next;
-    struct _xsltStylesheet *imports;
-
-    xsltDocumentPtr docList;           /* the include document list */
-
-    /*
-     * General data on the style sheet document.
-     */
-    xmlDocPtr doc;             /* the parsed XML stylesheet */
-    xmlHashTablePtr stripSpaces;/* the hash table of the strip-space and
-                                  preserve space elements */
-    int             stripAll;  /* strip-space * (1) preserve-space * (-1) */
-    xmlHashTablePtr cdataSection;/* the hash table of the cdata-section */
-
-    /*
-     * Global variable or parameters.
-     */
-    xsltStackElemPtr variables; /* linked list of param and variables */
-
-    /*
-     * Template descriptions.
-     */
-    xsltTemplatePtr templates; /* the ordered list of templates */
-    void *templatesHash;       /* hash table or wherever compiled templates
-                                  informations are stored */
-    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-instruction() */
-    void *commentMatch;                /* template based on comment() */
-
-    /*
-     * Namespace aliases.
-     * NOTE: Not used in the refactored code.
-     */
-    xmlHashTablePtr nsAliases; /* the namespace alias hash tables */
-
-    /*
-     * Attribute sets.
-     */
-    xmlHashTablePtr attributeSets;/* the attribute sets hash tables */
-
-    /*
-     * Namespaces.
-     * TODO: Eliminate this.
-     */
-    xmlHashTablePtr nsHash;     /* the set of namespaces in use:
-                                   ATTENTION: This is used for
-                                   execution of XPath expressions; unfortunately
-                                   it restricts the stylesheet to have distinct
-                                   prefixes.
-                                  TODO: We need to get rid of this.
-                                */
-    void           *nsDefs;     /* ATTENTION TODO: This is currently used to store
-                                  xsltExtDefPtr (in extensions.c) and
-                                   *not* xmlNsPtr.
-                                */
-
-    /*
-     * Key definitions.
-     */
-    void *keys;                        /* key definitions */
-
-    /*
-     * Output related stuff.
-     */
-    xmlChar *method;           /* the output method */
-    xmlChar *methodURI;                /* associated namespace if any */
-    xmlChar *version;          /* version string */
-    xmlChar *encoding;         /* encoding string */
-    int omitXmlDeclaration;     /* omit-xml-declaration = "yes" | "no" */
-
-    /*
-     * 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;                /* media-type string */
-
-    /*
-     * 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;                /* user defined data */
-
-    /*
-     * Extensions.
-     */
-    xmlHashTablePtr extInfos;  /* the extension data */
-    int                    extrasNr;   /* the number of extras required */
-
-    /*
-     * For keeping track of nested includes
-     */
-    xsltDocumentPtr includes;  /* points to last nested include */
-
-    /*
-     * dictionary: shared between stylesheet, context and documents.
-     */
-    xmlDictPtr dict;
-    /*
-     * precompiled attribute value templates.
-     */
-    void *attVTs;
-    /*
-     * if namespace-alias has an alias for the default stylesheet prefix
-     * NOTE: Not used in the refactored code.
-     */
-    const xmlChar *defaultAlias;
-    /*
-     * bypass pre-processing (already done) (used in imports)
-     */
-    int nopreproc;
-    /*
-     * all document text strings were internalized
-     */
-    int internalized;
-    /*
-     * Literal Result Element as Stylesheet c.f. section 2.3
-     */
-    int literal_result;
-    /*
-    * The principal stylesheet
-    */
-    xsltStylesheetPtr principal;
-#ifdef XSLT_REFACTORED
-    /*
-    * Compilation context used during compile-time.
-    */
-    xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */
-
-    xsltPrincipalStylesheetDataPtr principalData;
-#endif
-    /*
-     * Forwards-compatible processing
-     */
-    int forwards_compatible;
-
-    xmlHashTablePtr namedTemplates; /* hash table of named templates */
-};
-
-typedef struct _xsltTransformCache xsltTransformCache;
-typedef xsltTransformCache *xsltTransformCachePtr;
-struct _xsltTransformCache {
-    xmlDocPtr RVT;
-    int nbRVT;
-    xsltStackElemPtr stackItems;
-    int nbStackItems;
-#ifdef XSLT_DEBUG_PROFILE_CACHE
-    int dbgCachedRVTs;
-    int dbgReusedRVTs;
-    int dbgCachedVars;
-    int dbgReusedVars;
-#endif
-};
-
-/*
- * The in-memory structure corresponding to an XSLT Transformation.
- */
-typedef enum {
-    XSLT_OUTPUT_XML = 0,
-    XSLT_OUTPUT_HTML,
-    XSLT_OUTPUT_TEXT
-} xsltOutputType;
-
-typedef enum {
-    XSLT_STATE_OK = 0,
-    XSLT_STATE_ERROR,
-    XSLT_STATE_STOPPED
-} xsltTransformState;
-
-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;                /* the var base for current templ */
-
-    /*
-     * 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 source document; can be NULL if an RTF */
-    xmlNodePtr node;                   /* the current node being processed */
-    xmlNodeSetPtr nodeList;            /* the current node list */
-    /* xmlNodePtr current;                     the node */
-
-    xmlDocPtr output;                  /* the resulting document */
-    xmlNodePtr insert;                 /* the insertion node */
-
-    xmlXPathContextPtr xpathCtxt;      /* the XPath context */
-    xsltTransformState state;          /* the current 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;                /* a ctxt specific sort routine */
-
-    /*
-     * handling of temporary Result Value Tree
-     * (XSLT 1.0 term: "Result Tree Fragment")
-     */
-    xmlDocPtr       tmpRVT;            /* list of RVT without persistance */
-    xmlDocPtr       persistRVT;                /* list of persistant RVTs */
-    int             ctxtflags;          /* context processing flags */
-
-    /*
-     * Speed optimization when coalescing text nodes
-     */
-    const xmlChar  *lasttext;          /* last text node content */
-    unsigned int    lasttsize;         /* last text node size */
-    unsigned int    lasttuse;          /* last text node use */
-    /*
-     * Per Context Debugging
-     */
-    int debugStatus;                   /* the context level debug status */
-    unsigned long* traceCode;          /* pointer to the variable holding the mask */
-
-    int parserOptions;                 /* parser options xmlParserOption */
-
-    /*
-     * dictionary: shared between stylesheet, context and documents.
-     */
-    xmlDictPtr dict;
-    xmlDocPtr          tmpDoc; /* Obsolete; not used in the library. */
-    /*
-     * all document text strings are internalized
-     */
-    int internalized;
-    int nbKeys;
-    int hasTemplKeyPatterns;
-    xsltTemplatePtr currentTemplateRule; /* the Current Template Rule */
-    xmlNodePtr initialContextNode;
-    xmlDocPtr initialContextDoc;
-    xsltTransformCachePtr cache;
-    void *contextVariable; /* the current variable item */
-    xmlDocPtr localRVT; /* list of local tree fragments; will be freed when
-                          the instruction which created the fragment
-                           exits */
-    xmlDocPtr localRVTBase;
-    int keyInitLevel;   /* Needed to catch recursive keys issues */
-    int funcLevel;      /* Needed to catch recursive functions issues */
-    int maxTemplateDepth;
-    int maxTemplateVars;
-};
-
-/**
- * CHECK_STOPPED:
- *
- * Macro to check if the XSLT processing should be stopped.
- * Will return from the function.
- */
-#define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;
-
-/**
- * CHECK_STOPPEDE:
- *
- * Macro to check if the XSLT processing should be stopped.
- * Will goto the error: label.
- */
-#define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;
-
-/**
- * CHECK_STOPPED0:
- *
- * Macro to check if the XSLT processing should be stopped.
- * Will return from the function with a 0 value.
- */
-#define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);
-
-/*
- * The macro XML_CAST_FPTR is a hack to avoid a gcc warning about
- * possible incompatibilities between function pointers and object
- * pointers.  It is defined in libxml/hash.h within recent versions
- * of libxml2, but is put here for compatibility.
- */
-#ifndef XML_CAST_FPTR
-/**
- * XML_CAST_FPTR:
- * @fptr:  pointer to a function
- *
- * 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
- */
-
-#define XML_CAST_FPTR(fptr) fptr
-#endif
-/*
- * Functions associated to the internal types
-xsltDecimalFormatPtr   xsltDecimalFormatGetByName(xsltStylesheetPtr sheet,
-                                                  xmlChar *name);
- */
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltNewStylesheet       (void);
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltParseStylesheetFile (const xmlChar* filename);
-XSLTPUBFUN void XSLTCALL
-                       xsltFreeStylesheet      (xsltStylesheetPtr style);
-XSLTPUBFUN int XSLTCALL
-                       xsltIsBlank             (xmlChar *str);
-XSLTPUBFUN void XSLTCALL
-                       xsltFreeStackElemList   (xsltStackElemPtr elem);
-XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
-                       xsltDecimalFormatGetByName(xsltStylesheetPtr style,
-                                                xmlChar *name);
-
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltParseStylesheetProcess(xsltStylesheetPtr ret,
-                                                xmlDocPtr doc);
-XSLTPUBFUN void XSLTCALL
-                       xsltParseStylesheetOutput(xsltStylesheetPtr style,
-                                                xmlNodePtr cur);
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltParseStylesheetDoc  (xmlDocPtr doc);
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltParseStylesheetImportedDoc(xmlDocPtr doc,
-                                               xsltStylesheetPtr style);
-XSLTPUBFUN xsltStylesheetPtr XSLTCALL
-                       xsltLoadStylesheetPI    (xmlDocPtr doc);
-XSLTPUBFUN void XSLTCALL
-                       xsltNumberFormat        (xsltTransformContextPtr ctxt,
-                                                xsltNumberDataPtr data,
-                                                xmlNodePtr node);
-XSLTPUBFUN xmlXPathError XSLTCALL
-                       xsltFormatNumberConversion(xsltDecimalFormatPtr self,
-                                                xmlChar *format,
-                                                double number,
-                                                xmlChar **result);
-
-XSLTPUBFUN void XSLTCALL
-                       xsltParseTemplateContent(xsltStylesheetPtr style,
-                                                xmlNodePtr templ);
-XSLTPUBFUN int XSLTCALL
-                       xsltAllocateExtra       (xsltStylesheetPtr style);
-XSLTPUBFUN int XSLTCALL
-                       xsltAllocateExtraCtxt   (xsltTransformContextPtr ctxt);
-/*
- * Extra functions for Result Value Trees
- */
-XSLTPUBFUN xmlDocPtr XSLTCALL
-                       xsltCreateRVT           (xsltTransformContextPtr ctxt);
-XSLTPUBFUN int XSLTCALL
-                       xsltRegisterTmpRVT      (xsltTransformContextPtr ctxt,
-                                                xmlDocPtr RVT);
-XSLTPUBFUN int XSLTCALL
-                       xsltRegisterLocalRVT    (xsltTransformContextPtr ctxt,
-                                                xmlDocPtr RVT);
-XSLTPUBFUN int XSLTCALL
-                       xsltRegisterPersistRVT  (xsltTransformContextPtr ctxt,
-                                                xmlDocPtr RVT);
-XSLTPUBFUN int XSLTCALL
-                       xsltExtensionInstructionResultRegister(
-                                                xsltTransformContextPtr ctxt,
-                                                xmlXPathObjectPtr obj);
-XSLTPUBFUN int XSLTCALL
-                       xsltExtensionInstructionResultFinalize(
-                                                xsltTransformContextPtr ctxt);
-XSLTPUBFUN void XSLTCALL
-                       xsltFreeRVTs            (xsltTransformContextPtr ctxt);
-XSLTPUBFUN void XSLTCALL
-                       xsltReleaseRVT          (xsltTransformContextPtr ctxt,
-                                                xmlDocPtr RVT);
-/*
- * Extra functions for Attribute Value Templates
- */
-XSLTPUBFUN void XSLTCALL
-                       xsltCompileAttr         (xsltStylesheetPtr style,
-                                                xmlAttrPtr attr);
-XSLTPUBFUN xmlChar * XSLTCALL
-                       xsltEvalAVT             (xsltTransformContextPtr ctxt,
-                                                void *avt,
-                                                xmlNodePtr node);
-XSLTPUBFUN void XSLTCALL
-                       xsltFreeAVTList         (void *avt);
-
-/*
- * Extra function for successful xsltCleanupGlobals / xsltInit sequence.
- */
-
-XSLTPUBFUN void XSLTCALL
-                       xsltUninit              (void);
-
-/************************************************************************
- *                                                                     *
- *  Compile-time functions for *internal* use only                      *
- *                                                                     *
- ************************************************************************/
-
-#ifdef XSLT_REFACTORED
-XSLTPUBFUN void XSLTCALL
-                       xsltParseSequenceConstructor(
-                                                xsltCompilerCtxtPtr cctxt,
-                                                xmlNodePtr start);
-XSLTPUBFUN int XSLTCALL
-                       xsltParseAnyXSLTElem    (xsltCompilerCtxtPtr cctxt,
-                                                xmlNodePtr elem);
-#ifdef XSLT_REFACTORED_XSLT_NSCOMP
-XSLTPUBFUN int XSLTCALL
-                       xsltRestoreDocumentNamespaces(
-                                                xsltNsMapPtr ns,
-                                                xmlDocPtr doc);
-#endif
-#endif /* XSLT_REFACTORED */
-
-/************************************************************************
- *                                                                     *
- *  Transformation-time functions for *internal* use only               *
- *                                                                     *
- ************************************************************************/
-XSLTPUBFUN int XSLTCALL
-                       xsltInitCtxtKey         (xsltTransformContextPtr ctxt,
-                                                xsltDocumentPtr doc,
-                                                xsltKeyDefPtr keyd);
-XSLTPUBFUN int XSLTCALL
-                       xsltInitAllDocKeys      (xsltTransformContextPtr ctxt);
-#ifdef __cplusplus
-}
-#endif
-
-#endif /* __XML_XSLT_H__ */
-