OLD | NEW |
1 /* | 1 /* |
2 * Summary: internal data structures, constants and functions | 2 * Summary: internal data structures, constants and functions |
3 * Description: Internal data structures, constants and functions used | 3 * Description: Internal data structures, constants and functions used |
4 * by the XSLT engine. | 4 * by the XSLT engine. |
5 * They are not part of the API or ABI, i.e. they can change | 5 * They are not part of the API or ABI, i.e. they can change |
6 * without prior notice, use carefully. | 6 * without prior notice, use carefully. |
7 * | 7 * |
8 * Copy: See Copyright for the status of this software. | 8 * Copy: See Copyright for the status of this software. |
9 * | 9 * |
10 * Author: Daniel Veillard | 10 * Author: Daniel Veillard |
11 */ | 11 */ |
12 | 12 |
13 #ifndef __XML_XSLT_INTERNALS_H__ | 13 #ifndef __XML_XSLT_INTERNALS_H__ |
14 #define __XML_XSLT_INTERNALS_H__ | 14 #define __XML_XSLT_INTERNALS_H__ |
(...skipping 79 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
94 | 94 |
95 | 95 |
96 /* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */ | 96 /* TODO: REMOVE: #define XSLT_REFACTORED_EXCLRESNS */ |
97 | 97 |
98 /* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */ | 98 /* TODO: REMOVE: #define XSLT_REFACTORED_NSALIAS */ |
99 | 99 |
100 /** | 100 /** |
101 * XSLT_REFACTORED_XSLT_NSCOMP | 101 * XSLT_REFACTORED_XSLT_NSCOMP |
102 * | 102 * |
103 * Internal define to enable the pointer-comparison of | 103 * Internal define to enable the pointer-comparison of |
104 * namespaces of XSLT elements. | 104 * namespaces of XSLT elements. |
105 */ | 105 */ |
106 /* #define XSLT_REFACTORED_XSLT_NSCOMP */ | 106 /* #define XSLT_REFACTORED_XSLT_NSCOMP */ |
107 | 107 |
108 /** | 108 /** |
109 * XSLT_REFACTORED_XPATHCOMP: | 109 * XSLT_REFACTORED_XPATHCOMP: |
110 * | 110 * |
111 * Internal define to enable the optimization of the | 111 * Internal define to enable the optimization of the |
112 * compilation of XPath expressions. | 112 * compilation of XPath expressions. |
113 */ | 113 */ |
114 #define XSLT_REFACTORED_XPATHCOMP | 114 #define XSLT_REFACTORED_XPATHCOMP |
(...skipping 172 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
287 * TODO: @inheritedNsNr and @inheritedNs won't be used in the | 287 * TODO: @inheritedNsNr and @inheritedNs won't be used in the |
288 * refactored code. | 288 * refactored code. |
289 */ | 289 */ |
290 int inheritedNsNr; /* number of inherited namespaces */ | 290 int inheritedNsNr; /* number of inherited namespaces */ |
291 xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */ | 291 xmlNsPtr *inheritedNs;/* inherited non-excluded namespaces */ |
292 | 292 |
293 /* Profiling informations */ | 293 /* Profiling informations */ |
294 int nbCalls; /* the number of time the template was called */ | 294 int nbCalls; /* the number of time the template was called */ |
295 unsigned long time; /* the time spent in this template */ | 295 unsigned long time; /* the time spent in this template */ |
296 void *params; /* xsl:param instructions */ | 296 void *params; /* xsl:param instructions */ |
| 297 |
| 298 int templNr; /* Nb of templates in the stack */ |
| 299 int templMax; /* Size of the templtes stack */ |
| 300 xsltTemplatePtr *templCalledTab; /* templates called */ |
| 301 int *templCountTab; /* .. and how often */ |
297 }; | 302 }; |
298 | 303 |
299 /** | 304 /** |
300 * xsltDecimalFormat: | 305 * xsltDecimalFormat: |
301 * | 306 * |
302 * Data structure of decimal-format. | 307 * Data structure of decimal-format. |
303 */ | 308 */ |
304 typedef struct _xsltDecimalFormat xsltDecimalFormat; | 309 typedef struct _xsltDecimalFormat xsltDecimalFormat; |
305 typedef xsltDecimalFormat *xsltDecimalFormatPtr; | 310 typedef xsltDecimalFormat *xsltDecimalFormatPtr; |
306 struct _xsltDecimalFormat { | 311 struct _xsltDecimalFormat { |
(...skipping 160 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
467 * | 472 * |
468 * The basic structure for compiled items of the AST of the XSLT processor. | 473 * The basic structure for compiled items of the AST of the XSLT processor. |
469 * This structure is also intended to be extended by extension implementors. | 474 * This structure is also intended to be extended by extension implementors. |
470 * TODO: This is somehow not nice, since it has a "free" field, which | 475 * TODO: This is somehow not nice, since it has a "free" field, which |
471 * derived stylesheet-structs do not have. | 476 * derived stylesheet-structs do not have. |
472 */ | 477 */ |
473 struct _xsltElemPreComp { | 478 struct _xsltElemPreComp { |
474 xsltElemPreCompPtr next; /* next item in the global chained | 479 xsltElemPreCompPtr next; /* next item in the global chained |
475 list hold by xsltStylesheet. */ | 480 list hold by xsltStylesheet. */ |
476 xsltStyleType type; /* type of the element */ | 481 xsltStyleType type; /* type of the element */ |
477 xsltTransformFunction func; » /* handling function */ | 482 xsltTransformFunction func;»/* handling function */ |
478 xmlNodePtr inst; /* the node in the stylesheet's tree | 483 xmlNodePtr inst; /* the node in the stylesheet's tree |
479 corresponding to this item */ | 484 corresponding to this item */ |
480 | 485 |
481 /* end of common part */ | 486 /* end of common part */ |
482 xsltElemPreCompDeallocator free; /* the deallocator */ | 487 xsltElemPreCompDeallocator free; /* the deallocator */ |
483 }; | 488 }; |
484 | 489 |
485 /** | 490 /** |
486 * xsltStylePreComp: | 491 * xsltStylePreComp: |
487 * | 492 * |
(...skipping 11 matching lines...) Expand all Loading... |
499 /* | 504 /* |
500 * Some pointer-list utility functions. | 505 * Some pointer-list utility functions. |
501 */ | 506 */ |
502 XSLTPUBFUN xsltPointerListPtr XSLTCALL | 507 XSLTPUBFUN xsltPointerListPtr XSLTCALL |
503 xsltPointerListCreate (int initialSize); | 508 xsltPointerListCreate (int initialSize); |
504 XSLTPUBFUN void XSLTCALL | 509 XSLTPUBFUN void XSLTCALL |
505 xsltPointerListFree (xsltPointerListPtr list); | 510 xsltPointerListFree (xsltPointerListPtr list); |
506 XSLTPUBFUN void XSLTCALL | 511 XSLTPUBFUN void XSLTCALL |
507 xsltPointerListClear (xsltPointerListPtr list); | 512 xsltPointerListClear (xsltPointerListPtr list); |
508 XSLTPUBFUN int XSLTCALL | 513 XSLTPUBFUN int XSLTCALL |
509 » » xsltPointerListAddSize» » (xsltPointerListPtr list,»
» » » » » | 514 » » xsltPointerListAddSize» » (xsltPointerListPtr list, |
510 void *item, | 515 void *item, |
511 int initialSize); | 516 int initialSize); |
512 | 517 |
513 /************************************************************************ | 518 /************************************************************************ |
514 * * | 519 * * |
515 * Refactored structures * | 520 * Refactored structures * |
516 * * | 521 * * |
517 ************************************************************************/ | 522 ************************************************************************/ |
518 | 523 |
519 typedef struct _xsltNsListContainer xsltNsListContainer; | 524 typedef struct _xsltNsListContainer xsltNsListContainer; |
520 typedef xsltNsListContainer *xsltNsListContainerPtr; | 525 typedef xsltNsListContainer *xsltNsListContainerPtr; |
521 struct _xsltNsListContainer { | 526 struct _xsltNsListContainer { |
522 xmlNsPtr *list; | 527 xmlNsPtr *list; |
523 int totalNumber; | 528 int totalNumber; |
524 int xpathNumber; | 529 int xpathNumber; |
525 }; | 530 }; |
526 | 531 |
527 /** | 532 /** |
528 * XSLT_ITEM_COMPATIBILITY_FIELDS: | 533 * XSLT_ITEM_COMPATIBILITY_FIELDS: |
529 * | 534 * |
530 * Fields for API compatibility to the structure | 535 * Fields for API compatibility to the structure |
531 * _xsltElemPreComp which is used for extension functions. | 536 * _xsltElemPreComp which is used for extension functions. |
532 * Note that @next is used for storage; it does not reflect a next | 537 * Note that @next is used for storage; it does not reflect a next |
533 * sibling in the tree. | 538 * sibling in the tree. |
534 * TODO: Evaluate if we really need such a compatibility. | 539 * TODO: Evaluate if we really need such a compatibility. |
535 */ | 540 */ |
536 #define XSLT_ITEM_COMPATIBILITY_FIELDS \ | 541 #define XSLT_ITEM_COMPATIBILITY_FIELDS \ |
537 xsltElemPreCompPtr next;\ | 542 xsltElemPreCompPtr next;\ |
538 xsltStyleType type;\ | 543 xsltStyleType type;\ |
539 xsltTransformFunction func;\ | 544 xsltTransformFunction func;\ |
540 xmlNodePtr inst; | 545 xmlNodePtr inst; |
541 | 546 |
542 /** | 547 /** |
543 * XSLT_ITEM_NAVIGATION_FIELDS: | 548 * XSLT_ITEM_NAVIGATION_FIELDS: |
544 * | 549 * |
545 * Currently empty. | 550 * Currently empty. |
546 * TODO: It is intended to hold navigational fields in the future. | 551 * TODO: It is intended to hold navigational fields in the future. |
547 */ | 552 */ |
548 #define XSLT_ITEM_NAVIGATION_FIELDS | 553 #define XSLT_ITEM_NAVIGATION_FIELDS |
549 /* | 554 /* |
550 xsltStylePreCompPtr parent;\ | 555 xsltStylePreCompPtr parent;\ |
551 xsltStylePreCompPtr children;\ | 556 xsltStylePreCompPtr children;\ |
552 xsltStylePreCompPtr nextItem; | 557 xsltStylePreCompPtr nextItem; |
553 */ | 558 */ |
554 | 559 |
555 /** | 560 /** |
556 * XSLT_ITEM_NSINSCOPE_FIELDS: | 561 * XSLT_ITEM_NSINSCOPE_FIELDS: |
557 * | 562 * |
558 * The in-scope namespaces. | 563 * The in-scope namespaces. |
559 */ | 564 */ |
560 #define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs; | 565 #define XSLT_ITEM_NSINSCOPE_FIELDS xsltNsListContainerPtr inScopeNs; |
561 | 566 |
562 /** | 567 /** |
563 * XSLT_ITEM_COMMON_FIELDS: | 568 * XSLT_ITEM_COMMON_FIELDS: |
564 * | 569 * |
565 * Common fields used for all items. | 570 * Common fields used for all items. |
566 */ | 571 */ |
567 #define XSLT_ITEM_COMMON_FIELDS \ | 572 #define XSLT_ITEM_COMMON_FIELDS \ |
568 XSLT_ITEM_COMPATIBILITY_FIELDS \ | 573 XSLT_ITEM_COMPATIBILITY_FIELDS \ |
569 XSLT_ITEM_NAVIGATION_FIELDS \ | 574 XSLT_ITEM_NAVIGATION_FIELDS \ |
570 XSLT_ITEM_NSINSCOPE_FIELDS | 575 XSLT_ITEM_NSINSCOPE_FIELDS |
571 | 576 |
572 /** | 577 /** |
573 * _xsltStylePreComp: | 578 * _xsltStylePreComp: |
574 * | 579 * |
575 * The abstract basic structure for items of the XSLT processor. | 580 * The abstract basic structure for items of the XSLT processor. |
576 * This includes: | 581 * This includes: |
577 * 1) compiled forms of XSLT instructions (e.g. xsl:if, xsl:attribute, etc.) | 582 * 1) compiled forms of XSLT instructions (e.g. xsl:if, xsl:attribute, etc.) |
578 * 2) compiled forms of literal result elements | 583 * 2) compiled forms of literal result elements |
579 * 3) various properties for XSLT instructions (e.g. xsl:when, | 584 * 3) various properties for XSLT instructions (e.g. xsl:when, |
580 * xsl:with-param) | 585 * xsl:with-param) |
581 * | 586 * |
582 * REVISIT TODO: Keep this structure equal to the fields | 587 * REVISIT TODO: Keep this structure equal to the fields |
583 * defined by XSLT_ITEM_COMMON_FIELDS | 588 * defined by XSLT_ITEM_COMMON_FIELDS |
584 */ | 589 */ |
585 struct _xsltStylePreComp { | 590 struct _xsltStylePreComp { |
586 xsltElemPreCompPtr next; /* next item in the global chained | 591 xsltElemPreCompPtr next; /* next item in the global chained |
587 list hold by xsltStylesheet */ | 592 list hold by xsltStylesheet */ |
588 xsltStyleType type; /* type of the item */ | 593 xsltStyleType type; /* type of the item */ |
589 xsltTransformFunction func; /* handling function */ | 594 xsltTransformFunction func; /* handling function */ |
590 xmlNodePtr inst; /* the node in the stylesheet's tree | 595 xmlNodePtr inst; /* the node in the stylesheet's tree |
591 corresponding to this item. */ | 596 corresponding to this item. */ |
592 /* Currently no navigational fields. */ | 597 /* Currently no navigational fields. */ |
593 xsltNsListContainerPtr inScopeNs; | 598 xsltNsListContainerPtr inScopeNs; |
594 }; | 599 }; |
595 | 600 |
596 /** | 601 /** |
597 * xsltStyleBasicEmptyItem: | 602 * xsltStyleBasicEmptyItem: |
598 * | 603 * |
599 * Abstract structure only used as a short-cut for | 604 * Abstract structure only used as a short-cut for |
600 * XSLT items with no extra fields. | 605 * XSLT items with no extra fields. |
601 * NOTE that it is intended that this structure looks the same as | 606 * NOTE that it is intended that this structure looks the same as |
602 * _xsltStylePreComp. | 607 * _xsltStylePreComp. |
603 */ | 608 */ |
604 typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem; | 609 typedef struct _xsltStyleBasicEmptyItem xsltStyleBasicEmptyItem; |
605 typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr; | 610 typedef xsltStyleBasicEmptyItem *xsltStyleBasicEmptyItemPtr; |
606 | 611 |
607 struct _xsltStyleBasicEmptyItem { | 612 struct _xsltStyleBasicEmptyItem { |
608 XSLT_ITEM_COMMON_FIELDS | 613 XSLT_ITEM_COMMON_FIELDS |
609 }; | 614 }; |
610 | 615 |
611 /** | 616 /** |
612 * xsltStyleBasicExpressionItem: | 617 * xsltStyleBasicExpressionItem: |
613 * | 618 * |
614 * Abstract structure only used as a short-cut for | 619 * Abstract structure only used as a short-cut for |
615 * XSLT items with just an expression. | 620 * XSLT items with just an expression. |
616 */ | 621 */ |
617 typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem; | 622 typedef struct _xsltStyleBasicExpressionItem xsltStyleBasicExpressionItem; |
618 typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr; | 623 typedef xsltStyleBasicExpressionItem *xsltStyleBasicExpressionItemPtr; |
619 | 624 |
620 struct _xsltStyleBasicExpressionItem { | 625 struct _xsltStyleBasicExpressionItem { |
621 XSLT_ITEM_COMMON_FIELDS | 626 XSLT_ITEM_COMMON_FIELDS |
622 | 627 |
623 const xmlChar *select; /* TODO: Change this to "expression". */ | 628 const xmlChar *select; /* TODO: Change this to "expression". */ |
624 xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */ | 629 xmlXPathCompExprPtr comp; /* TODO: Change this to compExpr. */ |
625 }; | 630 }; |
626 | 631 |
627 /************************************************************************ | 632 /************************************************************************ |
628 * * | 633 * * |
629 * XSLT-instructions/declarations * | 634 * XSLT-instructions/declarations * |
630 * * | 635 * * |
631 ************************************************************************/ | 636 ************************************************************************/ |
632 | 637 |
633 /** | 638 /** |
634 * xsltStyleItemElement: | 639 * xsltStyleItemElement: |
635 * | 640 * |
636 * <!-- Category: instruction --> | 641 * <!-- Category: instruction --> |
637 * <xsl:element | 642 * <xsl:element |
638 * name = { qname } | 643 * name = { qname } |
639 * namespace = { uri-reference } | 644 * namespace = { uri-reference } |
640 * use-attribute-sets = qnames> | 645 * use-attribute-sets = qnames> |
641 * <!-- Content: template --> | 646 * <!-- Content: template --> |
642 * </xsl:element> | 647 * </xsl:element> |
643 */ | 648 */ |
644 typedef struct _xsltStyleItemElement xsltStyleItemElement; | 649 typedef struct _xsltStyleItemElement xsltStyleItemElement; |
645 typedef xsltStyleItemElement *xsltStyleItemElementPtr; | 650 typedef xsltStyleItemElement *xsltStyleItemElementPtr; |
646 | 651 |
647 struct _xsltStyleItemElement { | 652 struct _xsltStyleItemElement { |
648 XSLT_ITEM_COMMON_FIELDS | 653 XSLT_ITEM_COMMON_FIELDS |
649 | 654 |
650 const xmlChar *use; | 655 const xmlChar *use; |
651 int has_use; | 656 int has_use; |
652 const xmlChar *name; | 657 const xmlChar *name; |
653 int has_name; | 658 int has_name; |
654 const xmlChar *ns; | 659 const xmlChar *ns; |
655 const xmlChar *nsPrefix; | 660 const xmlChar *nsPrefix; |
656 int has_ns; | 661 int has_ns; |
657 }; | 662 }; |
658 | 663 |
659 /** | 664 /** |
660 * xsltStyleItemAttribute: | 665 * xsltStyleItemAttribute: |
661 * | 666 * |
662 * <!-- Category: instruction --> | 667 * <!-- Category: instruction --> |
(...skipping 124 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
787 * use-attribute-sets = qnames> | 792 * use-attribute-sets = qnames> |
788 * <!-- Content: template --> | 793 * <!-- Content: template --> |
789 * </xsl:copy> | 794 * </xsl:copy> |
790 */ | 795 */ |
791 typedef struct _xsltStyleItemCopy xsltStyleItemCopy; | 796 typedef struct _xsltStyleItemCopy xsltStyleItemCopy; |
792 typedef xsltStyleItemCopy *xsltStyleItemCopyPtr; | 797 typedef xsltStyleItemCopy *xsltStyleItemCopyPtr; |
793 | 798 |
794 struct _xsltStyleItemCopy { | 799 struct _xsltStyleItemCopy { |
795 XSLT_ITEM_COMMON_FIELDS | 800 XSLT_ITEM_COMMON_FIELDS |
796 const xmlChar *use; /* copy, element */ | 801 const xmlChar *use; /* copy, element */ |
797 int has_use;» » /* copy, element */ | 802 int has_use;» » /* copy, element */ |
798 }; | 803 }; |
799 | 804 |
800 /** | 805 /** |
801 * xsltStyleItemIf: | 806 * xsltStyleItemIf: |
802 * | 807 * |
803 * <!-- Category: instruction --> | 808 * <!-- Category: instruction --> |
804 * <xsl:if | 809 * <xsl:if |
805 * test = boolean-expression> | 810 * test = boolean-expression> |
806 * <!-- Content: template --> | 811 * <!-- Content: template --> |
807 * </xsl:if> | 812 * </xsl:if> |
(...skipping 101 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
909 * <!-- Category: instruction --> | 914 * <!-- Category: instruction --> |
910 * <xsl:message | 915 * <xsl:message |
911 * terminate = "yes" | "no"> | 916 * terminate = "yes" | "no"> |
912 * <!-- Content: template --> | 917 * <!-- Content: template --> |
913 * </xsl:message> | 918 * </xsl:message> |
914 */ | 919 */ |
915 typedef struct _xsltStyleItemMessage xsltStyleItemMessage; | 920 typedef struct _xsltStyleItemMessage xsltStyleItemMessage; |
916 typedef xsltStyleItemMessage *xsltStyleItemMessagePtr; | 921 typedef xsltStyleItemMessage *xsltStyleItemMessagePtr; |
917 | 922 |
918 struct _xsltStyleItemMessage { | 923 struct _xsltStyleItemMessage { |
919 XSLT_ITEM_COMMON_FIELDS | 924 XSLT_ITEM_COMMON_FIELDS |
920 int terminate; | 925 int terminate; |
921 }; | 926 }; |
922 | 927 |
923 /** | 928 /** |
924 * xsltStyleItemDocument: | 929 * xsltStyleItemDocument: |
925 * | 930 * |
926 * NOTE: This is not an instruction of XSLT 1.0. | 931 * NOTE: This is not an instruction of XSLT 1.0. |
927 */ | 932 */ |
928 typedef struct _xsltStyleItemDocument xsltStyleItemDocument; | 933 typedef struct _xsltStyleItemDocument xsltStyleItemDocument; |
929 typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr; | 934 typedef xsltStyleItemDocument *xsltStyleItemDocumentPtr; |
930 | 935 |
931 struct _xsltStyleItemDocument { | 936 struct _xsltStyleItemDocument { |
932 XSLT_ITEM_COMMON_FIELDS | 937 XSLT_ITEM_COMMON_FIELDS |
933 int ver11; /* assigned: in xsltDocumentComp; | 938 int ver11; /* assigned: in xsltDocumentComp; |
934 read: nowhere; | 939 read: nowhere; |
935 TODO: Check if we need. */ | 940 TODO: Check if we need. */ |
936 const xmlChar *filename; /* document URL */ | 941 const xmlChar *filename; /* document URL */ |
937 int has_filename; | 942 int has_filename; |
938 }; | 943 }; |
939 | 944 |
940 /************************************************************************ | 945 /************************************************************************ |
941 * * | 946 * * |
942 * Non-instructions (actually properties of instructions/declarations) * | 947 * Non-instructions (actually properties of instructions/declarations) * |
943 * * | 948 * * |
944 ************************************************************************/ | 949 ************************************************************************/ |
945 | 950 |
946 /** | 951 /** |
947 * xsltStyleBasicItemVariable: | 952 * xsltStyleBasicItemVariable: |
948 * | 953 * |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
998 | 1003 |
999 struct _xsltStyleItemParam { | 1004 struct _xsltStyleItemParam { |
1000 XSLT_ITEM_COMMON_FIELDS | 1005 XSLT_ITEM_COMMON_FIELDS |
1001 | 1006 |
1002 const xmlChar *select; | 1007 const xmlChar *select; |
1003 xmlXPathCompExprPtr comp; | 1008 xmlXPathCompExprPtr comp; |
1004 | 1009 |
1005 const xmlChar *name; | 1010 const xmlChar *name; |
1006 int has_name; | 1011 int has_name; |
1007 const xmlChar *ns; | 1012 const xmlChar *ns; |
1008 int has_ns; | 1013 int has_ns; |
1009 }; | 1014 }; |
1010 | 1015 |
1011 /** | 1016 /** |
1012 * xsltStyleItemWithParam: | 1017 * xsltStyleItemWithParam: |
1013 * | 1018 * |
1014 * <xsl:with-param | 1019 * <xsl:with-param |
1015 * name = qname | 1020 * name = qname |
1016 * select = expression> | 1021 * select = expression> |
1017 * <!-- Content: template --> | 1022 * <!-- Content: template --> |
1018 * </xsl:with-param> | 1023 * </xsl:with-param> |
(...skipping 35 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1054 int has_use; | 1059 int has_use; |
1055 | 1060 |
1056 const xmlChar *select; /* sort, copy-of, value-of, apply-templates */ | 1061 const xmlChar *select; /* sort, copy-of, value-of, apply-templates */ |
1057 | 1062 |
1058 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */ | 1063 xmlXPathCompExprPtr comp; /* a precompiled XPath expression */ |
1059 }; | 1064 }; |
1060 | 1065 |
1061 | 1066 |
1062 /** | 1067 /** |
1063 * xsltStyleItemWhen: | 1068 * xsltStyleItemWhen: |
1064 * | 1069 * |
1065 * <xsl:when | 1070 * <xsl:when |
1066 * test = boolean-expression> | 1071 * test = boolean-expression> |
1067 * <!-- Content: template --> | 1072 * <!-- Content: template --> |
1068 * </xsl:when> | 1073 * </xsl:when> |
1069 * Allowed parent: xsl:choose | 1074 * Allowed parent: xsl:choose |
1070 */ | 1075 */ |
1071 typedef struct _xsltStyleItemWhen xsltStyleItemWhen; | 1076 typedef struct _xsltStyleItemWhen xsltStyleItemWhen; |
1072 typedef xsltStyleItemWhen *xsltStyleItemWhenPtr; | 1077 typedef xsltStyleItemWhen *xsltStyleItemWhenPtr; |
1073 | 1078 |
1074 struct _xsltStyleItemWhen { | 1079 struct _xsltStyleItemWhen { |
(...skipping 62 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1137 * the xsltElemPreCompPtr. | 1142 * the xsltElemPreCompPtr. |
1138 * However the place where the structure is anchored in the node-tree, | 1143 * However the place where the structure is anchored in the node-tree, |
1139 * namely node->psvi, has beed already once been moved from node->_private | 1144 * namely node->psvi, has beed already once been moved from node->_private |
1140 * to node->psvi, so we have a precedent here, which, I think, should allow | 1145 * to node->psvi, so we have a precedent here, which, I think, should allow |
1141 * us to change such semantics without headaches. | 1146 * us to change such semantics without headaches. |
1142 */ | 1147 */ |
1143 typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement; | 1148 typedef struct _xsltStyleItemExtElement xsltStyleItemExtElement; |
1144 typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr; | 1149 typedef xsltStyleItemExtElement *xsltStyleItemExtElementPtr; |
1145 struct _xsltStyleItemExtElement { | 1150 struct _xsltStyleItemExtElement { |
1146 XSLT_ITEM_COMMON_FIELDS | 1151 XSLT_ITEM_COMMON_FIELDS |
1147 xsltElemPreCompPtr item; | 1152 xsltElemPreCompPtr item; |
1148 }; | 1153 }; |
1149 | 1154 |
1150 /************************************************************************ | 1155 /************************************************************************ |
1151 * * | 1156 * * |
1152 * Literal result elements * | 1157 * Literal result elements * |
1153 * * | 1158 * * |
1154 ************************************************************************/ | 1159 ************************************************************************/ |
1155 | 1160 |
1156 typedef struct _xsltEffectiveNs xsltEffectiveNs; | 1161 typedef struct _xsltEffectiveNs xsltEffectiveNs; |
1157 typedef xsltEffectiveNs *xsltEffectiveNsPtr; | 1162 typedef xsltEffectiveNs *xsltEffectiveNsPtr; |
1158 struct _xsltEffectiveNs { | 1163 struct _xsltEffectiveNs { |
1159 xsltEffectiveNsPtr nextInStore; /* storage next */ | 1164 xsltEffectiveNsPtr nextInStore; /* storage next */ |
1160 xsltEffectiveNsPtr next; /* next item in the list */ | 1165 xsltEffectiveNsPtr next; /* next item in the list */ |
1161 const xmlChar *prefix; | 1166 const xmlChar *prefix; |
1162 const xmlChar *nsName; | 1167 const xmlChar *nsName; |
1163 /* | 1168 /* |
1164 * Indicates if eclared on the literal result element; dunno if really | 1169 * Indicates if eclared on the literal result element; dunno if really |
1165 * needed. | 1170 * needed. |
1166 */ | 1171 */ |
1167 int holdByElem; | 1172 int holdByElem; |
1168 }; | 1173 }; |
1169 | 1174 |
1170 /* | 1175 /* |
1171 * Info for literal result elements. | 1176 * Info for literal result elements. |
1172 * This will be set on the elem->psvi field and will be | 1177 * This will be set on the elem->psvi field and will be |
1173 * shared by literal result elements, which have the same | 1178 * shared by literal result elements, which have the same |
(...skipping 15 matching lines...) Expand all Loading... |
1189 */ | 1194 */ |
1190 xsltEffectiveNsPtr effectiveNs; | 1195 xsltEffectiveNsPtr effectiveNs; |
1191 | 1196 |
1192 }; | 1197 }; |
1193 | 1198 |
1194 #ifdef XSLT_REFACTORED | 1199 #ifdef XSLT_REFACTORED |
1195 | 1200 |
1196 typedef struct _xsltNsAlias xsltNsAlias; | 1201 typedef struct _xsltNsAlias xsltNsAlias; |
1197 typedef xsltNsAlias *xsltNsAliasPtr; | 1202 typedef xsltNsAlias *xsltNsAliasPtr; |
1198 struct _xsltNsAlias { | 1203 struct _xsltNsAlias { |
1199 xsltNsAliasPtr next; /* next in the list */ | 1204 xsltNsAliasPtr next; /* next in the list */ |
1200 xmlNsPtr literalNs; | 1205 xmlNsPtr literalNs; |
1201 xmlNsPtr targetNs; | 1206 xmlNsPtr targetNs; |
1202 xmlDocPtr docOfTargetNs; | 1207 xmlDocPtr docOfTargetNs; |
1203 }; | 1208 }; |
1204 #endif | 1209 #endif |
1205 | 1210 |
1206 #ifdef XSLT_REFACTORED_XSLT_NSCOMP | 1211 #ifdef XSLT_REFACTORED_XSLT_NSCOMP |
1207 | 1212 |
1208 typedef struct _xsltNsMap xsltNsMap; | 1213 typedef struct _xsltNsMap xsltNsMap; |
1209 typedef xsltNsMap *xsltNsMapPtr; | 1214 typedef xsltNsMap *xsltNsMapPtr; |
1210 struct _xsltNsMap { | 1215 struct _xsltNsMap { |
1211 xsltNsMapPtr next; /* next in the list */ | 1216 xsltNsMapPtr next; /* next in the list */ |
1212 xmlDocPtr doc; | 1217 xmlDocPtr doc; |
1213 xmlNodePtr elem; /* the element holding the ns-decl */ | 1218 xmlNodePtr elem; /* the element holding the ns-decl */ |
1214 xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */ | 1219 xmlNsPtr ns; /* the xmlNs structure holding the XML namespace name */ |
1215 const xmlChar *origNsName; /* the original XML namespace name */ | 1220 const xmlChar *origNsName; /* the original XML namespace name */ |
1216 const xmlChar *newNsName; /* the mapped XML namespace name */ | 1221 const xmlChar *newNsName; /* the mapped XML namespace name */ |
1217 }; | 1222 }; |
1218 #endif | 1223 #endif |
1219 | 1224 |
1220 /************************************************************************ | 1225 /************************************************************************ |
1221 * * | 1226 * * |
1222 * Compile-time structures for *internal* use only * | 1227 * Compile-time structures for *internal* use only * |
1223 * * | 1228 * * |
1224 ************************************************************************/ | 1229 ************************************************************************/ |
1225 | 1230 |
1226 typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData; | 1231 typedef struct _xsltPrincipalStylesheetData xsltPrincipalStylesheetData; |
(...skipping 34 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1261 xmlNodePtr node; | 1266 xmlNodePtr node; |
1262 int depth; | 1267 int depth; |
1263 xsltTemplatePtr templ; /* The owning template */ | 1268 xsltTemplatePtr templ; /* The owning template */ |
1264 int category; /* XSLT element, LR-element or | 1269 int category; /* XSLT element, LR-element or |
1265 extension element */ | 1270 extension element */ |
1266 xsltStyleType type; | 1271 xsltStyleType type; |
1267 xsltElemPreCompPtr item; /* The compiled information */ | 1272 xsltElemPreCompPtr item; /* The compiled information */ |
1268 /* The current in-scope namespaces */ | 1273 /* The current in-scope namespaces */ |
1269 xsltNsListContainerPtr inScopeNs; | 1274 xsltNsListContainerPtr inScopeNs; |
1270 /* The current excluded result namespaces */ | 1275 /* The current excluded result namespaces */ |
1271 xsltPointerListPtr exclResultNs; | 1276 xsltPointerListPtr exclResultNs; |
1272 /* The current extension instruction namespaces */ | 1277 /* The current extension instruction namespaces */ |
1273 xsltPointerListPtr extElemNs; | 1278 xsltPointerListPtr extElemNs; |
1274 | 1279 |
1275 /* The current info for literal result elements. */ | 1280 /* The current info for literal result elements. */ |
1276 xsltStyleItemLRElementInfoPtr litResElemInfo; | 1281 xsltStyleItemLRElementInfoPtr litResElemInfo; |
1277 /* | 1282 /* |
1278 * Set to 1 if in-scope namespaces changed, | 1283 * Set to 1 if in-scope namespaces changed, |
1279 * or excluded result namespaces changed, | 1284 * or excluded result namespaces changed, |
1280 * or extension element namespaces changed. | 1285 * or extension element namespaces changed. |
1281 * This will trigger creation of new infos | 1286 * This will trigger creation of new infos |
1282 * for literal result elements. | 1287 * for literal result elements. |
1283 */ | 1288 */ |
1284 int nsChanged; | 1289 int nsChanged; |
1285 int preserveWhitespace; | 1290 int preserveWhitespace; |
1286 int stripWhitespace; | 1291 int stripWhitespace; |
1287 int isRoot; /* whether this is the stylesheet's root node */ | 1292 int isRoot; /* whether this is the stylesheet's root node */ |
1288 int forwardsCompat; /* whether forwards-compatible mode is enabled */ | 1293 int forwardsCompat; /* whether forwards-compatible mode is enabled */ |
1289 /* whether the content of an extension element was processed */ | 1294 /* whether the content of an extension element was processed */ |
1290 int extContentHandled; | 1295 int extContentHandled; |
1291 /* the type of the current child */ | 1296 /* the type of the current child */ |
1292 xsltStyleType curChildType; | 1297 xsltStyleType curChildType; |
1293 }; | 1298 }; |
1294 | 1299 |
1295 /** | 1300 /** |
1296 * XSLT_CCTXT: | 1301 * XSLT_CCTXT: |
1297 * | 1302 * |
1298 * get pointer to compiler context | 1303 * get pointer to compiler context |
1299 */ | 1304 */ |
1300 #define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt) | 1305 #define XSLT_CCTXT(style) ((xsltCompilerCtxtPtr) style->compCtxt) |
1301 | 1306 |
1302 typedef enum { | 1307 typedef enum { |
1303 XSLT_ERROR_SEVERITY_ERROR = 0, | 1308 XSLT_ERROR_SEVERITY_ERROR = 0, |
1304 XSLT_ERROR_SEVERITY_WARNING | 1309 XSLT_ERROR_SEVERITY_WARNING |
1305 } xsltErrorSeverityType; | 1310 } xsltErrorSeverityType; |
1306 | 1311 |
1307 typedef struct _xsltCompilerCtxt xsltCompilerCtxt; | 1312 typedef struct _xsltCompilerCtxt xsltCompilerCtxt; |
1308 typedef xsltCompilerCtxt *xsltCompilerCtxtPtr; | 1313 typedef xsltCompilerCtxt *xsltCompilerCtxtPtr; |
1309 struct _xsltCompilerCtxt { | 1314 struct _xsltCompilerCtxt { |
1310 void *errorCtxt; /* user specific error context */ | 1315 void *errorCtxt; /* user specific error context */ |
1311 /* | 1316 /* |
1312 * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */ | 1317 * used for error/warning reports; e.g. XSLT_ERROR_SEVERITY_WARNING */ |
1313 xsltErrorSeverityType errSeverity;» » | 1318 xsltErrorSeverityType errSeverity; |
1314 int warnings; /* TODO: number of warnings found at | 1319 int warnings; /* TODO: number of warnings found at |
1315 compilation */ | 1320 compilation */ |
1316 int errors; /* TODO: number of errors found at | 1321 int errors; /* TODO: number of errors found at |
1317 compilation */ | 1322 compilation */ |
1318 xmlDictPtr dict; | 1323 xmlDictPtr dict; |
1319 xsltStylesheetPtr style; | 1324 xsltStylesheetPtr style; |
1320 int simplified; /* whether this is a simplified stylesheet */ | 1325 int simplified; /* whether this is a simplified stylesheet */ |
1321 /* TODO: structured/unstructured error contexts. */ | 1326 /* TODO: structured/unstructured error contexts. */ |
1322 int depth; /* Current depth of processing */ | 1327 int depth; /* Current depth of processing */ |
1323 | 1328 |
1324 xsltCompilerNodeInfoPtr inode; | 1329 xsltCompilerNodeInfoPtr inode; |
1325 xsltCompilerNodeInfoPtr inodeList; | 1330 xsltCompilerNodeInfoPtr inodeList; |
1326 xsltCompilerNodeInfoPtr inodeLast; | 1331 xsltCompilerNodeInfoPtr inodeLast; |
1327 xsltPointerListPtr tmpList; /* Used for various purposes */ | 1332 xsltPointerListPtr tmpList; /* Used for various purposes */ |
1328 /* | 1333 /* |
1329 * The XSLT version as specified by the stylesheet's root element. | 1334 * The XSLT version as specified by the stylesheet's root element. |
1330 */ | 1335 */ |
1331 int isInclude; | 1336 int isInclude; |
1332 int hasForwardsCompat; /* whether forwards-compatible mode was used | 1337 int hasForwardsCompat; /* whether forwards-compatible mode was used |
1333 in a parsing episode */ | 1338 in a parsing episode */ |
1334 int maxNodeInfos; /* TEMP TODO: just for the interest */ | 1339 int maxNodeInfos; /* TEMP TODO: just for the interest */ |
1335 int maxLREs; /* TEMP TODO: just for the interest */ | 1340 int maxLREs; /* TEMP TODO: just for the interest */ |
1336 /* | 1341 /* |
1337 * In order to keep the old behaviour, applying strict rules of | 1342 * In order to keep the old behaviour, applying strict rules of |
1338 * the spec can be turned off. This has effect only on special | 1343 * the spec can be turned off. This has effect only on special |
1339 * mechanisms like whitespace-stripping in the stylesheet. | 1344 * mechanisms like whitespace-stripping in the stylesheet. |
1340 */ | 1345 */ |
1341 int strict; | 1346 int strict; |
1342 xsltPrincipalStylesheetDataPtr psData; | 1347 xsltPrincipalStylesheetDataPtr psData; |
1343 #ifdef XSLT_REFACTORED_XPATHCOMP | 1348 #ifdef XSLT_REFACTORED_XPATHCOMP |
1344 xmlXPathContextPtr xpathCtxt; | 1349 xmlXPathContextPtr xpathCtxt; |
1345 #endif | 1350 #endif |
1346 xsltStyleItemUknownPtr unknownItem; | 1351 xsltStyleItemUknownPtr unknownItem; |
1347 int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */ | 1352 int hasNsAliases; /* Indicator if there was an xsl:namespace-alias. */ |
1348 xsltNsAliasPtr nsAliases; | 1353 xsltNsAliasPtr nsAliases; |
1349 xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */ | 1354 xsltVarInfoPtr ivars; /* Storage of local in-scope variables/params. */ |
1350 xsltVarInfoPtr ivar; /* topmost local variable/param. */ | 1355 xsltVarInfoPtr ivar; /* topmost local variable/param. */ |
1351 }; | 1356 }; |
1352 | 1357 |
1353 #else /* XSLT_REFACTORED */ | 1358 #else /* XSLT_REFACTORED */ |
1354 /* | 1359 /* |
1355 * The old structures before refactoring. | 1360 * The old structures before refactoring. |
1356 */ | 1361 */ |
1357 | 1362 |
1358 /** | 1363 /** |
1359 * _xsltStylePreComp: | 1364 * _xsltStylePreComp: |
1360 * | 1365 * |
1361 * The in-memory structure corresponding to XSLT stylesheet constructs | 1366 * The in-memory structure corresponding to XSLT stylesheet constructs |
(...skipping 102 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1464 xsltPointerListPtr extElemNamespaces; | 1469 xsltPointerListPtr extElemNamespaces; |
1465 xsltEffectiveNsPtr effectiveNs; | 1470 xsltEffectiveNsPtr effectiveNs; |
1466 #ifdef XSLT_REFACTORED_XSLT_NSCOMP | 1471 #ifdef XSLT_REFACTORED_XSLT_NSCOMP |
1467 /* | 1472 /* |
1468 * Namespace name map to get rid of string comparison of namespace names. | 1473 * Namespace name map to get rid of string comparison of namespace names. |
1469 */ | 1474 */ |
1470 xsltNsMapPtr nsMap; | 1475 xsltNsMapPtr nsMap; |
1471 #endif | 1476 #endif |
1472 }; | 1477 }; |
1473 | 1478 |
1474 | 1479 |
1475 #endif | 1480 #endif |
1476 /* | 1481 /* |
1477 * Note that we added a @compCtxt field to anchor an stylesheet compilation | 1482 * Note that we added a @compCtxt field to anchor an stylesheet compilation |
1478 * context, since, due to historical reasons, various compile-time function | 1483 * context, since, due to historical reasons, various compile-time function |
1479 * take only the stylesheet as argument and not a compilation context. | 1484 * take only the stylesheet as argument and not a compilation context. |
1480 */ | 1485 */ |
1481 struct _xsltStylesheet { | 1486 struct _xsltStylesheet { |
1482 /* | 1487 /* |
1483 * The stylesheet import relation is kept as a tree. | 1488 * The stylesheet import relation is kept as a tree. |
1484 */ | 1489 */ |
(...skipping 24 matching lines...) Expand all Loading... |
1509 void *templatesHash; /* hash table or wherever compiled templates | 1514 void *templatesHash; /* hash table or wherever compiled templates |
1510 informations are stored */ | 1515 informations are stored */ |
1511 void *rootMatch; /* template based on / */ | 1516 void *rootMatch; /* template based on / */ |
1512 void *keyMatch; /* template based on key() */ | 1517 void *keyMatch; /* template based on key() */ |
1513 void *elemMatch; /* template based on * */ | 1518 void *elemMatch; /* template based on * */ |
1514 void *attrMatch; /* template based on @* */ | 1519 void *attrMatch; /* template based on @* */ |
1515 void *parentMatch; /* template based on .. */ | 1520 void *parentMatch; /* template based on .. */ |
1516 void *textMatch; /* template based on text() */ | 1521 void *textMatch; /* template based on text() */ |
1517 void *piMatch; /* template based on processing-instruction() */ | 1522 void *piMatch; /* template based on processing-instruction() */ |
1518 void *commentMatch; /* template based on comment() */ | 1523 void *commentMatch; /* template based on comment() */ |
1519 | 1524 |
1520 /* | 1525 /* |
1521 * Namespace aliases. | 1526 * Namespace aliases. |
1522 * NOTE: Not used in the refactored code. | 1527 * NOTE: Not used in the refactored code. |
1523 */ | 1528 */ |
1524 xmlHashTablePtr nsAliases; /* the namespace alias hash tables */ | 1529 xmlHashTablePtr nsAliases; /* the namespace alias hash tables */ |
1525 | 1530 |
1526 /* | 1531 /* |
1527 * Attribute sets. | 1532 * Attribute sets. |
1528 */ | 1533 */ |
1529 xmlHashTablePtr attributeSets;/* the attribute sets hash tables */ | 1534 xmlHashTablePtr attributeSets;/* the attribute sets hash tables */ |
1530 | 1535 |
1531 /* | 1536 /* |
1532 * Namespaces. | 1537 * Namespaces. |
1533 * TODO: Eliminate this. | 1538 * TODO: Eliminate this. |
1534 */ | 1539 */ |
1535 xmlHashTablePtr nsHash; /* the set of namespaces in use: | 1540 xmlHashTablePtr nsHash; /* the set of namespaces in use: |
1536 ATTENTION: This is used for | 1541 ATTENTION: This is used for |
1537 execution of XPath expressions; unfortunately | 1542 execution of XPath expressions; unfortunately |
1538 it restricts the stylesheet to have distinct | 1543 it restricts the stylesheet to have distinct |
1539 prefixes. | 1544 prefixes. |
1540 » » » » TODO: We need to get rid of this. | 1545 » » » » TODO: We need to get rid of this. |
1541 */ | 1546 */ |
1542 void *nsDefs; /* ATTENTION TODO: This is currently used to sto
re | 1547 void *nsDefs; /* ATTENTION TODO: This is currently used to sto
re |
1543 xsltExtDefPtr (in extensions.c) and | 1548 xsltExtDefPtr (in extensions.c) and |
1544 *not* xmlNsPtr. | 1549 *not* xmlNsPtr. |
1545 */ | 1550 */ |
1546 | 1551 |
1547 /* | 1552 /* |
1548 * Key definitions. | 1553 * Key definitions. |
1549 */ | 1554 */ |
1550 void *keys; /* key definitions */ | 1555 void *keys; /* key definitions */ |
1551 | 1556 |
1552 /* | 1557 /* |
1553 * Output related stuff. | 1558 * Output related stuff. |
1554 */ | 1559 */ |
1555 xmlChar *method; /* the output method */ | 1560 xmlChar *method; /* the output method */ |
1556 xmlChar *methodURI; /* associated namespace if any */ | 1561 xmlChar *methodURI; /* associated namespace if any */ |
1557 xmlChar *version; /* version string */ | 1562 xmlChar *version; /* version string */ |
1558 xmlChar *encoding; /* encoding string */ | 1563 xmlChar *encoding; /* encoding string */ |
1559 int omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */ | 1564 int omitXmlDeclaration; /* omit-xml-declaration = "yes" | "no" */ |
1560 | 1565 |
1561 /* | 1566 /* |
1562 * Number formatting. | 1567 * Number formatting. |
1563 */ | 1568 */ |
1564 xsltDecimalFormatPtr decimalFormat; | 1569 xsltDecimalFormatPtr decimalFormat; |
1565 int standalone; /* standalone = "yes" | "no" */ | 1570 int standalone; /* standalone = "yes" | "no" */ |
1566 xmlChar *doctypePublic; /* doctype-public string */ | 1571 xmlChar *doctypePublic; /* doctype-public string */ |
1567 xmlChar *doctypeSystem; /* doctype-system string */ | 1572 xmlChar *doctypeSystem; /* doctype-system string */ |
1568 int indent; /* should output being indented */ | 1573 int indent; /* should output being indented */ |
1569 xmlChar *mediaType; /* media-type string */ | 1574 xmlChar *mediaType; /* media-type string */ |
1570 | 1575 |
1571 /* | 1576 /* |
(...skipping 49 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1621 /* | 1626 /* |
1622 * The principal stylesheet | 1627 * The principal stylesheet |
1623 */ | 1628 */ |
1624 xsltStylesheetPtr principal; | 1629 xsltStylesheetPtr principal; |
1625 #ifdef XSLT_REFACTORED | 1630 #ifdef XSLT_REFACTORED |
1626 /* | 1631 /* |
1627 * Compilation context used during compile-time. | 1632 * Compilation context used during compile-time. |
1628 */ | 1633 */ |
1629 xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */ | 1634 xsltCompilerCtxtPtr compCtxt; /* TODO: Change this to (void *). */ |
1630 | 1635 |
1631 xsltPrincipalStylesheetDataPtr principalData; | 1636 xsltPrincipalStylesheetDataPtr principalData; |
1632 #endif | 1637 #endif |
| 1638 /* |
| 1639 * Forwards-compatible processing |
| 1640 */ |
| 1641 int forwards_compatible; |
1633 }; | 1642 }; |
1634 | 1643 |
1635 typedef struct _xsltTransformCache xsltTransformCache; | 1644 typedef struct _xsltTransformCache xsltTransformCache; |
1636 typedef xsltTransformCache *xsltTransformCachePtr; | 1645 typedef xsltTransformCache *xsltTransformCachePtr; |
1637 struct _xsltTransformCache { | 1646 struct _xsltTransformCache { |
1638 xmlDocPtr RVT; | 1647 xmlDocPtr RVT; |
1639 int nbRVT; | 1648 int nbRVT; |
1640 xsltStackElemPtr stackItems; | 1649 xsltStackElemPtr stackItems; |
1641 int nbStackItems; | 1650 int nbStackItems; |
1642 #ifdef XSLT_DEBUG_PROFILE_CACHE | 1651 #ifdef XSLT_DEBUG_PROFILE_CACHE |
(...skipping 125 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1768 xmlNodePtr initialContextNode; | 1777 xmlNodePtr initialContextNode; |
1769 xmlDocPtr initialContextDoc; | 1778 xmlDocPtr initialContextDoc; |
1770 xsltTransformCachePtr cache; | 1779 xsltTransformCachePtr cache; |
1771 void *contextVariable; /* the current variable item */ | 1780 void *contextVariable; /* the current variable item */ |
1772 xmlDocPtr localRVT; /* list of local tree fragments; will be freed when | 1781 xmlDocPtr localRVT; /* list of local tree fragments; will be freed when |
1773 the instruction which created the fragment | 1782 the instruction which created the fragment |
1774 exits */ | 1783 exits */ |
1775 xmlDocPtr localRVTBase; | 1784 xmlDocPtr localRVTBase; |
1776 int keyInitLevel; /* Needed to catch recursive keys issues */ | 1785 int keyInitLevel; /* Needed to catch recursive keys issues */ |
1777 int funcLevel; /* Needed to catch recursive functions issues */ | 1786 int funcLevel; /* Needed to catch recursive functions issues */ |
| 1787 int maxTemplateDepth; |
| 1788 int maxTemplateVars; |
1778 }; | 1789 }; |
1779 | 1790 |
1780 /** | 1791 /** |
1781 * CHECK_STOPPED: | 1792 * CHECK_STOPPED: |
1782 * | 1793 * |
1783 * Macro to check if the XSLT processing should be stopped. | 1794 * Macro to check if the XSLT processing should be stopped. |
1784 * Will return from the function. | 1795 * Will return from the function. |
1785 */ | 1796 */ |
1786 #define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return; | 1797 #define CHECK_STOPPED if (ctxt->state == XSLT_STATE_STOPPED) return; |
1787 | 1798 |
(...skipping 33 matching lines...) Expand 10 before | Expand all | Expand 10 after Loading... |
1821 * so it is disabled now | 1832 * so it is disabled now |
1822 */ | 1833 */ |
1823 | 1834 |
1824 #define XML_CAST_FPTR(fptr) fptr | 1835 #define XML_CAST_FPTR(fptr) fptr |
1825 #endif | 1836 #endif |
1826 /* | 1837 /* |
1827 * Functions associated to the internal types | 1838 * Functions associated to the internal types |
1828 xsltDecimalFormatPtr xsltDecimalFormatGetByName(xsltStylesheetPtr sheet, | 1839 xsltDecimalFormatPtr xsltDecimalFormatGetByName(xsltStylesheetPtr sheet, |
1829 xmlChar *name); | 1840 xmlChar *name); |
1830 */ | 1841 */ |
1831 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1842 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1832 xsltNewStylesheet (void); | 1843 xsltNewStylesheet (void); |
1833 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1844 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1834 xsltParseStylesheetFile (const xmlChar* filename); | 1845 xsltParseStylesheetFile (const xmlChar* filename); |
1835 XSLTPUBFUN void XSLTCALL» » » | 1846 XSLTPUBFUN void XSLTCALL |
1836 xsltFreeStylesheet (xsltStylesheetPtr style); | 1847 xsltFreeStylesheet (xsltStylesheetPtr style); |
1837 XSLTPUBFUN int XSLTCALL»» » | 1848 XSLTPUBFUN int XSLTCALL |
1838 xsltIsBlank (xmlChar *str); | 1849 xsltIsBlank (xmlChar *str); |
1839 XSLTPUBFUN void XSLTCALL» » » | 1850 XSLTPUBFUN void XSLTCALL |
1840 xsltFreeStackElemList (xsltStackElemPtr elem); | 1851 xsltFreeStackElemList (xsltStackElemPtr elem); |
1841 XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL» | 1852 XSLTPUBFUN xsltDecimalFormatPtr XSLTCALL |
1842 xsltDecimalFormatGetByName(xsltStylesheetPtr style, | 1853 xsltDecimalFormatGetByName(xsltStylesheetPtr style, |
1843 xmlChar *name); | 1854 xmlChar *name); |
1844 | 1855 |
1845 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1856 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1846 xsltParseStylesheetProcess(xsltStylesheetPtr ret, | 1857 xsltParseStylesheetProcess(xsltStylesheetPtr ret, |
1847 xmlDocPtr doc); | 1858 xmlDocPtr doc); |
1848 XSLTPUBFUN void XSLTCALL» » » | 1859 XSLTPUBFUN void XSLTCALL |
1849 xsltParseStylesheetOutput(xsltStylesheetPtr style, | 1860 xsltParseStylesheetOutput(xsltStylesheetPtr style, |
1850 xmlNodePtr cur); | 1861 xmlNodePtr cur); |
1851 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1862 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1852 xsltParseStylesheetDoc (xmlDocPtr doc); | 1863 xsltParseStylesheetDoc (xmlDocPtr doc); |
1853 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1864 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1854 xsltParseStylesheetImportedDoc(xmlDocPtr doc, | 1865 xsltParseStylesheetImportedDoc(xmlDocPtr doc, |
1855 xsltStylesheetPtr style); | 1866 xsltStylesheetPtr style); |
1856 XSLTPUBFUN xsltStylesheetPtr XSLTCALL» | 1867 XSLTPUBFUN xsltStylesheetPtr XSLTCALL |
1857 xsltLoadStylesheetPI (xmlDocPtr doc); | 1868 xsltLoadStylesheetPI (xmlDocPtr doc); |
1858 XSLTPUBFUN void XSLTCALL » » » | 1869 XSLTPUBFUN void XSLTCALL |
1859 xsltNumberFormat (xsltTransformContextPtr ctxt, | 1870 xsltNumberFormat (xsltTransformContextPtr ctxt, |
1860 xsltNumberDataPtr data, | 1871 xsltNumberDataPtr data, |
1861 xmlNodePtr node); | 1872 xmlNodePtr node); |
1862 XSLTPUBFUN xmlXPathError XSLTCALL» » | 1873 XSLTPUBFUN xmlXPathError XSLTCALL |
1863 xsltFormatNumberConversion(xsltDecimalFormatPtr self, | 1874 xsltFormatNumberConversion(xsltDecimalFormatPtr self, |
1864 xmlChar *format, | 1875 xmlChar *format, |
1865 double number, | 1876 double number, |
1866 xmlChar **result); | 1877 xmlChar **result); |
1867 | 1878 |
1868 XSLTPUBFUN void XSLTCALL» » » | 1879 XSLTPUBFUN void XSLTCALL |
1869 xsltParseTemplateContent(xsltStylesheetPtr style, | 1880 xsltParseTemplateContent(xsltStylesheetPtr style, |
1870 xmlNodePtr templ); | 1881 xmlNodePtr templ); |
1871 XSLTPUBFUN int XSLTCALL»» » | 1882 XSLTPUBFUN int XSLTCALL |
1872 xsltAllocateExtra (xsltStylesheetPtr style); | 1883 xsltAllocateExtra (xsltStylesheetPtr style); |
1873 XSLTPUBFUN int XSLTCALL»» » | 1884 XSLTPUBFUN int XSLTCALL |
1874 xsltAllocateExtraCtxt (xsltTransformContextPtr ctxt); | 1885 xsltAllocateExtraCtxt (xsltTransformContextPtr ctxt); |
1875 /* | 1886 /* |
1876 * Extra functions for Result Value Trees | 1887 * Extra functions for Result Value Trees |
1877 */ | 1888 */ |
1878 XSLTPUBFUN xmlDocPtr XSLTCALL» » | 1889 XSLTPUBFUN xmlDocPtr XSLTCALL |
1879 xsltCreateRVT (xsltTransformContextPtr ctxt); | 1890 xsltCreateRVT (xsltTransformContextPtr ctxt); |
1880 XSLTPUBFUN int XSLTCALL»» » | 1891 XSLTPUBFUN int XSLTCALL |
1881 xsltRegisterTmpRVT (xsltTransformContextPtr ctxt, | 1892 xsltRegisterTmpRVT (xsltTransformContextPtr ctxt, |
1882 xmlDocPtr RVT); | 1893 xmlDocPtr RVT); |
1883 XSLTPUBFUN int XSLTCALL»» » | 1894 XSLTPUBFUN int XSLTCALL |
1884 xsltRegisterLocalRVT (xsltTransformContextPtr ctxt, | 1895 xsltRegisterLocalRVT (xsltTransformContextPtr ctxt, |
1885 xmlDocPtr RVT); | 1896 xmlDocPtr RVT); |
1886 XSLTPUBFUN int XSLTCALL»» » | 1897 XSLTPUBFUN int XSLTCALL |
1887 xsltRegisterPersistRVT (xsltTransformContextPtr ctxt, | 1898 xsltRegisterPersistRVT (xsltTransformContextPtr ctxt, |
1888 xmlDocPtr RVT); | 1899 xmlDocPtr RVT); |
1889 XSLTPUBFUN int XSLTCALL | 1900 XSLTPUBFUN int XSLTCALL |
1890 xsltExtensionInstructionResultRegister( | 1901 xsltExtensionInstructionResultRegister( |
1891 xsltTransformContextPtr ctxt, | 1902 xsltTransformContextPtr ctxt, |
1892 xmlXPathObjectPtr obj); | 1903 xmlXPathObjectPtr obj); |
1893 XSLTPUBFUN int XSLTCALL | 1904 XSLTPUBFUN int XSLTCALL |
1894 xsltExtensionInstructionResultFinalize( | 1905 xsltExtensionInstructionResultFinalize( |
1895 xsltTransformContextPtr ctxt); | 1906 xsltTransformContextPtr ctxt); |
1896 XSLTPUBFUN void XSLTCALL | 1907 XSLTPUBFUN void XSLTCALL |
1897 xsltFreeRVTs (xsltTransformContextPtr ctxt); | 1908 xsltFreeRVTs (xsltTransformContextPtr ctxt); |
1898 XSLTPUBFUN void XSLTCALL | 1909 XSLTPUBFUN void XSLTCALL |
1899 xsltReleaseRVT (xsltTransformContextPtr ctxt, | 1910 xsltReleaseRVT (xsltTransformContextPtr ctxt, |
1900 xmlDocPtr RVT); | 1911 xmlDocPtr RVT); |
1901 XSLTPUBFUN int XSLTCALL | |
1902 xsltTransStorageAdd (xsltTransformContextPtr ctxt, | |
1903 void *id, | |
1904 void *data); | |
1905 XSLTPUBFUN void * XSLTCALL | |
1906 xsltTransStorageRemove (xsltTransformContextPtr ctxt, | |
1907 void *id); | |
1908 | |
1909 /* | 1912 /* |
1910 * Extra functions for Attribute Value Templates | 1913 * Extra functions for Attribute Value Templates |
1911 */ | 1914 */ |
1912 XSLTPUBFUN void XSLTCALL | 1915 XSLTPUBFUN void XSLTCALL |
1913 xsltCompileAttr (xsltStylesheetPtr style, | 1916 xsltCompileAttr (xsltStylesheetPtr style, |
1914 xmlAttrPtr attr); | 1917 xmlAttrPtr attr); |
1915 XSLTPUBFUN xmlChar * XSLTCALL | 1918 XSLTPUBFUN xmlChar * XSLTCALL |
1916 xsltEvalAVT (xsltTransformContextPtr ctxt, | 1919 xsltEvalAVT (xsltTransformContextPtr ctxt, |
1917 void *avt, | 1920 void *avt, |
1918 xmlNodePtr node); | 1921 xmlNodePtr node); |
1919 XSLTPUBFUN void XSLTCALL | 1922 XSLTPUBFUN void XSLTCALL |
1920 xsltFreeAVTList (void *avt); | 1923 xsltFreeAVTList (void *avt); |
1921 | 1924 |
1922 /* | 1925 /* |
1923 * Extra function for successful xsltCleanupGlobals / xsltInit sequence. | 1926 * Extra function for successful xsltCleanupGlobals / xsltInit sequence. |
1924 */ | 1927 */ |
1925 | 1928 |
1926 XSLTPUBFUN void XSLTCALL | 1929 XSLTPUBFUN void XSLTCALL |
1927 xsltUninit (void); | 1930 xsltUninit (void); |
1928 | 1931 |
1929 /************************************************************************ | 1932 /************************************************************************ |
1930 * * | 1933 * * |
1931 * Compile-time functions for *internal* use only * | 1934 * Compile-time functions for *internal* use only * |
1932 * * | 1935 * * |
1933 ************************************************************************/ | 1936 ************************************************************************/ |
1934 | 1937 |
1935 #ifdef XSLT_REFACTORED | 1938 #ifdef XSLT_REFACTORED |
1936 XSLTPUBFUN void XSLTCALL | 1939 XSLTPUBFUN void XSLTCALL |
1937 xsltParseSequenceConstructor( | 1940 xsltParseSequenceConstructor( |
1938 xsltCompilerCtxtPtr cctxt, | 1941 xsltCompilerCtxtPtr cctxt, |
1939 xmlNodePtr start); | 1942 xmlNodePtr start); |
1940 XSLTPUBFUN int XSLTCALL | 1943 XSLTPUBFUN int XSLTCALL |
1941 xsltParseAnyXSLTElem (xsltCompilerCtxtPtr cctxt, | 1944 xsltParseAnyXSLTElem (xsltCompilerCtxtPtr cctxt, |
1942 xmlNodePtr elem); | 1945 xmlNodePtr elem); |
1943 #ifdef XSLT_REFACTORED_XSLT_NSCOMP | 1946 #ifdef XSLT_REFACTORED_XSLT_NSCOMP |
1944 XSLTPUBFUN int XSLTCALL | 1947 XSLTPUBFUN int XSLTCALL |
1945 xsltRestoreDocumentNamespaces( | 1948 xsltRestoreDocumentNamespaces( |
(...skipping 12 matching lines...) Expand all Loading... |
1958 xsltDocumentPtr doc, | 1961 xsltDocumentPtr doc, |
1959 xsltKeyDefPtr keyd); | 1962 xsltKeyDefPtr keyd); |
1960 XSLTPUBFUN int XSLTCALL | 1963 XSLTPUBFUN int XSLTCALL |
1961 xsltInitAllDocKeys (xsltTransformContextPtr ctxt); | 1964 xsltInitAllDocKeys (xsltTransformContextPtr ctxt); |
1962 #ifdef __cplusplus | 1965 #ifdef __cplusplus |
1963 } | 1966 } |
1964 #endif | 1967 #endif |
1965 | 1968 |
1966 #endif /* __XML_XSLT_H__ */ | 1969 #endif /* __XML_XSLT_H__ */ |
1967 | 1970 |
OLD | NEW |