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