ReactOS 0.4.16-dev-2252-gb2c1dd8
xsltInternals.h
Go to the documentation of this file.
1/*
2 * Summary: internal data structures, constants and functions
3 * Description: Internal data structures, constants and functions used
4 * by the XSLT engine.
5 * They are not part of the API or ABI, i.e. they can change
6 * without prior notice, use carefully.
7 *
8 * Copy: See Copyright for the status of this software.
9 *
10 * Author: Daniel Veillard
11 */
12
13#ifndef __XML_XSLT_INTERNALS_H__
14#define __XML_XSLT_INTERNALS_H__
15
16#include <libxml/tree.h>
17#include <libxml/hash.h>
18#include <libxml/xpath.h>
19#include <libxml/xmlerror.h>
20#include <libxml/dict.h>
21#include <libxml/xmlstring.h>
22#include <libxslt/xslt.h>
23#include "xsltexports.h"
24#include "numbersInternals.h"
25
26#ifdef __cplusplus
27extern "C" {
28#endif
29
30/* #define XSLT_DEBUG_PROFILE_CACHE */
31
37#define XSLT_IS_TEXT_NODE(n) ((n != NULL) && \
38 (((n)->type == XML_TEXT_NODE) || \
39 ((n)->type == XML_CDATA_SECTION_NODE)))
40
41
47#define XSLT_MARK_RES_TREE_FRAG(n) \
48 (n)->name = (char *) xmlStrdup(BAD_CAST " fake node libxslt");
49
55#define XSLT_IS_RES_TREE_FRAG(n) \
56 ((n != NULL) && ((n)->type == XML_DOCUMENT_NODE) && \
57 ((n)->name != NULL) && ((n)->name[0] == ' '))
58
65#define XSLT_REFACTORED_KEYCOMP
66
73#define XSLT_FAST_IF
74
80/* #define XSLT_REFACTORED */
81/* ==================================================================== */
82
88#define XSLT_REFACTORED_VARS
89
90#ifdef XSLT_REFACTORED
91
92extern const xmlChar *xsltXSLTAttrMarker;
93
94
95/* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */
96
97/* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */
98
105/* #define XSLT_REFACTORED_XSLT_NSCOMP */
106
107#ifdef XSLT_REFACTORED_XSLT_NSCOMP
108
109extern const xmlChar *xsltConstNamespaceNameXSLT;
110
116#define IS_XSLT_ELEM_FAST(n) \
117 (((n) != NULL) && ((n)->ns != NULL) && \
118 ((n)->ns->href == xsltConstNamespaceNameXSLT))
119
125#define IS_XSLT_ATTR_FAST(a) \
126 (((a) != NULL) && ((a)->ns != NULL) && \
127 ((a)->ns->href == xsltConstNamespaceNameXSLT))
128
134#define XSLT_HAS_INTERNAL_NSMAP(s) \
135 (((s) != NULL) && ((s)->principal) && \
136 ((s)->principal->principalData) && \
137 ((s)->principal->principalData->nsMap))
138
144#define XSLT_GET_INTERNAL_NSMAP(s) ((s)->principal->principalData->nsMap)
145
146#else /* XSLT_REFACTORED_XSLT_NSCOMP */
147
153#define IS_XSLT_ELEM_FAST(n) \
154 (((n) != NULL) && ((n)->ns != NULL) && \
155 (xmlStrEqual((n)->ns->href, XSLT_NAMESPACE)))
156
162#define IS_XSLT_ATTR_FAST(a) \
163 (((a) != NULL) && ((a)->ns != NULL) && \
164 (xmlStrEqual((a)->ns->href, XSLT_NAMESPACE)))
165
166
167#endif /* XSLT_REFACTORED_XSLT_NSCOMP */
168
169
178/* #define XSLT_REFACTORED_MANDATORY_VERSION */
179
185typedef struct _xsltPointerList xsltPointerList;
186typedef xsltPointerList *xsltPointerListPtr;
187struct _xsltPointerList {
188 void **items;
189 int number;
190 int size;
191};
192
193#endif
194
201/* #define XSLT_REFACTORED_PARSING */
202
208#define XSLT_MAX_SORT 15
209
215#define XSLT_PAT_NO_PRIORITY -12345789
216
225 void *info; /* pointer to the extra data */
226 xmlFreeFunc deallocate; /* pointer to the deallocation routine */
227 union { /* dual-purpose field */
228 void *ptr; /* data not needing deallocation */
229 int ival; /* integer value storage */
231};
232
240#define XSLT_RUNTIME_EXTRA_LST(ctxt, nr) (ctxt)->extras[(nr)].info
248#define XSLT_RUNTIME_EXTRA_FREE(ctxt, nr) (ctxt)->extras[(nr)].deallocate
256#define XSLT_RUNTIME_EXTRA(ctxt, nr, typ) (ctxt)->extras[(nr)].val.typ
257
266 struct _xsltTemplate *next;/* chained list sorted by priority */
267 struct _xsltStylesheet *style;/* the containing stylesheet */
268 xmlChar *match; /* the matching string */
269 float priority; /* as given from the stylesheet, not computed */
270 const xmlChar *name; /* the local part of the name QName */
271 const xmlChar *nameURI; /* the URI part of the name QName */
272 const xmlChar *mode;/* the local part of the mode QName */
273 const xmlChar *modeURI;/* the URI part of the mode QName */
274 xmlNodePtr content; /* the template replacement value */
275 xmlNodePtr elem; /* the source element */
276
277 /*
278 * TODO: @inheritedNsNr and @inheritedNs won't be used in the
279 * refactored code.
280 */
281 int inheritedNsNr; /* number of inherited namespaces */
282 xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */
283
284 /* Profiling information */
285 int nbCalls; /* the number of time the template was called */
286 unsigned long time; /* the time spent in this template */
287 void *params; /* xsl:param instructions */
288
289 int templNr; /* Nb of templates in the stack */
290 int templMax; /* Size of the templtes stack */
291 xsltTemplatePtr *templCalledTab; /* templates called */
292 int *templCountTab; /* .. and how often */
293
294 /* Conflict resolution */
296};
297
306 struct _xsltDecimalFormat *next; /* chained list */
308 /* Used for interpretation of pattern */
311 /* May appear in result */
314 xmlChar *noNumber; /* Not-a-number */
315 /* Used for interpretation of pattern and may appear in result */
322};
323
332 struct _xsltDocument *next; /* documents are kept in a chained list */
333 int main; /* is this the main document */
334 xmlDocPtr doc; /* the parsed document */
335 void *keys; /* key tables storage */
336 struct _xsltDocument *includes; /* subsidiary includes */
337 int preproc; /* pre-processing already done */
339};
340
346typedef struct _xsltKeyDef xsltKeyDef;
350 xmlNodePtr inst;
355 xmlXPathCompExprPtr comp;
356 xmlXPathCompExprPtr usecomp;
357 xmlNsPtr *nsList; /* the namespaces in scope */
358 int nsNr; /* the number of namespaces in scope */
359};
360
374};
375
376/*
377 * The in-memory structure corresponding to an XSLT Stylesheet.
378 * NOTE: most of the content is simply linked from the doc tree
379 * structure, no specific allocation is made.
380 */
383
386
395
407 xmlNodePtr node,
408 xmlNodePtr inst,
409 xsltElemPreCompPtr comp);
410
419typedef void (*xsltSortFunc) (xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
420 int nbsorts);
421
422typedef enum {
445#ifdef XSLT_REFACTORED
446 ,
447 XSLT_FUNC_OTHERWISE,
448 XSLT_FUNC_FALLBACK,
449 XSLT_FUNC_MESSAGE,
450 XSLT_FUNC_INCLUDE,
451 XSLT_FUNC_ATTRSET,
452 XSLT_FUNC_LITERAL_RESULT_ELEMENT,
453 XSLT_FUNC_UNKOWN_FORWARDS_COMPAT
454#endif
456
464
474 xsltElemPreCompPtr next; /* next item in the global chained
475 list held by xsltStylesheet. */
476 xsltStyleType type; /* type of the element */
477 xsltTransformFunction func; /* handling function */
478 xmlNodePtr inst; /* the node in the stylesheet's tree
479 corresponding to this item */
480
481 /* end of common part */
482 xsltElemPreCompDeallocator free; /* the deallocator */
483};
484
496
497#ifdef XSLT_REFACTORED
498
499/*
500* Some pointer-list utility functions.
501*/
502XSLTPUBFUN xsltPointerListPtr XSLTCALL
503 xsltPointerListCreate (int initialSize);
505 xsltPointerListFree (xsltPointerListPtr list);
507 xsltPointerListClear (xsltPointerListPtr list);
509 xsltPointerListAddSize (xsltPointerListPtr list,
510 void *item,
511 int initialSize);
512
513/************************************************************************
514 * *
515 * Refactored structures *
516 * *
517 ************************************************************************/
518
519typedef struct _xsltNsListContainer xsltNsListContainer;
520typedef xsltNsListContainer *xsltNsListContainerPtr;
521struct _xsltNsListContainer {
522 xmlNsPtr *list;
523 int totalNumber;
524 int xpathNumber;
525};
526
536#define XSLT_ITEM_COMPATIBILITY_FIELDS \
537 xsltElemPreCompPtr next;\
538 xsltStyleType type;\
539 xsltTransformFunction func;\
540 xmlNodePtr inst;
541
548#define XSLT_ITEM_NAVIGATION_FIELDS
549/*
550 xsltStylePreCompPtr parent;\
551 xsltStylePreCompPtr children;\
552 xsltStylePreCompPtr nextItem;
553*/
554
560#define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs;
561
567#define XSLT_ITEM_COMMON_FIELDS \
568 XSLT_ITEM_COMPATIBILITY_FIELDS \
569 XSLT_ITEM_NAVIGATION_FIELDS \
570 XSLT_ITEM_NSINSCOPE_FIELDS
571
585struct _xsltStylePreComp {
586 xsltElemPreCompPtr next; /* next item in the global chained
587 list held by xsltStylesheet */
588 xsltStyleType type; /* type of the item */
589 xsltTransformFunction func; /* handling function */
590 xmlNodePtr inst; /* the node in the stylesheet's tree
591 corresponding to this item. */
592 /* Currently no navigational fields. */
593 xsltNsListContainerPtr inScopeNs;
594};
595
604typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem;
605typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr;
606
607struct _xsltStyleBasicEmptyItem {
608 XSLT_ITEM_COMMON_FIELDS
609};
610
617typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem;
618typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr;
619
620struct _xsltStyleBasicExpressionItem {
621 XSLT_ITEM_COMMON_FIELDS
622
623 const xmlChar *select; /* TODO: Change this to "expression". */
624 xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */
625};
626
627/************************************************************************
628 * *
629 * XSLT-instructions/declarations *
630 * *
631 ************************************************************************/
632
644typedef struct _xsltStyleItemElement xsltStyleItemElement;
645typedef xsltStyleItemElement *xsltStyleItemElementPtr;
646
647struct _xsltStyleItemElement {
648 XSLT_ITEM_COMMON_FIELDS
649
650 const xmlChar *use;
651 int has_use;
652 const xmlChar *name;
653 int has_name;
654 const xmlChar *ns;
655 const xmlChar *nsPrefix;
656 int has_ns;
657};
658
669typedef struct _xsltStyleItemAttribute xsltStyleItemAttribute;
670typedef xsltStyleItemAttribute *xsltStyleItemAttributePtr;
671
672struct _xsltStyleItemAttribute {
673 XSLT_ITEM_COMMON_FIELDS
674 const xmlChar *name;
675 int has_name;
676 const xmlChar *ns;
677 const xmlChar *nsPrefix;
678 int has_ns;
679};
680
690typedef struct _xsltStyleItemText xsltStyleItemText;
691typedef xsltStyleItemText *xsltStyleItemTextPtr;
692
693struct _xsltStyleItemText {
694 XSLT_ITEM_COMMON_FIELDS
695 int noescape; /* text */
696};
697
706typedef xsltStyleBasicEmptyItem xsltStyleItemComment;
707typedef xsltStyleItemComment *xsltStyleItemCommentPtr;
708
718typedef struct _xsltStyleItemPI xsltStyleItemPI;
719typedef xsltStyleItemPI *xsltStyleItemPIPtr;
720
721struct _xsltStyleItemPI {
722 XSLT_ITEM_COMMON_FIELDS
723 const xmlChar *name;
724 int has_name;
725};
726
733typedef xsltStyleBasicEmptyItem xsltStyleItemApplyImports;
734typedef xsltStyleItemApplyImports *xsltStyleItemApplyImportsPtr;
735
746typedef struct _xsltStyleItemApplyTemplates xsltStyleItemApplyTemplates;
747typedef xsltStyleItemApplyTemplates *xsltStyleItemApplyTemplatesPtr;
748
749struct _xsltStyleItemApplyTemplates {
750 XSLT_ITEM_COMMON_FIELDS
751
752 const xmlChar *mode; /* apply-templates */
753 const xmlChar *modeURI; /* apply-templates */
754 const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
755 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
756 /* TODO: with-params */
757};
758
768typedef struct _xsltStyleItemCallTemplate xsltStyleItemCallTemplate;
769typedef xsltStyleItemCallTemplate *xsltStyleItemCallTemplatePtr;
770
771struct _xsltStyleItemCallTemplate {
772 XSLT_ITEM_COMMON_FIELDS
773
774 xsltTemplatePtr templ; /* call-template */
775 const xmlChar *name; /* element, attribute, pi */
776 int has_name; /* element, attribute, pi */
777 const xmlChar *ns; /* element */
778 int has_ns; /* element */
779 /* TODO: with-params */
780};
781
791typedef struct _xsltStyleItemCopy xsltStyleItemCopy;
792typedef xsltStyleItemCopy *xsltStyleItemCopyPtr;
793
794struct _xsltStyleItemCopy {
795 XSLT_ITEM_COMMON_FIELDS
796 const xmlChar *use; /* copy, element */
797 int has_use; /* copy, element */
798};
799
809typedef struct _xsltStyleItemIf xsltStyleItemIf;
810typedef xsltStyleItemIf *xsltStyleItemIfPtr;
811
812struct _xsltStyleItemIf {
813 XSLT_ITEM_COMMON_FIELDS
814
815 const xmlChar *test; /* if */
816 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
817};
818
819
827typedef xsltStyleBasicExpressionItem xsltStyleItemCopyOf;
828typedef xsltStyleItemCopyOf *xsltStyleItemCopyOfPtr;
829
838typedef struct _xsltStyleItemValueOf xsltStyleItemValueOf;
839typedef xsltStyleItemValueOf *xsltStyleItemValueOfPtr;
840
841struct _xsltStyleItemValueOf {
842 XSLT_ITEM_COMMON_FIELDS
843
844 const xmlChar *select;
845 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
846 int noescape;
847};
848
864typedef struct _xsltStyleItemNumber xsltStyleItemNumber;
865typedef xsltStyleItemNumber *xsltStyleItemNumberPtr;
866
867struct _xsltStyleItemNumber {
868 XSLT_ITEM_COMMON_FIELDS
869 xsltNumberData numdata; /* number */
870};
871
880typedef xsltStyleBasicEmptyItem xsltStyleItemChoose;
881typedef xsltStyleItemChoose *xsltStyleItemChoosePtr;
882
891typedef xsltStyleBasicEmptyItem xsltStyleItemFallback;
892typedef xsltStyleItemFallback *xsltStyleItemFallbackPtr;
893
903typedef xsltStyleBasicExpressionItem xsltStyleItemForEach;
904typedef xsltStyleItemForEach *xsltStyleItemForEachPtr;
905
915typedef struct _xsltStyleItemMessage xsltStyleItemMessage;
916typedef xsltStyleItemMessage *xsltStyleItemMessagePtr;
917
918struct _xsltStyleItemMessage {
919 XSLT_ITEM_COMMON_FIELDS
920 int terminate;
921};
922
928typedef struct _xsltStyleItemDocument xsltStyleItemDocument;
929typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr;
930
931struct _xsltStyleItemDocument {
932 XSLT_ITEM_COMMON_FIELDS
933 int ver11; /* assigned: in xsltDocumentComp;
934 read: nowhere;
935 TODO: Check if we need. */
936 const xmlChar *filename; /* document URL */
937 int has_filename;
938};
939
940/************************************************************************
941 * *
942 * Non-instructions (actually properties of instructions/declarations) *
943 * *
944 ************************************************************************/
945
958typedef struct _xsltStyleBasicItemVariable xsltStyleBasicItemVariable;
959typedef xsltStyleBasicItemVariable *xsltStyleBasicItemVariablePtr;
960
961struct _xsltStyleBasicItemVariable {
962 XSLT_ITEM_COMMON_FIELDS
963
964 const xmlChar *select;
965 xmlXPathCompExprPtr comp;
966
967 const xmlChar *name;
968 int has_name;
969 const xmlChar *ns;
970 int has_ns;
971};
972
983typedef xsltStyleBasicItemVariable xsltStyleItemVariable;
984typedef xsltStyleItemVariable *xsltStyleItemVariablePtr;
985
996typedef struct _xsltStyleItemParam xsltStyleItemParam;
997typedef xsltStyleItemParam *xsltStyleItemParamPtr;
998
999struct _xsltStyleItemParam {
1000 XSLT_ITEM_COMMON_FIELDS
1001
1002 const xmlChar *select;
1003 xmlXPathCompExprPtr comp;
1004
1005 const xmlChar *name;
1006 int has_name;
1007 const xmlChar *ns;
1008 int has_ns;
1009};
1010
1020typedef xsltStyleBasicItemVariable xsltStyleItemWithParam;
1021typedef xsltStyleItemWithParam *xsltStyleItemWithParamPtr;
1022
1035typedef struct _xsltStyleItemSort xsltStyleItemSort;
1036typedef xsltStyleItemSort *xsltStyleItemSortPtr;
1037
1038struct _xsltStyleItemSort {
1039 XSLT_ITEM_COMMON_FIELDS
1040
1041 const xmlChar *stype; /* sort */
1042 int has_stype; /* sort */
1043 int number; /* sort */
1044 const xmlChar *order; /* sort */
1045 int has_order; /* sort */
1046 int descending; /* sort */
1047 const xmlChar *lang; /* sort */
1048 int has_lang; /* sort */
1049 const xmlChar *case_order; /* sort */
1050 int lower_first; /* sort */
1051
1052 const xmlChar *use;
1053 int has_use;
1054
1055 const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
1056
1057 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
1058};
1059
1060
1070typedef struct _xsltStyleItemWhen xsltStyleItemWhen;
1071typedef xsltStyleItemWhen *xsltStyleItemWhenPtr;
1072
1073struct _xsltStyleItemWhen {
1074 XSLT_ITEM_COMMON_FIELDS
1075
1076 const xmlChar *test;
1077 xmlXPathCompExprPtr comp;
1078};
1079
1088typedef struct _xsltStyleItemOtherwise xsltStyleItemOtherwise;
1089typedef xsltStyleItemOtherwise *xsltStyleItemOtherwisePtr;
1090
1091struct _xsltStyleItemOtherwise {
1092 XSLT_ITEM_COMMON_FIELDS
1093};
1094
1095typedef struct _xsltStyleItemInclude xsltStyleItemInclude;
1096typedef xsltStyleItemInclude *xsltStyleItemIncludePtr;
1097
1098struct _xsltStyleItemInclude {
1099 XSLT_ITEM_COMMON_FIELDS
1101};
1102
1103/************************************************************************
1104 * *
1105 * XSLT elements in forwards-compatible mode *
1106 * *
1107 ************************************************************************/
1108
1109typedef struct _xsltStyleItemUknown xsltStyleItemUknown;
1110typedef xsltStyleItemUknown *xsltStyleItemUknownPtr;
1111struct _xsltStyleItemUknown {
1112 XSLT_ITEM_COMMON_FIELDS
1113};
1114
1115
1116/************************************************************************
1117 * *
1118 * Extension elements *
1119 * *
1120 ************************************************************************/
1121
1122/*
1123 * xsltStyleItemExtElement:
1124 *
1125 * Reflects extension elements.
1126 *
1127 * NOTE: Due to the fact that the structure xsltElemPreComp is most
1128 * probably already heavily in use out there by users, so we cannot
1129 * easily change it, we'll create an intermediate structure which will
1130 * hold an xsltElemPreCompPtr.
1131 * BIG NOTE: The only problem I see here is that the user processes the
1132 * content of the stylesheet tree, possibly he'll lookup the node->psvi
1133 * fields in order to find subsequent extension functions.
1134 * In this case, the user's code will break, since the node->psvi
1135 * field will hold now the xsltStyleItemExtElementPtr and not
1136 * the xsltElemPreCompPtr.
1137 * However the place where the structure is anchored in the node-tree,
1138 * namely node->psvi, has beed already once been moved from node->_private
1139 * to node->psvi, so we have a precedent here, which, I think, should allow
1140 * us to change such semantics without headaches.
1141 */
1142typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement;
1143typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr;
1144struct _xsltStyleItemExtElement {
1145 XSLT_ITEM_COMMON_FIELDS
1147};
1148
1149/************************************************************************
1150 * *
1151 * Literal result elements *
1152 * *
1153 ************************************************************************/
1154
1155typedef struct _xsltEffectiveNs xsltEffectiveNs;
1156typedef xsltEffectiveNs *xsltEffectiveNsPtr;
1157struct _xsltEffectiveNs {
1158 xsltEffectiveNsPtr nextInStore; /* storage next */
1159 xsltEffectiveNsPtr next; /* next item in the list */
1160 const xmlChar *prefix;
1161 const xmlChar *nsName;
1162 /*
1163 * Indicates if eclared on the literal result element; dunno if really
1164 * needed.
1165 */
1166 int holdByElem;
1167};
1168
1169/*
1170 * Info for literal result elements.
1171 * This will be set on the elem->psvi field and will be
1172 * shared by literal result elements, which have the same
1173 * excluded result namespaces; i.e., this *won't* be created uniquely
1174 * for every literal result element.
1175 */
1176typedef struct _xsltStyleItemLRElementInfo xsltStyleItemLRElementInfo;
1177typedef xsltStyleItemLRElementInfo *xsltStyleItemLRElementInfoPtr;
1178struct _xsltStyleItemLRElementInfo {
1179 XSLT_ITEM_COMMON_FIELDS
1180 /*
1181 * @effectiveNs is the set of effective ns-nodes
1182 * on the literal result element, which will be added to the result
1183 * element if not already existing in the result tree.
1184 * This means that excluded namespaces (via exclude-result-prefixes,
1185 * extension-element-prefixes and the XSLT namespace) not added
1186 * to the set.
1187 * Namespace-aliasing was applied on the @effectiveNs.
1188 */
1189 xsltEffectiveNsPtr effectiveNs;
1190
1191};
1192
1193#ifdef XSLT_REFACTORED
1194
1195typedef struct _xsltNsAlias xsltNsAlias;
1196typedef xsltNsAlias *xsltNsAliasPtr;
1197struct _xsltNsAlias {
1198 xsltNsAliasPtr next; /* next in the list */
1199 xmlNsPtr literalNs;
1200 xmlNsPtr targetNs;
1201 xmlDocPtr docOfTargetNs;
1202};
1203#endif
1204
1205#ifdef XSLT_REFACTORED_XSLT_NSCOMP
1206
1207typedef struct _xsltNsMap xsltNsMap;
1208typedef xsltNsMap *xsltNsMapPtr;
1209struct _xsltNsMap {
1210 xsltNsMapPtr next; /* next in the list */
1211 xmlDocPtr doc;
1212 xmlNodePtr elem; /* the element holding the ns-decl */
1213 xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */
1214 const xmlChar *origNsName; /* the original XML namespace name */
1215 const xmlChar *newNsName; /* the mapped XML namespace name */
1216};
1217#endif
1218
1219/************************************************************************
1220 * *
1221 * Compile-time structures for *internal* use only *
1222 * *
1223 ************************************************************************/
1224
1225typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData;
1226typedef xsltPrincipalStylesheetData *xsltPrincipalStylesheetDataPtr;
1227
1228typedef struct _xsltNsList xsltNsList;
1229typedef xsltNsList *xsltNsListPtr;
1230struct _xsltNsList {
1231 xsltNsListPtr next; /* next in the list */
1232 xmlNsPtr ns;
1233};
1234
1235/*
1236* xsltVarInfo:
1237*
1238* Used at compilation time for parameters and variables.
1239*/
1240typedef struct _xsltVarInfo xsltVarInfo;
1241typedef xsltVarInfo *xsltVarInfoPtr;
1242struct _xsltVarInfo {
1243 xsltVarInfoPtr next; /* next in the list */
1244 xsltVarInfoPtr prev;
1245 int depth; /* the depth in the tree */
1246 const xmlChar *name;
1247 const xmlChar *nsName;
1248};
1249
1255typedef struct _xsltCompilerNodeInfo xsltCompilerNodeInfo;
1256typedef xsltCompilerNodeInfo *xsltCompilerNodeInfoPtr;
1257struct _xsltCompilerNodeInfo {
1258 xsltCompilerNodeInfoPtr next;
1259 xsltCompilerNodeInfoPtr prev;
1260 xmlNodePtr node;
1261 int depth;
1262 xsltTemplatePtr templ; /* The owning template */
1263 int category; /* XSLT element, LR-element or
1264 extension element */
1266 xsltElemPreCompPtr item; /* The compiled information */
1267 /* The current in-scope namespaces */
1268 xsltNsListContainerPtr inScopeNs;
1269 /* The current excluded result namespaces */
1270 xsltPointerListPtr exclResultNs;
1271 /* The current extension instruction namespaces */
1272 xsltPointerListPtr extElemNs;
1273
1274 /* The current info for literal result elements. */
1275 xsltStyleItemLRElementInfoPtr litResElemInfo;
1276 /*
1277 * Set to 1 if in-scope namespaces changed,
1278 * or excluded result namespaces changed,
1279 * or extension element namespaces changed.
1280 * This will trigger creation of new infos
1281 * for literal result elements.
1282 */
1283 int nsChanged;
1284 int preserveWhitespace;
1285 int stripWhitespace;
1286 int isRoot; /* whether this is the stylesheet's root node */
1287 int forwardsCompat; /* whether forwards-compatible mode is enabled */
1288 /* whether the content of an extension element was processed */
1289 int extContentHandled;
1290 /* the type of the current child */
1291 xsltStyleType curChildType;
1292};
1293
1299#define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt)
1300
1301typedef enum {
1302 XSLT_ERROR_SEVERITY_ERROR = 0,
1303 XSLT_ERROR_SEVERITY_WARNING
1304} xsltErrorSeverityType;
1305
1306typedef struct _xsltCompilerCtxt xsltCompilerCtxt;
1307typedef xsltCompilerCtxt *xsltCompilerCtxtPtr;
1308struct _xsltCompilerCtxt {
1309 void *errorCtxt; /* user specific error context */
1310 /*
1311 * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */
1312 xsltErrorSeverityType errSeverity;
1313 int warnings; /* TODO: number of warnings found at
1314 compilation */
1315 int errors; /* TODO: number of errors found at
1316 compilation */
1317 xmlDictPtr dict;
1319 int simplified; /* whether this is a simplified stylesheet */
1320 /* TODO: structured/unstructured error contexts. */
1321 int depth; /* Current depth of processing */
1322
1323 xsltCompilerNodeInfoPtr inode;
1324 xsltCompilerNodeInfoPtr inodeList;
1325 xsltCompilerNodeInfoPtr inodeLast;
1326 xsltPointerListPtr tmpList; /* Used for various purposes */
1327 /*
1328 * The XSLT version as specified by the stylesheet's root element.
1329 */
1330 int isInclude;
1331 int hasForwardsCompat; /* whether forwards-compatible mode was used
1332 in a parsing episode */
1333 int maxNodeInfos; /* TEMP TODO: just for the interest */
1334 int maxLREs; /* TEMP TODO: just for the interest */
1335 /*
1336 * In order to keep the old behaviour, applying strict rules of
1337 * the spec can be turned off. This has effect only on special
1338 * mechanisms like whitespace-stripping in the stylesheet.
1339 */
1340 int strict;
1341 xsltPrincipalStylesheetDataPtr psData;
1342 xsltStyleItemUknownPtr unknownItem;
1343 int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */
1344 xsltNsAliasPtr nsAliases;
1345 xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */
1346 xsltVarInfoPtr ivar; /* topmost local variable/param. */
1347};
1348
1349#else /* XSLT_REFACTORED */
1350/*
1351* The old structures before refactoring.
1352*/
1353
1361 xsltElemPreCompPtr next; /* chained list */
1362 xsltStyleType type; /* type of the element */
1363 xsltTransformFunction func; /* handling function */
1364 xmlNodePtr inst; /* the instruction */
1365
1366 /*
1367 * Pre computed values.
1368 */
1369
1370 const xmlChar *stype; /* sort */
1371 int has_stype; /* sort */
1372 int number; /* sort */
1373 const xmlChar *order; /* sort */
1374 int has_order; /* sort */
1375 int descending; /* sort */
1376 const xmlChar *lang; /* sort */
1377 int has_lang; /* sort */
1378 const xmlChar *case_order; /* sort */
1379 int lower_first; /* sort */
1380
1381 const xmlChar *use; /* copy, element */
1382 int has_use; /* copy, element */
1383
1384 int noescape; /* text */
1385
1386 const xmlChar *name; /* element, attribute, pi */
1387 int has_name; /* element, attribute, pi */
1388 const xmlChar *ns; /* element */
1389 int has_ns; /* element */
1390
1391 const xmlChar *mode; /* apply-templates */
1392 const xmlChar *modeURI; /* apply-templates */
1393
1394 const xmlChar *test; /* if */
1395
1396 xsltTemplatePtr templ; /* call-template */
1397
1398 const xmlChar *select; /* sort, copy-of, value-of, apply-templates */
1399
1400 int ver11; /* document */
1401 const xmlChar *filename; /* document URL */
1402 int has_filename; /* document */
1403
1405
1406 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */
1407 xmlNsPtr *nsList; /* the namespaces in scope */
1408 int nsNr; /* the number of namespaces in scope */
1409};
1410
1411#endif /* XSLT_REFACTORED */
1412
1413
1414/*
1415 * The in-memory structure corresponding to an XSLT Variable
1416 * or Param.
1417 */
1421 struct _xsltStackElem *next;/* chained list */
1422 xsltStylePreCompPtr comp; /* the compiled form */
1423 int computed; /* was the evaluation done */
1424 const xmlChar *name; /* the local part of the name QName */
1425 const xmlChar *nameURI; /* the URI part of the name QName */
1426 const xmlChar *select; /* the eval string */
1427 xmlNodePtr tree; /* the sequence constructor if no eval
1428 string or the location */
1429 xmlXPathObjectPtr value; /* The value if computed */
1430 xmlDocPtr fragment; /* The Result Tree Fragments (needed for XSLT 1.0)
1431 which are bound to the variable's lifetime. */
1432 int level; /* the depth in the tree;
1433 -1 if persistent (e.g. a given xsl:with-param) */
1434 xsltTransformContextPtr context; /* The transformation context; needed to cache
1435 the variables */
1437};
1438
1439#ifdef XSLT_REFACTORED
1440
1441struct _xsltPrincipalStylesheetData {
1442 /*
1443 * Namespace dictionary for ns-prefixes and ns-names:
1444 * TODO: Shared between stylesheets, and XPath mechanisms.
1445 * Not used yet.
1446 */
1447 xmlDictPtr namespaceDict;
1448 /*
1449 * Global list of in-scope namespaces.
1450 */
1451 xsltPointerListPtr inScopeNamespaces;
1452 /*
1453 * Global list of information for [xsl:]excluded-result-prefixes.
1454 */
1455 xsltPointerListPtr exclResultNamespaces;
1456 /*
1457 * Global list of information for [xsl:]extension-element-prefixes.
1458 */
1459 xsltPointerListPtr extElemNamespaces;
1460 xsltEffectiveNsPtr effectiveNs;
1461#ifdef XSLT_REFACTORED_XSLT_NSCOMP
1462 /*
1463 * Namespace name map to get rid of string comparison of namespace names.
1464 */
1465 xsltNsMapPtr nsMap;
1466#endif
1467};
1468
1469
1470#endif
1471/*
1472 * Note that we added a @compCtxt field to anchor an stylesheet compilation
1473 * context, since, due to historical reasons, various compile-time function
1474 * take only the stylesheet as argument and not a compilation context.
1475 */
1477 /*
1478 * The stylesheet import relation is kept as a tree.
1479 */
1483
1484 xsltDocumentPtr docList; /* the include document list */
1485
1486 /*
1487 * General data on the style sheet document.
1488 */
1489 xmlDocPtr doc; /* the parsed XML stylesheet */
1490 xmlHashTablePtr stripSpaces;/* the hash table of the strip-space and
1491 preserve space elements */
1492 int stripAll; /* strip-space * (1) preserve-space * (-1) */
1493 xmlHashTablePtr cdataSection;/* the hash table of the cdata-section */
1494
1495 /*
1496 * Global variable or parameters.
1497 */
1498 xsltStackElemPtr variables; /* linked list of param and variables */
1499
1500 /*
1501 * Template descriptions.
1502 */
1503 xsltTemplatePtr templates; /* the ordered list of templates */
1504 xmlHashTablePtr templatesHash; /* hash table or wherever compiled
1505 templates information is stored */
1506 struct _xsltCompMatch *rootMatch; /* template based on / */
1507 struct _xsltCompMatch *keyMatch; /* template based on key() */
1508 struct _xsltCompMatch *elemMatch; /* template based on * */
1509 struct _xsltCompMatch *attrMatch; /* template based on @* */
1510 struct _xsltCompMatch *parentMatch; /* template based on .. */
1511 struct _xsltCompMatch *textMatch; /* template based on text() */
1512 struct _xsltCompMatch *piMatch; /* template based on
1513 processing-instruction() */
1514 struct _xsltCompMatch *commentMatch; /* template based on comment() */
1515
1516 /*
1517 * Namespace aliases.
1518 * NOTE: Not used in the refactored code.
1519 */
1520 xmlHashTablePtr nsAliases; /* the namespace alias hash tables */
1521
1522 /*
1523 * Attribute sets.
1524 */
1525 xmlHashTablePtr attributeSets;/* the attribute sets hash tables */
1526
1527 /*
1528 * Namespaces.
1529 * TODO: Eliminate this.
1530 */
1531 xmlHashTablePtr nsHash; /* the set of namespaces in use:
1532 ATTENTION: This is used for
1533 execution of XPath expressions; unfortunately
1534 it restricts the stylesheet to have distinct
1535 prefixes.
1536 TODO: We need to get rid of this.
1537 */
1538 void *nsDefs; /* ATTENTION TODO: This is currently used to store
1539 xsltExtDefPtr (in extensions.c) and
1540 *not* xmlNsPtr.
1541 */
1542
1543 /*
1544 * Key definitions.
1545 */
1546 void *keys; /* key definitions */
1547
1548 /*
1549 * Output related stuff.
1550 */
1551 xmlChar *method; /* the output method */
1552 xmlChar *methodURI; /* associated namespace if any */
1553 xmlChar *version; /* version string */
1554 xmlChar *encoding; /* encoding string */
1555 int omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */
1556
1557 /*
1558 * Number formatting.
1559 */
1561 int standalone; /* standalone = "yes" | "no" */
1562 xmlChar *doctypePublic; /* doctype-public string */
1563 xmlChar *doctypeSystem; /* doctype-system string */
1564 int indent; /* should output being indented */
1565 xmlChar *mediaType; /* media-type string */
1566
1567 /*
1568 * Precomputed blocks.
1569 */
1570 xsltElemPreCompPtr preComps;/* list of precomputed blocks */
1571 int warnings; /* number of warnings found at compilation */
1572 int errors; /* number of errors found at compilation */
1573
1574 xmlChar *exclPrefix; /* last excluded prefixes */
1575 xmlChar **exclPrefixTab; /* array of excluded prefixes */
1576 int exclPrefixNr; /* number of excluded prefixes in scope */
1577 int exclPrefixMax; /* size of the array */
1578
1579 void *_private; /* user defined data */
1580
1581 /*
1582 * Extensions.
1583 */
1584 xmlHashTablePtr extInfos; /* the extension data */
1585 int extrasNr; /* the number of extras required */
1586
1587 /*
1588 * For keeping track of nested includes
1589 */
1590 xsltDocumentPtr includes; /* points to last nested include */
1591
1592 /*
1593 * dictionary: shared between stylesheet, context and documents.
1594 */
1596 /*
1597 * precompiled attribute value templates.
1598 */
1599 void *attVTs;
1600 /*
1601 * if namespace-alias has an alias for the default stylesheet prefix
1602 * NOTE: Not used in the refactored code.
1603 */
1605 /*
1606 * bypass pre-processing (already done) (used in imports)
1607 */
1609 /*
1610 * all document text strings were internalized
1611 */
1613 /*
1614 * Literal Result Element as Stylesheet c.f. section 2.3
1615 */
1617 /*
1618 * The principal stylesheet
1619 */
1621#ifdef XSLT_REFACTORED
1622 /*
1623 * Compilation context used during compile-time.
1624 */
1625 xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */
1626
1627 xsltPrincipalStylesheetDataPtr principalData;
1628#endif
1629 /*
1630 * Forwards-compatible processing
1631 */
1633
1634 xmlHashTablePtr namedTemplates; /* hash table of named templates */
1635
1636 xmlXPathContextPtr xpathCtxt;
1637
1638 unsigned long opLimit;
1639 unsigned long opCount;
1640};
1641
1645 xmlDocPtr RVT;
1649#ifdef XSLT_DEBUG_PROFILE_CACHE
1650 int dbgCachedRVTs;
1651 int dbgReusedRVTs;
1652 int dbgCachedVars;
1653 int dbgReusedVars;
1654#endif
1655};
1656
1657/*
1658 * The in-memory structure corresponding to an XSLT Transformation.
1659 */
1660typedef enum {
1665
1666typedef void *
1667(*xsltNewLocaleFunc)(const xmlChar *lang, int lowerFirst);
1668typedef void
1669(*xsltFreeLocaleFunc)(void *locale);
1670typedef xmlChar *
1671(*xsltGenSortKeyFunc)(void *locale, const xmlChar *lang);
1672
1673typedef enum {
1678
1680 xsltStylesheetPtr style; /* the stylesheet used */
1681 xsltOutputType type; /* the type of output */
1682
1683 xsltTemplatePtr templ; /* the current template */
1684 int templNr; /* Nb of templates in the stack */
1685 int templMax; /* Size of the templtes stack */
1686 xsltTemplatePtr *templTab; /* the template stack */
1687
1688 xsltStackElemPtr vars; /* the current variable list */
1689 int varsNr; /* Nb of variable list in the stack */
1690 int varsMax; /* Size of the variable list stack */
1691 xsltStackElemPtr *varsTab; /* the variable list stack */
1692 int varsBase; /* the var base for current templ */
1693
1694 /*
1695 * Extensions
1696 */
1697 xmlHashTablePtr extFunctions; /* the extension functions */
1698 xmlHashTablePtr extElements; /* the extension elements */
1699 xmlHashTablePtr extInfos; /* the extension data */
1700
1701 const xmlChar *mode; /* the current mode */
1702 const xmlChar *modeURI; /* the current mode URI */
1703
1704 xsltDocumentPtr docList; /* the document list */
1705
1706 xsltDocumentPtr document; /* the current source document; can be NULL if an RTF */
1707 xmlNodePtr node; /* the current node being processed */
1708 xmlNodeSetPtr nodeList; /* the current node list */
1709 /* xmlNodePtr current; the node */
1710
1711 xmlDocPtr output; /* the resulting document */
1712 xmlNodePtr insert; /* the insertion node */
1713
1714 xmlXPathContextPtr xpathCtxt; /* the XPath context */
1715 xsltTransformState state; /* the current state */
1716
1717 /*
1718 * Global variables
1719 */
1720 xmlHashTablePtr globalVars; /* the global variables and params */
1721
1722 xmlNodePtr inst; /* the instruction in the stylesheet */
1723
1724 int xinclude; /* should XInclude be processed */
1725
1726 const char * outputFile; /* the output URI if known */
1727
1728 int profile; /* is this run profiled */
1729 long prof; /* the current profiled value */
1730 int profNr; /* Nb of templates in the stack */
1731 int profMax; /* Size of the templtaes stack */
1732 long *profTab; /* the profile template stack */
1733
1734 void *_private; /* user defined data */
1735
1736 int extrasNr; /* the number of extras used */
1737 int extrasMax; /* the number of extras allocated */
1738 xsltRuntimeExtraPtr extras; /* extra per runtime information */
1739
1740 xsltDocumentPtr styleList; /* the stylesheet docs list */
1741 void * sec; /* the security preferences if any */
1742
1743 xmlGenericErrorFunc error; /* a specific error handler */
1744 void * errctx; /* context for the error handler */
1745
1746 xsltSortFunc sortfunc; /* a ctxt specific sort routine */
1747
1748 /*
1749 * handling of temporary Result Value Tree
1750 * (XSLT 1.0 term: "Result Tree Fragment")
1751 */
1752 xmlDocPtr tmpRVT; /* list of RVT without persistance */
1753 xmlDocPtr persistRVT; /* list of persistant RVTs */
1754 int ctxtflags; /* context processing flags */
1755
1756 /*
1757 * Speed optimization when coalescing text nodes
1758 */
1759 const xmlChar *lasttext; /* last text node content */
1760 int lasttsize; /* last text node size */
1761 int lasttuse; /* last text node use */
1762 /*
1763 * Per Context Debugging
1764 */
1765 int debugStatus; /* the context level debug status */
1766 unsigned long* traceCode; /* pointer to the variable holding the mask */
1767
1768 int parserOptions; /* parser options xmlParserOption */
1769
1770 /*
1771 * dictionary: shared between stylesheet, context and documents.
1772 */
1774 xmlDocPtr tmpDoc; /* Obsolete; not used in the library. */
1775 /*
1776 * all document text strings are internalized
1777 */
1781 xsltTemplatePtr currentTemplateRule; /* the Current Template Rule */
1785 void *contextVariable; /* the current variable item */
1786 xmlDocPtr localRVT; /* list of local tree fragments; will be freed when
1787 the instruction which created the fragment
1788 exits */
1789 xmlDocPtr localRVTBase; /* Obsolete */
1790 int keyInitLevel; /* Needed to catch recursive keys issues */
1791 int depth; /* Needed to catch recursions */
1794 unsigned long opLimit;
1795 unsigned long opCount;
1797 unsigned long currentId; /* For generate-id() */
1798
1802};
1803
1810#define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return;
1811
1818#define CHECK_STOPPEDE if (ctxt->state == XSLT_STATE_STOPPED) goto error;
1819
1826#define CHECK_STOPPED0 if (ctxt->state == XSLT_STATE_STOPPED) return(0);
1827
1828/*
1829 * The macro XML_CAST_FPTR is a hack to avoid a gcc warning about
1830 * possible incompatibilities between function pointers and object
1831 * pointers. It is defined in libxml/hash.h within recent versions
1832 * of libxml2, but is put here for compatibility.
1833 */
1834#ifndef XML_CAST_FPTR
1848#define XML_CAST_FPTR(fptr) fptr
1849#endif
1850/*
1851 * Functions associated to the internal types
1852xsltDecimalFormatPtr xsltDecimalFormatGetByName(xsltStylesheetPtr sheet,
1853 xmlChar *name);
1854 */
1856 xsltNewStylesheet (void);
1867 xmlChar *name);
1870 const xmlChar *nsUri,
1871 const xmlChar *name);
1872
1875 xmlDocPtr doc);
1878 xmlNodePtr cur);
1880 xsltParseStylesheetDoc (xmlDocPtr doc);
1882 xsltParseStylesheetImportedDoc(xmlDocPtr doc,
1886 xmlDocPtr doc);
1888 xsltLoadStylesheetPI (xmlDocPtr doc);
1892 xmlNodePtr node);
1893XSLTPUBFUN xmlXPathError XSLTCALL
1895 xmlChar *format,
1896 double number,
1897 xmlChar **result);
1898
1901 xmlNodePtr templ);
1906/*
1907 * Extra functions for Result Value Trees
1908 */
1909XSLTPUBFUN xmlDocPtr XSLTCALL
1913 xmlDocPtr RVT);
1916 xmlDocPtr RVT);
1919 xmlDocPtr RVT);
1923 xmlXPathObjectPtr obj);
1930 xmlXPathObjectPtr obj,
1931 int val);
1936 xmlDocPtr RVT);
1937/*
1938 * Extra functions for Attribute Value Templates
1939 */
1942 xmlAttrPtr attr);
1945 void *avt,
1946 xmlNodePtr node);
1948 xsltFreeAVTList (void *avt);
1949
1950/*
1951 * Extra function for successful xsltCleanupGlobals / xsltInit sequence.
1952 */
1953
1955 xsltUninit (void);
1956
1957/************************************************************************
1958 * *
1959 * Compile-time functions for *internal* use only *
1960 * *
1961 ************************************************************************/
1962
1963#ifdef XSLT_REFACTORED
1965 xsltParseSequenceConstructor(
1966 xsltCompilerCtxtPtr cctxt,
1967 xmlNodePtr start);
1969 xsltParseAnyXSLTElem (xsltCompilerCtxtPtr cctxt,
1970 xmlNodePtr elem);
1971#ifdef XSLT_REFACTORED_XSLT_NSCOMP
1973 xsltRestoreDocumentNamespaces(
1974 xsltNsMapPtr ns,
1975 xmlDocPtr doc);
1976#endif
1977#endif /* XSLT_REFACTORED */
1978
1979/************************************************************************
1980 * *
1981 * Transformation-time functions for *internal* use only *
1982 * *
1983 ************************************************************************/
1986 xsltDocumentPtr doc,
1987 xsltKeyDefPtr keyd);
1990#ifdef __cplusplus
1991}
1992#endif
1993
1994#endif /* __XML_XSLT_H__ */
Arabic default style
Definition: afstyles.h:94
const char * stype[]
Definition: cmds.c:192
Definition: list.h:37
Definition: _locale.h:75
static SIZE_T const char const D3D_SHADER_MACRO ID3DInclude * include
Definition: asm.c:31
void CDECL terminate(void)
Definition: cpp.c:701
INT WSAAPI select(IN INT s, IN OUT LPFD_SET readfds, IN OUT LPFD_SET writefds, IN OUT LPFD_SET exceptfds, IN CONST struct timeval *timeout)
Definition: select.c:41
return ret
Definition: mutex.c:146
FxCollectionEntry * cur
GLuint start
Definition: gl.h:1545
GLint GLint GLsizei GLsizei GLsizei depth
Definition: gl.h:1546
GLuint GLuint GLsizei GLenum type
Definition: gl.h:1545
GLint GLenum GLsizei GLsizei GLsizei GLint GLsizei const GLvoid * data
Definition: gl.h:1950
GLsizeiptr size
Definition: glext.h:5919
GLenum mode
Definition: glext.h:6217
GLuint GLfloat * val
Definition: glext.h:7180
GLuint64EXT * result
Definition: glext.h:11304
GLuint GLdouble GLdouble GLint GLint order
Definition: glext.h:11194
const char * filename
Definition: ioapi.h:137
static unsigned int number
Definition: dsound.c:1479
static size_t elem
Definition: string.c:71
static int strict
Definition: error.c:51
static TCHAR * items[]
Definition: page1.c:45
static unsigned __int64 next
Definition: rand_nt.c:6
#define list
Definition: rosglue.h:35
#define test
Definition: rosglue.h:37
const WCHAR * str
Definition: dict.c:59
xmlChar * decimalPoint
const xmlChar * nsUri
xmlChar * patternSeparator
struct _xsltDecimalFormat * next
xmlDocPtr doc
struct _xsltDocument * includes
struct _xsltDocument * next
xsltElemPreCompDeallocator free
xsltElemPreCompPtr next
xsltStyleType type
xsltTransformFunction func
xmlNsPtr * nsList
xmlChar * use
xmlChar * match
struct _xsltKeyDef * next
xmlXPathCompExprPtr comp
xmlChar * nameURI
xmlXPathCompExprPtr usecomp
xmlChar * name
xmlNodePtr inst
xmlChar * nameURI
xmlHashTablePtr keys
xmlChar * name
struct _xsltKeyTable * next
xmlFreeFunc deallocate
union _xsltRuntimeExtra::@3692 val
xsltStylePreCompPtr comp
struct _xsltStackElem * next
xmlNodePtr tree
xsltTransformContextPtr context
xmlXPathObjectPtr value
const xmlChar * nameURI
xmlDocPtr fragment
const xmlChar * select
const xmlChar * name
xsltTemplatePtr templ
const xmlChar * lang
xsltStyleType type
const xmlChar * order
const xmlChar * stype
const xmlChar * name
const xmlChar * test
xsltElemPreCompPtr next
xsltTransformFunction func
const xmlChar * select
const xmlChar * use
const xmlChar * case_order
const xmlChar * modeURI
xmlXPathCompExprPtr comp
const xmlChar * ns
xsltNumberData numdata
const xmlChar * mode
const xmlChar * filename
xmlChar * methodURI
xmlChar ** exclPrefixTab
xsltDocumentPtr includes
struct _xsltCompMatch * rootMatch
xmlHashTablePtr nsAliases
struct _xsltStylesheet * next
xmlChar * mediaType
xmlHashTablePtr namedTemplates
xsltTemplatePtr templates
struct _xsltCompMatch * textMatch
xmlXPathContextPtr xpathCtxt
struct _xsltStylesheet * imports
xsltDecimalFormatPtr decimalFormat
xsltStackElemPtr variables
struct _xsltCompMatch * elemMatch
struct _xsltCompMatch * piMatch
xmlHashTablePtr templatesHash
xsltElemPreCompPtr preComps
struct _xsltStylesheet * parent
struct _xsltCompMatch * parentMatch
xmlChar * doctypePublic
xsltDocumentPtr docList
xmlHashTablePtr cdataSection
struct _xsltCompMatch * attrMatch
const xmlChar * defaultAlias
unsigned long opLimit
xmlChar * encoding
unsigned long opCount
struct _xsltCompMatch * commentMatch
xmlHashTablePtr stripSpaces
xsltStylesheetPtr principal
xmlChar * doctypeSystem
xmlChar * exclPrefix
xmlHashTablePtr attributeSets
struct _xsltCompMatch * keyMatch
xmlHashTablePtr extInfos
xmlHashTablePtr nsHash
xmlNodePtr elem
struct _xsltTemplate * next
xmlNodePtr content
const xmlChar * modeURI
const xmlChar * name
xmlNsPtr * inheritedNs
const xmlChar * mode
unsigned long time
struct _xsltStylesheet * style
xsltTemplatePtr * templCalledTab
xmlChar * match
const xmlChar * nameURI
xsltStackElemPtr stackItems
xsltTemplatePtr * templTab
xsltTransformState state
xsltNewLocaleFunc newLocale
const xmlChar * modeURI
xsltStackElemPtr vars
xmlHashTablePtr extElements
xsltDocumentPtr document
xsltTemplatePtr templ
unsigned long * traceCode
xmlHashTablePtr extFunctions
xmlHashTablePtr globalVars
xmlHashTablePtr extInfos
xmlNodeSetPtr nodeList
xsltTransformCachePtr cache
xsltGenSortKeyFunc genSortKey
xmlNodePtr initialContextNode
xsltFreeLocaleFunc freeLocale
xsltRuntimeExtraPtr extras
xsltTemplatePtr currentTemplateRule
xsltStylesheetPtr style
xsltStackElemPtr * varsTab
xmlGenericErrorFunc error
xmlXPathContextPtr xpathCtxt
xsltDocumentPtr docList
const xmlChar * lasttext
xsltDocumentPtr styleList
unsigned long currentId
const xmlChar * mode
Definition: cookie.c:202
Definition: format.c:58
Definition: fs.h:78
Definition: name.c:39
Definition: mxnamespace.c:38
Character const *const prefix
Definition: tempnam.cpp:195
Definition: dlist.c:348
static const WCHAR lang[]
Definition: wbemdisp.c:287
void(* xmlGenericErrorFunc)(void *ctx, const char *msg,...) LIBXML_ATTR_FORMAT(2
Definition: xmlerror.h:848
void(* xmlFreeFunc)(void *mem)
Definition: xmlmemory.h:31
unsigned char xmlChar
Definition: xmlstring.h:28
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltLoadStylesheetPI(xmlDocPtr doc)
Definition: xslt.c:6915
XSLTPUBFUN int XSLTCALL xsltExtensionInstructionResultRegister(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj)
Definition: variables.c:234
xmlChar *(* xsltGenSortKeyFunc)(void *locale, const xmlChar *lang)
xsltTransformContext * xsltTransformContextPtr
xsltKeyDef * xsltKeyDefPtr
xsltStyleType
@ XSLT_FUNC_WHEN
@ XSLT_FUNC_CALLTEMPLATE
@ XSLT_FUNC_ELEMENT
@ XSLT_FUNC_APPLYIMPORTS
@ XSLT_FUNC_DOCUMENT
@ XSLT_FUNC_CHOOSE
@ XSLT_FUNC_VARIABLE
@ XSLT_FUNC_WITHPARAM
@ XSLT_FUNC_APPLYTEMPLATES
@ XSLT_FUNC_TEXT
@ XSLT_FUNC_ATTRIBUTE
@ XSLT_FUNC_COPYOF
@ XSLT_FUNC_FOREACH
@ XSLT_FUNC_PI
@ XSLT_FUNC_VALUEOF
@ XSLT_FUNC_NUMBER
@ XSLT_FUNC_SORT
@ XSLT_FUNC_COMMENT
@ XSLT_FUNC_EXTENSION
@ XSLT_FUNC_IF
@ XSLT_FUNC_COPY
@ XSLT_FUNC_PARAM
void(* xsltSortFunc)(xsltTransformContextPtr ctxt, xmlNodePtr *sorts, int nbsorts)
XSLTPUBFUN void XSLTCALL xsltNumberFormat(xsltTransformContextPtr ctxt, xsltNumberDataPtr data, xmlNodePtr node)
Definition: numbers.c:744
XSLTPUBFUN void XSLTCALL xsltUninit(void)
Definition: xslt.c:232
XSLTPUBFUN void XSLTCALL xsltReleaseRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Definition: variables.c:351
XSLTPUBFUN void XSLTCALL xsltParseStylesheetOutput(xsltStylesheetPtr style, xmlNodePtr cur)
Definition: xslt.c:1185
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltParseStylesheetFile(const xmlChar *filename)
Definition: xslt.c:6752
XSLTPUBFUN int XSLTCALL xsltRegisterPersistRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Definition: variables.c:417
XSLTPUBFUN void XSLTCALL xsltParseTemplateContent(xsltStylesheetPtr style, xmlNodePtr templ)
Definition: xslt.c:4894
xsltTransformCache * xsltTransformCachePtr
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltParseStylesheetProcess(xsltStylesheetPtr ret, xmlDocPtr doc)
Definition: xslt.c:6447
void *(* xsltNewLocaleFunc)(const xmlChar *lang, int lowerFirst)
XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL xsltDecimalFormatGetByName(xsltStylesheetPtr style, xmlChar *name)
Definition: xslt.c:349
xsltElemPreComp * xsltElemPreCompPtr
XSLTPUBFUN void XSLTCALL xsltFreeStylesheet(xsltStylesheetPtr style)
Definition: xslt.c:965
xsltOutputType
@ XSLT_OUTPUT_XML
@ XSLT_OUTPUT_HTML
@ XSLT_OUTPUT_TEXT
XSLTPUBFUN void XSLTCALL xsltFreeAVTList(void *avt)
Definition: attrvt.c:131
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltNewStylesheet(void)
Definition: xslt.c:810
XSLTPUBFUN int XSLTCALL xsltIsBlank(xmlChar *str)
Definition: xslt.c:249
xsltStylesheet * xsltStylesheetPtr
xsltKeyTable * xsltKeyTablePtr
XSLTPUBFUN int XSLTCALL xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, int val)
Definition: variables.c:258
XSLTPUBFUN int XSLTCALL xsltAllocateExtraCtxt(xsltTransformContextPtr ctxt)
Definition: xslt.c:840
xsltRuntimeExtra * xsltRuntimeExtraPtr
XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL xsltDecimalFormatGetByQName(xsltStylesheetPtr style, const xmlChar *nsUri, const xmlChar *name)
Definition: xslt.c:379
xsltTemplate * xsltTemplatePtr
xsltTransformState
@ XSLT_STATE_ERROR
@ XSLT_STATE_STOPPED
@ XSLT_STATE_OK
XSLTPUBFUN void XSLTCALL xsltFreeStackElemList(xsltStackElemPtr elem)
Definition: variables.c:626
XSLTPUBFUN int XSLTCALL xsltRegisterLocalRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Definition: variables.c:159
XSLTPUBFUN int XSLTCALL xsltRegisterTmpRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
Definition: variables.c:120
xsltDecimalFormat * xsltDecimalFormatPtr
XSLTPUBFUN xmlXPathError XSLTCALL xsltFormatNumberConversion(xsltDecimalFormatPtr self, xmlChar *format, double number, xmlChar **result)
Definition: numbers.c:957
XSLTPUBFUN void XSLTCALL xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr)
Definition: attrvt.c:177
void(* xsltElemPreCompDeallocator)(xsltElemPreCompPtr comp)
XSLTPUBFUN int XSLTCALL xsltParseStylesheetUser(xsltStylesheetPtr style, xmlDocPtr doc)
Definition: xslt.c:6584
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltParseStylesheetImportedDoc(xmlDocPtr doc, xsltStylesheetPtr style)
Definition: xslt.c:6555
XSLTPUBFUN xmlChar *XSLTCALL xsltEvalAVT(xsltTransformContextPtr ctxt, void *avt, xmlNodePtr node)
Definition: attrvt.c:377
xsltStackElem * xsltStackElemPtr
XSLTPUBFUN xmlDocPtr XSLTCALL xsltCreateRVT(xsltTransformContextPtr ctxt)
Definition: variables.c:65
XSLTPUBFUN int XSLTCALL xsltAllocateExtra(xsltStylesheetPtr style)
Definition: xslt.c:824
xsltStylePreComp * xsltStylePreCompPtr
void(* xsltFreeLocaleFunc)(void *locale)
XSLTPUBFUN void XSLTCALL xsltFreeRVTs(xsltTransformContextPtr ctxt)
Definition: variables.c:439
XSLTPUBFUN int XSLTCALL xsltInitAllDocKeys(xsltTransformContextPtr ctxt)
Definition: keys.c:555
void(* xsltTransformFunction)(xsltTransformContextPtr ctxt, xmlNodePtr node, xmlNodePtr inst, xsltElemPreCompPtr comp)
XSLTPUBFUN xsltStylesheetPtr XSLTCALL xsltParseStylesheetDoc(xmlDocPtr doc)
Definition: xslt.c:6736
xsltDocument * xsltDocumentPtr
XSLTPUBFUN int XSLTCALL xsltExtensionInstructionResultFinalize(xsltTransformContextPtr ctxt)
Definition: variables.c:208
XSLTPUBFUN int XSLTCALL xsltInitCtxtKey(xsltTransformContextPtr ctxt, xsltDocumentPtr doc, xsltKeyDefPtr keyd)
Definition: keys.c:624
#define XSLTCALL
Definition: xsltexports.h:39
#define XSLTPUBFUN
Definition: xsltexports.h:48