15821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
25821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Summary: internal data structures, constants and functions
35821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Description: Internal data structures, constants and functions used
45821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *              by the XSLT engine.
55821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *              They are not part of the API or ABI, i.e. they can change
65821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *              without prior notice, use carefully.
75821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
85821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Copy: See Copyright for the status of this software.
95821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Author: Daniel Veillard
115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef __XML_XSLT_INTERNALS_H__
145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define __XML_XSLT_INTERNALS_H__
155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/tree.h>
175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/hash.h>
185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xpath.h>
195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlerror.h>
205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/dict.h>
215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxml/xmlstring.h>
225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include <libxslt/xslt.h>
235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "xsltexports.h"
245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "xsltlocale.h"
255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#include "numbersInternals.h"
265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern "C" {
295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define XSLT_DEBUG_PROFILE_CACHE */
325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_IS_TEXT_NODE:
355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * check if the argument is a text node
375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_IS_TEXT_NODE(n) ((n != NULL) && \
395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((n)->type == XML_TEXT_NODE) || \
405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ((n)->type == XML_CDATA_SECTION_NODE)))
415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_MARK_RES_TREE_FRAG:
455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * internal macro to set up tree fragments
475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_MARK_RES_TREE_FRAG(n) \
495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (n)->name = (char *) xmlStrdup(BAD_CAST " fake node libxslt");
505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_IS_RES_TREE_FRAG:
535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * internal macro to test tree fragments
555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_IS_RES_TREE_FRAG(n) \
575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ((n != NULL) && ((n)->type == XML_DOCUMENT_NODE) && \
585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ((n)->name != NULL) && ((n)->name[0] == ' '))
595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_KEYCOMP:
625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable on-demand xsl:key computation.
645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * That's the only mode now but the define is kept for compatibility
655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_REFACTORED_KEYCOMP
675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_FAST_IF:
705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable usage of xmlXPathCompiledEvalToBoolean()
725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * for XSLT "tests"; e.g. in <xsl:if test="/foo/bar">
735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_FAST_IF
755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED:
785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable the refactored parts of Libxslt.
805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define XSLT_REFACTORED */
825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* ==================================================================== */
835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_VARS:
865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable the refactored variable part of libxslt
885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_REFACTORED_VARS
905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const xmlChar *xsltXSLTAttrMarker;
945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */
975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */
995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_XSLT_NSCOMP
1025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable the pointer-comparison of
1045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * namespaces of XSLT elements.
1055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define XSLT_REFACTORED_XSLT_NSCOMP */
1075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_XPATHCOMP:
1105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable the optimization of the
1125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * compilation of XPath expressions.
1135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_REFACTORED_XPATHCOMP
1155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED_XSLT_NSCOMP
1175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)extern const xmlChar *xsltConstNamespaceNameXSLT;
1195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS_XSLT_ELEM_FAST:
1225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * quick test to detect XSLT elements
1245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_XSLT_ELEM_FAST(n) \
1265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((n) != NULL) && ((n)->ns != NULL) && \
1275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ((n)->ns->href == xsltConstNamespaceNameXSLT))
1285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS_XSLT_ATTR_FAST:
1315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * quick test to detect XSLT attributes
1335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_XSLT_ATTR_FAST(a) \
1355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((a) != NULL) && ((a)->ns != NULL) && \
1365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ((a)->ns->href == xsltConstNamespaceNameXSLT))
1375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_HAS_INTERNAL_NSMAP:
1405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * check for namespace mapping
1425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_HAS_INTERNAL_NSMAP(s) \
1445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((s) != NULL) && ((s)->principal) && \
1455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ((s)->principal->principalData) && \
1465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     ((s)->principal->principalData->nsMap))
1475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_GET_INTERNAL_NSMAP:
1505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * get pointer to namespace map
1525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_GET_INTERNAL_NSMAP(s) ((s)->principal->principalData->nsMap)
1545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* XSLT_REFACTORED_XSLT_NSCOMP */
1565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS_XSLT_ELEM_FAST:
1595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * quick check whether this is an xslt element
1615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_XSLT_ELEM_FAST(n) \
1635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((n) != NULL) && ((n)->ns != NULL) && \
1645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
1655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * IS_XSLT_ATTR_FAST:
1685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * quick check for xslt namespace attribute
1705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define IS_XSLT_ATTR_FAST(a) \
1725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    (((a) != NULL) && ((a)->ns != NULL) && \
1735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     (xmlStrEqual((a)->ns->href, XSLT_NAMESPACE)))
1745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* XSLT_REFACTORED_XSLT_NSCOMP */
1775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_MANDATORY_VERSION:
1815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO: Currently disabled to surpress regression test failures, since
1835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  the old behaviour was that a missing version attribute
1845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  produced a only a warning and not an error, which was incerrect.
1855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  So the regression tests need to be fixed if this is enabled.
1865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define XSLT_REFACTORED_MANDATORY_VERSION */
1885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
1905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltPointerList:
1915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
1925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Pointer-list for various purposes.
1935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
1945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltPointerList xsltPointerList;
1955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltPointerList *xsltPointerListPtr;
1965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltPointerList {
1975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void **items;
1985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int number;
1995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int size;
2005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
2035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_REFACTORED_PARSING:
2065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Internal define to enable the refactored parts of Libxslt
2085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * related to parsing.
2095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/* #define XSLT_REFACTORED_PARSING */
2115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_MAX_SORT:
2145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Max number of specified xsl:sort on an element.
2165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_MAX_SORT 15
2185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_PAT_NO_PRIORITY:
2215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Specific value for pattern without priority expressed.
2235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_PAT_NO_PRIORITY -12345789
2255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltRuntimeExtra:
2285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extra information added to the transformation context.
2305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltRuntimeExtra xsltRuntimeExtra;
2325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltRuntimeExtra *xsltRuntimeExtraPtr;
2335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltRuntimeExtra {
2345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void       *info;		/* pointer to the extra data */
2355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlFreeFunc deallocate;	/* pointer to the deallocation routine */
2365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    union {			/* dual-purpose field */
2375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)        void   *ptr;		/* data not needing deallocation */
2385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	int    ival;		/* integer value storage */
2395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    } val;
2405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_RUNTIME_EXTRA_LST:
2445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: the transformation context
2455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nr: the index
2465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro used to access extra information stored in the context
2485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_RUNTIME_EXTRA_LST(ctxt, nr) (ctxt)->extras[(nr)].info
2505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_RUNTIME_EXTRA_FREE:
2525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: the transformation context
2535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nr: the index
2545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro used to free extra information stored in the context
2565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_RUNTIME_EXTRA_FREE(ctxt, nr) (ctxt)->extras[(nr)].deallocate
2585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_RUNTIME_EXTRA:
2605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: the transformation context
2615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nr: the index
2625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro used to define extra information stored in the context
2645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define	XSLT_RUNTIME_EXTRA(ctxt, nr, typ) (ctxt)->extras[(nr)].val.typ
2665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
2685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltTemplate:
2695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
2705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to an XSLT Template.
2715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
2725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltTemplate xsltTemplate;
2735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltTemplate *xsltTemplatePtr;
2745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltTemplate {
2755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltTemplate *next;/* chained list sorted by priority */
2765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltStylesheet *style;/* the containing stylesheet */
2775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *match;	/* the matching string */
2785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    float priority;	/* as given from the stylesheet, not computed */
2795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name; /* the local part of the name QName */
2805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nameURI; /* the URI part of the name QName */
2815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *mode;/* the local part of the mode QName */
2825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *modeURI;/* the URI part of the mode QName */
2835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr content;	/* the template replacement value */
2845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr elem;	/* the source element */
2855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
2875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * TODO: @inheritedNsNr and @inheritedNs won't be used in the
2885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  refactored code.
2895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
2905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int inheritedNsNr;  /* number of inherited namespaces */
2915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */
2925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Profiling informations */
2945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nbCalls;        /* the number of time the template was called */
2955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long time; /* the time spent in this template */
2965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *params;       /* xsl:param instructions */
2975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
2985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
2995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltDecimalFormat:
3015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Data structure of decimal-format.
3035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltDecimalFormat xsltDecimalFormat;
3055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltDecimalFormat *xsltDecimalFormatPtr;
3065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltDecimalFormat {
3075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltDecimalFormat *next; /* chained list */
3085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *name;
3095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Used for interpretation of pattern */
3105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *digit;
3115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *patternSeparator;
3125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* May appear in result */
3135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *minusSign;
3145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *infinity;
3155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *noNumber; /* Not-a-number */
3165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Used for interpretation of pattern and may appear in result */
3175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *decimalPoint;
3185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *grouping;
3195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *percent;
3205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *permille;
3215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *zeroDigit;
3225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltDocument:
3265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Data structure associated to a parsed document.
3285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltDocument xsltDocument;
3305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltDocument *xsltDocumentPtr;
3315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltDocument {
3325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltDocument *next;	/* documents are kept in a chained list */
3335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int main;			/* is this the main document */
3345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr doc;		/* the parsed document */
3355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *keys;			/* key tables storage */
3365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltDocument *includes; /* subsidiary includes */
3375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int preproc;		/* pre-processing already done */
3385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nbKeysComputed;
3395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltKeyDef:
3435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Representation of an xsl:key.
3455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltKeyDef xsltKeyDef;
3475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltKeyDef *xsltKeyDefPtr;
3485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltKeyDef {
3495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltKeyDef *next;
3505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;
3515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *name;
3525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *nameURI;
3535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *match;
3545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *use;
3555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;
3565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr usecomp;
3575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr *nsList;           /* the namespaces in scope */
3585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nsNr;                   /* the number of namespaces in scope */
3595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltKeyTable:
3635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Holds the computed keys for key definitions of the same QName.
3655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Is owned by an xsltDocument.
3665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltKeyTable xsltKeyTable;
3685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltKeyTable *xsltKeyTablePtr;
3695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltKeyTable {
3705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltKeyTable *next;
3715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *name;
3725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *nameURI;
3735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr keys;
3745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
3755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
3775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to an XSLT Stylesheet.
3785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE: most of the content is simply linked from the doc tree
3795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *       structure, no specific allocation is made.
3805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStylesheet xsltStylesheet;
3825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStylesheet *xsltStylesheetPtr;
3835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltTransformContext xsltTransformContext;
3855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltTransformContext *xsltTransformContextPtr;
3865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltElemPreComp:
3895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
3905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to element precomputed data,
3915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * designed to be extended by extension implementors.
3925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
3935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltElemPreComp xsltElemPreComp;
3945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltElemPreComp *xsltElemPreCompPtr;
3955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
3965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
3975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltTransformFunction:
3985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt: the XSLT transformation context
3995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @node: the input node
4005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @inst: the stylesheet node
4015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @comp: the compiled information from the stylesheet
4025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Signature of the function associated to elements part of the
4045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * stylesheet language like xsl:if or xsl:apply-templates.
4055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*xsltTransformFunction) (xsltTransformContextPtr ctxt,
4075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)	                               xmlNodePtr node,
4085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				       xmlNodePtr inst,
4095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			               xsltElemPreCompPtr comp);
4105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltSortFunc:
4135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @ctxt:    a transformation context
4145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @sorts:   the node-set to sort
4155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @nbsorts: the number of sorts
4165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Signature of the function to use during sorting
4185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*xsltSortFunc) (xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
4205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			      int nbsorts);
4215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
4235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_COPY=1,
4245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_SORT,
4255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_TEXT,
4265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_ELEMENT,
4275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_ATTRIBUTE,
4285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_COMMENT,
4295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_PI,
4305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_COPYOF,
4315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_VALUEOF,
4325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_NUMBER,
4335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_APPLYIMPORTS,
4345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_CALLTEMPLATE,
4355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_APPLYTEMPLATES,
4365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_CHOOSE,
4375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_IF,
4385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_FOREACH,
4395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_DOCUMENT,
4405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_WITHPARAM,
4415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_PARAM,
4425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_VARIABLE,
4435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_WHEN,
4445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_EXTENSION
4455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
4465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    ,
4475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_OTHERWISE,
4485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_FALLBACK,
4495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_MESSAGE,
4505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_INCLUDE,
4515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_ATTRSET,
4525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_LITERAL_RESULT_ELEMENT,
4535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
4545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
4555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xsltStyleType;
4565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltElemPreCompDeallocator:
4595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @comp:  the #xsltElemPreComp to free up
4605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Deallocates an #xsltElemPreComp structure.
4625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef void (*xsltElemPreCompDeallocator) (xsltElemPreCompPtr comp);
4645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltElemPreComp:
4675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The basic structure for compiled items of the AST of the XSLT processor.
4695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This structure is also intended to be extended by extension implementors.
4705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO: This is somehow not nice, since it has a "free" field, which
4715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   derived stylesheet-structs do not have.
4725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltElemPreComp {
4745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr next;		/* next item in the global chained
4755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					   list hold by xsltStylesheet. */
4765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType type;		/* type of the element */
4775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformFunction func; 	/* handling function */
4785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;			/* the node in the stylesheet's tree
4795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)					   corresponding to this item */
4805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* end of common part */
4825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompDeallocator free;	/* the deallocator */
4835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
4845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
4865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStylePreComp:
4875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
4885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The abstract basic structure for items of the XSLT processor.
4895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This includes:
4905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1) compiled forms of XSLT instructions (xsl:if, xsl:attribute, etc.)
4915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2) compiled forms of literal result elements
4925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3) compiled forms of extension elements
4935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
4945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStylePreComp xsltStylePreComp;
4955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStylePreComp *xsltStylePreCompPtr;
4965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
4985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
4995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
5005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)* Some pointer-list utility functions.
5015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
5025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltPointerListPtr XSLTCALL
5035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xsltPointerListCreate		(int initialSize);
5045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
5055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xsltPointerListFree		(xsltPointerListPtr list);
5065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
5075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xsltPointerListClear		(xsltPointerListPtr list);
5085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
5095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)		xsltPointerListAddSize		(xsltPointerListPtr list,
5105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 void *item,
5115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 int initialSize);
5125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
5145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
5155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Refactored structures                                                *
5165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
5175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
5185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltNsListContainer xsltNsListContainer;
5205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltNsListContainer *xsltNsListContainerPtr;
5215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltNsListContainer {
5225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr *list;
5235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int totalNumber;
5245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int xpathNumber;
5255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_ITEM_COMPATIBILITY_FIELDS:
5295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Fields for API compatibility to the structure
5315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * _xsltElemPreComp which is used for extension functions.
5325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Note that @next is used for storage; it does not reflect a next
5335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * sibling in the tree.
5345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO: Evaluate if we really need such a compatibility.
5355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_ITEM_COMPATIBILITY_FIELDS \
5375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr next;\
5385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType type;\
5395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformFunction func;\
5405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;
5415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_ITEM_NAVIGATION_FIELDS:
5445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Currently empty.
5465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * TODO: It is intended to hold navigational fields in the future.
5475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_ITEM_NAVIGATION_FIELDS
5495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
5505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylePreCompPtr parent;\
5515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylePreCompPtr children;\
5525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylePreCompPtr nextItem;
5535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
5545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_ITEM_NSINSCOPE_FIELDS:
5575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-scope namespaces.
5595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs;
5615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_ITEM_COMMON_FIELDS:
5645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Common fields used for all items.
5665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_ITEM_COMMON_FIELDS \
5685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMPATIBILITY_FIELDS \
5695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_NAVIGATION_FIELDS \
5705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_NSINSCOPE_FIELDS
5715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * _xsltStylePreComp:
5745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The abstract basic structure for items of the XSLT processor.
5765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This includes:
5775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 1) compiled forms of XSLT instructions (e.g. xsl:if, xsl:attribute, etc.)
5785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 2) compiled forms of literal result elements
5795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * 3) various properties for XSLT instructions (e.g. xsl:when,
5805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *    xsl:with-param)
5815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * REVISIT TODO: Keep this structure equal to the fields
5835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   defined by XSLT_ITEM_COMMON_FIELDS
5845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
5855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStylePreComp {
5865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr next;    /* next item in the global chained
5875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   list hold by xsltStylesheet */
5885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType type;         /* type of the item */
5895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformFunction func; /* handling function */
5905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;		/* the node in the stylesheet's tree
5915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   corresponding to this item. */
5925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* Currently no navigational fields. */
5935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsListContainerPtr inScopeNs;
5945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
5955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
5965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
5975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleBasicEmptyItem:
5985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
5995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Abstract structure only used as a short-cut for
6005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT items with no extra fields.
6015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE that it is intended that this structure looks the same as
6025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  _xsltStylePreComp.
6035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem;
6055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr;
6065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleBasicEmptyItem {
6085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
6095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleBasicExpressionItem:
6135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Abstract structure only used as a short-cut for
6155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT items with just an expression.
6165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem;
6185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr;
6195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleBasicExpressionItem {
6215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
6225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select; /* TODO: Change this to "expression". */
6245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */
6255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
6285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
6295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT-instructions/declarations                                       *
6305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
6315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
6325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemElement:
6355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
6375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:element
6385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  name = { qname }
6395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  namespace = { uri-reference }
6405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  use-attribute-sets = qnames>
6415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
6425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:element>
6435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemElement xsltStyleItemElement;
6455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemElement *xsltStyleItemElementPtr;
6465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemElement {
6485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
6495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *use;
6515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_use;
6525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
6535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;
6545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;
6555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nsPrefix;
6565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;
6575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemAttribute:
6615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
6635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:attribute
6645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  name = { qname }
6655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  namespace = { uri-reference }>
6665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
6675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:attribute>
6685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemAttribute xsltStyleItemAttribute;
6705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemAttribute *xsltStyleItemAttributePtr;
6715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemAttribute {
6735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
6745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
6755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;
6765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;
6775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nsPrefix;
6785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;
6795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemText:
6835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
6845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
6855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:text
6865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  disable-output-escaping = "yes" | "no">
6875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: #PCDATA -->
6885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:text>
6895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
6905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemText xsltStyleItemText;
6915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemText *xsltStyleItemTextPtr;
6925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemText {
6945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
6955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      noescape;		/* text */
6965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
6975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
6985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
6995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemComment:
7005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:comment>
7035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
7045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:comment>
7055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicEmptyItem xsltStyleItemComment;
7075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemComment *xsltStyleItemCommentPtr;
7085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemPI:
7115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:processing-instruction
7145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  name = { ncname }>
7155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
7165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:processing-instruction>
7175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemPI xsltStyleItemPI;
7195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemPI *xsltStyleItemPIPtr;
7205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemPI {
7225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
7235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
7245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;
7255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemApplyImports:
7295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:apply-imports />
7325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicEmptyItem xsltStyleItemApplyImports;
7345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemApplyImports *xsltStyleItemApplyImportsPtr;
7355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemApplyTemplates:
7385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:apply-templates
7415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  select = node-set-expression
7425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  mode = qname>
7435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: (xsl:sort | xsl:with-param)* -->
7445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:apply-templates>
7455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemApplyTemplates xsltStyleItemApplyTemplates;
7475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemApplyTemplates *xsltStyleItemApplyTemplatesPtr;
7485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemApplyTemplates {
7505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
7515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *mode;	/* apply-templates */
7535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *modeURI;	/* apply-templates */
7545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;	/* sort, copy-of, value-of, apply-templates */
7555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;	/* a precompiled XPath expression */
7565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* TODO: with-params */
7575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemCallTemplate:
7615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:call-template
7645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  name = qname>
7655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: xsl:with-param* -->
7665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:call-template>
7675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemCallTemplate xsltStyleItemCallTemplate;
7695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemCallTemplate *xsltStyleItemCallTemplatePtr;
7705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemCallTemplate {
7725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
7735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr templ;	/* call-template */
7755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;	/* element, attribute, pi */
7765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;		/* element, attribute, pi */
7775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;		/* element */
7785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;		/* element */
7795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* TODO: with-params */
7805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
7835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemCopy:
7845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
7855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
7865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:copy
7875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  use-attribute-sets = qnames>
7885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
7895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:copy>
7905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
7915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemCopy xsltStyleItemCopy;
7925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemCopy *xsltStyleItemCopyPtr;
7935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
7945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemCopy {
7955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)   XSLT_ITEM_COMMON_FIELDS
7965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *use;		/* copy, element */
7975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_use;		/* copy, element */
7985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
7995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemIf:
8025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:if
8055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  test = boolean-expression>
8065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
8075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:if>
8085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemIf xsltStyleItemIf;
8105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemIf *xsltStyleItemIfPtr;
8115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemIf {
8135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
8145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *test;	/* if */
8165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;	/* a precompiled XPath expression */
8175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
8185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemCopyOf:
8225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:copy-of
8255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  select = expression />
8265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicExpressionItem xsltStyleItemCopyOf;
8285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemCopyOf *xsltStyleItemCopyOfPtr;
8295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemValueOf:
8325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:value-of
8355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  select = string-expression
8365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  disable-output-escaping = "yes" | "no" />
8375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemValueOf xsltStyleItemValueOf;
8395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemValueOf *xsltStyleItemValueOfPtr;
8405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemValueOf {
8425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
8435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;
8455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;	/* a precompiled XPath expression */
8465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      noescape;
8475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
8485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemNumber:
8515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:number
8545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  level = "single" | "multiple" | "any"
8555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  count = pattern
8565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  from = pattern
8575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  value = number-expression
8585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  format = { string }
8595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  lang = { nmtoken }
8605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  letter-value = { "alphabetic" | "traditional" }
8615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  grouping-separator = { char }
8625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  grouping-size = { number } />
8635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemNumber xsltStyleItemNumber;
8655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemNumber *xsltStyleItemNumberPtr;
8665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemNumber {
8685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
8695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNumberData numdata;	/* number */
8705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
8715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemChoose:
8745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:choose>
8775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: (xsl:when+, xsl:otherwise?) -->
8785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:choose>
8795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicEmptyItem xsltStyleItemChoose;
8815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemChoose *xsltStyleItemChoosePtr;
8825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemFallback:
8855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <xsl:fallback>
8885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
8895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:fallback>
8905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
8915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicEmptyItem xsltStyleItemFallback;
8925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemFallback *xsltStyleItemFallbackPtr;
8935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
8945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
8955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemForEach:
8965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
8975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
8985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:for-each
8995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   select = node-set-expression>
9005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: (xsl:sort*, template) -->
9015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:for-each>
9025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicExpressionItem xsltStyleItemForEach;
9045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemForEach *xsltStyleItemForEachPtr;
9055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
9075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemMessage:
9085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: instruction -->
9105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:message
9115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   terminate = "yes" | "no">
9125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: template -->
9135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:message>
9145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemMessage xsltStyleItemMessage;
9165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemMessage *xsltStyleItemMessagePtr;
9175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemMessage {
9195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
9205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int terminate;
9215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
9225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
9245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemDocument:
9255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE: This is not an instruction of XSLT 1.0.
9275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemDocument xsltStyleItemDocument;
9295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr;
9305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemDocument {
9325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
9335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      ver11;		/* assigned: in xsltDocumentComp;
9345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  read: nowhere;
9355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                  TODO: Check if we need. */
9365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *filename;	/* document URL */
9375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int has_filename;
9385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
9395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
9415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
9425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Non-instructions (actually properties of instructions/declarations)  *
9435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
9445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
9455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
9475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleBasicItemVariable:
9485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Basic struct for xsl:variable, xsl:param and xsl:with-param.
9505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * It's currently important to have equal fields, since
9515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltParseStylesheetCallerParam() is used with xsl:with-param from
9525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * the xslt side and with xsl:param from the exslt side (in
9535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * exsltFuncFunctionFunction()).
9545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * FUTURE NOTE: In XSLT 2.0 xsl:param, xsl:variable and xsl:with-param
9565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   have additional different fields.
9575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleBasicItemVariable xsltStyleBasicItemVariable;
9595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicItemVariable *xsltStyleBasicItemVariablePtr;
9605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleBasicItemVariable {
9625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
9635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;
9655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;
9665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
9685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;
9695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;
9705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;
9715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
9725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
9745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemVariable:
9755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: top-level-element -->
9775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:param
9785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   name = qname
9795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   select = expression>
9805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: template -->
9815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:param>
9825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicItemVariable xsltStyleItemVariable;
9845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemVariable *xsltStyleItemVariablePtr;
9855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
9875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemParam:
9885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
9895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <!-- Category: top-level-element -->
9905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:param
9915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   name = qname
9925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   select = expression>
9935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: template -->
9945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:param>
9955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
9965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemParam xsltStyleItemParam;
9975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemParam *xsltStyleItemParamPtr;
9985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
9995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemParam {
10005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
10015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;
10035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;
10045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
10065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;
10075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;
10085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;
10095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
10105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
10125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemWithParam:
10135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
10145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:with-param
10155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  name = qname
10165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  select = expression>
10175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  <!-- Content: template -->
10185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:with-param>
10195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleBasicItemVariable xsltStyleItemWithParam;
10215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemWithParam *xsltStyleItemWithParamPtr;
10225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
10245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemSort:
10255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
10265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Reflects the XSLT xsl:sort item.
10275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allowed parents: xsl:apply-templates, xsl:for-each
10285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:sort
10295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   select = string-expression
10305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   lang = { nmtoken }
10315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   data-type = { "text" | "number" | qname-but-not-ncname }
10325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   order = { "ascending" | "descending" }
10335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   case-order = { "upper-first" | "lower-first" } />
10345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemSort xsltStyleItemSort;
10365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemSort *xsltStyleItemSortPtr;
10375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemSort {
10395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
10405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *stype;       /* sort */
10425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_stype;		/* sort */
10435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      number;		/* sort */
10445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *order;	/* sort */
10455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_order;		/* sort */
10465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      descending;	/* sort */
10475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *lang;	/* sort */
10485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_lang;		/* sort */
10495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltLocale locale;		/* sort */
10505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *case_order;	/* sort */
10515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      lower_first;	/* sort */
10525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *use;
10545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_use;
10555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;	/* sort, copy-of, value-of, apply-templates */
10575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;	/* a precompiled XPath expression */
10595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
10605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
10635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemWhen:
10645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
10655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:when
10665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   test = boolean-expression>
10675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: template -->
10685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:when>
10695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allowed parent: xsl:choose
10705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemWhen xsltStyleItemWhen;
10725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemWhen *xsltStyleItemWhenPtr;
10735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemWhen {
10755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
10765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *test;
10785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;
10795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
10805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
10825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemOtherwise:
10835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
10845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Allowed parent: xsl:choose
10855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * <xsl:otherwise>
10865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *   <!-- Content: template -->
10875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * </xsl:otherwise>
10885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
10895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemOtherwise xsltStyleItemOtherwise;
10905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemOtherwise *xsltStyleItemOtherwisePtr;
10915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemOtherwise {
10935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
10945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
10955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemInclude xsltStyleItemInclude;
10975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemInclude *xsltStyleItemIncludePtr;
10985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
10995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemInclude {
11005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
11015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr include;
11025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
11035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
11055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  XSLT elements in forwards-compatible mode                           *
11075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
11095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemUknown xsltStyleItemUknown;
11115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemUknown *xsltStyleItemUknownPtr;
11125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemUknown {
11135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
11145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
11155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
11185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  Extension elements                                                  *
11205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
11225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
11245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltStyleItemExtElement:
11255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
11265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Reflects extension elements.
11275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
11285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * NOTE: Due to the fact that the structure xsltElemPreComp is most
11295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * probably already heavily in use out there by users, so we cannot
11305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * easily change it, we'll create an intermediate structure which will
11315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * hold an xsltElemPreCompPtr.
11325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * BIG NOTE: The only problem I see here is that the user processes the
11335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  content of the stylesheet tree, possibly he'll lookup the node->psvi
11345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  fields in order to find subsequent extension functions.
11355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  In this case, the user's code will break, since the node->psvi
11365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  field will hold now the xsltStyleItemExtElementPtr and not
11375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  the xsltElemPreCompPtr.
11385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  However the place where the structure is anchored in the node-tree,
11395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  namely node->psvi, has beed already once been moved from node->_private
11405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  to node->psvi, so we have a precedent here, which, I think, should allow
11415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  us to change such semantics without headaches.
11425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
11435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement;
11445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr;
11455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemExtElement {
11465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
11475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr item;
11485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
11495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
11515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  Literal result elements                                             *
11535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
11545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
11555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltEffectiveNs xsltEffectiveNs;
11575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltEffectiveNs *xsltEffectiveNsPtr;
11585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltEffectiveNs {
11595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltEffectiveNsPtr nextInStore; /* storage next */
11605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltEffectiveNsPtr next; /* next item in the list */
11615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *prefix;
11625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nsName;
11635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
11645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Indicates if eclared on the literal result element; dunno if really
11655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * needed.
11665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
11675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int holdByElem;
11685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
11695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
11715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Info for literal result elements.
11725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This will be set on the elem->psvi field and will be
11735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * shared by literal result elements, which have the same
11745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * excluded result namespaces; i.e., this *won't* be created uniquely
11755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * for every literal result element.
11765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
11775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStyleItemLRElementInfo xsltStyleItemLRElementInfo;
11785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStyleItemLRElementInfo *xsltStyleItemLRElementInfoPtr;
11795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStyleItemLRElementInfo {
11805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ITEM_COMMON_FIELDS
11815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
11825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * @effectiveNs is the set of effective ns-nodes
11835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  on the literal result element, which will be added to the result
11845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  element if not already existing in the result tree.
11855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  This means that excluded namespaces (via exclude-result-prefixes,
11865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  extension-element-prefixes and the XSLT namespace) not added
11875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  to the set.
11885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  Namespace-aliasing was applied on the @effectiveNs.
11895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
11905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltEffectiveNsPtr effectiveNs;
11915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
11935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
11955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
11965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltNsAlias xsltNsAlias;
11975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltNsAlias *xsltNsAliasPtr;
11985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltNsAlias {
11995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsAliasPtr next; /* next in the list */
12005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr literalNs;
12015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr targetNs;
12025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr docOfTargetNs;
12035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
12045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
12055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED_XSLT_NSCOMP
12075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltNsMap xsltNsMap;
12095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltNsMap *xsltNsMapPtr;
12105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltNsMap {
12115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsMapPtr next; /* next in the list */
12125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr doc;
12135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr elem; /* the element holding the ns-decl */
12145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */
12155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *origNsName; /* the original XML namespace name */
12165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *newNsName; /* the mapped XML namespace name */
12175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
12185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
12195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
12215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
12225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  Compile-time structures for *internal* use only                     *
12235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
12245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
12255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData;
12275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltPrincipalStylesheetData *xsltPrincipalStylesheetDataPtr;
12285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltNsList xsltNsList;
12305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltNsList *xsltNsListPtr;
12315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltNsList {
12325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsListPtr next; /* next in the list */
12335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr ns;
12345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
12355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
12375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)* xsltVarInfo:
12385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*
12395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)* Used at compilation time for parameters and variables.
12405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
12415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltVarInfo xsltVarInfo;
12425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltVarInfo *xsltVarInfoPtr;
12435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltVarInfo {
12445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltVarInfoPtr next; /* next in the list */
12455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltVarInfoPtr prev;
12465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int depth; /* the depth in the tree */
12475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;
12485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nsName;
12495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
12505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
12525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * xsltCompilerNodeInfo:
12535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
12545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Per-node information during compile-time.
12555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
12565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltCompilerNodeInfo xsltCompilerNodeInfo;
12575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltCompilerNodeInfo *xsltCompilerNodeInfoPtr;
12585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltCompilerNodeInfo {
12595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerNodeInfoPtr next;
12605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerNodeInfoPtr prev;
12615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr node;
12625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int depth;
12635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr templ;   /* The owning template */
12645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int category;	     /* XSLT element, LR-element or
12655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                extension element */
12665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType type;
12675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr item; /* The compiled information */
12685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* The current in-scope namespaces */
12695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsListContainerPtr inScopeNs;
12705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* The current excluded result namespaces */
12715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr exclResultNs;
12725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* The current extension instruction namespaces */
12735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr extElemNs;
12745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* The current info for literal result elements. */
12765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleItemLRElementInfoPtr litResElemInfo;
12775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
12785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Set to 1 if in-scope namespaces changed,
12795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  or excluded result namespaces changed,
12805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  or extension element namespaces changed.
12815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * This will trigger creation of new infos
12825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *  for literal result elements.
12835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
12845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nsChanged;
12855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int preserveWhitespace;
12865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int stripWhitespace;
12875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int isRoot; /* whether this is the stylesheet's root node */
12885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int forwardsCompat; /* whether forwards-compatible mode is enabled */
12895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* whether the content of an extension element was processed */
12905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int extContentHandled;
12915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* the type of the current child */
12925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType curChildType;
12935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
12945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
12955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
12965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XSLT_CCTXT:
12975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
12985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * get pointer to compiler context
12995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
13005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt)
13015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
13035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ERROR_SEVERITY_ERROR = 0,
13045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_ERROR_SEVERITY_WARNING
13055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xsltErrorSeverityType;
13065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltCompilerCtxt xsltCompilerCtxt;
13085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltCompilerCtxt *xsltCompilerCtxtPtr;
13095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltCompilerCtxt {
13105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *errorCtxt;            /* user specific error context */
13115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
13125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */
13135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltErrorSeverityType errSeverity;
13145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int warnings;		/* TODO: number of warnings found at
13155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   compilation */
13165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int errors;			/* TODO: number of errors found at
13175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   compilation */
13185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDictPtr dict;
13195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylesheetPtr style;
13205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int simplified; /* whether this is a simplified stylesheet */
13215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* TODO: structured/unstructured error contexts. */
13225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int depth; /* Current depth of processing */
13235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerNodeInfoPtr inode;
13255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerNodeInfoPtr inodeList;
13265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerNodeInfoPtr inodeLast;
13275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr tmpList; /* Used for various purposes */
13285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
13295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * The XSLT version as specified by the stylesheet's root element.
13305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
13315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int isInclude;
13325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int hasForwardsCompat; /* whether forwards-compatible mode was used
13335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			     in a parsing episode */
13345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int maxNodeInfos; /* TEMP TODO: just for the interest */
13355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int maxLREs;  /* TEMP TODO: just for the interest */
13365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
13375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * In order to keep the old behaviour, applying strict rules of
13385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * the spec can be turned off. This has effect only on special
13395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * mechanisms like whitespace-stripping in the stylesheet.
13405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
13415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int strict;
13425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPrincipalStylesheetDataPtr psData;
13435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED_XPATHCOMP
13445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathContextPtr xpathCtxt;
13455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
13465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleItemUknownPtr unknownItem;
13475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */
13485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsAliasPtr nsAliases;
13495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */
13505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltVarInfoPtr ivar; /* topmost local variable/param. */
13515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
13525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#else /* XSLT_REFACTORED */
13545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
13555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)* The old structures before refactoring.
13565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)*/
13575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
13595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * _xsltStylePreComp:
13605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
13615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to XSLT stylesheet constructs
13625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * precomputed data.
13635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
13645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStylePreComp {
13655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr next;	/* chained list */
13665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStyleType type;		/* type of the element */
13675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformFunction func; /* handling function */
13685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;		/* the instruction */
13695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
13715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Pre computed values.
13725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
13735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *stype;       /* sort */
13755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_stype;		/* sort */
13765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      number;		/* sort */
13775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *order;	/* sort */
13785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_order;		/* sort */
13795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      descending;	/* sort */
13805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *lang;	/* sort */
13815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_lang;		/* sort */
13825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltLocale locale;		/* sort */
13835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *case_order;	/* sort */
13845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      lower_first;	/* sort */
13855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *use;		/* copy, element */
13875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_use;		/* copy, element */
13885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      noescape;		/* text */
13905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;	/* element, attribute, pi */
13925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_name;		/* element, attribute, pi */
13935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *ns;		/* element */
13945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_ns;		/* element */
13955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *mode;	/* apply-templates */
13975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *modeURI;	/* apply-templates */
13985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
13995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *test;	/* if */
14005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr templ;	/* call-template */
14025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;	/* sort, copy-of, value-of, apply-templates */
14045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      ver11;		/* document */
14065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *filename;	/* document URL */
14075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int      has_filename;	/* document */
14085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNumberData numdata;	/* number */
14105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathCompExprPtr comp;	/* a precompiled XPath expression */
14125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNsPtr *nsList;		/* the namespaces in scope */
14135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nsNr;			/* the number of namespaces in scope */
14145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
14155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* XSLT_REFACTORED */
14175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
14205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to an XSLT Variable
14215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * or Param.
14225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
14235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltStackElem xsltStackElem;
14245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltStackElem *xsltStackElemPtr;
14255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStackElem {
14265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltStackElem *next;/* chained list */
14275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylePreCompPtr comp;   /* the compiled form */
14285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int computed;		/* was the evaluation done */
14295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *name;	/* the local part of the name QName */
14305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *nameURI;	/* the URI part of the name QName */
14315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *select;	/* the eval string */
14325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr tree;		/* the sequence constructor if no eval
14335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				    string or the location */
14345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathObjectPtr value;	/* The value if computed */
14355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr fragment;		/* The Result Tree Fragments (needed for XSLT 1.0)
14365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   which are bound to the variable's lifetime. */
14375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int level;                  /* the depth in the tree;
14385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   -1 if persistent (e.g. a given xsl:with-param) */
14395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformContextPtr context; /* The transformation context; needed to cache
14405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                        the variables */
14415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int flags;
14425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
14435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
14455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltPrincipalStylesheetData {
14475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Namespace dictionary for ns-prefixes and ns-names:
14495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * TODO: Shared between stylesheets, and XPath mechanisms.
14505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    *   Not used yet.
14515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
14525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDictPtr namespaceDict;
14535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Global list of in-scope namespaces.
14555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
14565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr inScopeNamespaces;
14575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Global list of information for [xsl:]excluded-result-prefixes.
14595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
14605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr exclResultNamespaces;
14615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Global list of information for [xsl:]extension-element-prefixes.
14635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
14645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPointerListPtr extElemNamespaces;
14655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltEffectiveNsPtr effectiveNs;
14665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED_XSLT_NSCOMP
14675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Namespace name map to get rid of string comparison of namespace names.
14695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
14705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltNsMapPtr nsMap;
14715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
14725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
14735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
14765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
14775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Note that we added a @compCtxt field to anchor an stylesheet compilation
14785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * context, since, due to historical reasons, various compile-time function
14795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * take only the stylesheet as argument and not a compilation context.
14805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
14815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltStylesheet {
14825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * The stylesheet import relation is kept as a tree.
14845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
14855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltStylesheet *parent;
14865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltStylesheet *next;
14875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    struct _xsltStylesheet *imports;
14885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr docList;		/* the include document list */
14905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
14915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
14925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * General data on the style sheet document.
14935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
14945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr doc;		/* the parsed XML stylesheet */
14955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr stripSpaces;/* the hash table of the strip-space and
14965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   preserve space elements */
14975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int             stripAll;	/* strip-space * (1) preserve-space * (-1) */
14985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr cdataSection;/* the hash table of the cdata-section */
14995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Global variable or parameters.
15025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStackElemPtr variables; /* linked list of param and variables */
15045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Template descriptions.
15075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr templates;	/* the ordered list of templates */
15095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *templatesHash;	/* hash table or wherever compiled templates
15105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   informations are stored */
15115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *rootMatch;		/* template based on / */
15125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *keyMatch;		/* template based on key() */
15135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *elemMatch;		/* template based on * */
15145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *attrMatch;		/* template based on @* */
15155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *parentMatch;		/* template based on .. */
15165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *textMatch;		/* template based on text() */
15175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *piMatch;		/* template based on processing-instruction() */
15185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *commentMatch;		/* template based on comment() */
15195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Namespace aliases.
15225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * NOTE: Not used in the refactored code.
15235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr nsAliases;	/* the namespace alias hash tables */
15255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Attribute sets.
15285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr attributeSets;/* the attribute sets hash tables */
15305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Namespaces.
15335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * TODO: Eliminate this.
15345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr nsHash;     /* the set of namespaces in use:
15365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   ATTENTION: This is used for
15375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   execution of XPath expressions; unfortunately
15385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   it restricts the stylesheet to have distinct
15395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   prefixes.
15405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   TODO: We need to get rid of this.
15415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				 */
15425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void           *nsDefs;     /* ATTENTION TODO: This is currently used to store
15435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				   xsltExtDefPtr (in extensions.c) and
15445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                                   *not* xmlNsPtr.
15455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)				 */
15465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Key definitions.
15495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *keys;			/* key definitions */
15515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Output related stuff.
15545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *method;		/* the output method */
15565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *methodURI;		/* associated namespace if any */
15575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *version;		/* version string */
15585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *encoding;		/* encoding string */
15595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int omitXmlDeclaration;     /* omit-xml-declaration = "yes" | "no" */
15605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Number formatting.
15635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDecimalFormatPtr decimalFormat;
15655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int standalone;             /* standalone = "yes" | "no" */
15665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *doctypePublic;     /* doctype-public string */
15675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *doctypeSystem;     /* doctype-system string */
15685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int indent;			/* should output being indented */
15695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar *mediaType;		/* media-type string */
15705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Precomputed blocks.
15735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltElemPreCompPtr preComps;/* list of precomputed blocks */
15755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int warnings;		/* number of warnings found at compilation */
15765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int errors;			/* number of errors found at compilation */
15775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar  *exclPrefix;	/* last excluded prefixes */
15795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlChar **exclPrefixTab;	/* array of excluded prefixes */
15805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int       exclPrefixNr;	/* number of excluded prefixes in scope */
15815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int       exclPrefixMax;	/* size of the array */
15825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void     *_private;		/* user defined data */
15845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Extensions.
15875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr extInfos;	/* the extension data */
15895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int		    extrasNr;	/* the number of extras required */
15905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * For keeping track of nested includes
15935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr includes;	/* points to last nested include */
15955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
15965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
15975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * dictionary: shared between stylesheet, context and documents.
15985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
15995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDictPtr dict;
16005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * precompiled attribute value templates.
16025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *attVTs;
16045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * if namespace-alias has an alias for the default stylesheet prefix
16065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * NOTE: Not used in the refactored code.
16075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *defaultAlias;
16095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * bypass pre-processing (already done) (used in imports)
16115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nopreproc;
16135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * all document text strings were internalized
16155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int internalized;
16175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Literal Result Element as Stylesheet c.f. section 2.3
16195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int literal_result;
16215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * The principal stylesheet
16235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
16245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylesheetPtr principal;
16255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
16265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    * Compilation context used during compile-time.
16285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    */
16295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */
16305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltPrincipalStylesheetDataPtr principalData;
16325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
16335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
16345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef struct _xsltTransformCache xsltTransformCache;
16365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef xsltTransformCache *xsltTransformCachePtr;
16375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltTransformCache {
16385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr RVT;
16395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nbRVT;
16405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStackElemPtr stackItems;
16415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nbStackItems;
16425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_DEBUG_PROFILE_CACHE
16435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int dbgCachedRVTs;
16445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int dbgReusedRVTs;
16455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int dbgCachedVars;
16465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int dbgReusedVars;
16475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
16485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
16495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
16515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The in-memory structure corresponding to an XSLT Transformation.
16525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
16535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
16545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_OUTPUT_XML = 0,
16555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_OUTPUT_HTML,
16565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_OUTPUT_TEXT
16575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xsltOutputType;
16585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)typedef enum {
16605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_STATE_OK = 0,
16615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_STATE_ERROR,
16625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    XSLT_STATE_STOPPED
16635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)} xsltTransformState;
16645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)struct _xsltTransformContext {
16665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStylesheetPtr style;		/* the stylesheet used */
16675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltOutputType type;		/* the type of output */
16685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr  templ;		/* the current template */
16705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              templNr;		/* Nb of templates in the stack */
16715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              templMax;		/* Size of the templtes stack */
16725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr *templTab;		/* the template stack */
16735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStackElemPtr  vars;		/* the current variable list */
16755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               varsNr;		/* Nb of variable list in the stack */
16765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               varsMax;		/* Size of the variable list stack */
16775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltStackElemPtr *varsTab;		/* the variable list stack */
16785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int               varsBase;		/* the var base for current templ */
16795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
16815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Extensions
16825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
16835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr   extFunctions;	/* the extension functions */
16845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr   extElements;	/* the extension elements */
16855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr   extInfos;		/* the extension data */
16865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *mode;		/* the current mode */
16885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar *modeURI;		/* the current mode URI */
16895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr docList;		/* the document list */
16915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr document;		/* the current source document; can be NULL if an RTF */
16935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr node;			/* the current node being processed */
16945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodeSetPtr nodeList;		/* the current node list */
16955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /* xmlNodePtr current;			the node */
16965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
16975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr output;			/* the resulting document */
16985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr insert;			/* the insertion node */
16995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlXPathContextPtr xpathCtxt;	/* the XPath context */
17015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformState state;		/* the current state */
17025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Global variables
17055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlHashTablePtr   globalVars;	/* the global variables and params */
17075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr inst;			/* the instruction in the stylesheet */
17095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int xinclude;			/* should XInclude be processed */
17115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const char *      outputFile;	/* the output URI if known */
17135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int profile;                        /* is this run profiled */
17155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    long             prof;		/* the current profiled value */
17165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              profNr;		/* Nb of templates in the stack */
17175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              profMax;		/* Size of the templtaes stack */
17185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    long            *profTab;		/* the profile template stack */
17195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void            *_private;		/* user defined data */
17215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              extrasNr;		/* the number of extras used */
17235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int              extrasMax;		/* the number of extras allocated */
17245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltRuntimeExtraPtr extras;		/* extra per runtime informations */
17255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltDocumentPtr  styleList;		/* the stylesheet docs list */
17275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void                 * sec;		/* the security preferences if any */
17285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlGenericErrorFunc  error;		/* a specific error handler */
17305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void              * errctx;		/* context for the error handler */
17315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltSortFunc      sortfunc;		/* a ctxt specific sort routine */
17335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * handling of temporary Result Value Tree
17365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * (XSLT 1.0 term: "Result Tree Fragment")
17375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr       tmpRVT;		/* list of RVT without persistance */
17395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr       persistRVT;		/* list of persistant RVTs */
17405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int             ctxtflags;          /* context processing flags */
17415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Speed optimization when coalescing text nodes
17445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    const xmlChar  *lasttext;		/* last text node content */
17465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned int    lasttsize;		/* last text node size */
17475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned int    lasttuse;		/* last text node use */
17485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * Per Context Debugging
17505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int debugStatus;			/* the context level debug status */
17525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    unsigned long* traceCode;		/* pointer to the variable holding the mask */
17535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int parserOptions;			/* parser options xmlParserOption */
17555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * dictionary: shared between stylesheet, context and documents.
17585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDictPtr dict;
17605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr		tmpDoc; /* Obsolete; not used in the library. */
17615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    /*
17625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     * all document text strings are internalized
17635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)     */
17645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int internalized;
17655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int nbKeys;
17665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int hasTemplKeyPatterns;
17675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTemplatePtr currentTemplateRule; /* the Current Template Rule */
17685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlNodePtr initialContextNode;
17695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr initialContextDoc;
17705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xsltTransformCachePtr cache;
17715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    void *contextVariable; /* the current variable item */
17725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr localRVT; /* list of local tree fragments; will be freed when
17735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			   the instruction which created the fragment
17745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)                           exits */
17755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    xmlDocPtr localRVTBase;
17765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int keyInitLevel;   /* Needed to catch recursive keys issues */
17775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)    int funcLevel;      /* Needed to catch recursive functions issues */
17785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)};
17795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
17815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * CHECK_STOPPED:
17825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
17835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro to check if the XSLT processing should be stopped.
17845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Will return from the function.
17855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
17865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;
17875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
17895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * CHECK_STOPPEDE:
17905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
17915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro to check if the XSLT processing should be stopped.
17925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Will goto the error: label.
17935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
17945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;
17955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
17965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
17975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * CHECK_STOPPED0:
17985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
17995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro to check if the XSLT processing should be stopped.
18005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Will return from the function with a 0 value.
18015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
18025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);
18035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
18055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * The macro XML_CAST_FPTR is a hack to avoid a gcc warning about
18065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * possible incompatibilities between function pointers and object
18075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * pointers.  It is defined in libxml/hash.h within recent versions
18085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * of libxml2, but is put here for compatibility.
18095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
18105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifndef XML_CAST_FPTR
18115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/**
18125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * XML_CAST_FPTR:
18135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * @fptr:  pointer to a function
18145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
18155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Macro to do a casting from an object pointer to a
18165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * function pointer without encountering a warning from
18175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * gcc
18185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *
18195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * #define XML_CAST_FPTR(fptr) (*(void **)(&fptr))
18205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * This macro violated ISO C aliasing rules (gcc4 on s390 broke)
18215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * so it is disabled now
18225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
18235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#define XML_CAST_FPTR(fptr) fptr
18255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
18265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
18275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Functions associated to the internal types
18285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)xsltDecimalFormatPtr	xsltDecimalFormatGetByName(xsltStylesheetPtr sheet,
18295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						   xmlChar *name);
18305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
18315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltNewStylesheet	(void);
18335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseStylesheetFile	(const xmlChar* filename);
18355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltFreeStylesheet	(xsltStylesheetPtr style);
18375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltIsBlank		(xmlChar *str);
18395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltFreeStackElemList	(xsltStackElemPtr elem);
18415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL
18425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltDecimalFormatGetByName(xsltStylesheetPtr style,
18435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlChar *name);
18445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseStylesheetProcess(xsltStylesheetPtr ret,
18475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr doc);
18485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseStylesheetOutput(xsltStylesheetPtr style,
18505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr cur);
18515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseStylesheetDoc	(xmlDocPtr doc);
18535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseStylesheetImportedDoc(xmlDocPtr doc,
18555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						xsltStylesheetPtr style);
18565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xsltStylesheetPtr XSLTCALL
18575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltLoadStylesheetPI	(xmlDocPtr doc);
18585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltNumberFormat	(xsltTransformContextPtr ctxt,
18605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltNumberDataPtr data,
18615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr node);
18625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xmlXPathError XSLTCALL
18635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltFormatNumberConversion(xsltDecimalFormatPtr self,
18645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlChar *format,
18655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 double number,
18665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlChar **result);
18675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
18685821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18695821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseTemplateContent(xsltStylesheetPtr style,
18705821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr templ);
18715821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18725821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltAllocateExtra	(xsltStylesheetPtr style);
18735821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18745821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltAllocateExtraCtxt	(xsltTransformContextPtr ctxt);
18755821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
18765821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extra functions for Result Value Trees
18775821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
18785821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xmlDocPtr XSLTCALL
18795821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltCreateRVT		(xsltTransformContextPtr ctxt);
18805821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18815821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltRegisterTmpRVT	(xsltTransformContextPtr ctxt,
18825821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr RVT);
18835821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18845821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltRegisterLocalRVT	(xsltTransformContextPtr ctxt,
18855821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr RVT);
18865821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18875821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltRegisterPersistRVT	(xsltTransformContextPtr ctxt,
18885821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr RVT);
18895821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18905821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltExtensionInstructionResultRegister(
18915821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltTransformContextPtr ctxt,
18925821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlXPathObjectPtr obj);
18935821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
18945821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltExtensionInstructionResultFinalize(
18955821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltTransformContextPtr ctxt);
18965821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18975821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltFreeRVTs		(xsltTransformContextPtr ctxt);
18985821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
18995821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltReleaseRVT		(xsltTransformContextPtr ctxt,
19005821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr RVT);
19015821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
19025821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltTransStorageAdd	(xsltTransformContextPtr ctxt,
19035821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 void *id,
19045821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 void *data);
19055821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void * XSLTCALL
19065821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltTransStorageRemove	(xsltTransformContextPtr ctxt,
19075821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 void *id);
19085821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19095821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
19105821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extra functions for Attribute Value Templates
19115821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
19125821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
19135821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltCompileAttr		(xsltStylesheetPtr style,
19145821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlAttrPtr attr);
19155821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN xmlChar * XSLTCALL
19165821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltEvalAVT		(xsltTransformContextPtr ctxt,
19175821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 void *avt,
19185821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr node);
19195821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
19205821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltFreeAVTList		(void *avt);
19215821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19225821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/*
19235821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) * Extra function for successful xsltCleanupGlobals / xsltInit sequence.
19245821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) */
19255821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19265821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
19275821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltUninit		(void);
19285821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19295821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
19305821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
19315821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  Compile-time functions for *internal* use only                      *
19325821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
19335821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
19345821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19355821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED
19365821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN void XSLTCALL
19375821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseSequenceConstructor(
19385821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltCompilerCtxtPtr cctxt,
19395821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr start);
19405821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
19415821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltParseAnyXSLTElem	(xsltCompilerCtxtPtr cctxt,
19425821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlNodePtr elem);
19435821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef XSLT_REFACTORED_XSLT_NSCOMP
19445821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
19455821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltRestoreDocumentNamespaces(
19465821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltNsMapPtr ns,
19475821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xmlDocPtr doc);
19485821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
19495821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* XSLT_REFACTORED */
19505821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19515821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)/************************************************************************
19525821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
19535821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *  Transformation-time functions for *internal* use only               *
19545821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) *									*
19555821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles) ************************************************************************/
19565821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
19575821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltInitCtxtKey		(xsltTransformContextPtr ctxt,
19585821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltDocumentPtr doc,
19595821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)						 xsltKeyDefPtr keyd);
19605821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)XSLTPUBFUN int XSLTCALL
19615821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)			xsltInitAllDocKeys	(xsltTransformContextPtr ctxt);
19625821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#ifdef __cplusplus
19635821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)}
19645821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif
19655821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
19665821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)#endif /* __XML_XSLT_H__ */
19675821806d5e7f356e8fa4b058a389a808ea183019Torne (Richard Coles)
1968