summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTizenOpenSource <tizenopensrc@samsung.com>2023-12-07 13:44:36 +0900
committerTizenOpenSource <tizenopensrc@samsung.com>2023-12-07 13:44:36 +0900
commit30b62a2822ed7836aa2580d1247739fb39ace499 (patch)
treec252a3a07aa14408d153bc2b58ad9a48e23cd854
parent2fe78f50bf6a5ea3e4c235f0ee5f6be66f42996e (diff)
downloadlibxslt-upstream/1.1.39.tar.gz
libxslt-upstream/1.1.39.tar.bz2
libxslt-upstream/1.1.39.zip
Imported Upstream version 1.1.39upstream/1.1.39upstream
-rw-r--r--.gitignore8
-rw-r--r--.gitlab-ci.yml148
-rwxr-xr-x.gitlab-ci/llvm-symbolizer9
-rw-r--r--.gitlab-ci/setup_mingw.sh11
-rw-r--r--.gitlab-ci/test.sh15
-rw-r--r--.gitlab-ci/test_cmake.sh30
-rw-r--r--CMakeLists.txt115
-rw-r--r--Makefile.am18
-rw-r--r--NEWS143
-rw-r--r--README22
-rw-r--r--README.md19
-rw-r--r--configure.ac72
-rw-r--r--doc/EXSLT/devhelp/libexslt-exslt.html32
-rw-r--r--doc/EXSLT/devhelp/libexslt-exsltexports.html6
-rw-r--r--doc/EXSLT/libexslt-api.xml65
-rw-r--r--doc/EXSLT/libexslt-refs.xml409
-rw-r--r--doc/Makefile.am11
-rwxr-xr-xdoc/apibuild.py3082
-rw-r--r--doc/checkapisym.xsl48
-rw-r--r--doc/devhelp/libxslt-attributes.html6
-rw-r--r--doc/devhelp/libxslt-documents.html10
-rw-r--r--doc/devhelp/libxslt-extensions.html64
-rw-r--r--doc/devhelp/libxslt-extra.html10
-rw-r--r--doc/devhelp/libxslt-functions.html14
-rw-r--r--doc/devhelp/libxslt-imports.html10
-rw-r--r--doc/devhelp/libxslt-keys.html6
-rw-r--r--doc/devhelp/libxslt-namespaces.html2
-rw-r--r--doc/devhelp/libxslt-numbersInternals.html2
-rw-r--r--doc/devhelp/libxslt-pattern.html12
-rw-r--r--doc/devhelp/libxslt-preproc.html4
-rw-r--r--doc/devhelp/libxslt-security.html20
-rw-r--r--doc/devhelp/libxslt-templates.html14
-rw-r--r--doc/devhelp/libxslt-transform.html54
-rw-r--r--doc/devhelp/libxslt-variables.html18
-rw-r--r--doc/devhelp/libxslt-xslt.html14
-rw-r--r--doc/devhelp/libxslt-xsltInternals.html334
-rw-r--r--doc/devhelp/libxslt-xsltexports.html4
-rw-r--r--doc/devhelp/libxslt-xsltlocale.html43
-rw-r--r--doc/devhelp/libxslt-xsltutils.html75
-rw-r--r--doc/devhelp/libxslt.devhelp27
-rw-r--r--doc/libxslt-api.xml1433
-rw-r--r--doc/libxslt-refs.xml8787
-rw-r--r--doc/symbols.xml326
-rw-r--r--doc/syms.xsl114
-rw-r--r--examples/xsltICUSort.c402
-rw-r--r--libexslt.pc.in2
-rw-r--r--libexslt/Makefile.am6
-rw-r--r--libexslt/crypto.c3
-rw-r--r--libexslt/date.c432
-rw-r--r--libexslt/functions.c66
-rw-r--r--libexslt/saxon.c19
-rw-r--r--libexslt/sets.c12
-rw-r--r--libxslt-config.cmake.cmake.in6
-rw-r--r--libxslt.pc.in2
-rw-r--r--libxslt.spec.in4
-rw-r--r--libxslt/Makefile.am3
-rw-r--r--libxslt/attributes.c19
-rw-r--r--libxslt/attributes.h1
-rw-r--r--libxslt/attrvt.c33
-rw-r--r--libxslt/documents.c2
-rw-r--r--libxslt/extensions.c70
-rw-r--r--libxslt/functions.c145
-rw-r--r--libxslt/imports.c80
-rw-r--r--libxslt/keys.c26
-rw-r--r--libxslt/libxslt.syms12
-rw-r--r--libxslt/numbers.c96
-rw-r--r--libxslt/pattern.c92
-rw-r--r--libxslt/preproc.c10
-rw-r--r--libxslt/security.c2
-rw-r--r--libxslt/templates.c4
-rw-r--r--libxslt/transform.c131
-rw-r--r--libxslt/variables.c96
-rw-r--r--libxslt/variables.h6
-rw-r--r--libxslt/xslt.c91
-rw-r--r--libxslt/xsltInternals.h18
-rw-r--r--libxslt/xsltlocale.c151
-rw-r--r--libxslt/xsltlocale.h70
-rw-r--r--libxslt/xsltutils.c386
-rw-r--r--libxslt/xsltutils.h37
-rw-r--r--m4/ax_append_flag.m450
-rw-r--r--m4/ax_append_link_flags.m444
-rw-r--r--m4/ax_check_link_flag.m453
-rw-r--r--m4/ax_require_defined.m437
-rw-r--r--python/Makefile.am16
-rwxr-xr-xpython/generator.py32
-rw-r--r--python/libxslt-python-api.xml2
-rw-r--r--python/libxslt.c24
-rw-r--r--python/libxslt_wrap.h1
-rw-r--r--python/pyproject.toml3
-rw-r--r--python/setup.py.in207
-rw-r--r--python/tests/Makefile.am19
-rwxr-xr-xpython/tests/basic.py9
-rwxr-xr-xpython/tests/exslt.py1
-rwxr-xr-x[-rw-r--r--]python/tests/extelem.py1
-rwxr-xr-xpython/tests/extfunc.py1
-rw-r--r--python/tests/setup_test.py8
-rw-r--r--python/types.c197
-rw-r--r--tests/Makefile.am62
-rw-r--r--tests/REC/Makefile.am219
-rw-r--r--tests/REC/test-10-3.out2
-rw-r--r--tests/REC/test-10-3.xml20
-rw-r--r--tests/REC/test-10-3.xsl19
-rw-r--r--tests/REC/test-12.4-1.out11
-rw-r--r--tests/REC/test-12.4-1.xml6
-rw-r--r--tests/REC/test-12.4-1.xsl38
-rw-r--r--tests/REC/test-6.1.out0
-rw-r--r--tests/REC1/Makefile.am23
-rw-r--r--tests/REC2/Makefile.am30
-rw-r--r--tests/REC2/data.xml21
-rw-r--r--tests/REC2/html.out32
-rw-r--r--tests/REC2/html.xml53
-rw-r--r--tests/REC2/svg.out18
-rw-r--r--tests/REC2/svg.xml39
-rw-r--r--tests/REC2/vrml.out38
-rw-r--r--tests/REC2/vrml.xml59
-rw-r--r--tests/XSLTMark/Makefile.am8
-rw-r--r--tests/docbook/Makefile.am6
-rw-r--r--tests/docs/Makefile.am228
-rw-r--r--tests/documents/Makefile.am42
-rw-r--r--tests/documents/bredfort.out (renamed from tests/documents/result.xhtml)0
-rw-r--r--tests/documents/bredfort.xml (renamed from tests/documents/index.xml)0
-rw-r--r--tests/documents/fragment.out (renamed from tests/documents/fragment.result)0
-rw-r--r--tests/documents/message.err (renamed from tests/documents/message.result)0
-rw-r--r--tests/documents/test.out (renamed from tests/documents/test.result)0
-rw-r--r--tests/documents/test_bad.err4
-rw-r--r--tests/documents/test_bad.out (renamed from tests/documents/test_bad.result)0
-rw-r--r--tests/documents/test_bad.xsl16
-rw-r--r--tests/encoding/bug-146.out (renamed from tests/general/bug-146.out)0
-rw-r--r--tests/encoding/bug-146.xml (renamed from tests/docs/bug-146.xml)0
-rw-r--r--tests/encoding/bug-146.xsl (renamed from tests/general/bug-146.xsl)0
-rw-r--r--tests/exslt/Makefile.am12
-rw-r--r--tests/exslt/common/Makefile.am56
-rw-r--r--tests/exslt/common/dynamic-id.out13
-rw-r--r--tests/exslt/common/dynamic-id.xml (renamed from tests/docs/bug-100.xml)0
-rw-r--r--tests/exslt/common/dynamic-id.xsl29
-rw-r--r--tests/exslt/crypto/Makefile.am47
-rw-r--r--tests/exslt/date/Makefile.am86
-rw-r--r--tests/exslt/date/duration.1.out4
-rw-r--r--tests/exslt/date/duration.1.xml1
-rw-r--r--tests/exslt/date/sum.2.err0
-rw-r--r--tests/exslt/date/time.1.out18
-rw-r--r--tests/exslt/date/time.1.xml1
-rw-r--r--tests/exslt/dynamic/Makefile.am52
-rw-r--r--tests/exslt/functions/Makefile.am56
-rw-r--r--tests/exslt/math/Makefile.am57
-rw-r--r--tests/exslt/saxon/Makefile.am45
-rw-r--r--tests/exslt/saxon/eval.2.out0
-rw-r--r--tests/exslt/saxon/eval.3.out0
-rw-r--r--tests/exslt/sets/Makefile.am50
-rw-r--r--tests/exslt/strings/Makefile.am53
-rw-r--r--tests/extensions/Makefile.am51
-rw-r--r--tests/fuzz/.gitignore2
-rw-r--r--tests/fuzz/Makefile.am48
-rw-r--r--tests/fuzz/fuzz.c690
-rw-r--r--tests/fuzz/fuzz.h61
-rw-r--r--tests/fuzz/genSeed.c487
-rw-r--r--tests/fuzz/seed/xpath/crypto_md41
-rw-r--r--tests/fuzz/seed/xpath/crypto_md51
-rw-r--r--tests/fuzz/seed/xpath/crypto_rc4_decrypt1
-rw-r--r--tests/fuzz/seed/xpath/crypto_sha11
-rw-r--r--tests/fuzz/seed/xpath/date_add1
-rw-r--r--tests/fuzz/seed/xpath/date_add_duration1
-rw-r--r--tests/fuzz/seed/xpath/date_date1
-rw-r--r--tests/fuzz/seed/xpath/date_date_time1
-rw-r--r--tests/fuzz/seed/xpath/date_day_abbreviation1
-rw-r--r--tests/fuzz/seed/xpath/date_day_in_month1
-rw-r--r--tests/fuzz/seed/xpath/date_day_in_week1
-rw-r--r--tests/fuzz/seed/xpath/date_day_in_year1
-rw-r--r--tests/fuzz/seed/xpath/date_day_name1
-rw-r--r--tests/fuzz/seed/xpath/date_day_of_week_in_month1
-rw-r--r--tests/fuzz/seed/xpath/date_difference1
-rw-r--r--tests/fuzz/seed/xpath/date_duration1
-rw-r--r--tests/fuzz/seed/xpath/date_format_date1
-rw-r--r--tests/fuzz/seed/xpath/date_hour_in_day1
-rw-r--r--tests/fuzz/seed/xpath/date_leap_year1
-rw-r--r--tests/fuzz/seed/xpath/date_minute_in_hour1
-rw-r--r--tests/fuzz/seed/xpath/date_month_abbreviation1
-rw-r--r--tests/fuzz/seed/xpath/date_month_in_year1
-rw-r--r--tests/fuzz/seed/xpath/date_month_name1
-rw-r--r--tests/fuzz/seed/xpath/date_parse_date1
-rw-r--r--tests/fuzz/seed/xpath/date_second_in_minute1
-rw-r--r--tests/fuzz/seed/xpath/date_seconds1
-rw-r--r--tests/fuzz/seed/xpath/date_sum1
-rw-r--r--tests/fuzz/seed/xpath/date_time1
-rw-r--r--tests/fuzz/seed/xpath/date_week_in_month1
-rw-r--r--tests/fuzz/seed/xpath/date_week_in_year1
-rw-r--r--tests/fuzz/seed/xpath/date_year1
-rw-r--r--tests/fuzz/seed/xpath/dyn_evaluate1
-rw-r--r--tests/fuzz/seed/xpath/dyn_map1
-rw-r--r--tests/fuzz/seed/xpath/expr_arith1
-rw-r--r--tests/fuzz/seed/xpath/expr_location_path1
-rw-r--r--tests/fuzz/seed/xpath/expr_predicate1
-rw-r--r--tests/fuzz/seed/xpath/exsl_node_set_11
-rw-r--r--tests/fuzz/seed/xpath/exsl_node_set_21
-rw-r--r--tests/fuzz/seed/xpath/exsl_object_type1
-rw-r--r--tests/fuzz/seed/xpath/func_boolean1
-rw-r--r--tests/fuzz/seed/xpath/func_ceiling1
-rw-r--r--tests/fuzz/seed/xpath/func_concat1
-rw-r--r--tests/fuzz/seed/xpath/func_contains1
-rw-r--r--tests/fuzz/seed/xpath/func_count1
-rw-r--r--tests/fuzz/seed/xpath/func_false1
-rw-r--r--tests/fuzz/seed/xpath/func_floor1
-rw-r--r--tests/fuzz/seed/xpath/func_id1
-rw-r--r--tests/fuzz/seed/xpath/func_lang1
-rw-r--r--tests/fuzz/seed/xpath/func_last1
-rw-r--r--tests/fuzz/seed/xpath/func_local_name1
-rw-r--r--tests/fuzz/seed/xpath/func_name1
-rw-r--r--tests/fuzz/seed/xpath/func_namespace_uri1
-rw-r--r--tests/fuzz/seed/xpath/func_normalize_space1
-rw-r--r--tests/fuzz/seed/xpath/func_not1
-rw-r--r--tests/fuzz/seed/xpath/func_number_node1
-rw-r--r--tests/fuzz/seed/xpath/func_number_str1
-rw-r--r--tests/fuzz/seed/xpath/func_position1
-rw-r--r--tests/fuzz/seed/xpath/func_round1
-rw-r--r--tests/fuzz/seed/xpath/func_starts_with1
-rw-r--r--tests/fuzz/seed/xpath/func_string_length1
-rw-r--r--tests/fuzz/seed/xpath/func_string_node1
-rw-r--r--tests/fuzz/seed/xpath/func_string_num1
-rw-r--r--tests/fuzz/seed/xpath/func_substring1
-rw-r--r--tests/fuzz/seed/xpath/func_substring_after1
-rw-r--r--tests/fuzz/seed/xpath/func_substring_before1
-rw-r--r--tests/fuzz/seed/xpath/func_sum1
-rw-r--r--tests/fuzz/seed/xpath/func_translate1
-rw-r--r--tests/fuzz/seed/xpath/func_true1
-rw-r--r--tests/fuzz/seed/xpath/math_abs1
-rw-r--r--tests/fuzz/seed/xpath/math_acos1
-rw-r--r--tests/fuzz/seed/xpath/math_asin1
-rw-r--r--tests/fuzz/seed/xpath/math_atan1
-rw-r--r--tests/fuzz/seed/xpath/math_atan21
-rw-r--r--tests/fuzz/seed/xpath/math_constant1
-rw-r--r--tests/fuzz/seed/xpath/math_cos1
-rw-r--r--tests/fuzz/seed/xpath/math_exp1
-rw-r--r--tests/fuzz/seed/xpath/math_highest1
-rw-r--r--tests/fuzz/seed/xpath/math_log1
-rw-r--r--tests/fuzz/seed/xpath/math_lowest1
-rw-r--r--tests/fuzz/seed/xpath/math_max1
-rw-r--r--tests/fuzz/seed/xpath/math_min1
-rw-r--r--tests/fuzz/seed/xpath/math_power1
-rw-r--r--tests/fuzz/seed/xpath/math_random1
-rw-r--r--tests/fuzz/seed/xpath/math_sin1
-rw-r--r--tests/fuzz/seed/xpath/math_sqrt1
-rw-r--r--tests/fuzz/seed/xpath/math_tan1
-rw-r--r--tests/fuzz/seed/xpath/saxon_eval1
-rw-r--r--tests/fuzz/seed/xpath/saxon_evaluate1
-rw-r--r--tests/fuzz/seed/xpath/saxon_line_number_01
-rw-r--r--tests/fuzz/seed/xpath/saxon_line_number_11
-rw-r--r--tests/fuzz/seed/xpath/saxon_systemId1
-rw-r--r--tests/fuzz/seed/xpath/set_difference1
-rw-r--r--tests/fuzz/seed/xpath/set_distinct1
-rw-r--r--tests/fuzz/seed/xpath/set_has_same_node1
-rw-r--r--tests/fuzz/seed/xpath/set_intersection1
-rw-r--r--tests/fuzz/seed/xpath/set_leading1
-rw-r--r--tests/fuzz/seed/xpath/set_trailing1
-rw-r--r--tests/fuzz/seed/xpath/str_align_center1
-rw-r--r--tests/fuzz/seed/xpath/str_align_left1
-rw-r--r--tests/fuzz/seed/xpath/str_align_right1
-rw-r--r--tests/fuzz/seed/xpath/str_concat1
-rw-r--r--tests/fuzz/seed/xpath/str_decode_uri1
-rw-r--r--tests/fuzz/seed/xpath/str_encode_uri_11
-rw-r--r--tests/fuzz/seed/xpath/str_encode_uri_21
-rw-r--r--tests/fuzz/seed/xpath/str_padding1
-rw-r--r--tests/fuzz/seed/xpath/str_replace1
-rw-r--r--tests/fuzz/seed/xpath/str_split1
-rw-r--r--tests/fuzz/seed/xpath/str_tokenize1
-rw-r--r--tests/fuzz/seed/xpath/xslt_current1
-rw-r--r--tests/fuzz/seed/xpath/xslt_document1
-rw-r--r--tests/fuzz/seed/xpath/xslt_element_available1
-rw-r--r--tests/fuzz/seed/xpath/xslt_format_number1
-rw-r--r--tests/fuzz/seed/xpath/xslt_format_number_neg1
-rw-r--r--tests/fuzz/seed/xpath/xslt_function_available1
-rw-r--r--tests/fuzz/seed/xpath/xslt_generate_id1
-rw-r--r--tests/fuzz/seed/xpath/xslt_system_property1
-rw-r--r--tests/fuzz/seed/xpath/xslt_unparsed_entity_uri1
-rw-r--r--tests/fuzz/seed/xslt/attr_set9
-rw-r--r--tests/fuzz/seed/xslt/cdata4
-rw-r--r--tests/fuzz/seed/xslt/decimal_format15
-rw-r--r--tests/fuzz/seed/xslt/element5
-rw-r--r--tests/fuzz/seed/xslt/extension7
-rw-r--r--tests/fuzz/seed/xslt/html4
-rw-r--r--tests/fuzz/seed/xslt/key4
-rw-r--r--tests/fuzz/seed/xslt/lre3
-rw-r--r--tests/fuzz/seed/xslt/mode4
-rw-r--r--tests/fuzz/seed/xslt/number10
-rw-r--r--tests/fuzz/seed/xslt/output4
-rw-r--r--tests/fuzz/seed/xslt/param8
-rw-r--r--tests/fuzz/seed/xslt/sort6
-rw-r--r--tests/fuzz/seed/xslt/strip_space6
-rw-r--r--tests/fuzz/seed/xslt/text4
-rw-r--r--tests/fuzz/seed/xslt/variable4
-rw-r--r--tests/fuzz/seed/xslt/xhtml4
-rw-r--r--tests/fuzz/testTargets.c42
-rw-r--r--tests/fuzz/xpath.c5
-rw-r--r--tests/fuzz/xpath.dict15
-rw-r--r--tests/fuzz/xpath.xml19
-rw-r--r--tests/fuzz/xslt.c5
-rw-r--r--tests/fuzz/xslt.dict15
-rw-r--r--tests/fuzz/xslt.xml21
-rw-r--r--tests/general/Makefile.am310
-rw-r--r--tests/general/array.xml (renamed from tests/docs/array.xml)0
-rw-r--r--tests/general/bug-1-.xml (renamed from tests/docs/bug-1-.xml)0
-rw-r--r--tests/general/bug-10-.xml (renamed from tests/docs/bug-10-.xml)0
-rw-r--r--tests/general/bug-100.xml (renamed from tests/docs/bug-101.xml)0
-rw-r--r--tests/general/bug-101.xml (renamed from tests/docs/bug-102.xml)0
-rw-r--r--tests/general/bug-102-inc.out3
-rw-r--r--tests/general/bug-102.xml (renamed from tests/docs/bug-105.xml)0
-rw-r--r--tests/general/bug-103.xml (renamed from tests/docs/bug-103.xml)0
-rw-r--r--tests/general/bug-104.xml (renamed from tests/docs/bug-104.xml)0
-rw-r--r--tests/general/bug-105.xml (renamed from tests/docs/bug-112.xml)0
-rw-r--r--tests/general/bug-106.xml (renamed from tests/docs/bug-106.xml)0
-rw-r--r--tests/general/bug-107.xml (renamed from tests/docs/bug-107.xml)0
-rw-r--r--tests/general/bug-108.xml (renamed from tests/docs/bug-108.xml)0
-rw-r--r--tests/general/bug-109.xml (renamed from tests/docs/bug-109.xml)0
-rw-r--r--tests/general/bug-11-.xml (renamed from tests/docs/bug-11-.xml)0
-rw-r--r--tests/general/bug-110.ent (renamed from tests/docs/bug-110.ent)0
-rw-r--r--tests/general/bug-110.err0
-rw-r--r--tests/general/bug-110.xml (renamed from tests/docs/bug-110.xml)0
-rw-r--r--tests/general/bug-111.xml (renamed from tests/docs/bug-111.xml)0
-rw-r--r--tests/general/bug-112.xml (renamed from tests/docs/bug-115.xml)0
-rw-r--r--tests/general/bug-113.xml (renamed from tests/docs/bug-113.xml)0
-rw-r--r--tests/general/bug-114.xml (renamed from tests/docs/bug-114.xml)0
-rw-r--r--tests/general/bug-115.xml (renamed from tests/docs/bug-116.xml)0
-rw-r--r--tests/general/bug-116.xml (renamed from tests/docs/bug-121.xml)0
-rw-r--r--tests/general/bug-117.xml (renamed from tests/docs/bug-117.xml)0
-rw-r--r--tests/general/bug-118.xml (renamed from tests/docs/bug-118.xml)0
-rw-r--r--tests/general/bug-119.xml (renamed from tests/docs/bug-119.xml)0
-rw-r--r--tests/general/bug-12-.xml (renamed from tests/docs/bug-12-.xml)0
-rw-r--r--tests/general/bug-120.xml (renamed from tests/docs/bug-120.xml)0
-rw-r--r--tests/general/bug-121.xml (renamed from tests/docs/bug-126.xml)0
-rw-r--r--tests/general/bug-122.xml (renamed from tests/docs/bug-122.xml)0
-rw-r--r--tests/general/bug-123.xml (renamed from tests/docs/bug-123.xml)0
-rw-r--r--tests/general/bug-124.xml (renamed from tests/docs/bug-124.xml)0
-rw-r--r--tests/general/bug-125.xml (renamed from tests/docs/bug-125.xml)0
-rw-r--r--tests/general/bug-126.xml (renamed from tests/docs/bug-127.xml)0
-rw-r--r--tests/general/bug-127.xml (renamed from tests/docs/bug-143.xml)0
-rw-r--r--tests/general/bug-128.xml (renamed from tests/docs/bug-128.xml)0
-rw-r--r--tests/general/bug-129.xml (renamed from tests/docs/bug-129.xml)0
-rw-r--r--tests/general/bug-13-.xml (renamed from tests/docs/bug-13-.xml)0
-rw-r--r--tests/general/bug-130.doc (renamed from tests/docs/bug-130.doc)0
-rw-r--r--tests/general/bug-130.xml (renamed from tests/docs/bug-130.xml)0
-rw-r--r--tests/general/bug-130.xsl2
-rw-r--r--tests/general/bug-131.xml (renamed from tests/docs/bug-131.xml)0
-rw-r--r--tests/general/bug-132.xml (renamed from tests/docs/bug-132.xml)0
-rw-r--r--tests/general/bug-133.xml (renamed from tests/docs/bug-133.xml)0
-rw-r--r--tests/general/bug-134.xml (renamed from tests/docs/bug-134.xml)0
-rw-r--r--tests/general/bug-135.xml (renamed from tests/docs/bug-135.xml)0
-rw-r--r--tests/general/bug-136.xml (renamed from tests/docs/bug-136.xml)0
-rw-r--r--tests/general/bug-137.xml (renamed from tests/docs/bug-137.xml)0
-rw-r--r--tests/general/bug-138.xml (renamed from tests/docs/bug-138.xml)0
-rw-r--r--tests/general/bug-139.xml (renamed from tests/docs/bug-139.xml)0
-rw-r--r--tests/general/bug-14-.xml (renamed from tests/docs/bug-14-.xml)0
-rw-r--r--tests/general/bug-140.xml (renamed from tests/docs/bug-140.xml)0
-rw-r--r--tests/general/bug-141.xml (renamed from tests/docs/bug-141.xml)0
-rwxr-xr-xtests/general/bug-142.xml (renamed from tests/docs/bug-142.xml)0
-rw-r--r--tests/general/bug-143.xml (renamed from tests/docs/bug-144.xml)0
-rw-r--r--tests/general/bug-144.xml (renamed from tests/docs/bug-148.xml)0
-rw-r--r--tests/general/bug-145.err2
-rw-r--r--tests/general/bug-145.out0
-rw-r--r--tests/general/bug-145.xml (renamed from tests/docs/bug-145.xml)0
-rw-r--r--tests/general/bug-147.xml (renamed from tests/docs/bug-147.xml)0
-rw-r--r--tests/general/bug-148.xml (renamed from tests/docs/bug-149.xml)0
-rw-r--r--tests/general/bug-149.xml (renamed from tests/docs/bug-150.xml)0
-rw-r--r--tests/general/bug-15-.xml (renamed from tests/docs/bug-15-.xml)0
-rw-r--r--tests/general/bug-150.xml (renamed from tests/docs/bug-151.xml)0
-rw-r--r--tests/general/bug-151.out0
-rw-r--r--tests/general/bug-151.xml (renamed from tests/docs/bug-152.xml)0
-rw-r--r--tests/general/bug-152.xml (renamed from tests/docs/bug-154.xml)0
-rw-r--r--tests/general/bug-153.doc (renamed from tests/docs/bug-153.doc)0
-rw-r--r--tests/general/bug-153.xml (renamed from tests/docs/bug-153.xml)0
-rw-r--r--tests/general/bug-153.xsl2
-rw-r--r--tests/general/bug-154.out0
-rw-r--r--tests/general/bug-154.xml (renamed from tests/docs/bug-156.xml)0
-rw-r--r--tests/general/bug-155.xml (renamed from tests/docs/bug-155.xml)0
-rw-r--r--tests/general/bug-156.out0
-rw-r--r--tests/general/bug-156.xml (renamed from tests/docs/bug-159.xml)0
-rw-r--r--tests/general/bug-157.xml (renamed from tests/docs/bug-157.xml)0
-rw-r--r--tests/general/bug-158.doc (renamed from tests/docs/bug-158.doc)0
-rw-r--r--tests/general/bug-158.xml (renamed from tests/docs/bug-158.xml)0
-rw-r--r--tests/general/bug-158.xsl2
-rw-r--r--tests/general/bug-159.xml (renamed from tests/docs/bug-167.xml)0
-rw-r--r--tests/general/bug-16-.xml (renamed from tests/docs/bug-16-.xml)0
-rw-r--r--tests/general/bug-160.xml (renamed from tests/docs/bug-160.xml)0
-rw-r--r--tests/general/bug-161.xml (renamed from tests/docs/bug-161.xml)0
-rw-r--r--tests/general/bug-163.xml (renamed from tests/docs/bug-163.xml)0
-rw-r--r--tests/general/bug-164.xml (renamed from tests/docs/bug-164.xml)0
-rw-r--r--tests/general/bug-165.err2
-rw-r--r--tests/general/bug-165.out0
-rw-r--r--tests/general/bug-165.xml (renamed from tests/docs/bug-165.xml)0
-rw-r--r--tests/general/bug-166.xml (renamed from tests/docs/bug-166.xml)0
-rw-r--r--tests/general/bug-167.xml (renamed from tests/docs/bug-169.xml)0
-rw-r--r--tests/general/bug-168.xml (renamed from tests/docs/bug-168.xml)0
-rw-r--r--tests/general/bug-169.xml (renamed from tests/docs/bug-17-.xml)0
-rw-r--r--tests/general/bug-17-.xml (renamed from tests/docs/bug-174.xml)0
-rw-r--r--tests/general/bug-170.xml (renamed from tests/docs/bug-170.xml)0
-rw-r--r--tests/general/bug-171.xml (renamed from tests/docs/bug-171.xml)0
-rw-r--r--tests/general/bug-172.xml (renamed from tests/docs/bug-172.xml)0
-rw-r--r--tests/general/bug-173.xml (renamed from tests/docs/bug-173.xml)0
-rw-r--r--tests/general/bug-174.out0
-rw-r--r--tests/general/bug-174.xml (renamed from tests/docs/bug-175.xml)0
-rw-r--r--tests/general/bug-175.xml (renamed from tests/docs/bug-176.xml)0
-rw-r--r--tests/general/bug-176.xml (renamed from tests/docs/bug-177.xml)0
-rw-r--r--tests/general/bug-177.xml (renamed from tests/docs/bug-178.xml)0
-rw-r--r--tests/general/bug-178.xml (renamed from tests/docs/bug-179.xml)0
-rw-r--r--tests/general/bug-179.xml (renamed from tests/docs/bug-184.xml)0
-rw-r--r--tests/general/bug-18-.xml (renamed from tests/docs/bug-18-.xml)0
-rw-r--r--tests/general/bug-180.err2
-rw-r--r--tests/general/bug-180.out0
-rw-r--r--tests/general/bug-180.xml (renamed from tests/docs/bug-180.xml)0
-rw-r--r--tests/general/bug-181.xml (renamed from tests/docs/bug-181.xml)0
-rw-r--r--tests/general/bug-182.xml (renamed from tests/docs/bug-182.xml)0
-rw-r--r--tests/general/bug-183.xml (renamed from tests/docs/bug-183.xml)0
-rw-r--r--tests/general/bug-184.err2
-rw-r--r--tests/general/bug-184.out0
-rw-r--r--tests/general/bug-184.xml (renamed from tests/docs/bug-187.xml)0
-rw-r--r--tests/general/bug-186.xml (renamed from tests/docs/bug-186.xml)0
-rw-r--r--tests/general/bug-187.xml (renamed from tests/docs/bug-188.xml)0
-rw-r--r--tests/general/bug-188-imp.out0
-rw-r--r--tests/general/bug-188.xml (renamed from tests/docs/bug-189.xml)0
-rw-r--r--tests/general/bug-189.xml (renamed from tests/docs/bug-190.xml)0
-rw-r--r--tests/general/bug-19-.xml (renamed from tests/docs/bug-19-.xml)0
-rw-r--r--tests/general/bug-190-imp.out0
-rw-r--r--tests/general/bug-190.xml (renamed from tests/docs/bug-191.xml)0
-rw-r--r--tests/general/bug-191-imp.out0
-rw-r--r--tests/general/bug-191.out0
-rw-r--r--tests/general/bug-191.xml (renamed from tests/docs/bug-192.xml)0
-rw-r--r--tests/general/bug-192.xml (renamed from tests/docs/bug-194.xml)0
-rw-r--r--tests/general/bug-193.xml (renamed from tests/docs/bug-193.xml)0
-rw-r--r--tests/general/bug-194.err2
-rw-r--r--tests/general/bug-194.out0
-rw-r--r--tests/general/bug-194.xml (renamed from tests/docs/bug-200.xml)0
-rw-r--r--tests/general/bug-195.xml (renamed from tests/docs/bug-195.xml)0
-rw-r--r--tests/general/bug-196.xml (renamed from tests/docs/bug-196.xml)0
-rw-r--r--tests/general/bug-197.xml (renamed from tests/docs/bug-197.xml)0
-rw-r--r--tests/general/bug-198.xml (renamed from tests/docs/bug-198.xml)0
-rw-r--r--tests/general/bug-199.xml (renamed from tests/docs/bug-199.xml)0
-rw-r--r--tests/general/bug-2-.xml (renamed from tests/docs/bug-2-.xml)0
-rw-r--r--tests/general/bug-20-.xml (renamed from tests/docs/bug-20-.xml)0
-rw-r--r--tests/general/bug-200.xml (renamed from tests/docs/bug-201.xml)0
-rw-r--r--tests/general/bug-201.err2
-rw-r--r--tests/general/bug-201.out0
-rw-r--r--tests/general/bug-201.xml (renamed from tests/docs/bug-202.xml)0
-rw-r--r--tests/general/bug-202.out0
-rw-r--r--tests/general/bug-202.xml (renamed from tests/docs/bug-203.xml)0
-rw-r--r--tests/general/bug-203.out0
-rw-r--r--tests/general/bug-203.xml (renamed from tests/docs/bug-204.xml)0
-rw-r--r--tests/general/bug-204.out0
-rw-r--r--tests/general/bug-204.xml (renamed from tests/docs/bug-205.xml)0
-rw-r--r--tests/general/bug-205.xml (renamed from tests/docs/bug-206.xml)0
-rw-r--r--tests/general/bug-206.xml (renamed from tests/docs/bug-209.xml)0
-rw-r--r--tests/general/bug-207.xml (renamed from tests/docs/bug-207.xml)0
-rw-r--r--tests/general/bug-208.err2
-rw-r--r--tests/general/bug-208.out0
-rw-r--r--tests/general/bug-208.xml (renamed from tests/docs/bug-208.xml)0
-rw-r--r--tests/general/bug-209.xml (renamed from tests/docs/bug-210.xml)0
-rw-r--r--tests/general/bug-21-.out2
-rw-r--r--tests/general/bug-21-.xml (renamed from tests/docs/bug-21-.xml)0
-rw-r--r--tests/general/bug-210.xml (renamed from tests/docs/bug-211.xml)0
-rw-r--r--tests/general/bug-211.xml (renamed from tests/docs/bug-212.xml)0
-rw-r--r--tests/general/bug-212.xml (renamed from tests/docs/bug-213.xml)0
-rw-r--r--tests/general/bug-213.xml (renamed from tests/docs/bug-220.xml)0
-rw-r--r--tests/general/bug-214.xml (renamed from tests/docs/bug-214.xml)0
-rw-r--r--tests/general/bug-215.err5
-rw-r--r--tests/general/bug-215.out0
-rw-r--r--tests/general/bug-215.xml (renamed from tests/docs/bug-215.xml)0
-rw-r--r--tests/general/bug-216.xml (renamed from tests/docs/bug-216.xml)0
-rw-r--r--tests/general/bug-217.xml (renamed from tests/docs/bug-217.xml)0
-rw-r--r--tests/general/bug-218.xml (renamed from tests/docs/bug-218.xml)0
-rw-r--r--tests/general/bug-219.xml (renamed from tests/docs/bug-219.xml)0
-rw-r--r--tests/general/bug-22-.xml (renamed from tests/docs/bug-22-.xml)0
-rw-r--r--tests/general/bug-220.xml (renamed from tests/docs/bug-222.xml)0
-rw-r--r--tests/general/bug-221.xml (renamed from tests/docs/bug-221.xml)0
-rw-r--r--tests/general/bug-222.xml (renamed from tests/docs/bug-25-.xml)0
-rw-r--r--tests/general/bug-223-imp.xsl12
-rw-r--r--tests/general/bug-223-inc.xsl12
-rw-r--r--tests/general/bug-223.out1
-rw-r--r--tests/general/bug-223.xml (renamed from tests/docs/bug-26-.xml)0
-rw-r--r--tests/general/bug-223.xsl17
-rw-r--r--tests/general/bug-23-.xml (renamed from tests/docs/bug-23-.xml)0
-rw-r--r--tests/general/bug-24-.xml (renamed from tests/docs/bug-24-.xml)0
-rw-r--r--tests/general/bug-25-.xml (renamed from tests/docs/bug-27-.xml)0
-rw-r--r--tests/general/bug-26-.xml (renamed from tests/docs/bug-28-.xml)0
-rw-r--r--tests/general/bug-27-.xml (renamed from tests/docs/bug-30-.xml)0
-rw-r--r--tests/general/bug-28-.xml (renamed from tests/docs/bug-40-.xml)0
-rw-r--r--tests/general/bug-29-.ent (renamed from tests/docs/bug-29-.ent)0
-rw-r--r--tests/general/bug-29-.xml (renamed from tests/docs/bug-29-.xml)0
-rw-r--r--tests/general/bug-3-.xml (renamed from tests/docs/bug-3-.xml)0
-rw-r--r--tests/general/bug-30-.xml (renamed from tests/docs/bug-41-.xml)0
-rw-r--r--tests/general/bug-31-.xml (renamed from tests/docs/bug-31-.xml)0
-rw-r--r--tests/general/bug-32-.xml (renamed from tests/docs/bug-32-.xml)0
-rw-r--r--tests/general/bug-33-.xml (renamed from tests/docs/bug-33-.xml)0
-rw-r--r--tests/general/bug-35-.xml (renamed from tests/docs/bug-35-.xml)0
-rw-r--r--tests/general/bug-36-.xml (renamed from tests/docs/bug-36-.xml)0
-rw-r--r--tests/general/bug-36-inc.out4
-rw-r--r--tests/general/bug-37-.xml (renamed from tests/docs/bug-37-.xml)0
-rw-r--r--tests/general/bug-37-inc.out4
-rw-r--r--tests/general/bug-38-.xml (renamed from tests/docs/bug-38-.xml)0
-rw-r--r--tests/general/bug-39-.xml (renamed from tests/docs/bug-39-.xml)0
-rw-r--r--tests/general/bug-4-.xml (renamed from tests/docs/bug-4-.xml)0
-rw-r--r--tests/general/bug-40-.xml (renamed from tests/docs/bug-42-.xml)0
-rw-r--r--tests/general/bug-41-.xml (renamed from tests/docs/bug-43-.xml)0
-rw-r--r--tests/general/bug-42-.xml (renamed from tests/docs/bug-44-.xml)0
-rw-r--r--tests/general/bug-43-.xml (renamed from tests/docs/bug-45-.xml)0
-rw-r--r--tests/general/bug-44-.xml (renamed from tests/docs/bug-46-.xml)0
-rw-r--r--tests/general/bug-45-.xml (renamed from tests/docs/bug-47-.xml)0
-rw-r--r--tests/general/bug-46-.xml (renamed from tests/docs/bug-48-.xml)0
-rw-r--r--tests/general/bug-47-.xml (renamed from tests/docs/bug-49-.xml)0
-rw-r--r--tests/general/bug-48-.xml (renamed from tests/docs/bug-56.xml)0
-rw-r--r--tests/general/bug-49-.xml (renamed from tests/docs/bug-60.xml)0
-rw-r--r--tests/general/bug-5-.xml (renamed from tests/docs/bug-5-.xml)0
-rw-r--r--tests/general/bug-50-.xml (renamed from tests/docs/bug-50-.xml)0
-rw-r--r--tests/general/bug-52.out2
-rw-r--r--tests/general/bug-52.xml (renamed from tests/docs/bug-52.xml)0
-rw-r--r--tests/general/bug-53.xml (renamed from tests/docs/bug-53.xml)0
-rw-r--r--tests/general/bug-54.xml (renamed from tests/docs/bug-54.xml)0
-rw-r--r--tests/general/bug-55.xml (renamed from tests/docs/bug-55.xml)0
-rw-r--r--tests/general/bug-56.xml (renamed from tests/docs/bug-61.xml)0
-rw-r--r--tests/general/bug-57.xml (renamed from tests/docs/bug-57.xml)0
-rw-r--r--tests/general/bug-59.xml (renamed from tests/docs/bug-59.xml)0
-rw-r--r--tests/general/bug-6-.xml (renamed from tests/docs/bug-6-.xml)0
-rw-r--r--tests/general/bug-60.xml (renamed from tests/docs/bug-62.xml)0
-rw-r--r--tests/general/bug-61.xml (renamed from tests/docs/bug-64.xml)0
-rw-r--r--tests/general/bug-62-inc.out0
-rw-r--r--tests/general/bug-62.xml (renamed from tests/docs/bug-68.xml)0
-rw-r--r--tests/general/bug-63.xml (renamed from tests/docs/bug-63.xml)0
-rw-r--r--tests/general/bug-64.xml (renamed from tests/docs/bug-75.xml)0
-rw-r--r--tests/general/bug-65.xml (renamed from tests/docs/bug-65.xml)0
-rw-r--r--tests/general/bug-66.xml (renamed from tests/docs/bug-66.xml)0
-rw-r--r--tests/general/bug-68.xml (renamed from tests/docs/bug-83.xml)0
-rw-r--r--tests/general/bug-69.xml (renamed from tests/docs/bug-69.xml)0
-rw-r--r--tests/general/bug-7-.xml (renamed from tests/docs/bug-7-.xml)0
-rw-r--r--tests/general/bug-70.xml (renamed from tests/docs/bug-70.xml)0
-rw-r--r--tests/general/bug-71.xml (renamed from tests/docs/bug-71.xml)0
-rw-r--r--tests/general/bug-72.xml (renamed from tests/docs/bug-72.xml)0
-rw-r--r--tests/general/bug-73.xml (renamed from tests/docs/bug-73.xml)0
-rw-r--r--tests/general/bug-74.xml (renamed from tests/docs/bug-74.xml)0
-rw-r--r--tests/general/bug-75.xml (renamed from tests/docs/bug-88.xml)0
-rw-r--r--tests/general/bug-76.xml (renamed from tests/docs/bug-76.xml)0
-rw-r--r--tests/general/bug-77.xml (renamed from tests/docs/bug-77.xml)0
-rw-r--r--tests/general/bug-78.xml (renamed from tests/docs/bug-78.xml)0
-rw-r--r--tests/general/bug-79.xml (renamed from tests/docs/bug-79.xml)0
-rw-r--r--tests/general/bug-8-.xml (renamed from tests/docs/bug-8-.xml)0
-rw-r--r--tests/general/bug-80.xml (renamed from tests/docs/bug-80.xml)0
-rw-r--r--tests/general/bug-81.xml (renamed from tests/docs/bug-81.xml)0
-rw-r--r--tests/general/bug-82.xml (renamed from tests/docs/bug-82.xml)0
-rw-r--r--tests/general/bug-83.xml (renamed from tests/docs/bug-99.xml)0
-rw-r--r--tests/general/bug-84.xml (renamed from tests/docs/bug-84.xml)0
-rw-r--r--tests/general/bug-86.xml (renamed from tests/docs/bug-86.xml)0
-rw-r--r--tests/general/bug-87.xml (renamed from tests/docs/bug-87.xml)0
-rw-r--r--tests/general/bug-88.xml (renamed from tests/docs/date_add.xml)0
-rw-r--r--tests/general/bug-89.xml (renamed from tests/docs/bug-89.xml)0
-rw-r--r--tests/general/bug-9-.xml (renamed from tests/docs/bug-9-.xml)0
-rw-r--r--tests/general/bug-90.xml (renamed from tests/docs/bug-90.xml)0
-rw-r--r--tests/general/bug-91.xml (renamed from tests/docs/bug-91.xml)0
-rw-r--r--tests/general/bug-92.xml (renamed from tests/docs/bug-92.xml)0
-rw-r--r--tests/general/bug-93-inc.out3
-rw-r--r--tests/general/bug-93.xml (renamed from tests/docs/bug-93.xml)0
-rw-r--r--tests/general/bug-94.xml (renamed from tests/docs/bug-94.xml)0
-rw-r--r--tests/general/bug-95.xml (renamed from tests/docs/bug-95.xml)0
-rw-r--r--tests/general/bug-96.xml (renamed from tests/docs/bug-96.xml)0
-rw-r--r--tests/general/bug-97.xml (renamed from tests/docs/bug-97.xml)0
-rw-r--r--tests/general/bug-98.xml (renamed from tests/docs/bug-98.xml)0
-rw-r--r--tests/general/bug-99.xml1
-rw-r--r--tests/general/character.xml (renamed from tests/docs/character.xml)0
-rw-r--r--tests/general/character2.out2
-rw-r--r--tests/general/character2.xsl16
-rw-r--r--tests/general/date_add.xml1
-rw-r--r--tests/general/doc.dtd (renamed from tests/REC1/doc.dtd)0
-rw-r--r--tests/general/doc.out (renamed from tests/REC1/result.xml)0
-rw-r--r--tests/general/doc.xml (renamed from tests/REC1/doc.xml)0
-rw-r--r--tests/general/doc.xsl (renamed from tests/REC1/doc.xsl)0
-rw-r--r--tests/general/items.xml (renamed from tests/docs/items.xml)0
-rw-r--r--tests/general/itemschoose.out35
-rw-r--r--tests/general/itemschoose.xsl37
-rw-r--r--tests/keys/Makefile.am23
-rw-r--r--tests/keys/dates.out (renamed from tests/keys/month.out)0
-rw-r--r--tests/keys/dates.xsl (renamed from tests/keys/month.xsl)0
-rw-r--r--tests/multiple/Makefile.am6
-rw-r--r--tests/namespaces/Makefile.am59
-rw-r--r--tests/namespaces/extra2.out0
-rw-r--r--tests/numbers/Makefile.am21
-rw-r--r--tests/plugins/Makefile.am42
-rw-r--r--tests/reports/Makefile.am57
-rw-r--r--tests/reports/recglobparam.err6
-rw-r--r--tests/reports/recglobparam.out0
-rw-r--r--tests/reports/recglobvar.err6
-rw-r--r--tests/reports/recglobvar.out0
-rw-r--r--tests/reports/reclocparam.err6
-rw-r--r--tests/reports/reclocparam.out0
-rw-r--r--tests/reports/reclocvar.err6
-rw-r--r--tests/reports/reclocvar.out0
-rw-r--r--tests/reports/tst-1.out0
-rw-r--r--tests/reports/tst-2.err4
-rw-r--r--tests/reports/tst-2.out0
-rw-r--r--tests/reports/undefvar.err7
-rw-r--r--tests/reports/undefvar.out0
-rw-r--r--tests/runtest.c879
-rw-r--r--tests/testplugin.c (renamed from tests/plugins/testplugin.c)0
-rw-r--r--tests/xinclude/Makefile.am6
-rw-r--r--tests/xmlspec/Makefile.am6
-rw-r--r--win32/Makefile.msvc26
-rw-r--r--win32/Readme.txt6
-rw-r--r--win32/configure.js64
-rw-r--r--win32/defgen.xsl44
-rw-r--r--win32/libexslt.def.src20
-rw-r--r--win32/libxslt.def.src262
-rw-r--r--xslt-config.in2
-rw-r--r--xsltproc/Makefile.am7
-rw-r--r--xsltproc/testThreads.c4
-rw-r--r--xsltproc/xsltproc.c2
608 files changed, 7753 insertions, 16444 deletions
diff --git a/.gitignore b/.gitignore
index 18e56a2d..2a15ff70 100644
--- a/.gitignore
+++ b/.gitignore
@@ -1,6 +1,7 @@
*.o
*.la
*.lo
+*.pyc
tags
*/tags
.deps/
@@ -35,10 +36,10 @@ libxslt.spec
libxslt.spec.in.orig
libxslt/xsltconfig.h
ltmain.sh
-m4/
+m4/libtool*
+m4/lt*
missing
py-compile
-python/*.pyc
python/gen_prog
python/libxslt-export.c
python/libxslt-py.c
@@ -46,8 +47,9 @@ python/libxslt-py.h
python/libxslt.py
python/libxsltclass.py
python/libxsltclass.txt
-python/tests/foo
+python/setup.py
stamp-h1
+tests/runtest
tests/xmlspec/debug
xslt-config
xsltConf.sh
diff --git a/.gitlab-ci.yml b/.gitlab-ci.yml
index d4af61c8..b80e73e9 100644
--- a/.gitlab-ci.yml
+++ b/.gitlab-ci.yml
@@ -2,22 +2,7 @@
# Reuse libxml2 image
image: registry.gitlab.gnome.org/gnome/libxml2
script:
- - |
- git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
- cd libxml2
- sh autogen.sh $CONFIG
- make -j$(nproc)
- cd ..
- sh autogen.sh $CONFIG --with-libxml-src=libxml2
- # Don't run make in "doc" directory
- for target in libxslt libexslt xsltproc python tests/plugins; do
- make -j$(nproc) -C $target V=1 CFLAGS="$CFLAGS -Werror"
- done
- make -j$(nproc) -C tests/fuzz V=1 CFLAGS="$CFLAGS -Werror" testTargets
- make -s -C tests tests | tee test.log
- make -s -C xsltproc tests | tee -a test.log
- ! grep -qv '^## Running' test.log
- make -s -C python tests
+ - sh .gitlab-ci/test.sh
gcc:
extends: .test
@@ -27,8 +12,8 @@ gcc:
gcc:python3:
extends: .test
variables:
- # TODO: Re-enable the warning after libxml2 #208 is fixed.
- CFLAGS: "-O2 -Wno-error=deprecated-declarations"
+ CONFIG: "--without-crypto --without-debug --without-debugger --without-plugins"
+ CFLAGS: "-O2"
PYTHON: "/usr/bin/python3"
gcc:static:
@@ -39,55 +24,63 @@ gcc:static:
clang:asan:
extends: .test
+ tags:
+ - asan
variables:
CONFIG: "--without-python"
CC: clang
- CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined -fno-sanitize-recover=all -Wimplicit-int-conversion -Wno-error=cast-align"
- # LeakSanitizer requires SYS_CAP_PTRACE
- ASAN_OPTIONS: "detect_leaks=0"
+ CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=address,undefined,unsigned-integer-overflow,implicit-conversion -fno-sanitize-recover=all -Wno-error=cast-align"
UBSAN_OPTIONS: "print_stacktrace=1"
+ ASAN_SYMBOLIZER_PATH: "$CI_PROJECT_DIR/.gitlab-ci/llvm-symbolizer"
clang:msan:
extends: .test
- only:
- - schedules
variables:
CONFIG: "--without-python --without-zlib --without-lzma --without-crypto"
CC: clang
- CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wimplicit-int-conversion -Wno-error=cast-align"
+ CFLAGS: "-O2 -g -fno-omit-frame-pointer -fsanitize=memory -Wno-error=cast-align"
+ MSAN_SYMBOLIZER_PATH: "$CI_PROJECT_DIR/.gitlab-ci/llvm-symbolizer"
+
+.mingw:
+ tags:
+ - win32-ps
+ variables:
+ CONFIG: "--without-crypto"
+ CHERE_INVOKING: "yes"
+ before_script:
+ - $Env:Path="C:\msys64\usr\bin;$Env:Path"
+ - bash -lc 'sh .gitlab-ci/setup_mingw.sh autotools'
+ script:
+ - bash -lc 'sh .gitlab-ci/test.sh'
+
+mingw:w64-x86_64:shared:
+ extends: .mingw
+ variables:
+ CFLAGS: "-O2"
+ MSYSTEM: MINGW64
+
+# Disabled, GCC missing?
+.mingw:msys:shared:
+ extends: .mingw
+ variables:
+ CFLAGS: "-O2"
+ MSYSTEM: MSYS
.cmake:linux:
image: registry.gitlab.gnome.org/gnome/libxml2
- before_script:
- - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
- - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -DLIBXML2_WITH_TESTS=OFF -S libxml2-source -B libxml2-build
- - cmake --build libxml2-build --target install
- - mkdir -p libxml2-install/share/libxml2
- - cp libxml2-source/Copyright libxml2-install/share/libxml2
- - export CMAKE_PREFIX_PATH=$CI_PROJECT_DIR/libxml2-install:$CMAKE_PREFIX_PATH
- - export PATH=$CI_PROJECT_DIR/libxml2-install/bin:$PATH
- - export LD_LIBRARY_PATH=$CI_PROJECT_DIR/libxml2-install/bin:$LD_LIBRARY_PATH
script:
- - cmake -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxslt-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxslt-build
- - cmake --build libxslt-build --target install
- - mkdir -p libxslt-install/share/libxslt
- - cp Copyright libxslt-install/share/libxslt
- after_script:
- - cd libxslt-install
- - tar -czf ../libxslt-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz *
+ - sh .gitlab-ci/test_cmake.sh
artifacts:
paths:
- - libxslt-$CI_COMMIT_SHORT_SHA-$CC-$SUFFIX.tar.gz
+ - libxslt-$CI_COMMIT_SHORT_SHA-$SUFFIX.tar.gz
expire_in: 1 day
cmake:linux:gcc:shared:
extends: .cmake:linux
- only:
- - schedules
variables:
BUILD_SHARED_LIBS: "ON"
CC: gcc
- SUFFIX: shared
+ SUFFIX: linux-gcc-shared
cmake:linux:gcc:static:
extends: .cmake:linux
@@ -96,7 +89,7 @@ cmake:linux:gcc:static:
variables:
BUILD_SHARED_LIBS: "OFF"
CC: gcc
- SUFFIX: static
+ SUFFIX: linux-gcc-static
cmake:linux:clang:shared:
extends: .cmake:linux
@@ -105,7 +98,7 @@ cmake:linux:clang:shared:
variables:
BUILD_SHARED_LIBS: "ON"
CC: clang
- SUFFIX: shared
+ SUFFIX: linux-clang-shared
cmake:linux:clang:static:
extends: .cmake:linux
@@ -114,48 +107,21 @@ cmake:linux:clang:static:
variables:
BUILD_SHARED_LIBS: "OFF"
CC: clang
- SUFFIX: static
+ SUFFIX: linux-clang-static
.cmake:mingw:
tags:
- win32-ps
+ variables:
+ CHERE_INVOKING: "yes"
before_script:
- - "[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12"
- - $Env:Path="C:\msys64\$Env:MINGW_PATH\bin;C:\msys64\usr\bin;$Env:Path"
- - pacman --noconfirm -Syu
- - pacman --noconfirm -S
- $Env:MINGW_PACKAGE_PREFIX-cmake
- $Env:MINGW_PACKAGE_PREFIX-libiconv
- $Env:MINGW_PACKAGE_PREFIX-ninja
- $Env:MINGW_PACKAGE_PREFIX-python
- $Env:MINGW_PACKAGE_PREFIX-python2
- $Env:MINGW_PACKAGE_PREFIX-xz
- $Env:MINGW_PACKAGE_PREFIX-zlib
- - if (-not (Test-Path 7za.exe)) {
- Invoke-WebRequest -Uri https://www.7-zip.org/a/7z1900-extra.7z -OutFile 7z1900-extra.7z ;
- cmake -E tar xf 7z1900-extra.7z 7za.exe
- }
- - git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
- - cmake -G Ninja -DBUILD_SHARED_LIBS=$Env:BUILD_SHARED_LIBS -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_TESTS=OFF -S libxml2-source -B libxml2-build
- - cmake --build libxml2-build --config RelWithDebInfo --target install
- - New-Item -ItemType Directory libxml2-install\share\libxml2
- - Copy-Item libxml2-source\Copyright libxml2-install\share\libxml2
- - $Env:CMAKE_PREFIX_PATH="$Env:CI_PROJECT_DIR\libxml2-install;$Env:CMAKE_PREFIX_PATH"
- - $Env:Path="$Env:CI_PROJECT_DIR\libxml2-install\bin;$Env:Path"
+ - $Env:Path="C:\msys64\usr\bin;$Env:Path"
+ - bash -lc 'sh .gitlab-ci/setup_mingw.sh cmake ninja'
script:
- - cmake -G Ninja -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxslt-install -DCMAKE_BUILD_TYPE=RelWithDebInfo -S . -B libxslt-build
- - cmake --build libxslt-build --target install
- - New-Item -ItemType Directory libxslt-install\share\libxslt
- - Copy-Item Copyright libxslt-install\share\libxslt
- after_script:
- - .\7za.exe a libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z .\libxslt-install\*
- cache:
- key: "$MINGW_PACKAGE_PREFIX"
- paths:
- - 7za.exe
+ - bash -lc 'sh .gitlab-ci/test_cmake.sh -G Ninja'
artifacts:
paths:
- - libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:MINGW_PACKAGE_PREFIX-$Env:SUFFIX.7z
+ - libxslt-$Env:CI_COMMIT_SHORT_SHA-$Env:SUFFIX.tar.gz
expire_in: 1 day
cmake:mingw:w64-i686:shared:
@@ -164,9 +130,8 @@ cmake:mingw:w64-i686:shared:
- schedules
variables:
BUILD_SHARED_LIBS: "ON"
- MINGW_PACKAGE_PREFIX: mingw-w64-i686
- MINGW_PATH: mingw32
- SUFFIX: shared
+ MSYSTEM: MINGW32
+ SUFFIX: mingw-w64-i686-shared
cmake:mingw:w64-i686:static:
extends: .cmake:mingw
@@ -174,17 +139,15 @@ cmake:mingw:w64-i686:static:
- schedules
variables:
BUILD_SHARED_LIBS: "OFF"
- MINGW_PACKAGE_PREFIX: mingw-w64-i686
- MINGW_PATH: mingw32
- SUFFIX: static
+ MSYSTEM: MINGW32
+ SUFFIX: mingw-w64-i686-static
cmake:mingw:w64-x86_64:shared:
extends: .cmake:mingw
variables:
BUILD_SHARED_LIBS: "ON"
- MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
- MINGW_PATH: mingw64
- SUFFIX: shared
+ MSYSTEM: MINGW64
+ SUFFIX: mingw-w64-x86_64-shared
cmake:mingw:w64-x86_64:static:
extends: .cmake:mingw
@@ -192,9 +155,8 @@ cmake:mingw:w64-x86_64:static:
- schedules
variables:
BUILD_SHARED_LIBS: "OFF"
- MINGW_PACKAGE_PREFIX: mingw-w64-x86_64
- MINGW_PATH: mingw64
- SUFFIX: static
+ MSYSTEM: MINGW64
+ SUFFIX: mingw-w64-x86_64-static
.cmake:msvc:
tags:
@@ -216,8 +178,6 @@ cmake:mingw:w64-x86_64:static:
- cmake -DBUILD_SHARED_LIBS="$Env:BUILD_SHARED_LIBS" -DCMAKE_INSTALL_PREFIX=libxml2-install -DLIBXML2_WITH_ICONV=OFF -DLIBXML2_WITH_LZMA=OFF -DLIBXML2_WITH_PYTHON=OFF -DLIBXML2_WITH_ZLIB=OFF -S libxml2-source -B libxml2-build
- cmake --build libxml2-build --config Debug --target install
- cmake --build libxml2-build --config Release --target install
- - New-Item -ItemType Directory libxml2-install\share\libxml2
- - Copy-Item libxml2-source\Copyright libxml2-install\share\libxml2
- $Env:CMAKE_PREFIX_PATH="$Env:CI_PROJECT_DIR\libxml2-install;$Env:CMAKE_PREFIX_PATH"
- $Env:Path="$Env:CI_PROJECT_DIR\libxml2-install\bin;$Env:Path"
script:
diff --git a/.gitlab-ci/llvm-symbolizer b/.gitlab-ci/llvm-symbolizer
new file mode 100755
index 00000000..cfc85e8d
--- /dev/null
+++ b/.gitlab-ci/llvm-symbolizer
@@ -0,0 +1,9 @@
+#!/bin/sh
+
+# Newer versions of llvm-symbolizer require libxml2 themselves. Running
+# a test program with LD_LIBRARY_PATH set to .libs makes llvm-symbolizer
+# pick up the tested development version of libxml2 which breaks
+# completely if the build is instrumented with ASan. This wrapper script
+# invokes llvm-symbolizer with an empty LD_LIBRARY_PATH.
+
+LD_LIBRARY_PATH='' llvm-symbolizer "$@"
diff --git a/.gitlab-ci/setup_mingw.sh b/.gitlab-ci/setup_mingw.sh
new file mode 100644
index 00000000..9bfc935e
--- /dev/null
+++ b/.gitlab-ci/setup_mingw.sh
@@ -0,0 +1,11 @@
+#!/bin/sh
+
+pacman --noconfirm -Syu
+
+prefix=
+if [ -n "$MINGW_PACKAGE_PREFIX" ]; then
+ prefix="${MINGW_PACKAGE_PREFIX}-"
+fi
+for module in libiconv python xz zlib "$@"; do
+ pacman --noconfirm -S --needed ${prefix}$module
+done
diff --git a/.gitlab-ci/test.sh b/.gitlab-ci/test.sh
new file mode 100644
index 00000000..9615e768
--- /dev/null
+++ b/.gitlab-ci/test.sh
@@ -0,0 +1,15 @@
+#!/bin/sh
+
+set -e
+
+git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git
+cd libxml2
+sh autogen.sh $CONFIG
+make -j$(nproc)
+cd ..
+
+mkdir -p libxslt-build
+cd libxslt-build
+sh ../autogen.sh $CONFIG --with-libxml-src=../libxml2
+make -j$(nproc) V=1 CFLAGS="$CFLAGS -Werror"
+make -s CFLAGS="$CFLAGS -Werror" check
diff --git a/.gitlab-ci/test_cmake.sh b/.gitlab-ci/test_cmake.sh
new file mode 100644
index 00000000..83b13f78
--- /dev/null
+++ b/.gitlab-ci/test_cmake.sh
@@ -0,0 +1,30 @@
+#!/bin/sh
+
+set -e
+
+git clone --depth 1 https://gitlab.gnome.org/GNOME/libxml2.git libxml2-source
+cmake "$@" \
+ -DBUILD_SHARED_LIBS=$BUILD_SHARED_LIBS \
+ -DCMAKE_INSTALL_PREFIX=libxml2-install \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DLIBXML2_WITH_TESTS=OFF \
+ -S libxml2-source -B libxml2-build
+cmake --build libxml2-build --target install
+export CMAKE_PREFIX_PATH="$CI_PROJECT_DIR/libxml2-install;$CMAKE_PREFIX_PATH"
+export PATH="$CI_PROJECT_DIR/libxml2-install/bin:$PATH"
+export LD_LIBRARY_PATH="$CI_PROJECT_DIR/libxml2-install/lib:$LD_LIBRARY_PATH"
+
+cmake "$@" \
+ -DBUILD_SHARED_LIBS="$BUILD_SHARED_LIBS" \
+ -DCMAKE_INSTALL_PREFIX=libxslt-install \
+ -DCMAKE_BUILD_TYPE=RelWithDebInfo \
+ -DCMAKE_C_FLAGS='-Werror' \
+ -S . -B libxslt-build
+cmake --build libxslt-build --target install
+
+(cd libxslt-build && ctest -VV)
+
+mkdir -p libxslt-install/share/libxslt
+cp Copyright libxslt-install/share/libxslt
+(cd libxslt-install &&
+ tar -czf ../libxslt-$CI_COMMIT_SHORT_SHA-$SUFFIX.tar.gz *)
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 01e5bd62..93d61eca 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -1,6 +1,26 @@
-cmake_minimum_required(VERSION 3.15)
+cmake_minimum_required(VERSION 3.18)
+
+file(STRINGS "configure.ac" CONFIGURE_AC_LINES)
+foreach(line ${CONFIGURE_AC_LINES})
+ if(line MATCHES [[^m4_define\(\[(MAJOR|MINOR|MICRO)_VERSION\],[ \t]*\[([0-9]+)\]\)$]])
+ set(LIBXSLT_${CMAKE_MATCH_1}_VERSION ${CMAKE_MATCH_2})
+ elseif(line MATCHES "^LIBEXSLT_(MAJOR|MINOR|MICRO)_VERSION=([0-9]+)$")
+ set(LIBEXSLT_${CMAKE_MATCH_1}_VERSION ${CMAKE_MATCH_2})
+ endif()
+endforeach()
+
+set(LIBXSLT_DOTTED_VERSION "${LIBXSLT_MAJOR_VERSION}.${LIBXSLT_MINOR_VERSION}.${LIBXSLT_MICRO_VERSION}")
+math(EXPR LIBXSLT_VERSION_NUMBER "${LIBXSLT_MAJOR_VERSION} * 10000 + ${LIBXSLT_MINOR_VERSION} * 100 + ${LIBXSLT_MICRO_VERSION}")
+set(LIBXSLT_VERSION_EXTRA "")
-project(libxslt1 VERSION 1.1.35 LANGUAGES C)
+set(LIBEXSLT_DOTTED_VERSION ${LIBEXSLT_MAJOR_VERSION}.${LIBEXSLT_MINOR_VERSION}.${LIBEXSLT_MICRO_VERSION})
+math(EXPR LIBEXSLT_VERSION_NUMBER "${LIBEXSLT_MAJOR_VERSION} * 10000 + ${LIBEXSLT_MINOR_VERSION} * 100 + ${LIBEXSLT_MICRO_VERSION}")
+set(LIBEXSLT_VERSION_EXTRA "")
+
+set(VERSION ${LIBXSLT_DOTTED_VERSION})
+set(LIBEXSLT_VERSION ${LIBEXSLT_DOTTED_VERSION})
+
+project(libxslt1 VERSION ${VERSION} LANGUAGES C)
list(APPEND CMAKE_MODULE_PATH ${CMAKE_CURRENT_SOURCE_DIR})
@@ -8,11 +28,14 @@ include(CheckCSourceCompiles)
include(CheckFunctionExists)
include(CheckIncludeFiles)
include(CheckLibraryExists)
+include(CheckLinkerFlag)
include(CheckSymbolExists)
include(CMakePackageConfigHelpers)
include(GNUInstallDirs)
-find_package(LibXml2 CONFIG REQUIRED)
+if(NOT TARGET LibXml2)
+ find_package(LibXml2 CONFIG REQUIRED)
+endif()
option(BUILD_SHARED_LIBS "Build shared libraries" ON)
option(LIBXSLT_WITH_DEBUGGER "Add the debugging support" ON)
@@ -26,6 +49,10 @@ option(LIBXSLT_WITH_THREADS "Add multithread support" ON)
set(LIBXSLT_WITH_TRIO OFF)
option(LIBXSLT_WITH_XSLT_DEBUG "Add the debugging code" ON)
+if(NOT BUILD_SHARED_LIBS)
+ set(LIBXSLT_WITH_MODULES OFF)
+endif()
+
if(LIBXSLT_WITH_CRYPTO AND NOT WIN32)
find_package(Gcrypt REQUIRED)
endif()
@@ -33,7 +60,7 @@ endif()
if(LIBXSLT_WITH_PYTHON)
check_include_files(unistd.h HAVE_UNISTD_H)
check_symbol_exists(F_GETFL fcntl.h HAVE_F_GETFL)
- if(HAVE_UNISTD_H AND HAVE_F_GETFL)
+ if(WIN32 OR (HAVE_UNISTD_H AND HAVE_F_GETFL))
find_package(Python COMPONENTS Interpreter Development REQUIRED)
else()
find_package(Python2 COMPONENTS Interpreter Development REQUIRED)
@@ -41,7 +68,8 @@ if(LIBXSLT_WITH_PYTHON)
set(Python_EXECUTABLE ${Python2_EXECUTABLE})
set(Python_SITEARCH ${Python2_SITEARCH})
endif()
- set(LIBXSLT_PYTHON_INSTALL_DIR ${Python_SITEARCH} CACHE PATH "Python bindings install directory")
+ #set(LIBXSLT_PYTHON_INSTALL_DIR ${Python_SITEARCH} CACHE PATH "Python bindings install directory")
+ set(LIBXSLT_PYTHON_INSTALL_DIR "${CMAKE_INSTALL_PREFIX}/python" CACHE PATH "Python bindings install directory")
endif()
if(LIBXSLT_WITH_THREADS)
@@ -56,25 +84,6 @@ foreach(VARIABLE IN ITEMS WITH_CRYPTO WITH_DEBUGGER WITH_MEM_DEBUG WITH_MODULES
endif()
endforeach()
-set(LIBEXSLT_MAJOR_VERSION 0)
-set(LIBEXSLT_MINOR_VERSION 8)
-set(LIBEXSLT_MICRO_VERSION 20)
-
-set(LIBEXSLT_DOTTED_VERSION ${LIBEXSLT_MAJOR_VERSION}.${LIBEXSLT_MINOR_VERSION}.${LIBEXSLT_MICRO_VERSION})
-math(EXPR LIBEXSLT_VERSION_NUMBER "${LIBEXSLT_MAJOR_VERSION} * 10000 + ${LIBEXSLT_MINOR_VERSION} * 100 + ${LIBEXSLT_MICRO_VERSION}")
-set(LIBEXSLT_VERSION_EXTRA "")
-
-set(LIBXSLT_MAJOR_VERSION ${PROJECT_VERSION_MAJOR})
-set(LIBXSLT_MINOR_VERSION ${PROJECT_VERSION_MINOR})
-set(LIBXSLT_MICRO_VERSION ${PROJECT_VERSION_PATCH})
-
-set(LIBXSLT_DOTTED_VERSION "${LIBXSLT_MAJOR_VERSION}.${LIBXSLT_MINOR_VERSION}.${LIBXSLT_MICRO_VERSION}")
-math(EXPR LIBXSLT_VERSION_NUMBER "${LIBXSLT_MAJOR_VERSION} * 10000 + ${LIBXSLT_MINOR_VERSION} * 100 + ${LIBXSLT_MICRO_VERSION}")
-set(LIBXSLT_VERSION_EXTRA "")
-
-set(VERSION ${LIBXSLT_DOTTED_VERSION})
-set(LIBEXSLT_VERSION ${LIBEXSLT_DOTTED_VERSION})
-
set(MODULE_EXTENSION "${CMAKE_SHARED_LIBRARY_SUFFIX}")
if(LIBXSLT_WITH_CRYPTO AND NOT WIN32)
@@ -197,6 +206,21 @@ if(NOT BUILD_SHARED_LIBS)
target_compile_definitions(LibXslt INTERFACE LIBXSLT_STATIC)
endif()
+if(CMAKE_C_COMPILER_ID MATCHES "Clang" OR CMAKE_C_COMPILER_ID STREQUAL "GNU")
+ set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -Wall -Wextra -Wshadow \
+-Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return \
+-Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline \
+-Wredundant-decls -Wno-long-long -Wno-format-extra-args")
+
+ if(BUILD_SHARED_LIBS AND UNIX AND NOT APPLE)
+ check_linker_flag(C "LINKER:--undefined-version" FLAG_UNDEFINED_VERSION)
+ if (FLAG_UNDEFINED_VERSION)
+ target_link_options(LibXslt PRIVATE "LINKER:--undefined-version")
+ endif()
+ target_link_options(LibXslt PRIVATE "LINKER:--version-script=${CMAKE_CURRENT_SOURCE_DIR}/libxslt/libxslt.syms")
+ endif()
+endif()
+
target_include_directories(
LibXslt
PUBLIC
@@ -220,6 +244,7 @@ set_target_properties(
POSITION_INDEPENDENT_CODE ON
PREFIX lib
VERSION ${PROJECT_VERSION}
+ SOVERSION ${LIBXSLT_MAJOR_VERSION}
)
if(MSVC)
@@ -297,6 +322,11 @@ if(LIBXSLT_WITH_CRYPTO AND NOT WIN32)
set(LIBGCRYPT_LIBS "-lgcrypt")
endif()
+if(UNIX)
+ target_link_libraries(LibExslt PRIVATE m)
+ set(LIBM "-lm")
+endif()
+
target_link_libraries(LibExslt PUBLIC LibXslt LibXml2::LibXml2)
set_target_properties(
@@ -307,6 +337,7 @@ set_target_properties(
POSITION_INDEPENDENT_CODE ON
PREFIX lib
VERSION ${LIBEXSLT_VERSION}
+ SOVERSION ${LIBEXSLT_MAJOR_VERSION}
)
if(MSVC)
@@ -350,10 +381,39 @@ install(TARGETS xsltproc EXPORT LibXslt RUNTIME DESTINATION ${CMAKE_INSTALL_BIND
if(LIBXSLT_WITH_TESTS)
enable_testing()
+
+ add_executable(runtest tests/runtest.c)
+ target_link_libraries(runtest LibXslt LibExslt)
+ add_test(
+ NAME runtest COMMAND runtest
+ WORKING_DIRECTORY "${CMAKE_CURRENT_SOURCE_DIR}/tests"
+ )
+
+ if (LIBXSLT_WITH_MODULES)
+ add_library(testplugin SHARED tests/testplugin.c)
+ target_link_libraries(testplugin LibExslt LibXslt)
+ set_target_properties(
+ testplugin PROPERTIES
+ PREFIX ""
+ OUTPUT_NAME xmlsoft_org_xslt_testplugin
+ )
+ # There must be an easier way...
+ get_cmake_property(MULTI_CONFIG GENERATOR_IS_MULTI_CONFIG)
+ if (MULTI_CONFIG)
+ set(PLUGINS_PATH ${PROJECT_BINARY_DIR}/$<CONFIG>)
+ else()
+ set(PLUGINS_PATH ${PROJECT_BINARY_DIR})
+ endif()
+ set_tests_properties(
+ runtest PROPERTIES
+ ENVIRONMENT LIBXSLT_PLUGINS_PATH=${PLUGINS_PATH}
+ )
+ endif()
+
if(Threads_FOUND)
add_executable(testThreads xsltproc/testThreads.c)
target_link_libraries(testThreads LibXslt LibExslt Threads::Threads)
- add_test(NAME testThreads COMMAND testThreads WORKING_DIRECTORY ${CMAKE_CURRENT_SOURCE_DIR})
+ add_test(NAME testThreads COMMAND testThreads)
endif()
endif()
@@ -397,6 +457,9 @@ if(LIBXSLT_WITH_PYTHON)
PREFIX lib
VERSION ${PROJECT_VERSION}
)
+ if (WIN32)
+ set_target_properties(LibXsltMod PROPERTIES SUFFIX ".pyd")
+ endif()
install(
TARGETS LibXsltMod
ARCHIVE DESTINATION ${LIBXSLT_PYTHON_INSTALL_DIR} COMPONENT development
@@ -457,7 +520,7 @@ set(XSLT_PRIVATE_LIBS "${LIBM}")
set(EXSLT_INCLUDEDIR "-I\${includedir}")
set(EXSLT_LIBDIR "-L\${libdir}")
-set(EXSLT_PRIVATE_LIBS "${XSLT_PRIVATE_LIBS} ${LIBGCRYPT_LIBS}")
+set(EXSLT_PRIVATE_LIBS "${XSLT_PRIVATE_LIBS} ${LIBGCRYPT_LIBS} ${LIBM}")
file(RELATIVE_PATH PACKAGE_RELATIVE_PATH "${CMAKE_INSTALL_FULL_LIBDIR}/pkgconfig" "${CMAKE_INSTALL_PREFIX}")
string(REGEX REPLACE "/$" "" PACKAGE_RELATIVE_PATH "${PACKAGE_RELATIVE_PATH}")
diff --git a/Makefile.am b/Makefile.am
index a2d766f5..db50cddb 100644
--- a/Makefile.am
+++ b/Makefile.am
@@ -39,24 +39,6 @@ xsltConf.sh: xsltConf.sh.in Makefile
CLEANFILES = xsltConf.sh
-check-local: tests
-
-dummy:
-
-tests: dummy
- @echo '## Running the regression test suite'
- @(cd tests ; $(MAKE) -s tests)
- @(cd xsltproc ; $(MAKE) -s tests)
-if WITH_PYTHON
- @cd python && $(MAKE) tests
-endif
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- @echo '## Go get a cup of coffee it is gonna take a while ...'
- @(cd tests ; $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests)
- @(cd xsltproc ; $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests)
-
cleanup:
-@(find . -name .\#\* -exec rm {} \;)
diff --git a/NEWS b/NEWS
index dc97c2ca..308ea113 100644
--- a/NEWS
+++ b/NEWS
@@ -1,5 +1,148 @@
NEWS file for libxslt
+v1.1.39: Nov 16 2023
+
+### Bug fixes
+
+- extensions: Don't search imports for extension prefixes
+
+### Improvements
+
+- transform: Check maximum depth when processing default templates
+- build: Add more missing includes
+- python: Don't set deprecated global
+- build: Add missing includes
+- imports: Limit nesting depth
+- extensions: Report top-level elements in xsltDebugDumpExtensions
+- Add extern "C" { } block to xsltlocale.h (David Kilzer)
+
+### Portability
+
+- python: Make it compatible with python3.12 (Daniel Garcia Moreno)
+- date: Fix check for localtime_s
+- date: Fix check for gmtime_s
+
+### Build systems
+
+- pkg-config files include cflags for static builds (Mike Dalessio)
+- Handle NOCONFIG case when setting locations from CMake target properties (Markus
+ Rickert)
+- autotools: Make xslt-config executable
+
+### Tests
+
+- tests: Structured error handler now passes a const xmlError
+- python: Fix tests on MinGW
+- fuzz: Fix xmlFuzzEntityLoader after recent libxml2 changes
+
+
+v1.1.38: May 8 2023
+
+### Major changes
+
+About 40 memory errors in code paths handling malloc failures have been fixed.
+While these issues shouldn't impact security, this improves robustness under
+memory pressure.
+
+The result of generate-id() is now deterministic across multiple
+transformations fixing many issues with reproducible builds.
+
+Most of the test suite has been ported to C.
+
+### Bug fixes
+
+- Fix memory errors in code handling malloc failures
+- imports: Fix import/include cycle check
+- xsltlocale: Fix xsltNewLocale on macOS
+- Make xsl:sort thread-safe
+- Make generate-id() deterministic
+
+### Improvements
+
+- Stop using xmlStringCurrentChar
+- attributes.h needs to include xsltInternals.h (David Kilzer)
+- transform: Avoid null deref on documents without root node
+- numbers: Fix floating point overflows
+- date: Fix integer overflow in exsltDateFormatDuration
+- numbers: Fix harmless integer sign change
+- date: Add more overflow checks to formatting code (David Kilzer)
+- date: Fix rounding to make Windows tests pass
+- date: Rewrite duration and seconds formatting
+- xsltlocale: Make API platform-independent
+- Also accept application/xslt+xml media type in stylesheet PIs
+- warnings: Fix strict prototypes warning
+- xsltEvalUserParams() and xsltQuoteUserParams() are susceptible to integer
+ overflow when iterating through const char** array (David Kilzer)
+- xslt: Return NULL stylesheet on attribute set errors
+- xsltproc: Fix unused variable warning
+- xslt: Remove declaration for old libxml2
+- Fix various compiler warnings
+- Fix compiler warnings in xsltGenerateIdFunction
+- Disable Python bindings for debugger
+- Don't declare disabled functions
+- Migrate from PyEval_ to PyObject_
+
+### Build system
+
+- cmake: Use version script
+- autotools: Link with --undefined-version
+- win32: Remove broken libxslt.def.src
+- Stop updating version script
+- add support for Windows time functions (Rosen Penev)
+- cmake: link against libm on UNIX systems (Alex Richardson)
+- build: Add a distutils-based build system for the Python bits (Chun-wei Fan)
+- CMake: Relax check for Python 3.x support on Windows (Chun-wei Fan)
+- python/types.c: Fix building against older libxml2 (Chun-wei Fan)
+- python/libxslt.c: Replace ssize_t with Py_ssize_t (Chun-wei Fan)
+- cmake: Fix build with libxslt and libxml2 as subprojects
+- cmake: Set SOVERSION
+- cmake: Extract version from configure.ac
+- Fix classic Windows configuration for libexslt (Christoph M. Becker)
+- autotools: Fix Python tests in VPATH builds
+- autotools: Disable parallel Python build
+- autotools: Use AM_CFLAGS consistently
+- autotools: Link with -no-undefined
+- cmake: Fix Python installation
+- cmake: Don't check for Python 2
+- python: Don't output missing generators during build
+- python: Create .pyd on Windows
+- python: Fix build on Windows
+- python: Support Python 3 on Windows
+- cmake: Enable GCC compiler warnings
+- Update GCC compiler warnings
+
+### Tests
+
+- python: Remove temp file when running tests/basic.py
+- fuzz: Improve fuzzers
+- xsltlocale: Add test
+- gitlab-ci: Reenable MSan and LeakSanitizer
+- tests: Remove unused files
+- tests: Enable runtest.exe under MSVC
+- tests: Fix LIBXSLT_PLUGINS_PATH for multi-config CMake
+- tests: Remove unused leak statistics
+- tests: Skip some tests if iconv/ICU is disabled
+- gitlab-ci: Run Autotools tests with out-of-tree (VPATH) builds
+- tests: Port most of the test suite to C
+- tests: Fix out-of-tree Python tests
+- tests: Fix source directory for reports tests
+- gitlab-ci: Consolidate CMake test scripts
+- gitlab-ci: Only install cmake MinGW package if needed
+- gitlab-ci: Install 7-Zip using the .msi
+- gitlab-ci: Add CI job for MinGW/Autotools
+- gitlab-ci: Disable MSan for now
+- Run CI tests with -fsanitize=integer
+- Fix EXSLT functions tests when libxml2 is built --without-debug
+- Make CI tests exit on failure
+- Run Python 3 CI job with minimal configuration
+- Set library path when running Python tests
+
+### Documentation
+
+- doc: Remove unused cross-reference data
+- doc: Update apibuild.py
+
+
v1.1.37: Aug 29 2022
### Improvements
diff --git a/README b/README
deleted file mode 100644
index 94402947..00000000
--- a/README
+++ /dev/null
@@ -1,22 +0,0 @@
-
- XSLT support for libxml2 (XML toolkit from the GNOME project)
-
-Full documentation is available on-line at
- https://gitlab.gnome.org/GNOME/libxslt/-/wikis
-
-This code is released under the MIT Licence see the Copyright file.
-
-To report bugs, follow the instructions at:
- https://gitlab.gnome.org/GNOME/libxslt/-/issues
-
-A mailing-list xslt@gnome.org is available, to subscribe:
- http://mail.gnome.org/mailman/listinfo/xslt
-
-The list archive is at:
- http://mail.gnome.org/archives/xslt/
-
-All technical answers asked privately will be automatically answered on
-the list and archived for public access unless pricacy is explicitely
-required and justified.
-
-Daniel Veillard
diff --git a/README.md b/README.md
new file mode 100644
index 00000000..ff0d56fd
--- /dev/null
+++ b/README.md
@@ -0,0 +1,19 @@
+# libxslt
+
+libxslt is an XSLT processor based on libxml2.
+
+Official releases can be downloaded from
+<https://download.gnome.org/sources/libxslt/>
+
+The git repository is hosted on GNOME's GitLab server:
+<https://gitlab.gnome.org/GNOME/libxslt>
+
+Bugs should be reported at
+<https://gitlab.gnome.org/GNOME/libxslt/-/issues>
+
+Documentation is available at
+<https://gitlab.gnome.org/GNOME/libxslt/-/wikis>
+
+The build system is similar to libxml2. Refer to libxml2's README for
+build instructions.
+
diff --git a/configure.ac b/configure.ac
index baeee600..0131754f 100644
--- a/configure.ac
+++ b/configure.ac
@@ -3,7 +3,7 @@ AC_PREREQ(2.63)
m4_define([MAJOR_VERSION], [1])
m4_define([MINOR_VERSION], [1])
-m4_define([MICRO_VERSION], [37])
+m4_define([MICRO_VERSION], [39])
AC_INIT([libxslt], [MAJOR_VERSION.MINOR_VERSION.MICRO_VERSION])
AC_CONFIG_SRCDIR([libxslt/xslt.c])
@@ -21,7 +21,7 @@ LIBXSLT_MINOR_VERSION=MINOR_VERSION
LIBXSLT_MICRO_VERSION=MICRO_VERSION
LIBEXSLT_MAJOR_VERSION=0
LIBEXSLT_MINOR_VERSION=8
-LIBEXSLT_MICRO_VERSION=20
+LIBEXSLT_MICRO_VERSION=21
LIBXML_REQUIRED_VERSION=2.6.27
@@ -95,7 +95,11 @@ dnl
AC_MSG_CHECKING([how to pass version script to the linker ($LD)])
VERSION_SCRIPT_FLAGS=none
if $LD --help 2>&1 | grep "version-script" >/dev/null 2>/dev/null; then
- VERSION_SCRIPT_FLAGS=-Wl,--version-script=
+ dnl lld 16 defaults to --no-undefined-version but the version script
+ dnl can contain symbols disabled by configuration options.
+ VERSION_SCRIPT_FLAGS=''
+ AX_APPEND_LINK_FLAGS([-Wl,--undefined-version], [VERSION_SCRIPT_FLAGS])
+ AX_APPEND_FLAG([-Wl,--version-script=], [VERSION_SCRIPT_FLAGS])
elif $LD --help 2>&1 | grep "M mapfile" >/dev/null 2>/dev/null; then
VERSION_SCRIPT_FLAGS="-Wl,-M -Wl,"
fi
@@ -186,7 +190,13 @@ AC_ARG_WITH(python,
AS_IF([test "x$with_python" != "xno"], [
AM_PATH_PYTHON
PKG_CHECK_MODULES([PYTHON], [python-${PYTHON_VERSION}])
+ case "$host" in
+ *-*-cygwin* | *-*-mingw* | *-*-msys* )
+ PYTHON_LDFLAGS="-no-undefined -shrext .pyd"
+ ;;
+ esac
])
+AC_SUBST(PYTHON_LDFLAGS)
AM_CONDITIONAL([WITH_PYTHON], [test "x$with_python" != "xno"])
AC_ARG_WITH(crypto, [ --with-crypto Add crypto support to exslt (on)])
@@ -331,20 +341,20 @@ dnl
if test "${GCC}" != "yes" ; then
case "${host}" in
*-*-hpux* )
- CFLAGS="${CFLAGS} -Wp,-H30000"
+ AM_CFLAGS="${AM_CFLAGS} -Wp,-H30000"
;;
*-dec-osf* )
- CFLAGS="${CFLAGS} -ieee"
+ AM_CFLAGS="${AM_CFLAGS} -ieee"
;;
esac
else
- CFLAGS="${CFLAGS} -Wall -Wextra -Wformat=2 -Wmissing-format-attribute -Wshadow"
+ AM_CFLAGS="${AM_CFLAGS} -Wall -Wextra -Wshadow -Wpointer-arith -Wcast-align -Wwrite-strings -Waggregate-return -Wstrict-prototypes -Wmissing-prototypes -Wnested-externs -Winline -Wredundant-decls"
case "${host}" in
alpha*-*-linux* )
- CFLAGS="${CFLAGS} -mieee"
+ AM_CFLAGS="${AM_CFLAGS} -mieee"
;;
alpha*-*-osf* )
- CFLAGS="${CFLAGS} -mieee"
+ AM_CFLAGS="${AM_CFLAGS} -mieee"
;;
esac
fi
@@ -437,6 +447,8 @@ then
AC_MSG_ERROR([Could not find libxml2 anywhere.])
fi
+AM_CFLAGS="$AM_CFLAGS $LIBXML_CFLAGS"
+
AC_ARG_WITH(plugins,
[ --with-plugins Add plugin extension support (on)])
@@ -485,13 +497,6 @@ expanded_libdir=$(
LIBXSLT_DEFAULT_PLUGINS_PATH="$expanded_libdir/libxslt-plugins"
AC_SUBST(LIBXSLT_DEFAULT_PLUGINS_PATH)
-case "$host" in
- *-*-cygwin*|*-*-mingw*)
- LDFLAGS="$LDFLAGS -no-undefined"
- ;;
-esac
-
-
AC_SUBST(XML_CONFIG)
AC_SUBST(LIBXML_LIBS)
AC_SUBST(LIBXML_CFLAGS)
@@ -506,19 +511,25 @@ AC_SUBST(XSLT_LIBS)
AC_SUBST(XSLT_PRIVATE_LIBS)
LIBXSLT_CFLAGS=""
+LIBEXSLT_CFLAGS=""
case ${host} in
*-*-mingw* | *-*-cygwin* | *-*-msvc* )
# If the host is Windows, and shared libraries are disabled, we
- # need to add -DLIBXML_STATIC to EXTRA_CFLAGS in order for linking to
+ # need to add -DLIBXML_STATIC to AM_CFLAGS in order for linking to
# work properly (without it, xmlexports.h would force the use of
# DLL imports, which obviously aren't present in a static
# library).
if test "x$enable_shared" = "xno"; then
- LIBXSLT_CFLAGS="$LIBXSLT_CFLAGS -DLIBXSLT_STATIC -DLIBEXSLT_STATIC"
+ LIBXSLT_CFLAGS="$LIBXSLT_CFLAGS -DLIBXSLT_STATIC"
+ LIBEXSLT_CFLAGS="$LIBEXSLT_CFLAGS -DLIBEXSLT_STATIC"
+ AM_CFLAGS="$AM_CFLAGS -DLIBXSLT_STATIC -DLIBEXSLT_STATIC"
fi
;;
esac
AC_SUBST(LIBXSLT_CFLAGS)
+AC_SUBST(LIBEXSLT_CFLAGS)
+
+AC_SUBST(AM_CFLAGS)
EXSLT_LIBDIR='-L${libdir}'
EXSLT_INCLUDEDIR='-I${includedir}'
@@ -545,43 +556,20 @@ libexslt/Makefile
libexslt/exsltconfig.h
xsltproc/Makefile
python/Makefile
+python/setup.py
python/tests/Makefile
tests/Makefile
-tests/docs/Makefile
-tests/REC1/Makefile
-tests/REC2/Makefile
-tests/REC/Makefile
-tests/general/Makefile
-tests/reports/Makefile
-tests/extensions/Makefile
-tests/namespaces/Makefile
-tests/keys/Makefile
-tests/numbers/Makefile
-tests/documents/Makefile
tests/xmlspec/Makefile
tests/multiple/Makefile
tests/xinclude/Makefile
tests/XSLTMark/Makefile
tests/docbook/Makefile
-tests/exslt/Makefile
-tests/exslt/common/Makefile
-tests/exslt/functions/Makefile
-tests/exslt/math/Makefile
-tests/exslt/saxon/Makefile
-tests/exslt/sets/Makefile
-tests/exslt/strings/Makefile
-tests/exslt/date/Makefile
-tests/exslt/dynamic/Makefile
-tests/exslt/crypto/Makefile
-tests/plugins/Makefile
tests/fuzz/Makefile
doc/Makefile
doc/devhelp/Makefile
doc/EXSLT/devhelp/Makefile
-xslt-config
libxslt.spec
])
-AC_CONFIG_LINKS([tests/fuzz/xpath.xml:tests/fuzz/xpath.xml])
-AC_CONFIG_LINKS([tests/fuzz/xslt.xml:tests/fuzz/xslt.xml])
+AC_CONFIG_FILES([xslt-config], [chmod +x xslt-config])
AC_OUTPUT
diff --git a/doc/EXSLT/devhelp/libexslt-exslt.html b/doc/EXSLT/devhelp/libexslt-exslt.html
index 6c156545..9676f341 100644
--- a/doc/EXSLT/devhelp/libexslt-exslt.html
+++ b/doc/EXSLT/devhelp/libexslt-exslt.html
@@ -38,29 +38,29 @@
<p>Author(s): </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#EXSLT_DATE_NAMESPACE">EXSLT_DATE_NAMESPACE</a>;
-#define <a href="#EXSLT_STRINGS_NAMESPACE">EXSLT_STRINGS_NAMESPACE</a>;
-#define <a href="#SAXON_NAMESPACE">SAXON_NAMESPACE</a>;
-#define <a href="#EXSLT_COMMON_NAMESPACE">EXSLT_COMMON_NAMESPACE</a>;
-#define <a href="#EXSLT_FUNCTIONS_NAMESPACE">EXSLT_FUNCTIONS_NAMESPACE</a>;
-#define <a href="#EXSLT_SETS_NAMESPACE">EXSLT_SETS_NAMESPACE</a>;
-#define <a href="#EXSLT_DYNAMIC_NAMESPACE">EXSLT_DYNAMIC_NAMESPACE</a>;
+ <pre class="synopsis">#define <a href="#EXSLT_COMMON_NAMESPACE">EXSLT_COMMON_NAMESPACE</a>;
#define <a href="#EXSLT_CRYPTO_NAMESPACE">EXSLT_CRYPTO_NAMESPACE</a>;
+#define <a href="#EXSLT_DATE_NAMESPACE">EXSLT_DATE_NAMESPACE</a>;
+#define <a href="#EXSLT_DYNAMIC_NAMESPACE">EXSLT_DYNAMIC_NAMESPACE</a>;
+#define <a href="#EXSLT_FUNCTIONS_NAMESPACE">EXSLT_FUNCTIONS_NAMESPACE</a>;
#define <a href="#EXSLT_MATH_NAMESPACE">EXSLT_MATH_NAMESPACE</a>;
-void <a href="#exsltDynRegister">exsltDynRegister</a> (void);
+#define <a href="#EXSLT_SETS_NAMESPACE">EXSLT_SETS_NAMESPACE</a>;
+#define <a href="#EXSLT_STRINGS_NAMESPACE">EXSLT_STRINGS_NAMESPACE</a>;
+#define <a href="#SAXON_NAMESPACE">SAXON_NAMESPACE</a>;
void <a href="#exsltCommonRegister">exsltCommonRegister</a> (void);
-void <a href="#exsltRegisterAll">exsltRegisterAll</a> (void);
-int <a href="#exsltStrXpathCtxtRegister">exsltStrXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
-int <a href="#exsltSetsXpathCtxtRegister">exsltSetsXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
-void <a href="#exsltFuncRegister">exsltFuncRegister</a> (void);
-void <a href="#exsltStrRegister">exsltStrRegister</a> (void);
-void <a href="#exsltSetsRegister">exsltSetsRegister</a> (void);
-void <a href="#exsltDateRegister">exsltDateRegister</a> (void);
void <a href="#exsltCryptoRegister">exsltCryptoRegister</a> (void);
+void <a href="#exsltDateRegister">exsltDateRegister</a> (void);
+int <a href="#exsltDateXpathCtxtRegister">exsltDateXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
+void <a href="#exsltDynRegister">exsltDynRegister</a> (void);
+void <a href="#exsltFuncRegister">exsltFuncRegister</a> (void);
void <a href="#exsltMathRegister">exsltMathRegister</a> (void);
int <a href="#exsltMathXpathCtxtRegister">exsltMathXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
+void <a href="#exsltRegisterAll">exsltRegisterAll</a> (void);
void <a href="#exsltSaxonRegister">exsltSaxonRegister</a> (void);
-int <a href="#exsltDateXpathCtxtRegister">exsltDateXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
+void <a href="#exsltSetsRegister">exsltSetsRegister</a> (void);
+int <a href="#exsltSetsXpathCtxtRegister">exsltSetsXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
+void <a href="#exsltStrRegister">exsltStrRegister</a> (void);
+int <a href="#exsltStrXpathCtxtRegister">exsltStrXpathCtxtRegister</a> (xmlXPathContextPtr ctxt, <br/> const xmlChar * prefix);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/EXSLT/devhelp/libexslt-exsltexports.html b/doc/EXSLT/devhelp/libexslt-exsltexports.html
index 240da955..bbd3a6b2 100644
--- a/doc/EXSLT/devhelp/libexslt-exsltexports.html
+++ b/doc/EXSLT/devhelp/libexslt-exsltexports.html
@@ -38,11 +38,11 @@
<p>Author(s): </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#LIBEXSLT_PUBLIC">LIBEXSLT_PUBLIC</a>;
-#define <a href="#EXSLTPUBLIC">EXSLTPUBLIC</a>;
-#define <a href="#EXSLTCALL">EXSLTCALL</a>;
+ <pre class="synopsis">#define <a href="#EXSLTCALL">EXSLTCALL</a>;
#define <a href="#EXSLTPUBFUN">EXSLTPUBFUN</a>;
+#define <a href="#EXSLTPUBLIC">EXSLTPUBLIC</a>;
#define <a href="#EXSLTPUBVAR">EXSLTPUBVAR</a>;
+#define <a href="#LIBEXSLT_PUBLIC">LIBEXSLT_PUBLIC</a>;
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/EXSLT/libexslt-api.xml b/doc/EXSLT/libexslt-api.xml
index 8c5760ab..25a8171a 100644
--- a/doc/EXSLT/libexslt-api.xml
+++ b/doc/EXSLT/libexslt-api.xml
@@ -3,41 +3,41 @@
<files>
<file name='exslt'>
<summary>main header file </summary>
- <exports symbol='EXSLT_DATE_NAMESPACE' type='macro'/>
- <exports symbol='EXSLT_STRINGS_NAMESPACE' type='macro'/>
- <exports symbol='SAXON_NAMESPACE' type='macro'/>
<exports symbol='EXSLT_COMMON_NAMESPACE' type='macro'/>
- <exports symbol='EXSLT_FUNCTIONS_NAMESPACE' type='macro'/>
- <exports symbol='EXSLT_SETS_NAMESPACE' type='macro'/>
- <exports symbol='EXSLT_DYNAMIC_NAMESPACE' type='macro'/>
<exports symbol='EXSLT_CRYPTO_NAMESPACE' type='macro'/>
+ <exports symbol='EXSLT_DATE_NAMESPACE' type='macro'/>
+ <exports symbol='EXSLT_DYNAMIC_NAMESPACE' type='macro'/>
+ <exports symbol='EXSLT_FUNCTIONS_NAMESPACE' type='macro'/>
<exports symbol='EXSLT_MATH_NAMESPACE' type='macro'/>
- <exports symbol='exsltLibxmlVersion' type='variable'/>
+ <exports symbol='EXSLT_SETS_NAMESPACE' type='macro'/>
+ <exports symbol='EXSLT_STRINGS_NAMESPACE' type='macro'/>
+ <exports symbol='SAXON_NAMESPACE' type='macro'/>
<exports symbol='exsltLibexsltVersion' type='variable'/>
<exports symbol='exsltLibraryVersion' type='variable'/>
+ <exports symbol='exsltLibxmlVersion' type='variable'/>
<exports symbol='exsltLibxsltVersion' type='variable'/>
- <exports symbol='exsltDynRegister' type='function'/>
<exports symbol='exsltCommonRegister' type='function'/>
- <exports symbol='exsltRegisterAll' type='function'/>
- <exports symbol='exsltStrXpathCtxtRegister' type='function'/>
- <exports symbol='exsltSetsXpathCtxtRegister' type='function'/>
- <exports symbol='exsltFuncRegister' type='function'/>
- <exports symbol='exsltStrRegister' type='function'/>
- <exports symbol='exsltSetsRegister' type='function'/>
- <exports symbol='exsltDateRegister' type='function'/>
<exports symbol='exsltCryptoRegister' type='function'/>
+ <exports symbol='exsltDateRegister' type='function'/>
+ <exports symbol='exsltDateXpathCtxtRegister' type='function'/>
+ <exports symbol='exsltDynRegister' type='function'/>
+ <exports symbol='exsltFuncRegister' type='function'/>
<exports symbol='exsltMathRegister' type='function'/>
<exports symbol='exsltMathXpathCtxtRegister' type='function'/>
+ <exports symbol='exsltRegisterAll' type='function'/>
<exports symbol='exsltSaxonRegister' type='function'/>
- <exports symbol='exsltDateXpathCtxtRegister' type='function'/>
+ <exports symbol='exsltSetsRegister' type='function'/>
+ <exports symbol='exsltSetsXpathCtxtRegister' type='function'/>
+ <exports symbol='exsltStrRegister' type='function'/>
+ <exports symbol='exsltStrXpathCtxtRegister' type='function'/>
</file>
<file name='exsltexports'>
<summary>macros for marking symbols as exportable/importable. </summary>
- <exports symbol='LIBEXSLT_PUBLIC' type='macro'/>
- <exports symbol='EXSLTPUBLIC' type='macro'/>
<exports symbol='EXSLTCALL' type='macro'/>
<exports symbol='EXSLTPUBFUN' type='macro'/>
+ <exports symbol='EXSLTPUBLIC' type='macro'/>
<exports symbol='EXSLTPUBVAR' type='macro'/>
+ <exports symbol='LIBEXSLT_PUBLIC' type='macro'/>
</file>
</files>
<symbols>
@@ -86,65 +86,66 @@
<variable name='exsltLibraryVersion' file='exslt' type='const char *'/>
<variable name='exsltLibxmlVersion' file='exslt' type='const int'/>
<variable name='exsltLibxsltVersion' file='exslt' type='const int'/>
- <function name='exsltCommonRegister' file='exslt'>
+ <function name='exsltCommonRegister' file='exslt' module='common'>
<info>Registers the EXSLT - Common module</info>
<return type='void'/>
</function>
- <function name='exsltCryptoRegister' file='exslt'>
+ <function name='exsltCryptoRegister' file='exslt' module='crypto'>
+ <cond>defined(EXSLT_CRYPTO_ENABLED)</cond>
<info>Registers the EXSLT - Crypto module</info>
<return type='void'/>
</function>
- <function name='exsltDateRegister' file='exslt'>
+ <function name='exsltDateRegister' file='exslt' module='date'>
<info>Registers the EXSLT - Dates and Times module</info>
<return type='void'/>
</function>
- <function name='exsltDateXpathCtxtRegister' file='exslt'>
+ <function name='exsltDateXpathCtxtRegister' file='exslt' module='date'>
<info>Registers the EXSLT - Dates and Times module for use outside XSLT</info>
<return type='int' info=''/>
<arg name='ctxt' type='xmlXPathContextPtr' info=''/>
<arg name='prefix' type='const xmlChar *' info=''/>
</function>
- <function name='exsltDynRegister' file='exslt'>
+ <function name='exsltDynRegister' file='exslt' module='dynamic'>
<info>Registers the EXSLT - Dynamic module</info>
<return type='void'/>
</function>
- <function name='exsltFuncRegister' file='exslt'>
+ <function name='exsltFuncRegister' file='exslt' module='functions'>
<info>Registers the EXSLT - Functions module</info>
<return type='void'/>
</function>
- <function name='exsltMathRegister' file='exslt'>
+ <function name='exsltMathRegister' file='exslt' module='math'>
<info>Registers the EXSLT - Math module</info>
<return type='void'/>
</function>
- <function name='exsltMathXpathCtxtRegister' file='exslt'>
+ <function name='exsltMathXpathCtxtRegister' file='exslt' module='math'>
<info>Registers the EXSLT - Math module for use outside XSLT</info>
<return type='int' info=''/>
<arg name='ctxt' type='xmlXPathContextPtr' info=''/>
<arg name='prefix' type='const xmlChar *' info=''/>
</function>
- <function name='exsltRegisterAll' file='exslt'>
+ <function name='exsltRegisterAll' file='exslt' module='exslt'>
<info>Registers all available EXSLT extensions</info>
<return type='void'/>
</function>
- <function name='exsltSaxonRegister' file='exslt'>
+ <function name='exsltSaxonRegister' file='exslt' module='saxon'>
<info>Registers the SAXON extension module</info>
<return type='void'/>
</function>
- <function name='exsltSetsRegister' file='exslt'>
+ <function name='exsltSetsRegister' file='exslt' module='sets'>
<info>Registers the EXSLT - Sets module</info>
<return type='void'/>
</function>
- <function name='exsltSetsXpathCtxtRegister' file='exslt'>
+ <function name='exsltSetsXpathCtxtRegister' file='exslt' module='sets'>
<info>Registers the EXSLT - Sets module for use outside XSLT</info>
<return type='int' info=''/>
<arg name='ctxt' type='xmlXPathContextPtr' info=''/>
<arg name='prefix' type='const xmlChar *' info=''/>
</function>
- <function name='exsltStrRegister' file='exslt'>
+ <function name='exsltStrRegister' file='exslt' module='strings'>
<info>Registers the EXSLT - Strings module</info>
<return type='void'/>
</function>
- <function name='exsltStrXpathCtxtRegister' file='exslt'>
+ <function name='exsltStrXpathCtxtRegister' file='exslt' module='strings'>
<info>Registers the EXSLT - Strings module for use outside XSLT</info>
<return type='int' info=''/>
<arg name='ctxt' type='xmlXPathContextPtr' info=''/>
diff --git a/doc/EXSLT/libexslt-refs.xml b/doc/EXSLT/libexslt-refs.xml
deleted file mode 100644
index 32f8d55b..00000000
--- a/doc/EXSLT/libexslt-refs.xml
+++ /dev/null
@@ -1,409 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<apirefs name='libexslt'>
- <references>
- <reference name='EXSLTCALL' href='html/libexslt-exsltexports.html#EXSLTCALL'/>
- <reference name='EXSLTPUBFUN' href='html/libexslt-exsltexports.html#EXSLTPUBFUN'/>
- <reference name='EXSLTPUBLIC' href='html/libexslt-exsltexports.html#EXSLTPUBLIC'/>
- <reference name='EXSLTPUBVAR' href='html/libexslt-exsltexports.html#EXSLTPUBVAR'/>
- <reference name='EXSLT_COMMON_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_COMMON_NAMESPACE'/>
- <reference name='EXSLT_CRYPTO_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_CRYPTO_NAMESPACE'/>
- <reference name='EXSLT_DATE_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_DATE_NAMESPACE'/>
- <reference name='EXSLT_DYNAMIC_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_DYNAMIC_NAMESPACE'/>
- <reference name='EXSLT_FUNCTIONS_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_FUNCTIONS_NAMESPACE'/>
- <reference name='EXSLT_MATH_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_MATH_NAMESPACE'/>
- <reference name='EXSLT_SETS_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_SETS_NAMESPACE'/>
- <reference name='EXSLT_STRINGS_NAMESPACE' href='html/libexslt-exslt.html#EXSLT_STRINGS_NAMESPACE'/>
- <reference name='LIBEXSLT_PUBLIC' href='html/libexslt-exsltexports.html#LIBEXSLT_PUBLIC'/>
- <reference name='SAXON_NAMESPACE' href='html/libexslt-exslt.html#SAXON_NAMESPACE'/>
- <reference name='exsltCommonRegister' href='html/libexslt-exslt.html#exsltCommonRegister'/>
- <reference name='exsltCryptoRegister' href='html/libexslt-exslt.html#exsltCryptoRegister'/>
- <reference name='exsltDateRegister' href='html/libexslt-exslt.html#exsltDateRegister'/>
- <reference name='exsltDateXpathCtxtRegister' href='html/libexslt-exslt.html#exsltDateXpathCtxtRegister'/>
- <reference name='exsltDynRegister' href='html/libexslt-exslt.html#exsltDynRegister'/>
- <reference name='exsltFuncRegister' href='html/libexslt-exslt.html#exsltFuncRegister'/>
- <reference name='exsltLibexsltVersion' href='html/libexslt-exslt.html#exsltLibexsltVersion'/>
- <reference name='exsltLibraryVersion' href='html/libexslt-exslt.html#exsltLibraryVersion'/>
- <reference name='exsltLibxmlVersion' href='html/libexslt-exslt.html#exsltLibxmlVersion'/>
- <reference name='exsltLibxsltVersion' href='html/libexslt-exslt.html#exsltLibxsltVersion'/>
- <reference name='exsltMathRegister' href='html/libexslt-exslt.html#exsltMathRegister'/>
- <reference name='exsltMathXpathCtxtRegister' href='html/libexslt-exslt.html#exsltMathXpathCtxtRegister'/>
- <reference name='exsltRegisterAll' href='html/libexslt-exslt.html#exsltRegisterAll'/>
- <reference name='exsltSaxonRegister' href='html/libexslt-exslt.html#exsltSaxonRegister'/>
- <reference name='exsltSetsRegister' href='html/libexslt-exslt.html#exsltSetsRegister'/>
- <reference name='exsltSetsXpathCtxtRegister' href='html/libexslt-exslt.html#exsltSetsXpathCtxtRegister'/>
- <reference name='exsltStrRegister' href='html/libexslt-exslt.html#exsltStrRegister'/>
- <reference name='exsltStrXpathCtxtRegister' href='html/libexslt-exslt.html#exsltStrXpathCtxtRegister'/>
- </references>
- <alpha>
- <letter name='E'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBLIC'/>
- <ref name='EXSLTPUBVAR'/>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- </letter>
- <letter name='L'>
- <ref name='LIBEXSLT_PUBLIC'/>
- </letter>
- <letter name='S'>
- <ref name='SAXON_NAMESPACE'/>
- </letter>
- <letter name='e'>
- <ref name='exsltCommonRegister'/>
- <ref name='exsltCryptoRegister'/>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltDynRegister'/>
- <ref name='exsltFuncRegister'/>
- <ref name='exsltLibexsltVersion'/>
- <ref name='exsltLibraryVersion'/>
- <ref name='exsltLibxmlVersion'/>
- <ref name='exsltLibxsltVersion'/>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltRegisterAll'/>
- <ref name='exsltSaxonRegister'/>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </letter>
- </alpha>
- <constructors>
- </constructors>
- <functions>
- <type name='const xmlChar *'>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </type>
- <type name='xmlXPathContextPtr'>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </type>
- </functions>
- <files>
- <file name='exslt'>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- <ref name='SAXON_NAMESPACE'/>
- <ref name='exsltCommonRegister'/>
- <ref name='exsltCryptoRegister'/>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltDynRegister'/>
- <ref name='exsltFuncRegister'/>
- <ref name='exsltLibexsltVersion'/>
- <ref name='exsltLibraryVersion'/>
- <ref name='exsltLibxmlVersion'/>
- <ref name='exsltLibxsltVersion'/>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltRegisterAll'/>
- <ref name='exsltSaxonRegister'/>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </file>
- <file name='exsltexports'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBLIC'/>
- <ref name='EXSLTPUBVAR'/>
- <ref name='LIBEXSLT_PUBLIC'/>
- </file>
- </files>
- <index>
- <chunk name='chunk0'>
- <letter name='C'>
- <word name='Common'>
- <ref name='exsltCommonRegister'/>
- </word>
- <word name='Crypto'>
- <ref name='exsltCryptoRegister'/>
- </word>
- </letter>
- <letter name='D'>
- <word name='Dates'>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- </word>
- <word name='Dynamic'>
- <ref name='exsltDynRegister'/>
- </word>
- </letter>
- <letter name='E'>
- <word name='EXSLT'>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- <ref name='exsltCommonRegister'/>
- <ref name='exsltCryptoRegister'/>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltDynRegister'/>
- <ref name='exsltFuncRegister'/>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltRegisterAll'/>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='F'>
- <word name='Functions'>
- <ref name='exsltFuncRegister'/>
- </word>
- </letter>
- <letter name='M'>
- <word name='Macro'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBLIC'/>
- <ref name='EXSLTPUBVAR'/>
- </word>
- <word name='Math'>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='N'>
- <word name='Namespace'>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- <ref name='SAXON_NAMESPACE'/>
- </word>
- </letter>
- <letter name='R'>
- <word name='Registers'>
- <ref name='exsltCommonRegister'/>
- <ref name='exsltCryptoRegister'/>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltDynRegister'/>
- <ref name='exsltFuncRegister'/>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltRegisterAll'/>
- <ref name='exsltSaxonRegister'/>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='S'>
- <word name='SAXON'>
- <ref name='SAXON_NAMESPACE'/>
- <ref name='exsltSaxonRegister'/>
- </word>
- <word name='Sets'>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- </word>
- <word name='Strings'>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='T'>
- <word name='Times'>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='X'>
- <word name='XSLT'>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='a'>
- <word name='all'>
- <ref name='exsltRegisterAll'/>
- </word>
- <word name='available'>
- <ref name='exsltRegisterAll'/>
- </word>
- </letter>
- <letter name='c'>
- <word name='calling'>
- <ref name='EXSLTCALL'/>
- </word>
- <word name='common'>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- </word>
- <word name='convention'>
- <ref name='EXSLTCALL'/>
- </word>
- <word name='crypto'>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- </word>
- </letter>
- <letter name='d'>
- <word name='date'>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- </word>
- <word name='declares'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBLIC'/>
- <ref name='EXSLTPUBVAR'/>
- </word>
- <word name='dynamic'>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- </word>
- </letter>
- <letter name='e'>
- <word name='exportable'>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBVAR'/>
- </word>
- <word name='exported'>
- <ref name='EXSLTCALL'/>
- </word>
- <word name='extension'>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='exsltSaxonRegister'/>
- </word>
- <word name='extensions'>
- <ref name='SAXON_NAMESPACE'/>
- <ref name='exsltRegisterAll'/>
- </word>
- </letter>
- <letter name='f'>
- <word name='for'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- <ref name='SAXON_NAMESPACE'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- <word name='function'>
- <ref name='EXSLTPUBFUN'/>
- </word>
- <word name='functions'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLT_COMMON_NAMESPACE'/>
- <ref name='EXSLT_CRYPTO_NAMESPACE'/>
- <ref name='EXSLT_DATE_NAMESPACE'/>
- <ref name='EXSLT_DYNAMIC_NAMESPACE'/>
- <ref name='EXSLT_FUNCTIONS_NAMESPACE'/>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- <ref name='SAXON_NAMESPACE'/>
- </word>
- </letter>
- <letter name='m'>
- <word name='math'>
- <ref name='EXSLT_MATH_NAMESPACE'/>
- </word>
- <word name='module'>
- <ref name='exsltCommonRegister'/>
- <ref name='exsltCryptoRegister'/>
- <ref name='exsltDateRegister'/>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltDynRegister'/>
- <ref name='exsltFuncRegister'/>
- <ref name='exsltMathRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSaxonRegister'/>
- <ref name='exsltSetsRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='o'>
- <word name='outside'>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='p'>
- <word name='public'>
- <ref name='EXSLTPUBLIC'/>
- </word>
- </letter>
- <letter name='s'>
- <word name='set'>
- <ref name='EXSLT_SETS_NAMESPACE'/>
- </word>
- <word name='strings'>
- <ref name='EXSLT_STRINGS_NAMESPACE'/>
- </word>
- <word name='symbol'>
- <ref name='EXSLTPUBLIC'/>
- </word>
- </letter>
- <letter name='u'>
- <word name='use'>
- <ref name='exsltDateXpathCtxtRegister'/>
- <ref name='exsltMathXpathCtxtRegister'/>
- <ref name='exsltSetsXpathCtxtRegister'/>
- <ref name='exsltStrXpathCtxtRegister'/>
- </word>
- </letter>
- <letter name='v'>
- <word name='variable'>
- <ref name='EXSLTPUBVAR'/>
- </word>
- </letter>
- <letter name='w'>
- <word name='which'>
- <ref name='EXSLTCALL'/>
- <ref name='EXSLTPUBFUN'/>
- <ref name='EXSLTPUBLIC'/>
- <ref name='EXSLTPUBVAR'/>
- </word>
- </letter>
- </chunk>
- <chunks>
- <chunk name='chunk0' start='C' end='w'/>
- </chunks>
- </index>
-</apirefs>
diff --git a/doc/Makefile.am b/doc/Makefile.am
index b7f7510e..1a1e0aaa 100644
--- a/doc/Makefile.am
+++ b/doc/Makefile.am
@@ -26,13 +26,8 @@ dist_man_MANS = xsltproc.1
EXTRA_DIST = \
EXSLT/libexslt-api.xml \
- EXSLT/libexslt-refs.xml \
apibuild.py \
- checkapisym.xsl \
libxslt-api.xml \
- libxslt-refs.xml \
- symbols.xml \
- syms.xsl \
tutorial/libxslttutorial.xml \
tutorial2/libxslt_pipes.xml \
xsltproc.xml
@@ -41,14 +36,8 @@ DOCBOOK_HTML = http://docbook.sourceforge.net/release/xsl/current/html/docbook.x
rebuild:
cd $(srcdir) && ./apibuild.py
- cd $(srcdir) && $(XSLTPROC) checkapisym.xsl libxslt-api.xml
- cd $(srcdir) && $(XSLTPROC) -o ../libxslt/libxslt.syms syms.xsl symbols.xml
cd $(srcdir) && $(XSLTPROC) --nonet xsltproc.xml
cd $(srcdir) && $(XSLTPROC) --nonet -o xsltproc.html $(DOCBOOK_HTML) xsltproc.xml
- cd $(srcdir) && $(XSLTPROC) -o $(WIN32_DIR)/libxslt.def.src \
- --nonet $(WIN32_DIR)/defgen.xsl libxslt-api.xml
- cd $(srcdir) && $(XSLTPROC) -o $(WIN32_DIR)/libexslt.def.src \
- --nonet $(WIN32_DIR)/defgen.xsl EXSLT/libexslt-api.xml
cd devhelp && $(MAKE) rebuild
cd EXSLT/devhelp && $(MAKE) rebuild
diff --git a/doc/apibuild.py b/doc/apibuild.py
index 6e59677c..04eeabf8 100755
--- a/doc/apibuild.py
+++ b/doc/apibuild.py
@@ -1,4 +1,4 @@
-#!/usr/bin/env python
+#!/usr/bin/env python3
#
# This is the API builder, it parses the C sources and build the
# API formal description in XML.
@@ -12,6 +12,8 @@ import string
import glob
debug=0
+#debugsym='ignorableWhitespaceSAXFunc'
+debugsym=None
#
# C parser analysis code
@@ -21,12 +23,22 @@ ignored_files = {
"trio.c": "too many non standard macros",
"trionan.c": "too many non standard macros",
"triostr.c": "too many non standard macros",
- "acconfig.h": "generated portability layer",
"config.h": "generated portability layer",
"libxml.h": "internal only",
"testOOM.c": "out of memory tester",
"testOOMlib.h": "out of memory tester",
"testOOMlib.c": "out of memory tester",
+ "rngparser.c": "not yet integrated",
+ "testModule.c": "test tool",
+ "testThreads.c": "test tool",
+ "testapi.c": "generated regression tests",
+ "runtest.c": "regression tests program",
+ "runsuite.c": "regression tests program",
+ "tst.c": "not part of the library",
+ "test.c": "not part of the library",
+ "testdso.c": "test for dynamid shared libraries",
+ "testrecurse.c": "test for entities recursions",
+ "timsort.h": "Internal header only for xpath.c 2.9.0",
}
ignored_words = {
@@ -38,56 +50,69 @@ ignored_words = {
"XMLPUBFUN": (0, "Special macro for extern funcs for win32"),
"XSLTPUBFUN": (0, "Special macro for extern funcs for win32"),
"EXSLTPUBFUN": (0, "Special macro for extern funcs for win32"),
- "XMLCALL": (0, "Special macro for win32 calls"),
"XSLTCALL": (0, "Special macro for win32 calls"),
"EXSLTCALL": (0, "Special macro for win32 calls"),
"__declspec": (3, "Windows keyword"),
+ "__stdcall": (0, "Windows keyword"),
"ATTRIBUTE_UNUSED": (0, "macro keyword"),
+ "ATTRIBUTE_DESTRUCTOR": (0, "macro keyword"),
"LIBEXSLT_PUBLIC": (0, "macro keyword"),
"X_IN_Y": (5, "macro function builder"),
"XSLT_ITEM_COMMON_FIELDS": (0, "Special macro"),
"CALLBACK": (0, "macro keyword"),
+ "ATTRIBUTE_ALLOC_SIZE": (3, "macro for gcc checking extension"),
+ "ATTRIBUTE_PRINTF": (5, "macro for gcc printf args checking extension"),
+ "LIBXML_ATTR_FORMAT": (5, "macro for gcc printf args checking extension"),
+ "LIBXML_ATTR_ALLOC_SIZE": (3, "macro for gcc checking extension"),
"LIBXSLT_ATTR_FORMAT": (5, "macro for gcc printf args checking extension"),
+ "ATTRIBUTE_NO_SANITIZE": (3, "macro keyword"),
+ "XML_DEPRECATED": (0, "macro keyword"),
}
def escape(raw):
- raw = string.replace(raw, '&', '&amp;')
- raw = string.replace(raw, '<', '&lt;')
- raw = string.replace(raw, '>', '&gt;')
- raw = string.replace(raw, "'", '&apos;')
- raw = string.replace(raw, '"', '&quot;')
+ raw = raw.replace('&', '&amp;')
+ raw = raw.replace('<', '&lt;')
+ raw = raw.replace('>', '&gt;')
+ raw = raw.replace("'", '&apos;')
+ raw = raw.replace('"', '&quot;')
return raw
-def uniq(items):
- d = {}
- for item in items:
- d[item]=1
- return d.keys()
-
class identifier:
- def __init__(self, name, module=None, type=None, lineno = 0,
- info=None, extra=None):
+ def __init__(self, name, header=None, module=None, type=None, lineno = 0,
+ info=None, extra=None, conditionals = None):
self.name = name
- self.module = module
- self.type = type
- self.info = info
- self.extra = extra
- self.lineno = lineno
- self.static = 0
+ self.header = header
+ self.module = module
+ self.type = type
+ self.info = info
+ self.extra = extra
+ self.lineno = lineno
+ self.static = 0
+ if conditionals == None or len(conditionals) == 0:
+ self.conditionals = None
+ else:
+ self.conditionals = conditionals[:]
+ if self.name == debugsym:
+ print("=> define %s : %s" % (debugsym, (module, type, info,
+ extra, conditionals)))
def __repr__(self):
r = "%s %s:" % (self.type, self.name)
- if self.static:
- r = r + " static"
- if self.module != None:
- r = r + " from %s" % (self.module)
- if self.info != None:
- r = r + " " + `self.info`
- if self.extra != None:
- r = r + " " + `self.extra`
- return r
-
-
+ if self.static:
+ r = r + " static"
+ if self.module != None:
+ r = r + " from %s" % (self.module)
+ if self.info != None:
+ r = r + " " + repr(self.info)
+ if self.extra != None:
+ r = r + " " + repr(self.extra)
+ if self.conditionals != None:
+ r = r + " " + repr(self.conditionals)
+ return r
+
+
+ def set_header(self, header):
+ self.header = header
def set_module(self, module):
self.module = module
def set_type(self, type):
@@ -100,9 +125,16 @@ class identifier:
self.lineno = lineno
def set_static(self, static):
self.static = static
+ def set_conditionals(self, conditionals):
+ if conditionals == None or len(conditionals) == 0:
+ self.conditionals = None
+ else:
+ self.conditionals = conditionals[:]
def get_name(self):
return self.name
+ def get_header(self):
+ return self.module
def get_module(self):
return self.module
def get_type(self):
@@ -115,213 +147,250 @@ class identifier:
return self.extra
def get_static(self):
return self.static
-
- def update(self, module, type = None, info = None, extra=None):
- if module != None and self.module == None:
- self.set_module(module)
+ def get_conditionals(self):
+ return self.conditionals
+
+ def update(self, header, module, type = None, info = None, extra=None,
+ conditionals=None):
+ if self.name == debugsym:
+ print("=> update %s : %s" % (debugsym, (module, type, info,
+ extra, conditionals)))
+ if header != None and self.header == None:
+ self.set_header(module)
+ if module != None and (self.module == None or self.header == self.module):
+ self.set_module(module)
if type != None and self.type == None:
- self.set_type(type)
+ self.set_type(type)
if info != None:
- self.set_info(info)
+ self.set_info(info)
if extra != None:
- self.set_extra(extra)
-
+ self.set_extra(extra)
+ if conditionals != None:
+ self.set_conditionals(conditionals)
class index:
def __init__(self, name = "noname"):
self.name = name
self.identifiers = {}
self.functions = {}
- self.variables = {}
- self.includes = {}
- self.structs = {}
- self.enums = {}
- self.typedefs = {}
- self.macros = {}
- self.references = {}
- self.info = {}
-
- def add_ref(self, name, module, static, type, lineno, info=None, extra=None):
+ self.variables = {}
+ self.includes = {}
+ self.structs = {}
+ self.enums = {}
+ self.typedefs = {}
+ self.macros = {}
+ self.references = {}
+ self.info = {}
+
+ def add_ref(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
if name[0:2] == '__':
- return None
+ return None
d = None
- try:
- d = self.identifiers[name]
- d.update(module, type, lineno, info, extra)
- except:
- d = identifier(name, module, type, lineno, info, extra)
- self.identifiers[name] = d
+ if name in self.identifiers:
+ d = self.identifiers[name]
+ d.update(header, module, type, info, extra, conditionals)
+ else:
+ d = identifier(name, header, module, type, lineno, info, extra, conditionals)
+ self.identifiers[name] = d
+
+ if d != None and static == 1:
+ d.set_static(1)
- if d != None and static == 1:
- d.set_static(1)
+ if d != None and name != None and type != None:
+ self.references[name] = d
- if d != None and name != None and type != None:
- self.references[name] = d
+ if name == debugsym:
+ print("New ref: %s" % (d))
- def add(self, name, module, static, type, lineno, info=None, extra=None):
+ return d
+
+ def add(self, name, header, module, static, type, lineno, info=None, extra=None, conditionals = None):
if name[0:2] == '__':
- return None
+ return None
d = None
- try:
- d = self.identifiers[name]
- d.update(module, type, lineno, info, extra)
- except:
- d = identifier(name, module, type, lineno, info, extra)
- self.identifiers[name] = d
-
- if d != None and static == 1:
- d.set_static(1)
-
- if d != None and name != None and type != None:
- if type == "function":
- self.functions[name] = d
- elif type == "functype":
- self.functions[name] = d
- elif type == "variable":
- self.variables[name] = d
- elif type == "include":
- self.includes[name] = d
- elif type == "struct":
- self.structs[name] = d
- elif type == "enum":
- self.enums[name] = d
- elif type == "typedef":
- self.typedefs[name] = d
- elif type == "macro":
- self.macros[name] = d
- else:
- print "Unable to register type ", type
- return d
+ if name in self.identifiers:
+ d = self.identifiers[name]
+ d.update(header, module, type, info, extra, conditionals)
+ else:
+ d = identifier(name, header, module, type, lineno, info, extra, conditionals)
+ self.identifiers[name] = d
+
+ if d != None and static == 1:
+ d.set_static(1)
+
+ if d != None and name != None and type != None:
+ if type == "function":
+ self.functions[name] = d
+ elif type == "functype":
+ self.functions[name] = d
+ elif type == "variable":
+ self.variables[name] = d
+ elif type == "include":
+ self.includes[name] = d
+ elif type == "struct":
+ self.structs[name] = d
+ elif type == "enum":
+ self.enums[name] = d
+ elif type == "typedef":
+ self.typedefs[name] = d
+ elif type == "macro":
+ self.macros[name] = d
+ else:
+ print("Unable to register type ", type)
+
+ if name == debugsym:
+ print("New symbol: %s" % (d))
+
+ return d
def merge(self, idx):
- for id in idx.functions.keys():
+ for id in list(idx.functions.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.macros.has_key(id):
- del self.macros[id]
- if self.functions.has_key(id):
- print "function %s from %s redeclared in %s" % (
- id, self.functions[id].module, idx.functions[id].module)
- else:
- self.functions[id] = idx.functions[id]
- self.identifiers[id] = idx.functions[id]
- for id in idx.variables.keys():
+ if id in self.macros:
+ del self.macros[id]
+ if id in self.functions:
+ print("function %s from %s redeclared in %s" % (
+ id, self.functions[id].header, idx.functions[id].header))
+ else:
+ self.functions[id] = idx.functions[id]
+ self.identifiers[id] = idx.functions[id]
+ for id in list(idx.variables.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.macros.has_key(id):
- del self.macros[id]
- if self.variables.has_key(id):
- print "variable %s from %s redeclared in %s" % (
- id, self.variables[id].module, idx.variables[id].module)
- else:
- self.variables[id] = idx.variables[id]
- self.identifiers[id] = idx.variables[id]
- for id in idx.structs.keys():
- if self.structs.has_key(id):
- print "struct %s from %s redeclared in %s" % (
- id, self.structs[id].module, idx.structs[id].module)
- else:
- self.structs[id] = idx.structs[id]
- self.identifiers[id] = idx.structs[id]
- for id in idx.typedefs.keys():
- if self.typedefs.has_key(id):
- print "typedef %s from %s redeclared in %s" % (
- id, self.typedefs[id].module, idx.typedefs[id].module)
- else:
- self.typedefs[id] = idx.typedefs[id]
- self.identifiers[id] = idx.typedefs[id]
- for id in idx.macros.keys():
+ if id in self.macros:
+ del self.macros[id]
+ if id in self.variables:
+ print("variable %s from %s redeclared in %s" % (
+ id, self.variables[id].header, idx.variables[id].header))
+ else:
+ self.variables[id] = idx.variables[id]
+ self.identifiers[id] = idx.variables[id]
+ for id in list(idx.structs.keys()):
+ if id in self.structs:
+ print("struct %s from %s redeclared in %s" % (
+ id, self.structs[id].header, idx.structs[id].header))
+ else:
+ self.structs[id] = idx.structs[id]
+ self.identifiers[id] = idx.structs[id]
+ for id in list(idx.typedefs.keys()):
+ if id in self.typedefs:
+ print("typedef %s from %s redeclared in %s" % (
+ id, self.typedefs[id].header, idx.typedefs[id].header))
+ else:
+ self.typedefs[id] = idx.typedefs[id]
+ self.identifiers[id] = idx.typedefs[id]
+ for id in list(idx.macros.keys()):
#
# macro might be used to override functions or variables
# definitions
#
- if self.variables.has_key(id):
+ if id in self.variables:
continue
- if self.functions.has_key(id):
+ if id in self.functions:
continue
- if self.enums.has_key(id):
+ if id in self.enums:
continue
- if self.macros.has_key(id):
- print "macro %s from %s redeclared in %s" % (
- id, self.macros[id].module, idx.macros[id].module)
- else:
- self.macros[id] = idx.macros[id]
- self.identifiers[id] = idx.macros[id]
- for id in idx.enums.keys():
- if self.enums.has_key(id):
- print "enum %s from %s redeclared in %s" % (
- id, self.enums[id].module, idx.enums[id].module)
- else:
- self.enums[id] = idx.enums[id]
- self.identifiers[id] = idx.enums[id]
+ if id in self.macros:
+ print("macro %s from %s redeclared in %s" % (
+ id, self.macros[id].header, idx.macros[id].header))
+ else:
+ self.macros[id] = idx.macros[id]
+ self.identifiers[id] = idx.macros[id]
+ for id in list(idx.enums.keys()):
+ if id in self.enums:
+ print("enum %s from %s redeclared in %s" % (
+ id, self.enums[id].header, idx.enums[id].header))
+ else:
+ self.enums[id] = idx.enums[id]
+ self.identifiers[id] = idx.enums[id]
def merge_public(self, idx):
- for id in idx.functions.keys():
- if self.functions.has_key(id):
- up = idx.functions[id]
- self.functions[id].update(None, up.type, up.info, up.extra)
- # else:
- # print "Function %s from %s is not declared in headers" % (
- # id, idx.functions[id].module)
- # TODO: do the same for variables.
+ for id in list(idx.functions.keys()):
+ if id in self.functions:
+ # check that function condition agrees with header
+ if idx.functions[id].conditionals != \
+ self.functions[id].conditionals:
+ print("Header condition differs from Function for %s:" \
+ % id)
+ print(" H: %s" % self.functions[id].conditionals)
+ print(" C: %s" % idx.functions[id].conditionals)
+ up = idx.functions[id]
+ self.functions[id].update(None, up.module, up.type, up.info, up.extra)
+ # else:
+ # print "Function %s from %s is not declared in headers" % (
+ # id, idx.functions[id].module)
+
+ for id in list(idx.variables.keys()):
+ if id in self.variables:
+ # check that variable condition agrees with header
+ # TODO: produces many false positives
+ #if idx.variables[id].conditionals != \
+ # self.variables[id].conditionals:
+ # print("Header condition differs from Variable for %s:" \
+ # % id)
+ # print(" H: %s" % self.variables[id].conditionals)
+ # print(" C: %s" % idx.variables[id].conditionals)
+ up = idx.variables[id]
+ self.variables[id].update(None, up.module, up.type, up.info, up.extra)
def analyze_dict(self, type, dict):
count = 0
- public = 0
- for name in dict.keys():
- id = dict[name]
- count = count + 1
- if id.static == 0:
- public = public + 1
+ public = 0
+ for name in list(dict.keys()):
+ id = dict[name]
+ count = count + 1
+ if id.static == 0:
+ public = public + 1
if count != public:
- print " %d %s , %d public" % (count, type, public)
- elif count != 0:
- print " %d public %s" % (count, type)
+ print(" %d %s , %d public" % (count, type, public))
+ elif count != 0:
+ print(" %d public %s" % (count, type))
def analyze(self):
- self.analyze_dict("functions", self.functions)
- self.analyze_dict("variables", self.variables)
- self.analyze_dict("structs", self.structs)
- self.analyze_dict("typedefs", self.typedefs)
- self.analyze_dict("macros", self.macros)
-
+ self.analyze_dict("functions", self.functions)
+ self.analyze_dict("variables", self.variables)
+ self.analyze_dict("structs", self.structs)
+ self.analyze_dict("typedefs", self.typedefs)
+ self.analyze_dict("macros", self.macros)
+
class CLexer:
"""A lexer for the C language, tokenize the input by reading and
analyzing it line by line"""
def __init__(self, input):
self.input = input
- self.tokens = []
- self.line = ""
- self.lineno = 0
+ self.tokens = []
+ self.line = ""
+ self.lineno = 0
def getline(self):
line = ''
- while line == '':
- line = self.input.readline()
- if not line:
- return None
- self.lineno = self.lineno + 1
- line = string.lstrip(line)
- line = string.rstrip(line)
- if line == '':
- continue
- while line[-1] == '\\':
- line = line[:-1]
- n = self.input.readline()
- self.lineno = self.lineno + 1
- n = string.lstrip(n)
- n = string.rstrip(n)
- if not n:
- break
- else:
- line = line + n
+ while line == '':
+ line = self.input.readline()
+ if not line:
+ return None
+ self.lineno = self.lineno + 1
+ line = line.lstrip()
+ line = line.rstrip()
+ if line == '':
+ continue
+ while line[-1] == '\\':
+ line = line[:-1]
+ n = self.input.readline()
+ self.lineno = self.lineno + 1
+ n = n.lstrip()
+ n = n.rstrip()
+ if not n:
+ break
+ else:
+ line = line + n
return line
-
+
def getlineno(self):
return self.lineno
@@ -329,350 +398,407 @@ class CLexer:
self.tokens.insert(0, token);
def debug(self):
- print "Last token: ", self.last
- print "Token queue: ", self.tokens
- print "Line %d end: " % (self.lineno), self.line
+ print("Last token: ", self.last)
+ print("Token queue: ", self.tokens)
+ print("Line %d end: " % (self.lineno), self.line)
def token(self):
while self.tokens == []:
- if self.line == "":
- line = self.getline()
- else:
- line = self.line
- self.line = ""
- if line == None:
- return None
-
- if line[0] == '#':
- self.tokens = map((lambda x: ('preproc', x)),
- string.split(line))
- break;
- l = len(line)
- if line[0] == '"' or line[0] == "'":
- end = line[0]
- line = line[1:]
- found = 0
- tok = ""
- while found == 0:
- i = 0
- l = len(line)
- while i < l:
- if line[i] == end:
- self.line = line[i+1:]
- line = line[:i]
- l = i
- found = 1
- break
- if line[i] == '\\':
- i = i + 1
- i = i + 1
- tok = tok + line
- if found == 0:
- line = self.getline()
- if line == None:
- return None
- self.last = ('string', tok)
- return self.last
-
- if l >= 2 and line[0] == '/' and line[1] == '*':
- line = line[2:]
- found = 0
- tok = ""
- while found == 0:
- i = 0
- l = len(line)
- while i < l:
- if line[i] == '*' and i+1 < l and line[i+1] == '/':
- self.line = line[i+2:]
- line = line[:i-1]
- l = i
- found = 1
- break
- i = i + 1
- if tok != "":
- tok = tok + "\n"
- tok = tok + line
- if found == 0:
- line = self.getline()
- if line == None:
- return None
- self.last = ('comment', tok)
- return self.last
- if l >= 2 and line[0] == '/' and line[1] == '/':
- line = line[2:]
- self.last = ('comment', line)
- return self.last
- i = 0
- while i < l:
- if line[i] == '/' and i+1 < l and line[i+1] == '/':
- self.line = line[i:]
- line = line[:i]
- break
- if line[i] == '/' and i+1 < l and line[i+1] == '*':
- self.line = line[i:]
- line = line[:i]
- break
- if line[i] == '"' or line[i] == "'":
- self.line = line[i:]
- line = line[:i]
- break
- i = i + 1
- l = len(line)
- i = 0
- while i < l:
- if line[i] == ' ' or line[i] == '\t':
- i = i + 1
- continue
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57):
- s = i
- while i < l:
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57) or string.find(
- " \t(){}:;,+-*/%&!|[]=><", line[i]) == -1:
- i = i + 1
- else:
- break
- self.tokens.append(('name', line[s:i]))
- continue
- if string.find("(){}:;,[]", line[i]) != -1:
+ if self.line == "":
+ line = self.getline()
+ else:
+ line = self.line
+ self.line = ""
+ if line == None:
+ return None
+
+ if line[0] == '#':
+ self.tokens = list(map((lambda x: ('preproc', x)),
+ line.split()))
+ break;
+ l = len(line)
+ if line[0] == '"' or line[0] == "'":
+ end = line[0]
+ line = line[1:]
+ found = 0
+ tok = ""
+ while found == 0:
+ i = 0
+ l = len(line)
+ while i < l:
+ if line[i] == end:
+ self.line = line[i+1:]
+ line = line[:i]
+ l = i
+ found = 1
+ break
+ if line[i] == '\\':
+ i = i + 1
+ i = i + 1
+ tok = tok + line
+ if found == 0:
+ line = self.getline()
+ if line == None:
+ return None
+ self.last = ('string', tok)
+ return self.last
+
+ if l >= 2 and line[0] == '/' and line[1] == '*':
+ line = line[2:]
+ found = 0
+ tok = ""
+ while found == 0:
+ i = 0
+ l = len(line)
+ while i < l:
+ if line[i] == '*' and i+1 < l and line[i+1] == '/':
+ self.line = line[i+2:]
+ line = line[:i-1]
+ l = i
+ found = 1
+ break
+ i = i + 1
+ if tok != "":
+ tok = tok + "\n"
+ tok = tok + line
+ if found == 0:
+ line = self.getline()
+ if line == None:
+ return None
+ self.last = ('comment', tok)
+ return self.last
+ if l >= 2 and line[0] == '/' and line[1] == '/':
+ line = line[2:]
+ self.last = ('comment', line)
+ return self.last
+ i = 0
+ while i < l:
+ if line[i] == '/' and i+1 < l and line[i+1] == '/':
+ self.line = line[i:]
+ line = line[:i]
+ break
+ if line[i] == '/' and i+1 < l and line[i+1] == '*':
+ self.line = line[i:]
+ line = line[:i]
+ break
+ if line[i] == '"' or line[i] == "'":
+ self.line = line[i:]
+ line = line[:i]
+ break
+ i = i + 1
+ l = len(line)
+ i = 0
+ while i < l:
+ if line[i] == ' ' or line[i] == '\t':
+ i = i + 1
+ continue
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57):
+ s = i
+ while i < l:
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57) or \
+ (" \t(){}:;,+-*/%&!|[]=><".find(line[i])) == -1:
+ i = i + 1
+ else:
+ break
+ self.tokens.append(('name', line[s:i]))
+ continue
+ if "(){}:;,[]".find(line[i]) != -1:
# if line[i] == '(' or line[i] == ')' or line[i] == '{' or \
-# line[i] == '}' or line[i] == ':' or line[i] == ';' or \
-# line[i] == ',' or line[i] == '[' or line[i] == ']':
- self.tokens.append(('sep', line[i]))
- i = i + 1
- continue
- if string.find("+-*><=/%&!|.", line[i]) != -1:
+# line[i] == '}' or line[i] == ':' or line[i] == ';' or \
+# line[i] == ',' or line[i] == '[' or line[i] == ']':
+ self.tokens.append(('sep', line[i]))
+ i = i + 1
+ continue
+ if "+-*><=/%&!|.".find(line[i]) != -1:
# if line[i] == '+' or line[i] == '-' or line[i] == '*' or \
-# line[i] == '>' or line[i] == '<' or line[i] == '=' or \
-# line[i] == '/' or line[i] == '%' or line[i] == '&' or \
-# line[i] == '!' or line[i] == '|' or line[i] == '.':
- if line[i] == '.' and i + 2 < l and \
- line[i+1] == '.' and line[i+2] == '.':
- self.tokens.append(('name', '...'))
- i = i + 3
- continue
-
- j = i + 1
- if j < l and (
- string.find("+-*><=/%&!|", line[j]) != -1):
-# line[j] == '+' or line[j] == '-' or line[j] == '*' or \
-# line[j] == '>' or line[j] == '<' or line[j] == '=' or \
-# line[j] == '/' or line[j] == '%' or line[j] == '&' or \
-# line[j] == '!' or line[j] == '|'):
- self.tokens.append(('op', line[i:j+1]))
- i = j + 1
- else:
- self.tokens.append(('op', line[i]))
- i = i + 1
- continue
- s = i
- while i < l:
- o = ord(line[i])
- if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
- (o >= 48 and o <= 57) or (
- string.find(" \t(){}:;,+-*/%&!|[]=><", line[i]) == -1):
-# line[i] != ' ' and line[i] != '\t' and
-# line[i] != '(' and line[i] != ')' and
-# line[i] != '{' and line[i] != '}' and
-# line[i] != ':' and line[i] != ';' and
-# line[i] != ',' and line[i] != '+' and
-# line[i] != '-' and line[i] != '*' and
-# line[i] != '/' and line[i] != '%' and
-# line[i] != '&' and line[i] != '!' and
-# line[i] != '|' and line[i] != '[' and
-# line[i] != ']' and line[i] != '=' and
-# line[i] != '*' and line[i] != '>' and
-# line[i] != '<'):
- i = i + 1
- else:
- break
- self.tokens.append(('name', line[s:i]))
-
- tok = self.tokens[0]
- self.tokens = self.tokens[1:]
- self.last = tok
- return tok
-
+# line[i] == '>' or line[i] == '<' or line[i] == '=' or \
+# line[i] == '/' or line[i] == '%' or line[i] == '&' or \
+# line[i] == '!' or line[i] == '|' or line[i] == '.':
+ if line[i] == '.' and i + 2 < l and \
+ line[i+1] == '.' and line[i+2] == '.':
+ self.tokens.append(('name', '...'))
+ i = i + 3
+ continue
+
+ j = i + 1
+ if j < l and (
+ "+-*><=/%&!|".find(line[j]) != -1):
+# line[j] == '+' or line[j] == '-' or line[j] == '*' or \
+# line[j] == '>' or line[j] == '<' or line[j] == '=' or \
+# line[j] == '/' or line[j] == '%' or line[j] == '&' or \
+# line[j] == '!' or line[j] == '|'):
+ self.tokens.append(('op', line[i:j+1]))
+ i = j + 1
+ else:
+ self.tokens.append(('op', line[i]))
+ i = i + 1
+ continue
+ s = i
+ while i < l:
+ o = ord(line[i])
+ if (o >= 97 and o <= 122) or (o >= 65 and o <= 90) or \
+ (o >= 48 and o <= 57) or (
+ " \t(){}:;,+-*/%&!|[]=><".find(line[i]) == -1):
+# line[i] != ' ' and line[i] != '\t' and
+# line[i] != '(' and line[i] != ')' and
+# line[i] != '{' and line[i] != '}' and
+# line[i] != ':' and line[i] != ';' and
+# line[i] != ',' and line[i] != '+' and
+# line[i] != '-' and line[i] != '*' and
+# line[i] != '/' and line[i] != '%' and
+# line[i] != '&' and line[i] != '!' and
+# line[i] != '|' and line[i] != '[' and
+# line[i] != ']' and line[i] != '=' and
+# line[i] != '*' and line[i] != '>' and
+# line[i] != '<'):
+ i = i + 1
+ else:
+ break
+ self.tokens.append(('name', line[s:i]))
+
+ tok = self.tokens[0]
+ self.tokens = self.tokens[1:]
+ self.last = tok
+ return tok
+
class CParser:
"""The C module parser"""
def __init__(self, filename, idx = None):
self.filename = filename
- if len(filename) > 2 and filename[-2:] == '.h':
- self.is_header = 1
- else:
- self.is_header = 0
+ if len(filename) > 2 and filename[-2:] == '.h':
+ self.is_header = 1
+ else:
+ self.is_header = 0
self.input = open(filename)
- self.lexer = CLexer(self.input)
- if idx == None:
- self.index = index()
- else:
- self.index = idx
- self.top_comment = ""
- self.last_comment = ""
- self.comment = None
- self.collect_ref = 0
- self.no_error = 0
+ self.lexer = CLexer(self.input)
+ if idx == None:
+ self.index = index()
+ else:
+ self.index = idx
+ self.top_comment = ""
+ self.last_comment = ""
+ self.comment = None
+ self.collect_ref = 0
+ self.doc_disable = 0
+ self.conditionals = []
+ self.defines = []
def collect_references(self):
self.collect_ref = 1
- def stop_error(self):
- self.no_error = 1
+ def disable(self):
+ self.doc_disable = 1
- def start_error(self):
- self.no_error = 0
+ def enable(self):
+ self.doc_disable = 0
def lineno(self):
return self.lexer.getlineno()
def index_add(self, name, module, static, type, info=None, extra = None):
- self.index.add(name, module, static, type, self.lineno(),
- info, extra)
+ if self.doc_disable:
+ return
+ if self.is_header == 1:
+ self.index.add(name, module, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
+ else:
+ self.index.add(name, None, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
def index_add_ref(self, name, module, static, type, info=None,
extra = None):
- self.index.add_ref(name, module, static, type, self.lineno(),
- info, extra)
+ if self.is_header == 1:
+ self.index.add_ref(name, module, module, static, type,
+ self.lineno(), info, extra, self.conditionals)
+ else:
+ self.index.add_ref(name, None, module, static, type, self.lineno(),
+ info, extra, self.conditionals)
def warning(self, msg):
- if self.no_error:
- return
- print msg
+ if self.doc_disable:
+ return
+ print(msg)
def error(self, msg, token=-1):
- if self.no_error:
- return
+ if self.doc_disable:
+ return
- print "Parse Error: " + msg
- if token != -1:
- print "Got token ", token
- self.lexer.debug()
- sys.exit(1)
+ print("Parse Error: " + msg)
+ if token != -1:
+ print("Got token ", token)
+ self.lexer.debug()
+ sys.exit(1)
def debug(self, msg, token=-1):
- print "Debug: " + msg
- if token != -1:
- print "Got token ", token
- self.lexer.debug()
+ print("Debug: " + msg)
+ if token != -1:
+ print("Got token ", token)
+ self.lexer.debug()
def parseTopComment(self, comment):
- res = {}
- lines = string.split(comment, "\n")
- item = None
- for line in lines:
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- while line != "" and line[0] == '*':
- line = line[1:]
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- try:
- (it, line) = string.split(line, ":", 1)
- item = it
- while line != "" and (line[0] == ' ' or line[0] == '\t'):
- line = line[1:]
- if res.has_key(item):
- res[item] = res[item] + " " + line
- else:
- res[item] = line
- except:
- if item != None:
- if res.has_key(item):
- res[item] = res[item] + " " + line
- else:
- res[item] = line
- self.index.info = res
+ res = {}
+ lines = comment.split("\n")
+ item = None
+ for line in lines:
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ while line != "" and line[0] == '*':
+ line = line[1:]
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ try:
+ (it, line) = line.split(":", 1)
+ item = it
+ while line != "" and (line[0] == ' ' or line[0] == '\t'):
+ line = line[1:]
+ if item in res:
+ res[item] = res[item] + " " + line
+ else:
+ res[item] = line
+ except:
+ if item != None:
+ if item in res:
+ res[item] = res[item] + " " + line
+ else:
+ res[item] = line
+ self.index.info = res
def parseComment(self, token):
if self.top_comment == "":
- self.top_comment = token[1]
- if self.comment == None or token[1][0] == '*':
- self.comment = token[1];
- else:
- self.comment = self.comment + token[1]
- token = self.lexer.token()
+ self.top_comment = token[1]
+ if self.comment == None or token[1][0] == '*':
+ self.comment = token[1];
+ else:
+ self.comment = self.comment + token[1]
+ token = self.lexer.token()
- if string.find(self.comment, "DOC_DISABLE") != -1:
- self.stop_error()
+ if self.comment.find("DOC_DISABLE") != -1:
+ self.disable()
- if string.find(self.comment, "DOC_ENABLE") != -1:
- self.start_error()
+ if self.comment.find("DOC_ENABLE") != -1:
+ self.enable()
- return token
+ return token
- #
- # Parse a comment block associate to a macro
- #
+ #
+ # Parse a simple comment block for typedefs or global variables
+ #
+ def parseSimpleComment(self, name, quiet = False):
+ if name[0:2] == '__':
+ quiet = 1
+
+ args = []
+ desc = ""
+
+ if self.comment == None:
+ if not quiet:
+ self.warning("Missing comment for %s" % (name))
+ return(None)
+ if self.comment[0] != '*':
+ if not quiet:
+ self.warning("Missing * in comment for %s" % (name))
+ return(None)
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return(None)
+ del lines[0]
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ desc = desc + " " + l
+ del lines[0]
+
+ desc = desc.strip()
+
+ if quiet == 0:
+ if desc == "":
+ self.warning("Comment for %s lacks description" % (name))
+
+ return(desc)
+ #
+ # Parse a comment block associate to a macro
+ #
def parseMacroComment(self, name, quiet = 0):
if name[0:2] == '__':
- quiet = 1
+ quiet = 1
args = []
- desc = ""
+ desc = ""
if self.comment == None:
- if not quiet:
- self.warning("Missing comment for macro %s" % (name))
- return((args, desc))
+ if not quiet:
+ self.warning("Missing comment for macro %s" % (name))
+ return((args, desc))
if self.comment[0] != '*':
- if not quiet:
- self.warning("Missing * in macro comment for %s" % (name))
- return((args, desc))
- lines = string.split(self.comment, '\n')
- if lines[0] == '*':
- del lines[0]
- if lines[0] != "* %s:" % (name):
- if not quiet:
- self.warning("Misformatted macro comment for %s" % (name))
- self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
- return((args, desc))
- del lines[0]
- while lines[0] == '*':
- del lines[0]
- while len(lines) > 0 and lines[0][0:3] == '* @':
- l = lines[0][3:]
- try:
- (arg, desc) = string.split(l, ':', 1)
- desc=string.strip(desc)
- arg=string.strip(arg)
+ if not quiet:
+ self.warning("Missing * in macro comment for %s" % (name))
+ return((args, desc))
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted macro comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return((args, desc))
+ del lines[0]
+ while lines[0] == '*':
+ del lines[0]
+ while len(lines) > 0 and lines[0][0:3] == '* @':
+ l = lines[0][3:]
+ try:
+ (arg, desc) = l.split(':', 1)
+ desc=desc.strip()
+ arg=arg.strip()
except:
- if not quiet:
- self.warning("Misformatted macro comment for %s" % (name))
- self.warning(" problem with '%s'" % (lines[0]))
- del lines[0]
- continue
- del lines[0]
- l = string.strip(lines[0])
- while len(l) > 2 and l[0:3] != '* @':
- while l[0] == '*':
- l = l[1:]
- desc = desc + ' ' + string.strip(l)
- del lines[0]
- if len(lines) == 0:
- break
- l = lines[0]
+ if not quiet:
+ self.warning("Misformatted macro comment for %s" % (name))
+ self.warning(" problem with '%s'" % (lines[0]))
+ del lines[0]
+ continue
+ del lines[0]
+ l = lines[0].strip()
+ while len(l) > 2 and l[0:3] != '* @':
+ while l[0] == '*':
+ l = l[1:]
+ desc = desc + ' ' + l.strip()
+ del lines[0]
+ if len(lines) == 0:
+ break
+ l = lines[0]
args.append((arg, desc))
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- desc = ""
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- desc = desc + " " + l
- del lines[0]
-
- desc = string.strip(desc)
-
- if quiet == 0:
- if desc == "":
- self.warning("Macro comment for %s lack description of the macro" % (name))
-
- return((args, desc))
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ desc = desc + " " + l
+ del lines[0]
+
+ desc = desc.strip()
+
+ if quiet == 0:
+ if desc == "":
+ self.warning("Macro comment for %s lack description of the macro" % (name))
+
+ return((args, desc))
#
# Parse a comment block and merge the information found in the
@@ -681,149 +807,206 @@ class CParser:
#
def mergeFunctionComment(self, name, description, quiet = 0):
if name == 'main':
- quiet = 1
+ quiet = 1
if name[0:2] == '__':
- quiet = 1
+ quiet = 1
- (ret, args) = description
- desc = ""
- retdesc = ""
+ (ret, args) = description
+ desc = ""
+ retdesc = ""
if self.comment == None:
- if not quiet:
- self.warning("Missing comment for function %s" % (name))
- return(((ret[0], retdesc), args, desc))
+ if not quiet:
+ self.warning("Missing comment for function %s" % (name))
+ return(((ret[0], retdesc), args, desc))
if self.comment[0] != '*':
- if not quiet:
- self.warning("Missing * in function comment for %s" % (name))
- return(((ret[0], retdesc), args, desc))
- lines = string.split(self.comment, '\n')
- if lines[0] == '*':
- del lines[0]
- if lines[0] != "* %s:" % (name):
- if not quiet:
- self.warning("Misformatted function comment for %s" % (name))
- self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
- return(((ret[0], retdesc), args, desc))
- del lines[0]
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- nbargs = len(args)
- while len(lines) > 0 and lines[0][0:3] == '* @':
- l = lines[0][3:]
- try:
- (arg, desc) = string.split(l, ':', 1)
- desc=string.strip(desc)
- arg=string.strip(arg)
+ if not quiet:
+ self.warning("Missing * in function comment for %s" % (name))
+ return(((ret[0], retdesc), args, desc))
+ lines = self.comment.split('\n')
+ if lines[0] == '*':
+ del lines[0]
+ if lines[0] != "* %s:" % (name):
+ if not quiet:
+ self.warning("Misformatted function comment for %s" % (name))
+ self.warning(" Expecting '* %s:' got '%s'" % (name, lines[0]))
+ return(((ret[0], retdesc), args, desc))
+ del lines[0]
+ while lines[0] == '*':
+ del lines[0]
+ nbargs = len(args)
+ while len(lines) > 0 and lines[0][0:3] == '* @':
+ l = lines[0][3:]
+ try:
+ (arg, desc) = l.split(':', 1)
+ desc=desc.strip()
+ arg=arg.strip()
except:
- if not quiet:
- self.warning("Misformatted function comment for %s" % (name))
- self.warning(" problem with '%s'" % (lines[0]))
- del lines[0]
- continue
- del lines[0]
- l = string.strip(lines[0])
- while len(l) > 2 and l[0:3] != '* @':
- while l[0] == '*':
- l = l[1:]
- desc = desc + ' ' + string.strip(l)
- del lines[0]
- if len(lines) == 0:
- break
- l = lines[0]
- i = 0
- while i < nbargs:
- if args[i][1] == arg:
- args[i] = (args[i][0], arg, desc)
- break;
- i = i + 1
- if i >= nbargs:
- if not quiet:
- self.warning("Unable to find arg %s from function comment for %s" % (
- arg, name))
- while len(lines) > 0 and lines[0] == '*':
- del lines[0]
- desc = ""
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- if len(l) >= 6 and l[0:6] == "return" or l[0:6] == "Return":
- try:
- l = string.split(l, ' ', 1)[1]
- except:
- l = ""
- retdesc = string.strip(l)
- del lines[0]
- while len(lines) > 0:
- l = lines[0]
- while len(l) > 0 and l[0] == '*':
- l = l[1:]
- l = string.strip(l)
- retdesc = retdesc + " " + l
- del lines[0]
- else:
- desc = desc + " " + l
- del lines[0]
-
- retdesc = string.strip(retdesc)
- desc = string.strip(desc)
-
- if quiet == 0:
- #
- # report missing comments
- #
- i = 0
- while i < nbargs:
- if args[i][2] == None and args[i][0] != "void" and args[i][1] != None:
- self.warning("Function comment for %s lack description of arg %s" % (name, args[i][1]))
- i = i + 1
- if retdesc == "" and ret[0] != "void":
- self.warning("Function comment for %s lack description of return value" % (name))
- if desc == "":
- self.warning("Function comment for %s lack description of the function" % (name))
-
-
- return(((ret[0], retdesc), args, desc))
+ if not quiet:
+ self.warning("Misformatted function comment for %s" % (name))
+ self.warning(" problem with '%s'" % (lines[0]))
+ del lines[0]
+ continue
+ del lines[0]
+ l = lines[0].strip()
+ while len(l) > 2 and l[0:3] != '* @':
+ while l[0] == '*':
+ l = l[1:]
+ desc = desc + ' ' + l.strip()
+ del lines[0]
+ if len(lines) == 0:
+ break
+ l = lines[0]
+ i = 0
+ while i < nbargs:
+ if args[i][1] == arg:
+ args[i] = (args[i][0], arg, desc)
+ break;
+ i = i + 1
+ if i >= nbargs:
+ if not quiet:
+ self.warning("Unable to find arg %s from function comment for %s" % (
+ arg, name))
+ while len(lines) > 0 and lines[0] == '*':
+ del lines[0]
+ desc = ""
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ if len(l) >= 6 and l[0:6] == "return" or l[0:6] == "Return":
+ try:
+ l = l.split(' ', 1)[1]
+ except:
+ l = ""
+ retdesc = l.strip()
+ del lines[0]
+ while len(lines) > 0:
+ l = lines[0]
+ while len(l) > 0 and l[0] == '*':
+ l = l[1:]
+ l = l.strip()
+ retdesc = retdesc + " " + l
+ del lines[0]
+ else:
+ desc = desc + " " + l
+ del lines[0]
+
+ retdesc = retdesc.strip()
+ desc = desc.strip()
+
+ if quiet == 0:
+ #
+ # report missing comments
+ #
+ i = 0
+ while i < nbargs:
+ if args[i][2] == None and args[i][0] != "void" and \
+ ((args[i][1] != None) or (args[i][1] == '')):
+ self.warning("Function comment for %s lacks description of arg %s" % (name, args[i][1]))
+ i = i + 1
+ if retdesc == "" and ret[0] != "void":
+ self.warning("Function comment for %s lacks description of return value" % (name))
+ if desc == "":
+ self.warning("Function comment for %s lacks description of the function" % (name))
+
+ return(((ret[0], retdesc), args, desc))
def parsePreproc(self, token):
+ if debug:
+ print("=> preproc ", token, self.lexer.tokens)
name = token[1]
- if name == "#include":
- token = self.lexer.token()
- if token == None:
- return None
- if token[0] == 'preproc':
- self.index_add(token[1], self.filename, not self.is_header,
- "include")
- return self.lexer.token()
- return token
- if name == "#define":
- token = self.lexer.token()
- if token == None:
- return None
- if token[0] == 'preproc':
- # TODO macros with arguments
- name = token[1]
- lst = []
- token = self.lexer.token()
- while token != None and token[0] == 'preproc' and \
- token[1][0] != '#':
- lst.append(token[1])
- token = self.lexer.token()
+ if name == "#include":
+ token = self.lexer.token()
+ if token == None:
+ return None
+ if token[0] == 'preproc':
+ self.index_add(token[1], self.filename, not self.is_header,
+ "include")
+ return self.lexer.token()
+ return token
+ if name == "#define":
+ token = self.lexer.token()
+ if token == None:
+ return None
+ if token[0] == 'preproc':
+ # TODO macros with arguments
+ name = token[1]
+ lst = []
+ token = self.lexer.token()
+ while token != None and token[0] == 'preproc' and \
+ token[1][0] != '#':
+ lst.append(token[1])
+ token = self.lexer.token()
try:
- name = string.split(name, '(') [0]
+ name = name.split('(') [0]
except:
pass
- info = self.parseMacroComment(name, not self.is_header)
- self.index_add(name, self.filename, not self.is_header,
- "macro", info)
- return token
- token = self.lexer.token()
- while token != None and token[0] == 'preproc' and \
- token[1][0] != '#':
- token = self.lexer.token()
- return token
+ info = self.parseMacroComment(name, True)
+ self.index_add(name, self.filename, not self.is_header,
+ "macro", info)
+ return token
+
+ #
+ # Processing of conditionals modified by Bill 1/1/05
+ #
+ # We process conditionals (i.e. tokens from #ifdef, #ifndef,
+ # #if, #else and #endif) for headers and mainline code,
+ # store the ones from the header in libxml2-api.xml, and later
+ # (in the routine merge_public) verify that the two (header and
+ # mainline code) agree.
+ #
+ # There is a small problem with processing the headers. Some of
+ # the variables are not concerned with enabling / disabling of
+ # library functions (e.g. '__XML_PARSER_H__'), and we don't want
+ # them to be included in libxml2-api.xml, or involved in
+ # the check between the header and the mainline code. To
+ # accomplish this, we ignore any conditional which doesn't include
+ # the string 'ENABLED'
+ #
+ if name == "#ifdef":
+ apstr = self.lexer.tokens[0][1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append("defined(%s)" % apstr)
+ except:
+ pass
+ elif name == "#ifndef":
+ apstr = self.lexer.tokens[0][1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append("!defined(%s)" % apstr)
+ except:
+ pass
+ elif name == "#if":
+ apstr = ""
+ for tok in self.lexer.tokens:
+ if apstr != "":
+ apstr = apstr + " "
+ apstr = apstr + tok[1]
+ try:
+ self.defines.append(apstr)
+ if apstr.find('ENABLED') != -1:
+ self.conditionals.append(apstr)
+ except:
+ pass
+ elif name == "#else":
+ if self.conditionals != [] and \
+ self.defines[-1].find('ENABLED') != -1:
+ self.conditionals[-1] = "!(%s)" % self.conditionals[-1]
+ elif name == "#endif":
+ if self.conditionals != [] and \
+ self.defines[-1].find('ENABLED') != -1:
+ self.conditionals = self.conditionals[:-1]
+ self.defines = self.defines[:-1]
+ token = self.lexer.token()
+ while token != None and token[0] == 'preproc' and \
+ token[1][0] != '#':
+ token = self.lexer.token()
+ return token
#
# token acquisition on top of the lexer, it handle internally
@@ -834,218 +1017,227 @@ class CParser:
global ignored_words
token = self.lexer.token()
- while token != None:
- if token[0] == 'comment':
- token = self.parseComment(token)
- continue
- elif token[0] == 'preproc':
- token = self.parsePreproc(token)
- continue
- elif token[0] == "name" and ignored_words.has_key(token[1]):
- (n, info) = ignored_words[token[1]]
- i = 0
- while i < n:
- token = self.lexer.token()
- i = i + 1
- token = self.lexer.token()
- continue
- else:
- if debug:
- print "=> ", token
- return token
- return None
+ while token != None:
+ if token[0] == 'comment':
+ token = self.parseComment(token)
+ continue
+ elif token[0] == 'preproc':
+ token = self.parsePreproc(token)
+ continue
+ elif token[0] == "name" and token[1] == "__const":
+ token = ("name", "const")
+ return token
+ elif token[0] == "name" and token[1] == "__attribute":
+ token = self.lexer.token()
+ while token != None and token[1] != ";":
+ token = self.lexer.token()
+ return token
+ elif token[0] == "name" and token[1] in ignored_words:
+ (n, info) = ignored_words[token[1]]
+ i = 0
+ while i < n:
+ token = self.lexer.token()
+ i = i + 1
+ token = self.lexer.token()
+ continue
+ else:
+ if debug:
+ print("=> ", token)
+ return token
+ return None
#
# Parse a typedef, it records the type and its name.
#
def parseTypedef(self, token):
if token == None:
- return None
- token = self.parseType(token)
- if token == None:
- self.error("parsing typedef")
- return None
- base_type = self.type
- type = base_type
- #self.debug("end typedef type", token)
- while token != None:
- if token[0] == "name":
- name = token[1]
- signature = self.signature
- if signature != None:
- type = string.split(type, '(')[0]
- d = self.mergeFunctionComment(name,
- ((type, None), signature), 1)
- self.index_add(name, self.filename, not self.is_header,
- "functype", d)
- else:
- if base_type == "struct":
- self.index_add(name, self.filename, not self.is_header,
- "struct", type)
- base_type = "struct " + name
- else:
- self.index_add(name, self.filename, not self.is_header,
- "typedef", type)
- token = self.token()
- else:
- self.error("parsing typedef: expecting a name")
- return token
- #self.debug("end typedef", token)
- if token != None and token[0] == 'sep' and token[1] == ',':
- type = base_type
- token = self.token()
- while token != None and token[0] == "op":
- type = type + token[1]
- token = self.token()
- elif token != None and token[0] == 'sep' and token[1] == ';':
- break;
- elif token != None and token[0] == 'name':
- type = base_type
- continue;
- else:
- self.error("parsing typedef: expecting ';'", token)
- return token
- token = self.token()
- return token
-
+ return None
+ token = self.parseType(token)
+ if token == None:
+ self.error("parsing typedef")
+ return None
+ base_type = self.type
+ type = base_type
+ #self.debug("end typedef type", token)
+ while token != None:
+ if token[0] == "name":
+ name = token[1]
+ signature = self.signature
+ if signature != None:
+ type = type.split('(')[0]
+ d = self.mergeFunctionComment(name,
+ ((type, None), signature), 1)
+ self.index_add(name, self.filename, not self.is_header,
+ "functype", d)
+ else:
+ if base_type == "struct":
+ self.index_add(name, self.filename, not self.is_header,
+ "struct", type)
+ base_type = "struct " + name
+ else:
+ # TODO report missing or misformatted comments
+ info = self.parseSimpleComment(name, True)
+ self.index_add(name, self.filename, not self.is_header,
+ "typedef", type, info)
+ token = self.token()
+ else:
+ self.error("parsing typedef: expecting a name")
+ return token
+ #self.debug("end typedef", token)
+ if token != None and token[0] == 'sep' and token[1] == ',':
+ type = base_type
+ token = self.token()
+ while token != None and token[0] == "op":
+ type = type + token[1]
+ token = self.token()
+ elif token != None and token[0] == 'sep' and token[1] == ';':
+ break;
+ elif token != None and token[0] == 'name':
+ type = base_type
+ continue;
+ else:
+ self.error("parsing typedef: expecting ';'", token)
+ return token
+ token = self.token()
+ return token
+
#
# Parse a C code block, used for functions it parse till
# the balancing } included
#
def parseBlock(self, token):
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- self.comment = None
- token = self.token()
- return token
- else:
- if self.collect_ref == 1:
- oldtok = token
- token = self.token()
- if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
- if token[0] == "sep" and token[1] == "(":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "function")
- token = self.token()
- elif token[0] == "name":
- token = self.token()
- if token[0] == "sep" and (token[1] == ";" or
- token[1] == "," or token[1] == "="):
- self.index_add_ref(oldtok[1], self.filename,
- 0, "type")
- elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "typedef")
- elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
- self.index_add_ref(oldtok[1], self.filename,
- 0, "typedef")
-
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ token = self.token()
+ return token
+ else:
+ if self.collect_ref == 1:
+ oldtok = token
+ token = self.token()
+ if oldtok[0] == "name" and oldtok[1][0:3] == "xml":
+ if token[0] == "sep" and token[1] == "(":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "function")
+ token = self.token()
+ elif token[0] == "name":
+ token = self.token()
+ if token[0] == "sep" and (token[1] == ";" or
+ token[1] == "," or token[1] == "="):
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "type")
+ elif oldtok[0] == "name" and oldtok[1][0:4] == "XML_":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "typedef")
+ elif oldtok[0] == "name" and oldtok[1][0:7] == "LIBXML_":
+ self.index_add_ref(oldtok[1], self.filename,
+ 0, "typedef")
+
+ else:
+ token = self.token()
+ return token
#
# Parse a C struct definition till the balancing }
#
def parseStruct(self, token):
fields = []
- #self.debug("start parseStruct", token)
+ #self.debug("start parseStruct", token)
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- self.struct_fields = fields
- #self.debug("end parseStruct", token)
- #print fields
- token = self.token()
- return token
- else:
- base_type = self.type
- #self.debug("before parseType", token)
- token = self.parseType(token)
- #self.debug("after parseType", token)
- if token != None and token[0] == "name":
- fname = token[1]
- token = self.token()
- if token[0] == "sep" and token[1] == ";":
- self.comment = None
- token = self.token()
- fields.append((self.type, fname, self.comment))
- self.comment = None
- else:
- self.error("parseStruct: expecting ;", token)
- elif token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- if token != None and token[0] == "name":
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == ";":
- token = self.token()
- else:
- self.error("parseStruct: expecting ;", token)
- else:
- self.error("parseStruct: name", token)
- token = self.token()
- self.type = base_type;
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ self.struct_fields = fields
+ #self.debug("end parseStruct", token)
+ #print fields
+ token = self.token()
+ return token
+ else:
+ base_type = self.type
+ #self.debug("before parseType", token)
+ token = self.parseType(token)
+ #self.debug("after parseType", token)
+ if token != None and token[0] == "name":
+ fname = token[1]
+ token = self.token()
+ if token[0] == "sep" and token[1] == ";":
+ self.comment = None
+ token = self.token()
+ fields.append((self.type, fname, self.comment))
+ self.comment = None
+ else:
+ self.error("parseStruct: expecting ;", token)
+ elif token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ if token != None and token[0] == "name":
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == ";":
+ token = self.token()
+ else:
+ self.error("parseStruct: expecting ;", token)
+ else:
+ self.error("parseStruct: name", token)
+ token = self.token()
+ self.type = base_type;
self.struct_fields = fields
- #self.debug("end parseStruct", token)
- #print fields
- return token
+ #self.debug("end parseStruct", token)
+ #print fields
+ return token
#
# Parse a C enum block, parse till the balancing }
#
def parseEnumBlock(self, token):
self.enums = []
- name = None
- self.comment = None
- comment = ""
- value = "0"
+ name = None
+ self.comment = None
+ comment = ""
+ value = "0"
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- if name != None:
- if self.comment != None:
- comment = self.comment
- self.comment = None
- self.enums.append((name, value, comment))
- token = self.token()
- return token
- elif token[0] == "name":
- if name != None:
- if self.comment != None:
- comment = string.strip(self.comment)
- self.comment = None
- self.enums.append((name, value, comment))
- name = token[1]
- comment = ""
- token = self.token()
- if token[0] == "op" and token[1][0] == "=":
- value = ""
- if len(token[1]) > 1:
- value = token[1][1:]
- token = self.token()
- while token[0] != "sep" or (token[1] != ',' and
- token[1] != '}'):
- value = value + token[1]
- token = self.token()
- else:
- try:
- value = "%d" % (int(value) + 1)
- except:
- self.warning("Failed to compute value of enum %s" % (name))
- value=""
- if token[0] == "sep" and token[1] == ",":
- token = self.token()
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ if name != None:
+ if self.comment != None:
+ comment = self.comment
+ self.comment = None
+ self.enums.append((name, value, comment))
+ token = self.token()
+ return token
+ elif token[0] == "name":
+ if name != None:
+ if self.comment != None:
+ comment = self.comment.strip()
+ self.comment = None
+ self.enums.append((name, value, comment))
+ name = token[1]
+ comment = ""
+ token = self.token()
+ if token[0] == "op" and token[1][0] == "=":
+ value = ""
+ if len(token[1]) > 1:
+ value = token[1][1:]
+ token = self.token()
+ while token[0] != "sep" or (token[1] != ',' and
+ token[1] != '}'):
+ value = value + token[1]
+ token = self.token()
+ else:
+ try:
+ value = "%d" % (int(value) + 1)
+ except:
+ self.warning("Failed to compute value of enum %s" % (name))
+ value=""
+ if token[0] == "sep" and token[1] == ",":
+ token = self.token()
+ else:
+ token = self.token()
+ return token
#
# Parse a C definition block, used for structs it parse till
@@ -1053,15 +1245,15 @@ class CParser:
#
def parseTypeBlock(self, token):
while token != None:
- if token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseTypeBlock(token)
- elif token[0] == "sep" and token[1] == "}":
- token = self.token()
- return token
- else:
- token = self.token()
- return token
+ if token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseTypeBlock(token)
+ elif token[0] == "sep" and token[1] == "}":
+ token = self.token()
+ return token
+ else:
+ token = self.token()
+ return token
#
# Parse a type: the fact that the type name can either occur after
@@ -1070,199 +1262,200 @@ class CParser:
#
def parseType(self, token):
self.type = ""
- self.struct_fields = []
+ self.struct_fields = []
self.signature = None
- if token == None:
- return token
-
- while token[0] == "name" and (
- token[1] == "const" or token[1] == "unsigned" or
- token[1] == "signed"):
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- token = self.token()
+ if token == None:
+ return token
+
+ while token[0] == "name" and (
+ token[1] == "const" or \
+ token[1] == "unsigned" or \
+ token[1] == "signed"):
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ token = self.token()
if token[0] == "name" and (token[1] == "long" or token[1] == "short"):
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- if token[0] == "name" and token[1] == "int":
- if self.type == "":
- self.type = tmp[1]
- else:
- self.type = self.type + " " + tmp[1]
-
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ if token[0] == "name" and token[1] == "int":
+ if self.type == "":
+ self.type = tmp[1]
+ else:
+ self.type = self.type + " " + tmp[1]
+
elif token[0] == "name" and token[1] == "struct":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- token = self.token()
- nametok = None
- if token[0] == "name":
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseStruct(token)
- elif token != None and token[0] == "op" and token[1] == "*":
- self.type = self.type + " " + nametok[1] + " *"
- token = self.token()
- while token != None and token[0] == "op" and token[1] == "*":
- self.type = self.type + " *"
- token = self.token()
- if token[0] == "name":
- nametok = token
- token = self.token()
- else:
- self.error("struct : expecting name", token)
- return token
- elif token != None and token[0] == "name" and nametok != None:
- self.type = self.type + " " + nametok[1]
- return token
-
- if nametok != None:
- self.lexer.push(token)
- token = nametok
- return token
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ token = self.token()
+ nametok = None
+ if token[0] == "name":
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseStruct(token)
+ elif token != None and token[0] == "op" and token[1] == "*":
+ self.type = self.type + " " + nametok[1] + " *"
+ token = self.token()
+ while token != None and token[0] == "op" and token[1] == "*":
+ self.type = self.type + " *"
+ token = self.token()
+ if token[0] == "name":
+ nametok = token
+ token = self.token()
+ else:
+ self.error("struct : expecting name", token)
+ return token
+ elif token != None and token[0] == "name" and nametok != None:
+ self.type = self.type + " " + nametok[1]
+ return token
+
+ if nametok != None:
+ self.lexer.push(token)
+ token = nametok
+ return token
elif token[0] == "name" and token[1] == "enum":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- self.enums = []
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == "{":
- token = self.token()
- token = self.parseEnumBlock(token)
- else:
- self.error("parsing enum: expecting '{'", token)
- enum_type = None
- if token != None and token[0] != "name":
- self.lexer.push(token)
- token = ("name", "enum")
- else:
- enum_type = token[1]
- for enum in self.enums:
- self.index_add(enum[0], self.filename,
- not self.is_header, "enum",
- (enum[1], enum[2], enum_type))
- return token
-
- elif token[0] == "name":
- if self.type == "":
- self.type = token[1]
- else:
- self.type = self.type + " " + token[1]
- else:
- self.error("parsing type %s: expecting a name" % (self.type),
- token)
- return token
- token = self.token()
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ self.enums = []
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == "{":
+ token = self.token()
+ token = self.parseEnumBlock(token)
+ else:
+ self.error("parsing enum: expecting '{'", token)
+ enum_type = None
+ if token != None and token[0] != "name":
+ self.lexer.push(token)
+ token = ("name", "enum")
+ else:
+ enum_type = token[1]
+ for enum in self.enums:
+ self.index_add(enum[0], self.filename,
+ not self.is_header, "enum",
+ (enum[1], enum[2], enum_type))
+ return token
+
+ elif token[0] == "name":
+ if self.type == "":
+ self.type = token[1]
+ else:
+ self.type = self.type + " " + token[1]
+ else:
+ self.error("parsing type %s: expecting a name" % (self.type),
+ token)
+ return token
+ token = self.token()
while token != None and (token[0] == "op" or
- token[0] == "name" and token[1] == "const"):
- self.type = self.type + " " + token[1]
- token = self.token()
-
- #
- # if there is a parenthesis here, this means a function type
- #
- if token != None and token[0] == "sep" and token[1] == '(':
- self.type = self.type + token[1]
- token = self.token()
- while token != None and token[0] == "op" and token[1] == '*':
- self.type = self.type + token[1]
- token = self.token()
- if token == None or token[0] != "name" :
- self.error("parsing function type, name expected", token);
- return token
- self.type = self.type + token[1]
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == ')':
- self.type = self.type + token[1]
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == '(':
- token = self.token()
- type = self.type;
- token = self.parseSignature(token);
- self.type = type;
- else:
- self.error("parsing function type, '(' expected", token);
- return token
- else:
- self.error("parsing function type, ')' expected", token);
- return token
- self.lexer.push(token)
- token = nametok
- return token
+ token[0] == "name" and token[1] == "const"):
+ self.type = self.type + " " + token[1]
+ token = self.token()
+
+ #
+ # if there is a parenthesis here, this means a function type
+ #
+ if token != None and token[0] == "sep" and token[1] == '(':
+ self.type = self.type + token[1]
+ token = self.token()
+ while token != None and token[0] == "op" and token[1] == '*':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token == None or token[0] != "name" :
+ self.error("parsing function type, name expected", token);
+ return token
+ self.type = self.type + token[1]
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == ')':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == '(':
+ token = self.token()
+ type = self.type;
+ token = self.parseSignature(token);
+ self.type = type;
+ else:
+ self.error("parsing function type, '(' expected", token);
+ return token
+ else:
+ self.error("parsing function type, ')' expected", token);
+ return token
+ self.lexer.push(token)
+ token = nametok
+ return token
#
- # do some lookahead for arrays
- #
- if token != None and token[0] == "name":
- nametok = token
- token = self.token()
- if token != None and token[0] == "sep" and token[1] == '[':
- self.type = self.type + nametok[1]
- while token != None and token[0] == "sep" and token[1] == '[':
- self.type = self.type + token[1]
- token = self.token()
- while token != None and token[0] != 'sep' and \
- token[1] != ']' and token[1] != ';':
- self.type = self.type + token[1]
- token = self.token()
- if token != None and token[0] == 'sep' and token[1] == ']':
- self.type = self.type + token[1]
- token = self.token()
- else:
- self.error("parsing array type, ']' expected", token);
- return token
- elif token != None and token[0] == "sep" and token[1] == ':':
- # remove :12 in case it's a limited int size
- token = self.token()
- token = self.token()
- self.lexer.push(token)
- token = nametok
-
- return token
+ # do some lookahead for arrays
+ #
+ if token != None and token[0] == "name":
+ nametok = token
+ token = self.token()
+ if token != None and token[0] == "sep" and token[1] == '[':
+ self.type = self.type + nametok[1]
+ while token != None and token[0] == "sep" and token[1] == '[':
+ self.type = self.type + token[1]
+ token = self.token()
+ while token != None and token[0] != 'sep' and \
+ token[1] != ']' and token[1] != ';':
+ self.type = self.type + token[1]
+ token = self.token()
+ if token != None and token[0] == 'sep' and token[1] == ']':
+ self.type = self.type + token[1]
+ token = self.token()
+ else:
+ self.error("parsing array type, ']' expected", token);
+ return token
+ elif token != None and token[0] == "sep" and token[1] == ':':
+ # remove :12 in case it's a limited int size
+ token = self.token()
+ token = self.token()
+ self.lexer.push(token)
+ token = nametok
+
+ return token
#
# Parse a signature: '(' has been parsed and we scan the type definition
# up to the ')' included
def parseSignature(self, token):
signature = []
- if token != None and token[0] == "sep" and token[1] == ')':
- self.signature = []
- token = self.token()
- return token
- while token != None:
- token = self.parseType(token)
- if token != None and token[0] == "name":
- signature.append((self.type, token[1], None))
- token = self.token()
- elif token != None and token[0] == "sep" and token[1] == ',':
- token = self.token()
- continue
- elif token != None and token[0] == "sep" and token[1] == ')':
- # only the type was provided
- if self.type == "...":
- signature.append((self.type, "...", None))
- else:
- signature.append((self.type, None, None))
- if token != None and token[0] == "sep":
- if token[1] == ',':
- token = self.token()
- continue
- elif token[1] == ')':
- token = self.token()
- break
- self.signature = signature
- return token
+ if token != None and token[0] == "sep" and token[1] == ')':
+ self.signature = []
+ token = self.token()
+ return token
+ while token != None:
+ token = self.parseType(token)
+ if token != None and token[0] == "name":
+ signature.append((self.type, token[1], None))
+ token = self.token()
+ elif token != None and token[0] == "sep" and token[1] == ',':
+ token = self.token()
+ continue
+ elif token != None and token[0] == "sep" and token[1] == ')':
+ # only the type was provided
+ if self.type == "...":
+ signature.append((self.type, "...", None))
+ else:
+ signature.append((self.type, None, None))
+ if token != None and token[0] == "sep":
+ if token[1] == ',':
+ token = self.token()
+ continue
+ elif token[1] == ')':
+ token = self.token()
+ break
+ self.signature = signature
+ return token
#
# Parse a global definition, be it a type, variable or function
@@ -1271,594 +1464,425 @@ class CParser:
def parseGlobal(self, token):
static = 0
if token[1] == 'extern':
- token = self.token()
- if token == None:
- return token
- if token[0] == 'string':
- if token[1] == 'C':
- token = self.token()
- if token == None:
- return token
- if token[0] == 'sep' and token[1] == "{":
- token = self.token()
-# print 'Entering extern "C line ', self.lineno()
- while token != None and (token[0] != 'sep' or
- token[1] != "}"):
- if token[0] == 'name':
- token = self.parseGlobal(token)
- else:
- self.error(
- "token %s %s unexpected at the top level" % (
- token[0], token[1]))
- token = self.parseGlobal(token)
-# print 'Exiting extern "C" line', self.lineno()
- token = self.token()
- return token
- else:
- return token
- elif token[1] == 'static':
- static = 1
- token = self.token()
- if token == None or token[0] != 'name':
- return token
-
- if token[1] == 'typedef':
- token = self.token()
- return self.parseTypedef(token)
- else:
- token = self.parseType(token)
- type_orig = self.type
- if token == None or token[0] != "name":
- return token
- type = type_orig
- self.name = token[1]
- token = self.token()
- while token != None and (token[0] == "sep" or token[0] == "op"):
- if token[0] == "sep":
- if token[1] == "[":
- type = type + token[1]
- token = self.token()
- while token != None and (token[0] != "sep" or \
- token[1] != ";"):
- type = type + token[1]
- token = self.token()
-
- if token != None and token[0] == "op" and token[1] == "=":
- #
- # Skip the initialization of the variable
- #
- token = self.token()
- if token[0] == 'sep' and token[1] == '{':
- token = self.token()
- token = self.parseBlock(token)
- else:
- self.comment = None
- while token != None and (token[0] != "sep" or \
- (token[1] != ';' and token[1] != ',')):
- token = self.token()
- self.comment = None
- if token == None or token[0] != "sep" or (token[1] != ';' and
- token[1] != ','):
- self.error("missing ';' or ',' after value")
-
- if token != None and token[0] == "sep":
- if token[1] == ";":
- self.comment = None
- token = self.token()
- if type == "struct":
- self.index_add(self.name, self.filename,
- not self.is_header, "struct", self.struct_fields)
- else:
- self.index_add(self.name, self.filename,
- not self.is_header, "variable", type)
- break
- elif token[1] == "(":
- token = self.token()
- token = self.parseSignature(token)
- if token == None:
- return None
- if token[0] == "sep" and token[1] == ";":
- d = self.mergeFunctionComment(self.name,
- ((type, None), self.signature), 1)
- self.index_add(self.name, self.filename, static,
- "function", d)
- token = self.token()
- elif token[0] == "sep" and token[1] == "{":
- d = self.mergeFunctionComment(self.name,
- ((type, None), self.signature), static)
- self.index_add(self.name, self.filename, static,
- "function", d)
- token = self.token()
- token = self.parseBlock(token);
- elif token[1] == ',':
- self.comment = None
- self.index_add(self.name, self.filename, static,
- "variable", type)
- type = type_orig
- token = self.token()
- while token != None and token[0] == "sep":
- type = type + token[1]
- token = self.token()
- if token != None and token[0] == "name":
- self.name = token[1]
- token = self.token()
- else:
- break
-
- return token
+ token = self.token()
+ if token == None:
+ return token
+ if token[0] == 'string':
+ if token[1] == 'C':
+ token = self.token()
+ if token == None:
+ return token
+ if token[0] == 'sep' and token[1] == "{":
+ token = self.token()
+# print 'Entering extern "C line ', self.lineno()
+ while token != None and (token[0] != 'sep' or
+ token[1] != "}"):
+ if token[0] == 'name':
+ token = self.parseGlobal(token)
+ else:
+ self.error(
+ "token %s %s unexpected at the top level" % (
+ token[0], token[1]))
+ token = self.parseGlobal(token)
+# print 'Exiting extern "C" line', self.lineno()
+ token = self.token()
+ return token
+ else:
+ return token
+ elif token[1] == 'static':
+ static = 1
+ token = self.token()
+ if token == None or token[0] != 'name':
+ return token
+
+ if token[1] == 'typedef':
+ token = self.token()
+ return self.parseTypedef(token)
+ else:
+ token = self.parseType(token)
+ type_orig = self.type
+ if token == None or token[0] != "name":
+ return token
+ type = type_orig
+ self.name = token[1]
+ token = self.token()
+ while token != None and (token[0] == "sep" or token[0] == "op"):
+ if token[0] == "sep":
+ if token[1] == "[":
+ type = type + token[1]
+ token = self.token()
+ while token != None and (token[0] != "sep" or \
+ token[1] != ";"):
+ type = type + token[1]
+ token = self.token()
+
+ if token != None and token[0] == "op" and token[1] == "=":
+ #
+ # Skip the initialization of the variable
+ #
+ token = self.token()
+ if token[0] == 'sep' and token[1] == '{':
+ token = self.token()
+ token = self.parseBlock(token)
+ else:
+ while token != None and (token[0] != "sep" or \
+ (token[1] != ';' and token[1] != ',')):
+ token = self.token()
+ if token == None or token[0] != "sep" or (token[1] != ';' and
+ token[1] != ','):
+ self.error("missing ';' or ',' after value")
+
+ if token != None and token[0] == "sep":
+ if token[1] == ";":
+ if type == "struct":
+ self.index_add(self.name, self.filename,
+ not self.is_header, "struct", self.struct_fields)
+ else:
+ info = self.parseSimpleComment(self.name, True)
+ self.index_add(self.name, self.filename,
+ not self.is_header, "variable", type, info)
+ self.comment = None
+ token = self.token()
+ break
+ elif token[1] == "(":
+ token = self.token()
+ token = self.parseSignature(token)
+ if token == None:
+ return None
+ if token[0] == "sep" and token[1] == ";":
+ d = self.mergeFunctionComment(self.name,
+ ((type, None), self.signature), 1)
+ self.index_add(self.name, self.filename, static,
+ "function", d)
+ self.comment = None
+ token = self.token()
+ elif token[0] == "sep" and token[1] == "{":
+ d = self.mergeFunctionComment(self.name,
+ ((type, None), self.signature), static)
+ self.index_add(self.name, self.filename, static,
+ "function", d)
+ self.comment = None
+ token = self.token()
+ token = self.parseBlock(token);
+ elif token[1] == ',':
+ self.index_add(self.name, self.filename, static,
+ "variable", type)
+ self.comment = None
+ type = type_orig
+ token = self.token()
+ while token != None and token[0] == "sep":
+ type = type + token[1]
+ token = self.token()
+ if token != None and token[0] == "name":
+ self.name = token[1]
+ token = self.token()
+ else:
+ break
+
+ return token
def parse(self):
self.warning("Parsing %s" % (self.filename))
token = self.token()
- while token != None:
+ while token != None:
if token[0] == 'name':
- token = self.parseGlobal(token)
+ token = self.parseGlobal(token)
else:
- self.error("token %s %s unexpected at the top level" % (
- token[0], token[1]))
- token = self.parseGlobal(token)
- return
- self.parseTopComment(self.top_comment)
+ self.error("token %s %s unexpected at the top level" % (
+ token[0], token[1]))
+ token = self.parseGlobal(token)
+ return
+ self.parseTopComment(self.top_comment)
return self.index
-
+
class docBuilder:
"""A documentation builder"""
def __init__(self, name, directories=['.'], excludes=[]):
self.name = name
self.directories = directories
- self.excludes = excludes + ignored_files.keys()
- self.modules = {}
- self.headers = {}
- self.idx = index()
- self.xref = {}
- self.index = {}
- if name == 'libxml2':
- self.basename = 'libxml'
- else:
- self.basename = name
-
- def indexString(self, id, str):
- if str == None:
- return
- str = string.replace(str, "'", ' ')
- str = string.replace(str, '"', ' ')
- str = string.replace(str, "/", ' ')
- str = string.replace(str, '*', ' ')
- str = string.replace(str, "[", ' ')
- str = string.replace(str, "]", ' ')
- str = string.replace(str, "(", ' ')
- str = string.replace(str, ")", ' ')
- str = string.replace(str, "<", ' ')
- str = string.replace(str, '>', ' ')
- str = string.replace(str, "&", ' ')
- str = string.replace(str, '#', ' ')
- str = string.replace(str, ",", ' ')
- str = string.replace(str, '.', ' ')
- str = string.replace(str, ';', ' ')
- tokens = string.split(str)
- for token in tokens:
- try:
- c = token[0]
- if string.find(string.letters, c) < 0:
- pass
- elif len(token) < 3:
- pass
- else:
- lower = string.lower(token)
- # TODO: generalize this a bit
- if lower == 'and' or lower == 'the':
- pass
- elif self.xref.has_key(token):
- self.xref[token].append(id)
- else:
- self.xref[token] = [id]
- except:
- pass
+ self.excludes = excludes + list(ignored_files.keys())
+ self.modules = {}
+ self.headers = {}
+ self.idx = index()
+ self.index = {}
+ if name == 'libxml2':
+ self.basename = 'libxml'
+ else:
+ self.basename = name
+ self.outdir = None
def analyze(self):
- print "Project %s : %d headers, %d modules" % (self.name, len(self.headers.keys()), len(self.modules.keys()))
- self.idx.analyze()
+ print("Project %s : %d headers, %d modules" % (self.name, len(list(self.headers.keys())), len(list(self.modules.keys()))))
+ self.idx.analyze()
def scanHeaders(self):
- for header in self.headers.keys():
- parser = CParser(header)
- idx = parser.parse()
- self.headers[header] = idx;
- self.idx.merge(idx)
+ for header in list(self.headers.keys()):
+ parser = CParser(header)
+ idx = parser.parse()
+ self.headers[header] = idx;
+ self.idx.merge(idx)
def scanModules(self):
- for module in self.modules.keys():
- parser = CParser(module)
- idx = parser.parse()
- # idx.analyze()
- self.modules[module] = idx
- self.idx.merge_public(idx)
+ for module in list(self.modules.keys()):
+ parser = CParser(module)
+ idx = parser.parse()
+ # idx.analyze()
+ self.modules[module] = idx
+ self.idx.merge_public(idx)
def scan(self):
for directory in self.directories:
- files = glob.glob(directory + "/*.c")
- for file in files:
- skip = 0
- for excl in self.excludes:
- if string.find(file, excl) != -1:
- skip = 1;
- break
- if skip == 0:
- self.modules[file] = None;
- files = glob.glob(directory + "/*.h")
- for file in files:
- skip = 0
- for excl in self.excludes:
- if string.find(file, excl) != -1:
- skip = 1;
- break
- if skip == 0:
- self.headers[file] = None;
- self.scanHeaders()
- self.scanModules()
-
+ files = glob.glob(directory + "/*.c")
+ for file in files:
+ skip = 0
+ for excl in self.excludes:
+ if file.find(excl) != -1:
+ print("Skipping %s" % file)
+ skip = 1
+ break
+ if skip == 0:
+ self.modules[file] = None;
+ files = glob.glob(directory + "/*.h")
+ for file in files:
+ skip = 0
+ for excl in self.excludes:
+ if file.find(excl) != -1:
+ print("Skipping %s" % file)
+ skip = 1
+ break
+ if skip == 0:
+ self.headers[file] = None;
+ self.scanHeaders()
+ self.scanModules()
+
def modulename_file(self, file):
module = os.path.basename(file)
- if module[-2:] == '.h':
- module = module[:-2]
- return module
+ if module[-2:] == '.h':
+ module = module[:-2]
+ elif module[-2:] == '.c':
+ module = module[:-2]
+ return module
def serialize_enum(self, output, name):
id = self.idx.enums[name]
output.write(" <enum name='%s' file='%s'" % (name,
- self.modulename_file(id.module)))
- if id.info != None:
- info = id.info
- if info[0] != None and info[0] != '':
- try:
- val = eval(info[0])
- except:
- val = info[0]
- output.write(" value='%s'" % (val));
- if info[2] != None and info[2] != '':
- output.write(" type='%s'" % info[2]);
- if info[1] != None and info[1] != '':
- output.write(" info='%s'" % escape(info[1]));
+ self.modulename_file(id.header)))
+ if id.info != None:
+ info = id.info
+ if info[0] != None and info[0] != '':
+ try:
+ val = eval(info[0])
+ except:
+ val = info[0]
+ output.write(" value='%s'" % (val));
+ if info[2] != None and info[2] != '':
+ output.write(" type='%s'" % info[2]);
+ if info[1] != None and info[1] != '':
+ output.write(" info='%s'" % escape(info[1]));
output.write("/>\n")
def serialize_macro(self, output, name):
id = self.idx.macros[name]
output.write(" <macro name='%s' file='%s'>\n" % (name,
- self.modulename_file(id.module)))
- if id.info != None:
+ self.modulename_file(id.header)))
+ if id.info != None:
try:
- (args, desc) = id.info
- if desc != None and desc != "":
- output.write(" <info>%s</info>\n" % (escape(desc)))
- self.indexString(name, desc)
- for arg in args:
- (name, desc) = arg
- if desc != None and desc != "":
- output.write(" <arg name='%s' info='%s'/>\n" % (
- name, escape(desc)))
- self.indexString(name, desc)
- else:
- output.write(" <arg name='%s'/>\n" % (name))
+ (args, desc) = id.info
+ if desc != None and desc != "":
+ output.write(" <info>%s</info>\n" % (escape(desc)))
+ for arg in args:
+ (name, desc) = arg
+ if desc != None and desc != "":
+ output.write(" <arg name='%s' info='%s'/>\n" % (
+ name, escape(desc)))
+ else:
+ output.write(" <arg name='%s'/>\n" % (name))
except:
pass
output.write(" </macro>\n")
def serialize_typedef(self, output, name):
id = self.idx.typedefs[name]
- if id.info[0:7] == 'struct ':
- output.write(" <struct name='%s' file='%s' type='%s'" % (
- name, self.modulename_file(id.module), id.info))
- name = id.info[7:]
- if self.idx.structs.has_key(name) and ( \
- type(self.idx.structs[name].info) == type(()) or
- type(self.idx.structs[name].info) == type([])):
- output.write(">\n");
- try:
- for field in self.idx.structs[name].info:
- desc = field[2]
- self.indexString(name, desc)
- if desc == None:
- desc = ''
- else:
- desc = escape(desc)
- output.write(" <field name='%s' type='%s' info='%s'/>\n" % (field[1] , field[0], desc))
- except:
- print "Failed to serialize struct %s" % (name)
- output.write(" </struct>\n")
- else:
- output.write("/>\n");
- else :
- output.write(" <typedef name='%s' file='%s' type='%s'/>\n" % (
- name, self.modulename_file(id.module), id.info))
+ if id.info[0:7] == 'struct ':
+ output.write(" <struct name='%s' file='%s' type='%s'" % (
+ name, self.modulename_file(id.header), id.info))
+ name = id.info[7:]
+ if name in self.idx.structs and ( \
+ type(self.idx.structs[name].info) == type(()) or
+ type(self.idx.structs[name].info) == type([])):
+ output.write(">\n");
+ try:
+ for field in self.idx.structs[name].info:
+ desc = field[2]
+ if desc == None:
+ desc = ''
+ else:
+ desc = escape(desc)
+ output.write(" <field name='%s' type='%s' info='%s'/>\n" % (field[1] , field[0], desc))
+ except:
+ print("Failed to serialize struct %s" % (name))
+ output.write(" </struct>\n")
+ else:
+ output.write("/>\n");
+ else :
+ output.write(" <typedef name='%s' file='%s' type='%s'" % (
+ name, self.modulename_file(id.header), id.info))
+ try:
+ desc = id.extra
+ if desc != None and desc != "":
+ output.write(">\n <info>%s</info>\n" % (escape(desc)))
+ output.write(" </typedef>\n")
+ else:
+ output.write("/>\n")
+ except:
+ output.write("/>\n")
def serialize_variable(self, output, name):
id = self.idx.variables[name]
- if id.info != None:
- output.write(" <variable name='%s' file='%s' type='%s'/>\n" % (
- name, self.modulename_file(id.module), id.info))
- else:
- output.write(" <variable name='%s' file='%s'/>\n" % (
- name, self.modulename_file(id.module)))
-
+ if id.info != None:
+ output.write(" <variable name='%s' file='%s' type='%s'" % (
+ name, self.modulename_file(id.header), id.info))
+ else:
+ output.write(" <variable name='%s' file='%s'" % (
+ name, self.modulename_file(id.header)))
+ desc = id.extra
+ if desc != None and desc != "":
+ output.write(">\n <info>%s</info>\n" % (escape(desc)))
+ output.write(" </variable>\n")
+ else:
+ output.write("/>\n")
+
def serialize_function(self, output, name):
id = self.idx.functions[name]
- output.write(" <%s name='%s' file='%s'>\n" % (id.type, name,
- self.modulename_file(id.module)))
- try:
- (ret, params, desc) = id.info
- output.write(" <info>%s</info>\n" % (escape(desc)))
- self.indexString(name, desc)
- if ret[0] != None:
- if ret[0] == "void":
- output.write(" <return type='void'/>\n")
- else:
- output.write(" <return type='%s' info='%s'/>\n" % (
- ret[0], escape(ret[1])))
- self.indexString(name, ret[1])
- for param in params:
- if param[0] == 'void':
- continue
- if param[2] == None:
- output.write(" <arg name='%s' type='%s' info=''/>\n" % (param[1], param[0]))
- else:
- output.write(" <arg name='%s' type='%s' info='%s'/>\n" % (param[1], param[0], escape(param[2])))
- self.indexString(name, param[2])
- except:
- print "Failed to save function %s info: " % name, `id.info`
+ if name == debugsym:
+ print("=>", id)
+
+ output.write(" <%s name='%s' file='%s' module='%s'>\n" % (id.type,
+ name, self.modulename_file(id.header),
+ self.modulename_file(id.module)))
+ #
+ # Processing of conditionals modified by Bill 1/1/05
+ #
+ if id.conditionals != None:
+ apstr = ""
+ for cond in id.conditionals:
+ if apstr != "":
+ apstr = apstr + " &amp;&amp; "
+ apstr = apstr + cond
+ output.write(" <cond>%s</cond>\n"% (apstr));
+ try:
+ (ret, params, desc) = id.info
+ if (desc == None or desc == '') and \
+ name[0:9] != "xmlThrDef" and name != "xmlDllMain":
+ print("%s %s from %s has no description" % (id.type, name,
+ self.modulename_file(id.module)))
+
+ output.write(" <info>%s</info>\n" % (escape(desc)))
+ if ret[0] != None:
+ if ret[0] == "void":
+ output.write(" <return type='void'/>\n")
+ else:
+ output.write(" <return type='%s' info='%s'/>\n" % (
+ ret[0], escape(ret[1])))
+ for param in params:
+ if param[0] == 'void':
+ continue
+ if param[2] == None:
+ output.write(" <arg name='%s' type='%s' info=''/>\n" % (param[1], param[0]))
+ else:
+ output.write(" <arg name='%s' type='%s' info='%s'/>\n" % (param[1], param[0], escape(param[2])))
+ except:
+ print("Failed to save function %s info: " % name, repr(id.info))
output.write(" </%s>\n" % (id.type))
def serialize_exports(self, output, file):
module = self.modulename_file(file)
- output.write(" <file name='%s'>\n" % (module))
- dict = self.headers[file]
- if dict.info != None:
- for data in ('Summary', 'Description', 'Author'):
- try:
- output.write(" <%s>%s</%s>\n" % (
- string.lower(data),
- escape(dict.info[data]),
- string.lower(data)))
- except:
- print "Header %s lacks a %s description" % (module, data)
- if dict.info.has_key('Description'):
- desc = dict.info['Description']
- if string.find(desc, "DEPRECATED") != -1:
- output.write(" <deprecated/>\n")
-
- ids = dict.macros.keys()
- ids.sort()
- for id in uniq(ids):
- # Macros are sometime used to masquerade other types.
- if dict.functions.has_key(id):
- continue
- if dict.variables.has_key(id):
- continue
- if dict.typedefs.has_key(id):
- continue
- if dict.structs.has_key(id):
- continue
- if dict.enums.has_key(id):
- continue
- output.write(" <exports symbol='%s' type='macro'/>\n" % (id))
- ids = dict.enums.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='enum'/>\n" % (id))
- ids = dict.typedefs.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='typedef'/>\n" % (id))
- ids = dict.structs.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='struct'/>\n" % (id))
- ids = dict.variables.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='variable'/>\n" % (id))
- ids = dict.functions.keys()
- ids.sort()
- for id in uniq(ids):
- output.write(" <exports symbol='%s' type='function'/>\n" % (id))
- output.write(" </file>\n")
-
- def serialize_xrefs_files(self, output):
- headers = self.headers.keys()
- headers.sort()
- for file in headers:
- module = self.modulename_file(file)
- output.write(" <file name='%s'>\n" % (module))
- dict = self.headers[file]
- ids = uniq(dict.functions.keys() + dict.variables.keys() + \
- dict.macros.keys() + dict.typedefs.keys() + \
- dict.structs.keys() + dict.enums.keys())
- ids.sort()
- for id in ids:
- output.write(" <ref name='%s'/>\n" % (id))
- output.write(" </file>\n")
- pass
-
- def serialize_xrefs_functions(self, output):
- funcs = {}
- for name in self.idx.functions.keys():
- id = self.idx.functions[name]
- try:
- (ret, params, desc) = id.info
- for param in params:
- if param[0] == 'void':
- continue
- if funcs.has_key(param[0]):
- funcs[param[0]].append(name)
- else:
- funcs[param[0]] = [name]
- except:
- pass
- typ = funcs.keys()
- typ.sort()
- for type in typ:
- if type == '' or type == 'void' or type == "int" or \
- type == "char *" or type == "const char *" :
- continue
- output.write(" <type name='%s'>\n" % (type))
- ids = funcs[type]
- ids.sort()
- pid = '' # not sure why we have dups, but get rid of them!
- for id in ids:
- if id != pid:
- output.write(" <ref name='%s'/>\n" % (id))
- pid = id
- output.write(" </type>\n")
-
- def serialize_xrefs_constructors(self, output):
- funcs = {}
- for name in self.idx.functions.keys():
- id = self.idx.functions[name]
- try:
- (ret, params, desc) = id.info
- if ret[0] == "void":
- continue
- if funcs.has_key(ret[0]):
- funcs[ret[0]].append(name)
- else:
- funcs[ret[0]] = [name]
- except:
- pass
- typ = funcs.keys()
- typ.sort()
- for type in typ:
- if type == '' or type == 'void' or type == "int" or \
- type == "char *" or type == "const char *" :
- continue
- output.write(" <type name='%s'>\n" % (type))
- ids = funcs[type]
- ids.sort()
- for id in ids:
- output.write(" <ref name='%s'/>\n" % (id))
- output.write(" </type>\n")
-
- def serialize_xrefs_alpha(self, output):
- letter = None
- ids = self.idx.identifiers.keys()
- ids.sort()
- for id in ids:
- if id[0] != letter:
- if letter != None:
- output.write(" </letter>\n")
- letter = id[0]
- output.write(" <letter name='%s'>\n" % (letter))
- output.write(" <ref name='%s'/>\n" % (id))
- if letter != None:
- output.write(" </letter>\n")
-
- def serialize_xrefs_references(self, output):
- typ = self.idx.identifiers.keys()
- typ.sort()
- for id in typ:
- idf = self.idx.identifiers[id]
- module = idf.module
- output.write(" <reference name='%s' href='%s'/>\n" % (id,
- 'html/' + self.basename + '-' +
- self.modulename_file(module) + '.html#' +
- id))
-
- def serialize_xrefs_index(self, output):
- index = self.xref
- typ = index.keys()
- typ.sort()
- letter = None
- count = 0
- chunk = 0
- chunks = []
- for id in typ:
- if len(index[id]) > 30:
- continue
- if id[0] != letter:
- if letter == None or count > 200:
- if letter != None:
- output.write(" </letter>\n")
- output.write(" </chunk>\n")
- count = 0
- chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
- output.write(" <chunk name='chunk%s'>\n" % (chunk))
- first_letter = id[0]
- chunk = chunk + 1
- elif letter != None:
- output.write(" </letter>\n")
- letter = id[0]
- output.write(" <letter name='%s'>\n" % (letter))
- output.write(" <word name='%s'>\n" % (id))
- tokens = index[id];
- tokens.sort()
- tok = None
- for token in tokens:
- if tok == token:
- continue
- tok = token
- output.write(" <ref name='%s'/>\n" % (token))
- count = count + 1
- output.write(" </word>\n")
- if letter != None:
- output.write(" </letter>\n")
- output.write(" </chunk>\n")
- if count != 0:
- chunks.append(["chunk%s" % (chunk -1), first_letter, letter])
- output.write(" <chunks>\n")
- for ch in chunks:
- output.write(" <chunk name='%s' start='%s' end='%s'/>\n" % (
- ch[0], ch[1], ch[2]))
- output.write(" </chunks>\n")
-
- def serialize_xrefs(self, output):
- output.write(" <references>\n")
- self.serialize_xrefs_references(output)
- output.write(" </references>\n")
- output.write(" <alpha>\n")
- self.serialize_xrefs_alpha(output)
- output.write(" </alpha>\n")
- output.write(" <constructors>\n")
- self.serialize_xrefs_constructors(output)
- output.write(" </constructors>\n")
- output.write(" <functions>\n")
- self.serialize_xrefs_functions(output)
- output.write(" </functions>\n")
- output.write(" <files>\n")
- self.serialize_xrefs_files(output)
- output.write(" </files>\n")
- output.write(" <index>\n")
- self.serialize_xrefs_index(output)
- output.write(" </index>\n")
-
- def serialize(self, outdir):
- filename = outdir + "%s-api.xml" % self.name
- print "Saving XML description %s" % (filename)
+ output.write(" <file name='%s'>\n" % (module))
+ dict = self.headers[file]
+ if dict.info != None:
+ for data in ('Summary', 'Description', 'Author'):
+ try:
+ output.write(" <%s>%s</%s>\n" % (
+ data.lower(),
+ escape(dict.info[data]),
+ data.lower()))
+ except:
+ print("Header %s lacks a %s description" % (module, data))
+ if 'Description' in dict.info:
+ desc = dict.info['Description']
+ if desc.find("DEPRECATED") != -1:
+ output.write(" <deprecated/>\n")
+
+ ids = list(dict.macros.keys())
+ ids.sort()
+ for id in ids:
+ # Macros are sometime used to masquerade other types.
+ if id in dict.functions:
+ continue
+ if id in dict.variables:
+ continue
+ if id in dict.typedefs:
+ continue
+ if id in dict.structs:
+ continue
+ if id in dict.enums:
+ continue
+ output.write(" <exports symbol='%s' type='macro'/>\n" % (id))
+ ids = list(dict.enums.keys())
+ ids.sort()
+ for id in ids:
+ output.write(" <exports symbol='%s' type='enum'/>\n" % (id))
+ ids = list(dict.typedefs.keys())
+ ids.sort()
+ for id in ids:
+ output.write(" <exports symbol='%s' type='typedef'/>\n" % (id))
+ ids = list(dict.structs.keys())
+ ids.sort()
+ for id in ids:
+ output.write(" <exports symbol='%s' type='struct'/>\n" % (id))
+ ids = list(dict.variables.keys())
+ ids.sort()
+ for id in ids:
+ output.write(" <exports symbol='%s' type='variable'/>\n" % (id))
+ ids = list(dict.functions.keys())
+ ids.sort()
+ for id in ids:
+ output.write(" <exports symbol='%s' type='function'/>\n" % (id))
+ output.write(" </file>\n")
+
+ def serialize(self):
+ filename = "%s-api.xml" % self.name
+ if self.outdir:
+ filename = "%s/%s" % (self.outdir, filename)
+ print("Saving XML description %s" % (filename))
output = open(filename, "w")
output.write('<?xml version="1.0" encoding="ISO-8859-1"?>\n')
output.write("<api name='%s'>\n" % self.name)
output.write(" <files>\n")
- headers = self.headers.keys()
+ headers = list(self.headers.keys())
headers.sort()
for file in headers:
self.serialize_exports(output, file)
output.write(" </files>\n")
output.write(" <symbols>\n")
- macros = self.idx.macros.keys()
+ macros = list(self.idx.macros.keys())
macros.sort()
for macro in macros:
self.serialize_macro(output, macro)
- enums = self.idx.enums.keys()
+ enums = list(self.idx.enums.keys())
enums.sort()
for enum in enums:
self.serialize_enum(output, enum)
- typedefs = self.idx.typedefs.keys()
+ typedefs = list(self.idx.typedefs.keys())
typedefs.sort()
for typedef in typedefs:
self.serialize_typedef(output, typedef)
- variables = self.idx.variables.keys()
+ variables = list(self.idx.variables.keys())
variables.sort()
for variable in variables:
self.serialize_variable(output, variable)
- functions = self.idx.functions.keys()
+ functions = list(self.idx.functions.keys())
functions.sort()
for function in functions:
self.serialize_function(output, function)
@@ -1866,41 +1890,33 @@ class docBuilder:
output.write("</api>\n")
output.close()
- filename = outdir + "%s-refs.xml" % self.name
- print "Saving XML Cross References %s" % (filename)
- output = open(filename, "w")
- output.write('<?xml version="1.0" encoding="ISO-8859-1"?>\n')
- output.write("<apirefs name='%s'>\n" % self.name)
- self.serialize_xrefs(output)
- output.write("</apirefs>\n")
- output.close()
-
def rebuild():
builder = None
if glob.glob("parser.c") != [] :
- print "Rebuilding API description for libxml2"
- builder = docBuilder("libxml2", [".", "."],
- ["xmlwin32version.h", "tst.c"])
+ print("Rebuilding API description for libxml2")
+ builder = docBuilder("libxml2", [".", "."],
+ ["tst.c"])
elif glob.glob("../parser.c") != [] :
- print "Rebuilding API description for libxml2"
- builder = docBuilder("libxml2", ["..", "../include/libxml"],
- ["xmlwin32version.h", "tst.c"])
+ print("Rebuilding API description for libxml2")
+ builder = docBuilder("libxml2", ["..", "../include/libxml"],
+ ["tst.c"])
elif glob.glob("../libxslt/transform.c") != [] :
- print "Rebuilding API description for libxslt"
- builder = docBuilder("libxslt", ["../libxslt"],
- ["win32config.h", "libxslt.h", "tst.c"])
+ print("Rebuilding API description for libxslt")
+ builder = docBuilder("libxslt", ["../libxslt"],
+ ["win32config.h", "libxslt.h", "tst.c"])
else:
- print "rebuild() failed, unable to guess the module"
- return None
+ print("rebuild() failed, unable to guess the module")
+ return None
builder.scan()
builder.analyze()
- builder.serialize("./")
+ builder.serialize()
if glob.glob("../libexslt/exslt.c") != [] :
extra = docBuilder("libexslt", ["../libexslt"], ["libexslt.h"])
- extra.scan()
- extra.analyze()
- extra.serialize("EXSLT/")
+ extra.outdir = "EXSLT"
+ extra.scan()
+ extra.analyze()
+ extra.serialize()
return builder
#
@@ -1912,4 +1928,8 @@ def parse(filename):
return idx
if __name__ == "__main__":
- rebuild()
+ if len(sys.argv) > 1:
+ debug = 1
+ parse(sys.argv[1])
+ else:
+ rebuild()
diff --git a/doc/checkapisym.xsl b/doc/checkapisym.xsl
deleted file mode 100644
index 85913932..00000000
--- a/doc/checkapisym.xsl
+++ /dev/null
@@ -1,48 +0,0 @@
-<?xml version="1.0"?>
-<!-- This stylesheet is used to check that symbols exported
- from libxml2-api.xml are also present in the symbol file
- symbols.xml which is used to generate libxml2.syms setting
- up the allowed access point to the shared libraries -->
-
-
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:output method="text" encoding="UTF-8"/>
-
- <xsl:variable name="syms" select="document('symbols.xml')"/>
-
- <xsl:template match="/">
- <xsl:message terminate="no">
- <xsl:text>Looking for functions in symbols.xml</xsl:text>
- </xsl:message>
- <xsl:apply-templates select="/api/symbols/function"/>
- <xsl:message terminate="no">
- <xsl:text>Found </xsl:text>
- <xsl:value-of select="count(/api/symbols/function)"/>
- <xsl:text> functions</xsl:text>
- </xsl:message>
- <xsl:message terminate="no">
- <xsl:text>Looking for variables in symbols.xml</xsl:text>
- </xsl:message>
- <xsl:apply-templates select="/api/symbols/variable"/>
- <xsl:message terminate="no">
- <xsl:text>Found </xsl:text>
- <xsl:value-of select="count(/api/symbols/variable)"/>
- <xsl:text> variables</xsl:text>
- </xsl:message>
- </xsl:template>
-
- <xsl:template match="function|variable">
- <xsl:variable name="name" select="@name"/>
- <xsl:variable name="symbol"
- select="$syms/symbols/release/symbol[. = $name]"/>
- <xsl:if test="string($symbol) != $name">
- <xsl:message terminate="yes">
- <xsl:text>Failed to find export in symbols.xml: </xsl:text>
- <xsl:value-of select="$name"/>
- </xsl:message>
- </xsl:if>
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/doc/devhelp/libxslt-attributes.html b/doc/devhelp/libxslt-attributes.html
index 8f5dc3da..8918da8b 100644
--- a/doc/devhelp/libxslt-attributes.html
+++ b/doc/devhelp/libxslt-attributes.html
@@ -38,10 +38,10 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">void <a href="#xsltResolveStylesheetAttributeSet">xsltResolveStylesheetAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-void <a href="#xsltParseStylesheetAttributeSet">xsltParseStylesheetAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
-void <a href="#xsltApplyAttributeSet">xsltApplyAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> const xmlChar * attrSets);
+ <pre class="synopsis">void <a href="#xsltApplyAttributeSet">xsltApplyAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> const xmlChar * attrSets);
void <a href="#xsltFreeAttributeSetsHashes">xsltFreeAttributeSetsHashes</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+void <a href="#xsltParseStylesheetAttributeSet">xsltParseStylesheetAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
+void <a href="#xsltResolveStylesheetAttributeSet">xsltResolveStylesheetAttributeSet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-documents.html b/doc/devhelp/libxslt-documents.html
index df15fcb0..72537501 100644
--- a/doc/devhelp/libxslt-documents.html
+++ b/doc/devhelp/libxslt-documents.html
@@ -44,15 +44,15 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">typedef enum <a href="#xsltLoadType">xsltLoadType</a>;
-void <a href="#xsltFreeStyleDocuments">xsltFreeStyleDocuments</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
typedef xmlDocPtr <a href="#xsltDocLoaderFunc">xsltDocLoaderFunc</a> (const xmlChar * URI, <br/> xmlDictPtr dict, <br/> int options, <br/> void * ctxt, <br/> <a href="libxslt-documents.html#xsltLoadType">xsltLoadType</a> type);
+<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltFindDocument">xsltFindDocument</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr doc);
+void <a href="#xsltFreeDocuments">xsltFreeDocuments</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltFreeStyleDocuments">xsltFreeStyleDocuments</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltLoadDocument">xsltLoadDocument</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI);
+<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltLoadStyleDocument">xsltLoadStyleDocument</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltNewDocument">xsltNewDocument</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr doc);
<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltNewStyleDocument">xsltNewStyleDocument</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc);
void <a href="#xsltSetLoaderFunc">xsltSetLoaderFunc</a> (<a href="libxslt-documents.html#xsltDocLoaderFunc">xsltDocLoaderFunc</a> f);
-void <a href="#xsltFreeDocuments">xsltFreeDocuments</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltNewDocument">xsltNewDocument</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr doc);
-<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltLoadStyleDocument">xsltLoadStyleDocument</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
-<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> <a href="#xsltFindDocument">xsltFindDocument</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr doc);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-extensions.html b/doc/devhelp/libxslt-extensions.html
index a3ff1241..50018545 100644
--- a/doc/devhelp/libxslt-extensions.html
+++ b/doc/devhelp/libxslt-extensions.html
@@ -43,47 +43,47 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">int <a href="#xsltRegisterExtFunction">xsltRegisterExtFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * URI, <br/> xmlXPathFunction function);
-int <a href="#xsltRegisterExtModuleElement">xsltRegisterExtModuleElement</a> (const xmlChar * name, <br/> const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltPreComputeFunction">xsltPreComputeFunction</a> precomp, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> transform);
-int <a href="#xsltInitCtxtExts">xsltInitCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-void * <a href="#xsltGetExtData">xsltGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI);
-void * <a href="#xsltStyleGetExtData">xsltStyleGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
-typedef void * <a href="#xsltStyleExtInitFunction">xsltStyleExtInitFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
-void <a href="#xsltInitGlobals">xsltInitGlobals</a> (void);
-void <a href="#xsltShutdownExts">xsltShutdownExts</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-<a href="libxslt-extensions.html#xsltPreComputeFunction">xsltPreComputeFunction</a> <a href="#xsltExtModuleElementPreComputeLookup">xsltExtModuleElementPreComputeLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
-void <a href="#xsltRegisterTestModule">xsltRegisterTestModule</a> (void);
-void * <a href="#xsltStyleStylesheetLevelGetExtData">xsltStyleStylesheetLevelGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
-<a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> <a href="#xsltExtModuleElementLookup">xsltExtModuleElementLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
-typedef void <a href="#xsltStyleExtShutdownFunction">xsltStyleExtShutdownFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI, <br/> void * data);
-void <a href="#xsltInitElemPreComp">xsltInitElemPreComp</a> (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a> freeFunc);
+ <pre class="synopsis">int <a href="#xsltCheckExtPrefix">xsltCheckExtPrefix</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+int <a href="#xsltCheckExtURI">xsltCheckExtURI</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
void <a href="#xsltDebugDumpExtensions">xsltDebugDumpExtensions</a> (FILE * output);
-xmlHashTablePtr <a href="#xsltGetExtInfo">xsltGetExtInfo</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+<a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> <a href="#xsltExtElementLookup">xsltExtElementLookup</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * URI);
+typedef void * <a href="#xsltExtInitFunction">xsltExtInitFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI);
+<a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> <a href="#xsltExtModuleElementLookup">xsltExtModuleElementLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
+<a href="libxslt-extensions.html#xsltPreComputeFunction">xsltPreComputeFunction</a> <a href="#xsltExtModuleElementPreComputeLookup">xsltExtModuleElementPreComputeLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
+xmlXPathFunction <a href="#xsltExtModuleFunctionLookup">xsltExtModuleFunctionLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
<a href="libxslt-extensions.html#xsltTopLevelFunction">xsltTopLevelFunction</a> <a href="#xsltExtModuleTopLevelLookup">xsltExtModuleTopLevelLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
+typedef void <a href="#xsltExtShutdownFunction">xsltExtShutdownFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI, <br/> void * data);
+void <a href="#xsltFreeCtxtExts">xsltFreeCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
void <a href="#xsltFreeExts">xsltFreeExts</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-int <a href="#xsltCheckExtURI">xsltCheckExtURI</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
-xmlXPathFunction <a href="#xsltExtModuleFunctionLookup">xsltExtModuleFunctionLookup</a> (const xmlChar * name, <br/> const xmlChar * URI);
+void * <a href="#xsltGetExtData">xsltGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI);
+xmlHashTablePtr <a href="#xsltGetExtInfo">xsltGetExtInfo</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+int <a href="#xsltInitCtxtExts">xsltInitCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltInitElemPreComp">xsltInitElemPreComp</a> (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a> freeFunc);
+void <a href="#xsltInitGlobals">xsltInitGlobals</a> (void);
+<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltNewElemPreComp">xsltNewElemPreComp</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltPreComputeExtModuleElement">xsltPreComputeExtModuleElement</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst);
-int <a href="#xsltRegisterExtModuleTopLevel">xsltRegisterExtModuleTopLevel</a> (const xmlChar * name, <br/> const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltTopLevelFunction">xsltTopLevelFunction</a> function);
typedef <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltPreComputeFunction">xsltPreComputeFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
-typedef void <a href="#xsltTopLevelFunction">xsltTopLevelFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst);
-void <a href="#xsltShutdownCtxtExts">xsltShutdownCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> <a href="#xsltXPathGetTransformContext">xsltXPathGetTransformContext</a> (xmlXPathParserContextPtr ctxt);
int <a href="#xsltRegisterExtElement">xsltRegisterExtElement</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * URI, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
-typedef void * <a href="#xsltExtInitFunction">xsltExtInitFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI);
-void <a href="#xsltFreeCtxtExts">xsltFreeCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltUnregisterExtModule">xsltUnregisterExtModule</a> (const xmlChar * URI);
-int <a href="#xsltRegisterExtModuleFull">xsltRegisterExtModuleFull</a> (const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltExtInitFunction">xsltExtInitFunction</a> initFunc, <br/> <a href="libxslt-extensions.html#xsltExtShutdownFunction">xsltExtShutdownFunction</a> shutdownFunc, <br/> <a href="libxslt-extensions.html#xsltStyleExtInitFunction">xsltStyleExtInitFunction</a> styleInitFunc, <br/> <a href="libxslt-extensions.html#xsltStyleExtShutdownFunction">xsltStyleExtShutdownFunction</a> styleShutdownFunc);
-int <a href="#xsltUnregisterExtModuleTopLevel">xsltUnregisterExtModuleTopLevel</a> (const xmlChar * name, <br/> const xmlChar * URI);
-<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltNewElemPreComp">xsltNewElemPreComp</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
-int <a href="#xsltUnregisterExtModuleElement">xsltUnregisterExtModuleElement</a> (const xmlChar * name, <br/> const xmlChar * URI);
-int <a href="#xsltUnregisterExtModuleFunction">xsltUnregisterExtModuleFunction</a> (const xmlChar * name, <br/> const xmlChar * URI);
-int <a href="#xsltCheckExtPrefix">xsltCheckExtPrefix</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+int <a href="#xsltRegisterExtFunction">xsltRegisterExtFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * URI, <br/> xmlXPathFunction function);
int <a href="#xsltRegisterExtModule">xsltRegisterExtModule</a> (const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltExtInitFunction">xsltExtInitFunction</a> initFunc, <br/> <a href="libxslt-extensions.html#xsltExtShutdownFunction">xsltExtShutdownFunction</a> shutdownFunc);
-<a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> <a href="#xsltExtElementLookup">xsltExtElementLookup</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * URI);
+int <a href="#xsltRegisterExtModuleElement">xsltRegisterExtModuleElement</a> (const xmlChar * name, <br/> const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltPreComputeFunction">xsltPreComputeFunction</a> precomp, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> transform);
+int <a href="#xsltRegisterExtModuleFull">xsltRegisterExtModuleFull</a> (const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltExtInitFunction">xsltExtInitFunction</a> initFunc, <br/> <a href="libxslt-extensions.html#xsltExtShutdownFunction">xsltExtShutdownFunction</a> shutdownFunc, <br/> <a href="libxslt-extensions.html#xsltStyleExtInitFunction">xsltStyleExtInitFunction</a> styleInitFunc, <br/> <a href="libxslt-extensions.html#xsltStyleExtShutdownFunction">xsltStyleExtShutdownFunction</a> styleShutdownFunc);
int <a href="#xsltRegisterExtModuleFunction">xsltRegisterExtModuleFunction</a> (const xmlChar * name, <br/> const xmlChar * URI, <br/> xmlXPathFunction function);
+int <a href="#xsltRegisterExtModuleTopLevel">xsltRegisterExtModuleTopLevel</a> (const xmlChar * name, <br/> const xmlChar * URI, <br/> <a href="libxslt-extensions.html#xsltTopLevelFunction">xsltTopLevelFunction</a> function);
int <a href="#xsltRegisterExtPrefix">xsltRegisterExtPrefix</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * prefix, <br/> const xmlChar * URI);
-typedef void <a href="#xsltExtShutdownFunction">xsltExtShutdownFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URI, <br/> void * data);
+void <a href="#xsltRegisterTestModule">xsltRegisterTestModule</a> (void);
+void <a href="#xsltShutdownCtxtExts">xsltShutdownCtxtExts</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltShutdownExts">xsltShutdownExts</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+typedef void * <a href="#xsltStyleExtInitFunction">xsltStyleExtInitFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+typedef void <a href="#xsltStyleExtShutdownFunction">xsltStyleExtShutdownFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI, <br/> void * data);
+void * <a href="#xsltStyleGetExtData">xsltStyleGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+void * <a href="#xsltStyleStylesheetLevelGetExtData">xsltStyleStylesheetLevelGetExtData</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * URI);
+typedef void <a href="#xsltTopLevelFunction">xsltTopLevelFunction</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst);
+int <a href="#xsltUnregisterExtModule">xsltUnregisterExtModule</a> (const xmlChar * URI);
+int <a href="#xsltUnregisterExtModuleElement">xsltUnregisterExtModuleElement</a> (const xmlChar * name, <br/> const xmlChar * URI);
+int <a href="#xsltUnregisterExtModuleFunction">xsltUnregisterExtModuleFunction</a> (const xmlChar * name, <br/> const xmlChar * URI);
+int <a href="#xsltUnregisterExtModuleTopLevel">xsltUnregisterExtModuleTopLevel</a> (const xmlChar * name, <br/> const xmlChar * URI);
+<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> <a href="#xsltXPathGetTransformContext">xsltXPathGetTransformContext</a> (xmlXPathParserContextPtr ctxt);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-extra.html b/doc/devhelp/libxslt-extra.html
index 72afc80a..45d9de0a 100644
--- a/doc/devhelp/libxslt-extra.html
+++ b/doc/devhelp/libxslt-extra.html
@@ -43,14 +43,14 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a>;
-#define <a href="#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a>;
+ <pre class="synopsis">#define <a href="#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a>;
#define <a href="#XSLT_SAXON_NAMESPACE">XSLT_SAXON_NAMESPACE</a>;
-#define <a href="#XSLT_LIBXSLT_NAMESPACE">XSLT_LIBXSLT_NAMESPACE</a>;
-void <a href="#xsltFunctionNodeSet">xsltFunctionNodeSet</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
-void <a href="#xsltRegisterExtras">xsltRegisterExtras</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+#define <a href="#XSLT_XALAN_NAMESPACE">XSLT_XALAN_NAMESPACE</a>;
+#define <a href="#XSLT_XT_NAMESPACE">XSLT_XT_NAMESPACE</a>;
void <a href="#xsltDebug">xsltDebug</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+void <a href="#xsltFunctionNodeSet">xsltFunctionNodeSet</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
void <a href="#xsltRegisterAllExtras">xsltRegisterAllExtras</a> (void);
+void <a href="#xsltRegisterExtras">xsltRegisterExtras</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-functions.html b/doc/devhelp/libxslt-functions.html
index 767fbb2a..20e82521 100644
--- a/doc/devhelp/libxslt-functions.html
+++ b/doc/devhelp/libxslt-functions.html
@@ -44,16 +44,16 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#XSLT_REGISTER_FUNCTION_LOOKUP">XSLT_REGISTER_FUNCTION_LOOKUP</a>;
-xmlXPathFunction <a href="#xsltXPathFunctionLookup">xsltXPathFunctionLookup</a> (void * vctxt, <br/> const xmlChar * name, <br/> const xmlChar * ns_uri);
-void <a href="#xsltFunctionAvailableFunction">xsltFunctionAvailableFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
-void <a href="#xsltFormatNumberFunction">xsltFormatNumberFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
-void <a href="#xsltRegisterAllFunctions">xsltRegisterAllFunctions</a> (xmlXPathContextPtr ctxt);
-void <a href="#xsltKeyFunction">xsltKeyFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
-void <a href="#xsltUnparsedEntityURIFunction">xsltUnparsedEntityURIFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
void <a href="#xsltDocumentFunction">xsltDocumentFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
-void <a href="#xsltSystemPropertyFunction">xsltSystemPropertyFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
void <a href="#xsltElementAvailableFunction">xsltElementAvailableFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+void <a href="#xsltFormatNumberFunction">xsltFormatNumberFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+void <a href="#xsltFunctionAvailableFunction">xsltFunctionAvailableFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
void <a href="#xsltGenerateIdFunction">xsltGenerateIdFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+void <a href="#xsltKeyFunction">xsltKeyFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+void <a href="#xsltRegisterAllFunctions">xsltRegisterAllFunctions</a> (xmlXPathContextPtr ctxt);
+void <a href="#xsltSystemPropertyFunction">xsltSystemPropertyFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+void <a href="#xsltUnparsedEntityURIFunction">xsltUnparsedEntityURIFunction</a> (xmlXPathParserContextPtr ctxt, <br/> int nargs);
+xmlXPathFunction <a href="#xsltXPathFunctionLookup">xsltXPathFunctionLookup</a> (void * vctxt, <br/> const xmlChar * name, <br/> const xmlChar * ns_uri);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-imports.html b/doc/devhelp/libxslt-imports.html
index 6f37be63..03348169 100644
--- a/doc/devhelp/libxslt-imports.html
+++ b/doc/devhelp/libxslt-imports.html
@@ -43,14 +43,14 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#XSLT_GET_IMPORT_PTR">XSLT_GET_IMPORT_PTR</a>;
-#define <a href="#XSLT_GET_IMPORT_INT">XSLT_GET_IMPORT_INT</a>;
+ <pre class="synopsis">#define <a href="#XSLT_GET_IMPORT_INT">XSLT_GET_IMPORT_INT</a>;
+#define <a href="#XSLT_GET_IMPORT_PTR">XSLT_GET_IMPORT_PTR</a>;
+int <a href="#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> <a href="#xsltFindTemplate">xsltFindTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * nameURI);
-<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltNextImport">xsltNextImport</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> cur);
-int <a href="#xsltParseStylesheetInclude">xsltParseStylesheetInclude</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
int <a href="#xsltNeedElemSpaceHandling">xsltNeedElemSpaceHandling</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltFindElemSpaceHandling">xsltFindElemSpaceHandling</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
+<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltNextImport">xsltNextImport</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> cur);
int <a href="#xsltParseStylesheetImport">xsltParseStylesheetImport</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
+int <a href="#xsltParseStylesheetInclude">xsltParseStylesheetInclude</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-keys.html b/doc/devhelp/libxslt-keys.html
index 59d50ba1..6ef8696b 100644
--- a/doc/devhelp/libxslt-keys.html
+++ b/doc/devhelp/libxslt-keys.html
@@ -44,11 +44,11 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#NODE_IS_KEYED">NODE_IS_KEYED</a>;
-void <a href="#xsltInitCtxtKeys">xsltInitCtxtKeys</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc);
+int <a href="#xsltAddKey">xsltAddKey</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * name, <br/> const xmlChar * nameURI, <br/> const xmlChar * match, <br/> const xmlChar * use, <br/> xmlNodePtr inst);
+void <a href="#xsltFreeDocumentKeys">xsltFreeDocumentKeys</a> (<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc);
void <a href="#xsltFreeKeys">xsltFreeKeys</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
xmlNodeSetPtr <a href="#xsltGetKey">xsltGetKey</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * nameURI, <br/> const xmlChar * value);
-void <a href="#xsltFreeDocumentKeys">xsltFreeDocumentKeys</a> (<a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc);
-int <a href="#xsltAddKey">xsltAddKey</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * name, <br/> const xmlChar * nameURI, <br/> const xmlChar * match, <br/> const xmlChar * use, <br/> xmlNodePtr inst);
+void <a href="#xsltInitCtxtKeys">xsltInitCtxtKeys</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-namespaces.html b/doc/devhelp/libxslt-namespaces.html
index 201ff74f..358c7554 100644
--- a/doc/devhelp/libxslt-namespaces.html
+++ b/doc/devhelp/libxslt-namespaces.html
@@ -44,9 +44,9 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#UNDEFINED_DEFAULT_NS">UNDEFINED_DEFAULT_NS</a>;
-void <a href="#xsltFreeNamespaceAliasHashes">xsltFreeNamespaceAliasHashes</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
xmlNsPtr <a href="#xsltCopyNamespace">xsltCopyNamespace</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr elem, <br/> xmlNsPtr ns);
xmlNsPtr <a href="#xsltCopyNamespaceList">xsltCopyNamespaceList</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNsPtr cur);
+void <a href="#xsltFreeNamespaceAliasHashes">xsltFreeNamespaceAliasHashes</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
xmlNsPtr <a href="#xsltGetNamespace">xsltGetNamespace</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr cur, <br/> xmlNsPtr ns, <br/> xmlNodePtr out);
xmlNsPtr <a href="#xsltGetPlainNamespace">xsltGetPlainNamespace</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr cur, <br/> xmlNsPtr ns, <br/> xmlNodePtr out);
xmlNsPtr <a href="#xsltGetSpecialNamespace">xsltGetSpecialNamespace</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr invocNode, <br/> const xmlChar * nsName, <br/> const xmlChar * nsPrefix, <br/> xmlNodePtr target);
diff --git a/doc/devhelp/libxslt-numbersInternals.html b/doc/devhelp/libxslt-numbersInternals.html
index ff892f5a..05dda0b7 100644
--- a/doc/devhelp/libxslt-numbersInternals.html
+++ b/doc/devhelp/libxslt-numbersInternals.html
@@ -44,9 +44,9 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">typedef struct _xsltFormatNumberInfo <a href="#xsltFormatNumberInfo">xsltFormatNumberInfo</a>;
+typedef <a href="libxslt-numbersInternals.html#xsltFormatNumberInfo">xsltFormatNumberInfo</a> * <a href="#xsltFormatNumberInfoPtr">xsltFormatNumberInfoPtr</a>;
typedef struct _xsltNumberData <a href="#xsltNumberData">xsltNumberData</a>;
typedef <a href="libxslt-numbersInternals.html#xsltNumberData">xsltNumberData</a> * <a href="#xsltNumberDataPtr">xsltNumberDataPtr</a>;
-typedef <a href="libxslt-numbersInternals.html#xsltFormatNumberInfo">xsltFormatNumberInfo</a> * <a href="#xsltFormatNumberInfoPtr">xsltFormatNumberInfoPtr</a>;
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-pattern.html b/doc/devhelp/libxslt-pattern.html
index 5c7187e3..ce476e59 100644
--- a/doc/devhelp/libxslt-pattern.html
+++ b/doc/devhelp/libxslt-pattern.html
@@ -45,16 +45,16 @@
<h2>Synopsis</h2>
<pre class="synopsis">typedef struct _xsltCompMatch <a href="#xsltCompMatch">xsltCompMatch</a>;
typedef <a href="libxslt-pattern.html#xsltCompMatch">xsltCompMatch</a> * <a href="#xsltCompMatchPtr">xsltCompMatchPtr</a>;
-void <a href="#xsltNormalizeCompSteps">xsltNormalizeCompSteps</a> (void * payload, <br/> void * data, <br/> const xmlChar * name);
int <a href="#xsltAddTemplate">xsltAddTemplate</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> cur, <br/> const xmlChar * mode, <br/> const xmlChar * modeURI);
-<a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> <a href="#xsltCompilePattern">xsltCompilePattern</a> (const xmlChar * pattern, <br/> xmlDocPtr doc, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> runtime);
-int <a href="#xsltMatchPattern">xsltMatchPattern</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> const xmlChar * pattern, <br/> xmlDocPtr ctxtdoc, <br/> xmlNodePtr ctxtnode);
-<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> <a href="#xsltGetTemplate">xsltGetTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+void <a href="#xsltCleanupTemplates">xsltCleanupTemplates</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
void <a href="#xsltCompMatchClearCache">xsltCompMatchClearCache</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> comp);
-int <a href="#xsltTestCompMatchList">xsltTestCompMatchList</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> <a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> comp);
+<a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> <a href="#xsltCompilePattern">xsltCompilePattern</a> (const xmlChar * pattern, <br/> xmlDocPtr doc, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> runtime);
void <a href="#xsltFreeCompMatchList">xsltFreeCompMatchList</a> (<a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> comp);
void <a href="#xsltFreeTemplateHashes">xsltFreeTemplateHashes</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-void <a href="#xsltCleanupTemplates">xsltCleanupTemplates</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> <a href="#xsltGetTemplate">xsltGetTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+int <a href="#xsltMatchPattern">xsltMatchPattern</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> const xmlChar * pattern, <br/> xmlDocPtr ctxtdoc, <br/> xmlNodePtr ctxtnode);
+void <a href="#xsltNormalizeCompSteps">xsltNormalizeCompSteps</a> (void * payload, <br/> void * data, <br/> const xmlChar * name);
+int <a href="#xsltTestCompMatchList">xsltTestCompMatchList</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> <a href="libxslt-pattern.html#xsltCompMatchPtr">xsltCompMatchPtr</a> comp);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-preproc.html b/doc/devhelp/libxslt-preproc.html
index 93dd848b..37fc4c61 100644
--- a/doc/devhelp/libxslt-preproc.html
+++ b/doc/devhelp/libxslt-preproc.html
@@ -43,8 +43,8 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">void <a href="#xsltFreeStylePreComps">xsltFreeStylePreComps</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltDocumentComp">xsltDocumentComp</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
+ <pre class="synopsis"><a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> <a href="#xsltDocumentComp">xsltDocumentComp</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltTransformFunction">xsltTransformFunction</a> function);
+void <a href="#xsltFreeStylePreComps">xsltFreeStylePreComps</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
void <a href="#xsltStylePreCompute">xsltStylePreCompute</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst);
</pre>
</div>
diff --git a/doc/devhelp/libxslt-security.html b/doc/devhelp/libxslt-security.html
index 87e73a83..d167090f 100644
--- a/doc/devhelp/libxslt-security.html
+++ b/doc/devhelp/libxslt-security.html
@@ -43,21 +43,21 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">typedef struct _xsltSecurityPrefs <a href="#xsltSecurityPrefs">xsltSecurityPrefs</a>;
+ <pre class="synopsis">typedef enum <a href="#xsltSecurityOption">xsltSecurityOption</a>;
+typedef struct _xsltSecurityPrefs <a href="#xsltSecurityPrefs">xsltSecurityPrefs</a>;
typedef <a href="libxslt-security.html#xsltSecurityPrefs">xsltSecurityPrefs</a> * <a href="#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a>;
-typedef enum <a href="#xsltSecurityOption">xsltSecurityOption</a>;
-<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> <a href="#xsltNewSecurityPrefs">xsltNewSecurityPrefs</a> (void);
-typedef int <a href="#xsltSecurityCheck">xsltSecurityCheck</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char * value);
-int <a href="#xsltSetSecurityPrefs">xsltSetSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-security.html#xsltSecurityOption">xsltSecurityOption</a> option, <br/> <a href="libxslt-security.html#xsltSecurityCheck">xsltSecurityCheck</a> func);
-<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> <a href="#xsltGetDefaultSecurityPrefs">xsltGetDefaultSecurityPrefs</a> (void);
+int <a href="#xsltCheckRead">xsltCheckRead</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URL);
+int <a href="#xsltCheckWrite">xsltCheckWrite</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URL);
void <a href="#xsltFreeSecurityPrefs">xsltFreeSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec);
-void <a href="#xsltSetDefaultSecurityPrefs">xsltSetDefaultSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec);
-int <a href="#xsltSetCtxtSecurityPrefs">xsltSetCtxtSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> <a href="#xsltGetDefaultSecurityPrefs">xsltGetDefaultSecurityPrefs</a> (void);
<a href="libxslt-security.html#xsltSecurityCheck">xsltSecurityCheck</a> <a href="#xsltGetSecurityPrefs">xsltGetSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-security.html#xsltSecurityOption">xsltSecurityOption</a> option);
+<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> <a href="#xsltNewSecurityPrefs">xsltNewSecurityPrefs</a> (void);
int <a href="#xsltSecurityAllow">xsltSecurityAllow</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char * value);
-int <a href="#xsltCheckWrite">xsltCheckWrite</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URL);
-int <a href="#xsltCheckRead">xsltCheckRead</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * URL);
+typedef int <a href="#xsltSecurityCheck">xsltSecurityCheck</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char * value);
int <a href="#xsltSecurityForbid">xsltSecurityForbid</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char * value);
+int <a href="#xsltSetCtxtSecurityPrefs">xsltSetCtxtSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltSetDefaultSecurityPrefs">xsltSetDefaultSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec);
+int <a href="#xsltSetSecurityPrefs">xsltSetSecurityPrefs</a> (<a href="libxslt-security.html#xsltSecurityPrefsPtr">xsltSecurityPrefsPtr</a> sec, <br/> <a href="libxslt-security.html#xsltSecurityOption">xsltSecurityOption</a> option, <br/> <a href="libxslt-security.html#xsltSecurityCheck">xsltSecurityCheck</a> func);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-templates.html b/doc/devhelp/libxslt-templates.html
index ec89ded2..c636c4da 100644
--- a/doc/devhelp/libxslt-templates.html
+++ b/doc/devhelp/libxslt-templates.html
@@ -43,17 +43,17 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">const xmlChar * <a href="#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> const xmlChar * name, <br/> const xmlChar * ns, <br/> int * found);
-xmlAttrPtr <a href="#xsltAttrListTemplateProcess">xsltAttrListTemplateProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr target, <br/> xmlAttrPtr attrs);
-xmlChar * <a href="#xsltEvalTemplateString">xsltEvalTemplateString</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst);
-xmlChar * <a href="#xsltAttrTemplateValueProcess">xsltAttrTemplateValueProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * str);
+ <pre class="synopsis">xmlAttrPtr <a href="#xsltAttrListTemplateProcess">xsltAttrListTemplateProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr target, <br/> xmlAttrPtr attrs);
xmlAttrPtr <a href="#xsltAttrTemplateProcess">xsltAttrTemplateProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr target, <br/> xmlAttrPtr attr);
+xmlChar * <a href="#xsltAttrTemplateValueProcess">xsltAttrTemplateValueProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * str);
+xmlChar * <a href="#xsltAttrTemplateValueProcessNode">xsltAttrTemplateValueProcessNode</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * str, <br/> xmlNodePtr inst);
xmlChar * <a href="#xsltEvalAttrValueTemplate">xsltEvalAttrValueTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr inst, <br/> const xmlChar * name, <br/> const xmlChar * ns);
+const xmlChar * <a href="#xsltEvalStaticAttrValueTemplate">xsltEvalStaticAttrValueTemplate</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr inst, <br/> const xmlChar * name, <br/> const xmlChar * ns, <br/> int * found);
+xmlChar * <a href="#xsltEvalTemplateString">xsltEvalTemplateString</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst);
int <a href="#xsltEvalXPathPredicate">xsltEvalXPathPredicate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathCompExprPtr comp, <br/> xmlNsPtr * nsList, <br/> int nsNr);
-xmlChar * <a href="#xsltAttrTemplateValueProcessNode">xsltAttrTemplateValueProcessNode</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * str, <br/> xmlNodePtr inst);
-xmlNodePtr * <a href="#xsltTemplateProcess">xsltTemplateProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
-xmlChar * <a href="#xsltEvalXPathStringNs">xsltEvalXPathStringNs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathCompExprPtr comp, <br/> int nsNr, <br/> xmlNsPtr * nsList);
xmlChar * <a href="#xsltEvalXPathString">xsltEvalXPathString</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathCompExprPtr comp);
+xmlChar * <a href="#xsltEvalXPathStringNs">xsltEvalXPathStringNs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathCompExprPtr comp, <br/> int nsNr, <br/> xmlNsPtr * nsList);
+xmlNodePtr * <a href="#xsltTemplateProcess">xsltTemplateProcess</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-transform.html b/doc/devhelp/libxslt-transform.html
index d6ecef6e..6c96eba7 100644
--- a/doc/devhelp/libxslt-transform.html
+++ b/doc/devhelp/libxslt-transform.html
@@ -43,40 +43,40 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">void <a href="#xsltValueOf">xsltValueOf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-void <a href="#xsltRegisterAllElement">xsltRegisterAllElement</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-void <a href="#xsltSort">xsltSort</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
-void <a href="#xsltSetXIncludeDefault">xsltSetXIncludeDefault</a> (int xinclude);
-void <a href="#xsltCopyOf">xsltCopyOf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+ <pre class="synopsis">void <a href="#xslHandleDebugger">xslHandleDebugger</a> (xmlNodePtr cur, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltApplyImports">xsltApplyImports</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+void <a href="#xsltApplyOneTemplate">xsltApplyOneTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr list, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> params);
+void <a href="#xsltApplyStripSpaces">xsltApplyStripSpaces</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
+xmlDocPtr <a href="#xsltApplyStylesheet">xsltApplyStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params);
+xmlDocPtr <a href="#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> FILE * profile, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> userCtxt);
void <a href="#xsltApplyTemplates">xsltApplyTemplates</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-void <a href="#xsltIf">xsltIf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+void <a href="#xsltAttribute">xsltAttribute</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
void <a href="#xsltCallTemplate">xsltCallTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-xmlDocPtr <a href="#xsltApplyStylesheet">xsltApplyStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params);
-void <a href="#xsltApplyStripSpaces">xsltApplyStripSpaces</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node);
-int <a href="#xsltLocalVariablePush">xsltLocalVariablePush</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> variable, <br/> int level);
-void <a href="#xsltFreeTransformContext">xsltFreeTransformContext</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltRunStylesheet">xsltRunStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> xmlSAXHandlerPtr SAX, <br/> xmlOutputBufferPtr IObuf);
void <a href="#xsltChoose">xsltChoose</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
-xmlNodePtr <a href="#xsltCopyTextString">xsltCopyTextString</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr target, <br/> const xmlChar * string, <br/> int noescape);
-void <a href="#xsltText">xsltText</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
-void <a href="#xsltProcessOneNode">xsltProcessOneNode</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> withParams);
-void <a href="#xsltLocalVariablePop">xsltLocalVariablePop</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> int limitNr, <br/> int level);
-void <a href="#xsltNumber">xsltNumber</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-int <a href="#xsltRunStylesheetUser">xsltRunStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> xmlSAXHandlerPtr SAX, <br/> xmlOutputBufferPtr IObuf, <br/> FILE * profile, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> userCtxt);
-<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> <a href="#xsltNewTransformContext">xsltNewTransformContext</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc);
-int <a href="#xsltGetXIncludeDefault">xsltGetXIncludeDefault</a> (void);
-void <a href="#xsltApplyOneTemplate">xsltApplyOneTemplate</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr list, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> params);
-void <a href="#xslHandleDebugger">xslHandleDebugger</a> (xmlNodePtr cur, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltComment">xsltComment</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
void <a href="#xsltCopy">xsltCopy</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+void <a href="#xsltCopyOf">xsltCopyOf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+xmlNodePtr <a href="#xsltCopyTextString">xsltCopyTextString</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr target, <br/> const xmlChar * string, <br/> int noescape);
void <a href="#xsltDocumentElem">xsltDocumentElem</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-void <a href="#xsltAttribute">xsltAttribute</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-void <a href="#xsltApplyImports">xsltApplyImports</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
void <a href="#xsltElement">xsltElement</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-xmlDocPtr <a href="#xsltProfileStylesheet">xsltProfileStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> FILE * output);
void <a href="#xsltForEach">xsltForEach</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-xmlDocPtr <a href="#xsltApplyStylesheetUser">xsltApplyStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> FILE * profile, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> userCtxt);
+void <a href="#xsltFreeTransformContext">xsltFreeTransformContext</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+int <a href="#xsltGetXIncludeDefault">xsltGetXIncludeDefault</a> (void);
+void <a href="#xsltIf">xsltIf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+void <a href="#xsltLocalVariablePop">xsltLocalVariablePop</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> int limitNr, <br/> int level);
+int <a href="#xsltLocalVariablePush">xsltLocalVariablePush</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> variable, <br/> int level);
+<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> <a href="#xsltNewTransformContext">xsltNewTransformContext</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc);
+void <a href="#xsltNumber">xsltNumber</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
+void <a href="#xsltProcessOneNode">xsltProcessOneNode</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr contextNode, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> withParams);
void <a href="#xsltProcessingInstruction">xsltProcessingInstruction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
-void <a href="#xsltComment">xsltComment</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+xmlDocPtr <a href="#xsltProfileStylesheet">xsltProfileStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> FILE * output);
+void <a href="#xsltRegisterAllElement">xsltRegisterAllElement</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+int <a href="#xsltRunStylesheet">xsltRunStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> xmlSAXHandlerPtr SAX, <br/> xmlOutputBufferPtr IObuf);
+int <a href="#xsltRunStylesheetUser">xsltRunStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc, <br/> const char ** params, <br/> const char * output, <br/> xmlSAXHandlerPtr SAX, <br/> xmlOutputBufferPtr IObuf, <br/> FILE * profile, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> userCtxt);
+void <a href="#xsltSetXIncludeDefault">xsltSetXIncludeDefault</a> (int xinclude);
+void <a href="#xsltSort">xsltSort</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+void <a href="#xsltText">xsltText</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+void <a href="#xsltValueOf">xsltValueOf</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> castedComp);
</pre>
</div>
<div class="refsect1" lang="en">
@@ -155,7 +155,7 @@ void <a href="#xsltComment">xsltComment</a> (<a href="libxslt-xsltInternals.ht
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltFreeTransformContext"/>xsltFreeTransformContext ()</h3><pre class="programlisting">void xsltFreeTransformContext (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt)<br/>
</pre><p>Free up the memory allocated by @ctxt</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT parser context</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transform context</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltGetXIncludeDefault"/>xsltGetXIncludeDefault ()</h3><pre class="programlisting">int xsltGetXIncludeDefault (void)<br/>
</pre><p>Provides the default state for XInclude processing</p>
diff --git a/doc/devhelp/libxslt-variables.html b/doc/devhelp/libxslt-variables.html
index 628ab55d..6c8efa9e 100644
--- a/doc/devhelp/libxslt-variables.html
+++ b/doc/devhelp/libxslt-variables.html
@@ -47,20 +47,20 @@
#define <a href="#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a>;
#define <a href="#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a>;
#define <a href="#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a>;
-void <a href="#xsltFreeGlobalVariables">xsltFreeGlobalVariables</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltQuoteUserParams">xsltQuoteUserParams</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char ** params);
-xmlXPathObjectPtr <a href="#xsltXPathVariableLookup">xsltXPathVariableLookup</a> (void * ctxt, <br/> const xmlChar * name, <br/> const xmlChar * ns_uri);
-int <a href="#xsltEvalUserParams">xsltEvalUserParams</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char ** params);
-<a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> <a href="#xsltParseStylesheetCallerParam">xsltParseStylesheetCallerParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr inst);
int <a href="#xsltAddStackElemList">xsltAddStackElemList</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elems);
-void <a href="#xsltParseGlobalVariable">xsltParseGlobalVariable</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
-int <a href="#xsltQuoteOneUserParam">xsltQuoteOneUserParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * value);
-void <a href="#xsltParseGlobalParam">xsltParseGlobalParam</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
-void <a href="#xsltParseStylesheetVariable">xsltParseStylesheetVariable</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr inst);
int <a href="#xsltEvalGlobalVariables">xsltEvalGlobalVariables</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
int <a href="#xsltEvalOneUserParam">xsltEvalOneUserParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * value);
+int <a href="#xsltEvalUserParams">xsltEvalUserParams</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char ** params);
+void <a href="#xsltFreeGlobalVariables">xsltFreeGlobalVariables</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltParseGlobalParam">xsltParseGlobalParam</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
+void <a href="#xsltParseGlobalVariable">xsltParseGlobalVariable</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
+<a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> <a href="#xsltParseStylesheetCallerParam">xsltParseStylesheetCallerParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr inst);
void <a href="#xsltParseStylesheetParam">xsltParseStylesheetParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr cur);
+void <a href="#xsltParseStylesheetVariable">xsltParseStylesheetVariable</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr inst);
+int <a href="#xsltQuoteOneUserParam">xsltQuoteOneUserParam</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * value);
+int <a href="#xsltQuoteUserParams">xsltQuoteUserParams</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const char ** params);
xmlXPathObjectPtr <a href="#xsltVariableLookup">xsltVariableLookup</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> const xmlChar * name, <br/> const xmlChar * ns_uri);
+xmlXPathObjectPtr <a href="#xsltXPathVariableLookup">xsltXPathVariableLookup</a> (void * ctxt, <br/> const xmlChar * name, <br/> const xmlChar * ns_uri);
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-xslt.html b/doc/devhelp/libxslt-xslt.html
index aed8eb06..2707ac95 100644
--- a/doc/devhelp/libxslt-xslt.html
+++ b/doc/devhelp/libxslt-xslt.html
@@ -43,11 +43,11 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#XSLT_DEFAULT_VERSION">XSLT_DEFAULT_VERSION</a>;
+ <pre class="synopsis">#define <a href="#XSLT_DEFAULT_URL">XSLT_DEFAULT_URL</a>;
#define <a href="#XSLT_DEFAULT_VENDOR">XSLT_DEFAULT_VENDOR</a>;
-#define <a href="#XSLT_PARSE_OPTIONS">XSLT_PARSE_OPTIONS</a>;
-#define <a href="#XSLT_DEFAULT_URL">XSLT_DEFAULT_URL</a>;
+#define <a href="#XSLT_DEFAULT_VERSION">XSLT_DEFAULT_VERSION</a>;
#define <a href="#XSLT_NAMESPACE">XSLT_NAMESPACE</a>;
+#define <a href="#XSLT_PARSE_OPTIONS">XSLT_PARSE_OPTIONS</a>;
void <a href="#xsltCleanupGlobals">xsltCleanupGlobals</a> (void);
void <a href="#xsltInit">xsltInit</a> (void);
</pre>
@@ -79,19 +79,19 @@ void <a href="#xsltInit">xsltInit</a> (void);
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltEngineVersion">Variable </a>xsltEngineVersion</h3><pre class="programlisting">const char * xsltEngineVersion;
-</pre><p/>
+</pre><p>The version string for libxslt.</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltLibxmlVersion">Variable </a>xsltLibxmlVersion</h3><pre class="programlisting">const int xsltLibxmlVersion;
-</pre><p/>
+</pre><p>The version of libxml libxslt was compiled against.</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltLibxsltVersion">Variable </a>xsltLibxsltVersion</h3><pre class="programlisting">const int xsltLibxsltVersion;
-</pre><p/>
+</pre><p>The version of libxslt compiled.</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltMaxDepth">Variable </a>xsltMaxDepth</h3><pre class="programlisting">int xsltMaxDepth;
-</pre><p/>
+</pre><p>This value is used to detect templates loops.</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltMaxVars">Variable </a>xsltMaxVars</h3><pre class="programlisting">int xsltMaxVars;
diff --git a/doc/devhelp/libxslt-xsltInternals.html b/doc/devhelp/libxslt-xsltInternals.html
index 31b61e3b..8fa8c653 100644
--- a/doc/devhelp/libxslt-xsltInternals.html
+++ b/doc/devhelp/libxslt-xsltInternals.html
@@ -43,183 +43,186 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#CHECK_STOPPED0">CHECK_STOPPED0</a>;
-#define <a href="#XSLT_PAT_NO_PRIORITY">XSLT_PAT_NO_PRIORITY</a>;
-#define <a href="#XSLT_ITEM_NSINSCOPE_FIELDS">XSLT_ITEM_NSINSCOPE_FIELDS</a>;
-#define <a href="#XSLT_IS_TEXT_NODE">XSLT_IS_TEXT_NODE</a>;
-#define <a href="#IS_XSLT_ELEM_FAST">IS_XSLT_ELEM_FAST</a>;
-#define <a href="#XSLT_REFACTORED_VARS">XSLT_REFACTORED_VARS</a>;
-#define <a href="#XSLT_RUNTIME_EXTRA_LST">XSLT_RUNTIME_EXTRA_LST</a>(ctxt, nr);
-#define <a href="#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a>;
+ <pre class="synopsis">#define <a href="#CHECK_STOPPED">CHECK_STOPPED</a>;
+#define <a href="#CHECK_STOPPED0">CHECK_STOPPED0</a>;
+#define <a href="#CHECK_STOPPEDE">CHECK_STOPPEDE</a>;
#define <a href="#IS_XSLT_ATTR_FAST">IS_XSLT_ATTR_FAST</a>;
-#define <a href="#XSLT_HAS_INTERNAL_NSMAP">XSLT_HAS_INTERNAL_NSMAP</a>;
+#define <a href="#IS_XSLT_ELEM_FAST">IS_XSLT_ELEM_FAST</a>;
+#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
+#define <a href="#XSLT_CCTXT">XSLT_CCTXT</a>;
#define <a href="#XSLT_FAST_IF">XSLT_FAST_IF</a>;
-#define <a href="#XSLT_MARK_RES_TREE_FRAG">XSLT_MARK_RES_TREE_FRAG</a>;
#define <a href="#XSLT_GET_INTERNAL_NSMAP">XSLT_GET_INTERNAL_NSMAP</a>;
-#define <a href="#XSLT_REFACTORED_KEYCOMP">XSLT_REFACTORED_KEYCOMP</a>;
+#define <a href="#XSLT_HAS_INTERNAL_NSMAP">XSLT_HAS_INTERNAL_NSMAP</a>;
+#define <a href="#XSLT_IS_RES_TREE_FRAG">XSLT_IS_RES_TREE_FRAG</a>;
+#define <a href="#XSLT_IS_TEXT_NODE">XSLT_IS_TEXT_NODE</a>;
+#define <a href="#XSLT_ITEM_COMMON_FIELDS">XSLT_ITEM_COMMON_FIELDS</a>;
+#define <a href="#XSLT_ITEM_COMPATIBILITY_FIELDS">XSLT_ITEM_COMPATIBILITY_FIELDS</a>;
#define <a href="#XSLT_ITEM_NAVIGATION_FIELDS">XSLT_ITEM_NAVIGATION_FIELDS</a>;
+#define <a href="#XSLT_ITEM_NSINSCOPE_FIELDS">XSLT_ITEM_NSINSCOPE_FIELDS</a>;
+#define <a href="#XSLT_MARK_RES_TREE_FRAG">XSLT_MARK_RES_TREE_FRAG</a>;
#define <a href="#XSLT_MAX_SORT">XSLT_MAX_SORT</a>;
+#define <a href="#XSLT_PAT_NO_PRIORITY">XSLT_PAT_NO_PRIORITY</a>;
+#define <a href="#XSLT_REFACTORED_KEYCOMP">XSLT_REFACTORED_KEYCOMP</a>;
+#define <a href="#XSLT_REFACTORED_VARS">XSLT_REFACTORED_VARS</a>;
#define <a href="#XSLT_RUNTIME_EXTRA">XSLT_RUNTIME_EXTRA</a>(ctxt, nr);
-#define <a href="#XSLT_IS_RES_TREE_FRAG">XSLT_IS_RES_TREE_FRAG</a>;
-#define <a href="#XML_CAST_FPTR">XML_CAST_FPTR</a>(fptr);
-#define <a href="#XSLT_ITEM_COMMON_FIELDS">XSLT_ITEM_COMMON_FIELDS</a>;
-#define <a href="#CHECK_STOPPED">CHECK_STOPPED</a>;
#define <a href="#XSLT_RUNTIME_EXTRA_FREE">XSLT_RUNTIME_EXTRA_FREE</a>(ctxt, nr);
-#define <a href="#XSLT_CCTXT">XSLT_CCTXT</a>;
-#define <a href="#CHECK_STOPPEDE">CHECK_STOPPEDE</a>;
-typedef struct _xsltElemPreComp <a href="#xsltElemPreComp">xsltElemPreComp</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemPI">xsltStyleItemPI</a> * <a href="#xsltStyleItemPIPtr">xsltStyleItemPIPtr</a>;
-typedef struct _xsltDocument <a href="#xsltDocument">xsltDocument</a>;
-typedef struct _xsltStyleItemDocument <a href="#xsltStyleItemDocument">xsltStyleItemDocument</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemMessage">xsltStyleItemMessage</a> * <a href="#xsltStyleItemMessagePtr">xsltStyleItemMessagePtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemNumber">xsltStyleItemNumber</a> * <a href="#xsltStyleItemNumberPtr">xsltStyleItemNumberPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> * <a href="#xsltStyleBasicItemVariablePtr">xsltStyleBasicItemVariablePtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemForEach">xsltStyleItemForEach</a> * <a href="#xsltStyleItemForEachPtr">xsltStyleItemForEachPtr</a>;
-typedef enum <a href="#xsltTransformState">xsltTransformState</a>;
+#define <a href="#XSLT_RUNTIME_EXTRA_LST">XSLT_RUNTIME_EXTRA_LST</a>(ctxt, nr);
+typedef struct _xsltCompilerCtxt <a href="#xsltCompilerCtxt">xsltCompilerCtxt</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltCompilerCtxt">xsltCompilerCtxt</a> * <a href="#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a>;
+typedef struct _xsltCompilerNodeInfo <a href="#xsltCompilerNodeInfo">xsltCompilerNodeInfo</a>;
typedef <a href="libxslt-xsltInternals.html#xsltCompilerNodeInfo">xsltCompilerNodeInfo</a> * <a href="#xsltCompilerNodeInfoPtr">xsltCompilerNodeInfoPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemLRElementInfo">xsltStyleItemLRElementInfo</a> * <a href="#xsltStyleItemLRElementInfoPtr">xsltStyleItemLRElementInfoPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltRuntimeExtra">xsltRuntimeExtra</a> * <a href="#xsltRuntimeExtraPtr">xsltRuntimeExtraPtr</a>;
-typedef struct _xsltStyleItemLRElementInfo <a href="#xsltStyleItemLRElementInfo">xsltStyleItemLRElementInfo</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemWithParam">xsltStyleItemWithParam</a> * <a href="#xsltStyleItemWithParamPtr">xsltStyleItemWithParamPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemComment">xsltStyleItemComment</a> * <a href="#xsltStyleItemCommentPtr">xsltStyleItemCommentPtr</a>;
-typedef struct _xsltStyleItemMessage <a href="#xsltStyleItemMessage">xsltStyleItemMessage</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemParam">xsltStyleItemParam</a> * <a href="#xsltStyleItemParamPtr">xsltStyleItemParamPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> <a href="#xsltStyleItemCopyOf">xsltStyleItemCopyOf</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCallTemplate">xsltStyleItemCallTemplate</a> * <a href="#xsltStyleItemCallTemplatePtr">xsltStyleItemCallTemplatePtr</a>;
-typedef struct _xsltTransformCache <a href="#xsltTransformCache">xsltTransformCache</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCopyOf">xsltStyleItemCopyOf</a> * <a href="#xsltStyleItemCopyOfPtr">xsltStyleItemCopyOfPtr</a>;
-typedef struct _xsltNsMap <a href="#xsltNsMap">xsltNsMap</a>;
-typedef struct _xsltEffectiveNs <a href="#xsltEffectiveNs">xsltEffectiveNs</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemApplyImports">xsltStyleItemApplyImports</a> * <a href="#xsltStyleItemApplyImportsPtr">xsltStyleItemApplyImportsPtr</a>;
-typedef struct _xsltStylesheet <a href="#xsltStylesheet">xsltStylesheet</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStylePreComp">xsltStylePreComp</a> * <a href="#xsltStylePreCompPtr">xsltStylePreCompPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltNsMap">xsltNsMap</a> * <a href="#xsltNsMapPtr">xsltNsMapPtr</a>;
+typedef struct _xsltDecimalFormat <a href="#xsltDecimalFormat">xsltDecimalFormat</a>;
typedef <a href="libxslt-xsltInternals.html#xsltDecimalFormat">xsltDecimalFormat</a> * <a href="#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemInclude">xsltStyleItemInclude</a> * <a href="#xsltStyleItemIncludePtr">xsltStyleItemIncludePtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltKeyTable">xsltKeyTable</a> * <a href="#xsltKeyTablePtr">xsltKeyTablePtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemText">xsltStyleItemText</a> * <a href="#xsltStyleItemTextPtr">xsltStyleItemTextPtr</a>;
-typedef struct _xsltCompilerNodeInfo <a href="#xsltCompilerNodeInfo">xsltCompilerNodeInfo</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStylesheet">xsltStylesheet</a> * <a href="#xsltStylesheetPtr">xsltStylesheetPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltTemplate">xsltTemplate</a> * <a href="#xsltTemplatePtr">xsltTemplatePtr</a>;
-typedef struct _xsltStyleBasicEmptyItem <a href="#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a>;
-typedef struct _xsltStackElem <a href="#xsltStackElem">xsltStackElem</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemIf">xsltStyleItemIf</a> * <a href="#xsltStyleItemIfPtr">xsltStyleItemIfPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemWhen">xsltStyleItemWhen</a> * <a href="#xsltStyleItemWhenPtr">xsltStyleItemWhenPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemElement">xsltStyleItemElement</a> * <a href="#xsltStyleItemElementPtr">xsltStyleItemElementPtr</a>;
-typedef struct _xsltStyleItemOtherwise <a href="#xsltStyleItemOtherwise">xsltStyleItemOtherwise</a>;
-typedef struct _xsltStyleItemCopy <a href="#xsltStyleItemCopy">xsltStyleItemCopy</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltKeyDef">xsltKeyDef</a> * <a href="#xsltKeyDefPtr">xsltKeyDefPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltVarInfo">xsltVarInfo</a> * <a href="#xsltVarInfoPtr">xsltVarInfoPtr</a>;
-typedef struct _xsltStyleItemSort <a href="#xsltStyleItemSort">xsltStyleItemSort</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltTransformCache">xsltTransformCache</a> * <a href="#xsltTransformCachePtr">xsltTransformCachePtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemExtElement">xsltStyleItemExtElement</a> * <a href="#xsltStyleItemExtElementPtr">xsltStyleItemExtElementPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltNsAlias">xsltNsAlias</a> * <a href="#xsltNsAliasPtr">xsltNsAliasPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemValueOf">xsltStyleItemValueOf</a> * <a href="#xsltStyleItemValueOfPtr">xsltStyleItemValueOfPtr</a>;
+typedef struct _xsltDocument <a href="#xsltDocument">xsltDocument</a>;
typedef <a href="libxslt-xsltInternals.html#xsltDocument">xsltDocument</a> * <a href="#xsltDocumentPtr">xsltDocumentPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltPointerList">xsltPointerList</a> * <a href="#xsltPointerListPtr">xsltPointerListPtr</a>;
-typedef struct _xsltTemplate <a href="#xsltTemplate">xsltTemplate</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> * <a href="#xsltStyleBasicExpressionItemPtr">xsltStyleBasicExpressionItemPtr</a>;
-typedef struct _xsltRuntimeExtra <a href="#xsltRuntimeExtra">xsltRuntimeExtra</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemAttribute">xsltStyleItemAttribute</a> * <a href="#xsltStyleItemAttributePtr">xsltStyleItemAttributePtr</a>;
-typedef struct _xsltTransformContext <a href="#xsltTransformContext">xsltTransformContext</a>;
-typedef struct _xsltPointerList <a href="#xsltPointerList">xsltPointerList</a>;
-typedef struct _xsltStyleItemUknown <a href="#xsltStyleItemUknown">xsltStyleItemUknown</a>;
-typedef enum <a href="#xsltErrorSeverityType">xsltErrorSeverityType</a>;
+typedef struct _xsltEffectiveNs <a href="#xsltEffectiveNs">xsltEffectiveNs</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltEffectiveNs">xsltEffectiveNs</a> * <a href="#xsltEffectiveNsPtr">xsltEffectiveNsPtr</a>;
+typedef struct _xsltElemPreComp <a href="#xsltElemPreComp">xsltElemPreComp</a>;
typedef <a href="libxslt-xsltInternals.html#xsltElemPreComp">xsltElemPreComp</a> * <a href="#xsltElemPreCompPtr">xsltElemPreCompPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemFallback">xsltStyleItemFallback</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemOtherwise">xsltStyleItemOtherwise</a> * <a href="#xsltStyleItemOtherwisePtr">xsltStyleItemOtherwisePtr</a>;
-typedef struct _xsltStyleItemWhen <a href="#xsltStyleItemWhen">xsltStyleItemWhen</a>;
-typedef struct _xsltStyleItemIf <a href="#xsltStyleItemIf">xsltStyleItemIf</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltTransformContext">xsltTransformContext</a> * <a href="#xsltTransformContextPtr">xsltTransformContextPtr</a>;
+typedef enum <a href="#xsltErrorSeverityType">xsltErrorSeverityType</a>;
+typedef struct _xsltKeyDef <a href="#xsltKeyDef">xsltKeyDef</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltKeyDef">xsltKeyDef</a> * <a href="#xsltKeyDefPtr">xsltKeyDefPtr</a>;
+typedef struct _xsltKeyTable <a href="#xsltKeyTable">xsltKeyTable</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltKeyTable">xsltKeyTable</a> * <a href="#xsltKeyTablePtr">xsltKeyTablePtr</a>;
+typedef struct _xsltNsAlias <a href="#xsltNsAlias">xsltNsAlias</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltNsAlias">xsltNsAlias</a> * <a href="#xsltNsAliasPtr">xsltNsAliasPtr</a>;
typedef struct _xsltNsList <a href="#xsltNsList">xsltNsList</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> <a href="#xsltStyleItemForEach">xsltStyleItemForEach</a>;
-typedef struct _xsltStyleItemExtElement <a href="#xsltStyleItemExtElement">xsltStyleItemExtElement</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltNsListContainer">xsltNsListContainer</a> * <a href="#xsltNsListContainerPtr">xsltNsListContainerPtr</a>;
-typedef struct _xsltStyleBasicExpressionItem <a href="#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> <a href="#xsltStyleItemWithParam">xsltStyleItemWithParam</a>;
-typedef struct _xsltStyleItemElement <a href="#xsltStyleItemElement">xsltStyleItemElement</a>;
-typedef struct _xsltCompilerCtxt <a href="#xsltCompilerCtxt">xsltCompilerCtxt</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemComment">xsltStyleItemComment</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltEffectiveNs">xsltEffectiveNs</a> * <a href="#xsltEffectiveNsPtr">xsltEffectiveNsPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> <a href="#xsltStyleItemVariable">xsltStyleItemVariable</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemVariable">xsltStyleItemVariable</a> * <a href="#xsltStyleItemVariablePtr">xsltStyleItemVariablePtr</a>;
-typedef struct _xsltStyleItemParam <a href="#xsltStyleItemParam">xsltStyleItemParam</a>;
typedef struct _xsltNsListContainer <a href="#xsltNsListContainer">xsltNsListContainer</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStackElem">xsltStackElem</a> * <a href="#xsltStackElemPtr">xsltStackElemPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> * <a href="#xsltStyleBasicEmptyItemPtr">xsltStyleBasicEmptyItemPtr</a>;
-typedef struct _xsltStyleItemText <a href="#xsltStyleItemText">xsltStyleItemText</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCopy">xsltStyleItemCopy</a> * <a href="#xsltStyleItemCopyPtr">xsltStyleItemCopyPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemSort">xsltStyleItemSort</a> * <a href="#xsltStyleItemSortPtr">xsltStyleItemSortPtr</a>;
-typedef struct _xsltPrincipalStylesheetData <a href="#xsltPrincipalStylesheetData">xsltPrincipalStylesheetData</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltNsListContainer">xsltNsListContainer</a> * <a href="#xsltNsListContainerPtr">xsltNsListContainerPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltNsList">xsltNsList</a> * <a href="#xsltNsListPtr">xsltNsListPtr</a>;
+typedef struct _xsltNsMap <a href="#xsltNsMap">xsltNsMap</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltNsMap">xsltNsMap</a> * <a href="#xsltNsMapPtr">xsltNsMapPtr</a>;
typedef enum <a href="#xsltOutputType">xsltOutputType</a>;
+typedef struct _xsltPointerList <a href="#xsltPointerList">xsltPointerList</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltPointerList">xsltPointerList</a> * <a href="#xsltPointerListPtr">xsltPointerListPtr</a>;
+typedef struct _xsltPrincipalStylesheetData <a href="#xsltPrincipalStylesheetData">xsltPrincipalStylesheetData</a>;
typedef <a href="libxslt-xsltInternals.html#xsltPrincipalStylesheetData">xsltPrincipalStylesheetData</a> * <a href="#xsltPrincipalStylesheetDataPtr">xsltPrincipalStylesheetDataPtr</a>;
+typedef struct _xsltRuntimeExtra <a href="#xsltRuntimeExtra">xsltRuntimeExtra</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltRuntimeExtra">xsltRuntimeExtra</a> * <a href="#xsltRuntimeExtraPtr">xsltRuntimeExtraPtr</a>;
+typedef struct _xsltStackElem <a href="#xsltStackElem">xsltStackElem</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStackElem">xsltStackElem</a> * <a href="#xsltStackElemPtr">xsltStackElemPtr</a>;
+typedef struct _xsltStyleBasicEmptyItem <a href="#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> * <a href="#xsltStyleBasicEmptyItemPtr">xsltStyleBasicEmptyItemPtr</a>;
+typedef struct _xsltStyleBasicExpressionItem <a href="#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> * <a href="#xsltStyleBasicExpressionItemPtr">xsltStyleBasicExpressionItemPtr</a>;
typedef struct _xsltStyleBasicItemVariable <a href="#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemChoose">xsltStyleItemChoose</a> * <a href="#xsltStyleItemChoosePtr">xsltStyleItemChoosePtr</a>;
-typedef struct _xsltNsAlias <a href="#xsltNsAlias">xsltNsAlias</a>;
-typedef struct _xsltVarInfo <a href="#xsltVarInfo">xsltVarInfo</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> * <a href="#xsltStyleBasicItemVariablePtr">xsltStyleBasicItemVariablePtr</a>;
typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemApplyImports">xsltStyleItemApplyImports</a>;
-typedef struct _xsltKeyTable <a href="#xsltKeyTable">xsltKeyTable</a>;
-typedef struct _xsltStylePreComp <a href="#xsltStylePreComp">xsltStylePreComp</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltNsList">xsltNsList</a> * <a href="#xsltNsListPtr">xsltNsListPtr</a>;
-typedef struct _xsltKeyDef <a href="#xsltKeyDef">xsltKeyDef</a>;
-typedef struct _xsltDecimalFormat <a href="#xsltDecimalFormat">xsltDecimalFormat</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemApplyImports">xsltStyleItemApplyImports</a> * <a href="#xsltStyleItemApplyImportsPtr">xsltStyleItemApplyImportsPtr</a>;
+typedef struct _xsltStyleItemApplyTemplates <a href="#xsltStyleItemApplyTemplates">xsltStyleItemApplyTemplates</a>;
typedef <a href="libxslt-xsltInternals.html#xsltStyleItemApplyTemplates">xsltStyleItemApplyTemplates</a> * <a href="#xsltStyleItemApplyTemplatesPtr">xsltStyleItemApplyTemplatesPtr</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemUknown">xsltStyleItemUknown</a> * <a href="#xsltStyleItemUknownPtr">xsltStyleItemUknownPtr</a>;
-typedef struct _xsltStyleItemValueOf <a href="#xsltStyleItemValueOf">xsltStyleItemValueOf</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltCompilerCtxt">xsltCompilerCtxt</a> * <a href="#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a>;
typedef struct _xsltStyleItemAttribute <a href="#xsltStyleItemAttribute">xsltStyleItemAttribute</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleItemDocument">xsltStyleItemDocument</a> * <a href="#xsltStyleItemDocumentPtr">xsltStyleItemDocumentPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemAttribute">xsltStyleItemAttribute</a> * <a href="#xsltStyleItemAttributePtr">xsltStyleItemAttributePtr</a>;
typedef struct _xsltStyleItemCallTemplate <a href="#xsltStyleItemCallTemplate">xsltStyleItemCallTemplate</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCallTemplate">xsltStyleItemCallTemplate</a> * <a href="#xsltStyleItemCallTemplatePtr">xsltStyleItemCallTemplatePtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemChoose">xsltStyleItemChoose</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemChoose">xsltStyleItemChoose</a> * <a href="#xsltStyleItemChoosePtr">xsltStyleItemChoosePtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemComment">xsltStyleItemComment</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemComment">xsltStyleItemComment</a> * <a href="#xsltStyleItemCommentPtr">xsltStyleItemCommentPtr</a>;
+typedef struct _xsltStyleItemCopy <a href="#xsltStyleItemCopy">xsltStyleItemCopy</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> <a href="#xsltStyleItemCopyOf">xsltStyleItemCopyOf</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCopyOf">xsltStyleItemCopyOf</a> * <a href="#xsltStyleItemCopyOfPtr">xsltStyleItemCopyOfPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemCopy">xsltStyleItemCopy</a> * <a href="#xsltStyleItemCopyPtr">xsltStyleItemCopyPtr</a>;
+typedef struct _xsltStyleItemDocument <a href="#xsltStyleItemDocument">xsltStyleItemDocument</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemDocument">xsltStyleItemDocument</a> * <a href="#xsltStyleItemDocumentPtr">xsltStyleItemDocumentPtr</a>;
+typedef struct _xsltStyleItemElement <a href="#xsltStyleItemElement">xsltStyleItemElement</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemElement">xsltStyleItemElement</a> * <a href="#xsltStyleItemElementPtr">xsltStyleItemElementPtr</a>;
+typedef struct _xsltStyleItemExtElement <a href="#xsltStyleItemExtElement">xsltStyleItemExtElement</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemExtElement">xsltStyleItemExtElement</a> * <a href="#xsltStyleItemExtElementPtr">xsltStyleItemExtElementPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemFallback">xsltStyleItemFallback</a>;
typedef <a href="libxslt-xsltInternals.html#xsltStyleItemFallback">xsltStyleItemFallback</a> * <a href="#xsltStyleItemFallbackPtr">xsltStyleItemFallbackPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> <a href="#xsltStyleItemForEach">xsltStyleItemForEach</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemForEach">xsltStyleItemForEach</a> * <a href="#xsltStyleItemForEachPtr">xsltStyleItemForEachPtr</a>;
+typedef struct _xsltStyleItemIf <a href="#xsltStyleItemIf">xsltStyleItemIf</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemIf">xsltStyleItemIf</a> * <a href="#xsltStyleItemIfPtr">xsltStyleItemIfPtr</a>;
+typedef struct _xsltStyleItemInclude <a href="#xsltStyleItemInclude">xsltStyleItemInclude</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemInclude">xsltStyleItemInclude</a> * <a href="#xsltStyleItemIncludePtr">xsltStyleItemIncludePtr</a>;
+typedef struct _xsltStyleItemLRElementInfo <a href="#xsltStyleItemLRElementInfo">xsltStyleItemLRElementInfo</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemLRElementInfo">xsltStyleItemLRElementInfo</a> * <a href="#xsltStyleItemLRElementInfoPtr">xsltStyleItemLRElementInfoPtr</a>;
+typedef struct _xsltStyleItemMessage <a href="#xsltStyleItemMessage">xsltStyleItemMessage</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemMessage">xsltStyleItemMessage</a> * <a href="#xsltStyleItemMessagePtr">xsltStyleItemMessagePtr</a>;
typedef struct _xsltStyleItemNumber <a href="#xsltStyleItemNumber">xsltStyleItemNumber</a>;
-typedef struct _xsltStyleItemApplyTemplates <a href="#xsltStyleItemApplyTemplates">xsltStyleItemApplyTemplates</a>;
-typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> <a href="#xsltStyleItemChoose">xsltStyleItemChoose</a>;
-typedef enum <a href="#xsltStyleType">xsltStyleType</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemNumber">xsltStyleItemNumber</a> * <a href="#xsltStyleItemNumberPtr">xsltStyleItemNumberPtr</a>;
+typedef struct _xsltStyleItemOtherwise <a href="#xsltStyleItemOtherwise">xsltStyleItemOtherwise</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemOtherwise">xsltStyleItemOtherwise</a> * <a href="#xsltStyleItemOtherwisePtr">xsltStyleItemOtherwisePtr</a>;
typedef struct _xsltStyleItemPI <a href="#xsltStyleItemPI">xsltStyleItemPI</a>;
-typedef struct _xsltStyleItemInclude <a href="#xsltStyleItemInclude">xsltStyleItemInclude</a>;
-typedef void <a href="#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a> (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
-int <a href="#xsltRegisterPersistRVT">xsltRegisterPersistRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
-<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetImportedDoc">xsltParseStylesheetImportedDoc</a> (xmlDocPtr doc, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> parentStyle);
-void <a href="#xsltFreeStackElemList">xsltFreeStackElemList</a> (<a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elem);
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemPI">xsltStyleItemPI</a> * <a href="#xsltStyleItemPIPtr">xsltStyleItemPIPtr</a>;
+typedef struct _xsltStyleItemParam <a href="#xsltStyleItemParam">xsltStyleItemParam</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemParam">xsltStyleItemParam</a> * <a href="#xsltStyleItemParamPtr">xsltStyleItemParamPtr</a>;
+typedef struct _xsltStyleItemSort <a href="#xsltStyleItemSort">xsltStyleItemSort</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemSort">xsltStyleItemSort</a> * <a href="#xsltStyleItemSortPtr">xsltStyleItemSortPtr</a>;
+typedef struct _xsltStyleItemText <a href="#xsltStyleItemText">xsltStyleItemText</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemText">xsltStyleItemText</a> * <a href="#xsltStyleItemTextPtr">xsltStyleItemTextPtr</a>;
+typedef struct _xsltStyleItemUknown <a href="#xsltStyleItemUknown">xsltStyleItemUknown</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemUknown">xsltStyleItemUknown</a> * <a href="#xsltStyleItemUknownPtr">xsltStyleItemUknownPtr</a>;
+typedef struct _xsltStyleItemValueOf <a href="#xsltStyleItemValueOf">xsltStyleItemValueOf</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemValueOf">xsltStyleItemValueOf</a> * <a href="#xsltStyleItemValueOfPtr">xsltStyleItemValueOfPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> <a href="#xsltStyleItemVariable">xsltStyleItemVariable</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemVariable">xsltStyleItemVariable</a> * <a href="#xsltStyleItemVariablePtr">xsltStyleItemVariablePtr</a>;
+typedef struct _xsltStyleItemWhen <a href="#xsltStyleItemWhen">xsltStyleItemWhen</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemWhen">xsltStyleItemWhen</a> * <a href="#xsltStyleItemWhenPtr">xsltStyleItemWhenPtr</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> <a href="#xsltStyleItemWithParam">xsltStyleItemWithParam</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStyleItemWithParam">xsltStyleItemWithParam</a> * <a href="#xsltStyleItemWithParamPtr">xsltStyleItemWithParamPtr</a>;
+typedef struct _xsltStylePreComp <a href="#xsltStylePreComp">xsltStylePreComp</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStylePreComp">xsltStylePreComp</a> * <a href="#xsltStylePreCompPtr">xsltStylePreCompPtr</a>;
+typedef enum <a href="#xsltStyleType">xsltStyleType</a>;
+typedef struct _xsltStylesheet <a href="#xsltStylesheet">xsltStylesheet</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltStylesheet">xsltStylesheet</a> * <a href="#xsltStylesheetPtr">xsltStylesheetPtr</a>;
+typedef struct _xsltTemplate <a href="#xsltTemplate">xsltTemplate</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltTemplate">xsltTemplate</a> * <a href="#xsltTemplatePtr">xsltTemplatePtr</a>;
+typedef struct _xsltTransformCache <a href="#xsltTransformCache">xsltTransformCache</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltTransformCache">xsltTransformCache</a> * <a href="#xsltTransformCachePtr">xsltTransformCachePtr</a>;
+typedef struct _xsltTransformContext <a href="#xsltTransformContext">xsltTransformContext</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltTransformContext">xsltTransformContext</a> * <a href="#xsltTransformContextPtr">xsltTransformContextPtr</a>;
+typedef enum <a href="#xsltTransformState">xsltTransformState</a>;
+typedef struct _xsltVarInfo <a href="#xsltVarInfo">xsltVarInfo</a>;
+typedef <a href="libxslt-xsltInternals.html#xsltVarInfo">xsltVarInfo</a> * <a href="#xsltVarInfoPtr">xsltVarInfoPtr</a>;
int <a href="#xsltAllocateExtra">xsltAllocateExtra</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-int <a href="#xsltFlagRVTs">xsltFlagRVTs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj, <br/> void * val);
-void <a href="#xsltParseSequenceConstructor">xsltParseSequenceConstructor</a> (<a href="libxslt-xsltInternals.html#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a> cctxt, <br/> xmlNodePtr cur);
-int <a href="#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
-int <a href="#xsltInitAllDocKeys">xsltInitAllDocKeys</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+int <a href="#xsltAllocateExtraCtxt">xsltAllocateExtraCtxt</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltCompileAttr">xsltCompileAttr</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlAttrPtr attr);
+xmlDocPtr <a href="#xsltCreateRVT">xsltCreateRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> <a href="#xsltDecimalFormatGetByName">xsltDecimalFormatGetByName</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlChar * name);
+<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> <a href="#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * nsUri, <br/> const xmlChar * name);
+typedef void <a href="#xsltElemPreCompDeallocator">xsltElemPreCompDeallocator</a> (<a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+xmlChar * <a href="#xsltEvalAVT">xsltEvalAVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> void * avt, <br/> xmlNodePtr node);
int <a href="#xsltExtensionInstructionResultFinalize">xsltExtensionInstructionResultFinalize</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltParseStylesheetUser">xsltParseStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc);
-void <a href="#xsltPointerListFree">xsltPointerListFree</a> (<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> list);
-int <a href="#xsltIsBlank">xsltIsBlank</a> (xmlChar * str);
+int <a href="#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj);
+int <a href="#xsltFlagRVTs">xsltFlagRVTs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj, <br/> int val);
xmlXPathError <a href="#xsltFormatNumberConversion">xsltFormatNumberConversion</a> (<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> self, <br/> xmlChar * format, <br/> double number, <br/> xmlChar ** result);
-int <a href="#xsltPointerListAddSize">xsltPointerListAddSize</a> (<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> list, <br/> void * item, <br/> int initialSize);
-typedef void <a href="#xsltSortFunc">xsltSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts);
-void <a href="#xsltUninit">xsltUninit</a> (void);
+void <a href="#xsltFreeAVTList">xsltFreeAVTList</a> (void * avt);
+typedef void <a href="#xsltFreeLocaleFunc">xsltFreeLocaleFunc</a> (void * locale);
+void <a href="#xsltFreeRVTs">xsltFreeRVTs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltFreeStackElemList">xsltFreeStackElemList</a> (<a href="libxslt-xsltInternals.html#xsltStackElemPtr">xsltStackElemPtr</a> elem);
void <a href="#xsltFreeStylesheet">xsltFreeStylesheet</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-xmlDocPtr <a href="#xsltCreateRVT">xsltCreateRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+typedef xmlChar * <a href="#xsltGenSortKeyFunc">xsltGenSortKeyFunc</a> (void * locale, <br/> const xmlChar * lang);
+int <a href="#xsltInitAllDocKeys">xsltInitAllDocKeys</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+int <a href="#xsltInitCtxtKey">xsltInitCtxtKey</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc, <br/> <a href="libxslt-xsltInternals.html#xsltKeyDefPtr">xsltKeyDefPtr</a> keyDef);
+int <a href="#xsltIsBlank">xsltIsBlank</a> (xmlChar * str);
+<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltLoadStylesheetPI">xsltLoadStylesheetPI</a> (xmlDocPtr doc);
+typedef void * <a href="#xsltNewLocaleFunc">xsltNewLocaleFunc</a> (const xmlChar * lang, <br/> int lowerFirst);
+<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltNewStylesheet">xsltNewStylesheet</a> (void);
+void <a href="#xsltNumberFormat">xsltNumberFormat</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-numbersInternals.html#xsltNumberDataPtr">xsltNumberDataPtr</a> data, <br/> xmlNodePtr node);
+int <a href="#xsltParseAnyXSLTElem">xsltParseAnyXSLTElem</a> (<a href="libxslt-xsltInternals.html#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a> cctxt, <br/> xmlNodePtr elem);
+void <a href="#xsltParseSequenceConstructor">xsltParseSequenceConstructor</a> (<a href="libxslt-xsltInternals.html#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a> cctxt, <br/> xmlNodePtr cur);
+<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetDoc">xsltParseStylesheetDoc</a> (xmlDocPtr doc);
<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetFile">xsltParseStylesheetFile</a> (const xmlChar * filename);
+<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetImportedDoc">xsltParseStylesheetImportedDoc</a> (xmlDocPtr doc, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> parentStyle);
void <a href="#xsltParseStylesheetOutput">xsltParseStylesheetOutput</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr cur);
-int <a href="#xsltParseAnyXSLTElem">xsltParseAnyXSLTElem</a> (<a href="libxslt-xsltInternals.html#xsltCompilerCtxtPtr">xsltCompilerCtxtPtr</a> cctxt, <br/> xmlNodePtr elem);
-void <a href="#xsltCompileAttr">xsltCompileAttr</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlAttrPtr attr);
-int <a href="#xsltRestoreDocumentNamespaces">xsltRestoreDocumentNamespaces</a> (<a href="libxslt-xsltInternals.html#xsltNsMapPtr">xsltNsMapPtr</a> ns, <br/> xmlDocPtr doc);
-void <a href="#xsltNumberFormat">xsltNumberFormat</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-numbersInternals.html#xsltNumberDataPtr">xsltNumberDataPtr</a> data, <br/> xmlNodePtr node);
-void <a href="#xsltReleaseRVT">xsltReleaseRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
-void <a href="#xsltFreeRVTs">xsltFreeRVTs</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltExtensionInstructionResultRegister">xsltExtensionInstructionResultRegister</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj);
-<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> <a href="#xsltPointerListCreate">xsltPointerListCreate</a> (int initialSize);
-void <a href="#xsltFreeAVTList">xsltFreeAVTList</a> (void * avt);
-int <a href="#xsltAllocateExtraCtxt">xsltAllocateExtraCtxt</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-void <a href="#xsltParseTemplateContent">xsltParseTemplateContent</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr templ);
-<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltNewStylesheet">xsltNewStylesheet</a> (void);
<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetProcess">xsltParseStylesheetProcess</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> ret, <br/> xmlDocPtr doc);
-<a href="libxslt-xsltInternals.html#xsltDecimalFormatPtr">xsltDecimalFormatPtr</a> <a href="#xsltDecimalFormatGetByQName">xsltDecimalFormatGetByQName</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * nsUri, <br/> const xmlChar * name);
-typedef void <a href="#xsltTransformFunction">xsltTransformFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
-int <a href="#xsltRegisterLocalRVT">xsltRegisterLocalRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
-<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltParseStylesheetDoc">xsltParseStylesheetDoc</a> (xmlDocPtr doc);
-int <a href="#xsltInitCtxtKey">xsltInitCtxtKey</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltDocumentPtr">xsltDocumentPtr</a> idoc, <br/> <a href="libxslt-xsltInternals.html#xsltKeyDefPtr">xsltKeyDefPtr</a> keyDef);
-xmlChar * <a href="#xsltEvalAVT">xsltEvalAVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> void * avt, <br/> xmlNodePtr node);
+int <a href="#xsltParseStylesheetUser">xsltParseStylesheetUser</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlDocPtr doc);
+void <a href="#xsltParseTemplateContent">xsltParseTemplateContent</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr templ);
+int <a href="#xsltPointerListAddSize">xsltPointerListAddSize</a> (<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> list, <br/> void * item, <br/> int initialSize);
void <a href="#xsltPointerListClear">xsltPointerListClear</a> (<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> list);
-<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> <a href="#xsltLoadStylesheetPI">xsltLoadStylesheetPI</a> (xmlDocPtr doc);
+<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> <a href="#xsltPointerListCreate">xsltPointerListCreate</a> (int initialSize);
+void <a href="#xsltPointerListFree">xsltPointerListFree</a> (<a href="libxslt-xsltInternals.html#xsltPointerListPtr">xsltPointerListPtr</a> list);
+int <a href="#xsltRegisterLocalRVT">xsltRegisterLocalRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
+int <a href="#xsltRegisterPersistRVT">xsltRegisterPersistRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
+int <a href="#xsltRegisterTmpRVT">xsltRegisterTmpRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
+void <a href="#xsltReleaseRVT">xsltReleaseRVT</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlDocPtr RVT);
+int <a href="#xsltRestoreDocumentNamespaces">xsltRestoreDocumentNamespaces</a> (<a href="libxslt-xsltInternals.html#xsltNsMapPtr">xsltNsMapPtr</a> ns, <br/> xmlDocPtr doc);
+typedef void <a href="#xsltSortFunc">xsltSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts);
+typedef void <a href="#xsltTransformFunction">xsltTransformFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst, <br/> <a href="libxslt-xsltInternals.html#xsltElemPreCompPtr">xsltElemPreCompPtr</a> comp);
+void <a href="#xsltUninit">xsltUninit</a> (void);
</pre>
</div>
<div class="refsect1" lang="en">
@@ -644,7 +647,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemApplyImports">Typedef </a>xsltStyleItemApplyImports</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> xsltStyleItemApplyImports;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:apply-imports /&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemApplyImportsPtr">Typedef </a>xsltStyleItemApplyImportsPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemApplyImports">xsltStyleItemApplyImports</a> * xsltStyleItemApplyImportsPtr;
@@ -693,7 +696,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemChoose">Typedef </a>xsltStyleItemChoose</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> xsltStyleItemChoose;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:choose&gt; &lt;!-- Content: (xsl:when+, xsl:otherwise?) --&gt; &lt;/xsl:choose&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemChoosePtr">Typedef </a>xsltStyleItemChoosePtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemChoose">xsltStyleItemChoose</a> * xsltStyleItemChoosePtr;
@@ -701,7 +704,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemComment">Typedef </a>xsltStyleItemComment</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> xsltStyleItemComment;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:comment&gt; &lt;!-- Content: template --&gt; &lt;/xsl:comment&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemCommentPtr">Typedef </a>xsltStyleItemCommentPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemComment">xsltStyleItemComment</a> * xsltStyleItemCommentPtr;
@@ -716,7 +719,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemCopyOf">Typedef </a>xsltStyleItemCopyOf</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> xsltStyleItemCopyOf;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:copy-of select = expression /&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemCopyOfPtr">Typedef </a>xsltStyleItemCopyOfPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemCopyOf">xsltStyleItemCopyOf</a> * xsltStyleItemCopyOfPtr;
@@ -766,7 +769,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemFallback">Typedef </a>xsltStyleItemFallback</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicEmptyItem">xsltStyleBasicEmptyItem</a> xsltStyleItemFallback;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:fallback&gt; &lt;!-- Content: template --&gt; &lt;/xsl:fallback&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemFallbackPtr">Typedef </a>xsltStyleItemFallbackPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemFallback">xsltStyleItemFallback</a> * xsltStyleItemFallbackPtr;
@@ -774,7 +777,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemForEach">Typedef </a>xsltStyleItemForEach</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicExpressionItem">xsltStyleBasicExpressionItem</a> xsltStyleItemForEach;
-</pre><p/>
+</pre><p>&lt;!-- Category: instruction --&gt; &lt;xsl:for-each select = node-set-expression&gt; &lt;!-- Content: (xsl:sort*, template) --&gt; &lt;/xsl:for-each&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemForEachPtr">Typedef </a>xsltStyleItemForEachPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemForEach">xsltStyleItemForEach</a> * xsltStyleItemForEachPtr;
@@ -877,7 +880,6 @@ The content of this structure is not made public by the API.
int descending : sort
const xmlChar * lang : sort
int has_lang : sort
- <a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale : sort
const xmlChar * case_order : sort
int lower_first : sort
const xmlChar * use
@@ -925,7 +927,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemVariable">Typedef </a>xsltStyleItemVariable</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> xsltStyleItemVariable;
-</pre><p/>
+</pre><p>&lt;!-- Category: top-level-element --&gt; &lt;xsl:param name = qname select = expression&gt; &lt;!-- Content: template --&gt; &lt;/xsl:param&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemVariablePtr">Typedef </a>xsltStyleItemVariablePtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemVariable">xsltStyleItemVariable</a> * xsltStyleItemVariablePtr;
@@ -944,7 +946,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemWithParam">Typedef </a>xsltStyleItemWithParam</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleBasicItemVariable">xsltStyleBasicItemVariable</a> xsltStyleItemWithParam;
-</pre><p/>
+</pre><p>&lt;xsl:with-param name = qname select = expression&gt; &lt;!-- Content: template --&gt; &lt;/xsl:with-param&gt;</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltStyleItemWithParamPtr">Typedef </a>xsltStyleItemWithParamPtr</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStyleItemWithParam">xsltStyleItemWithParam</a> * xsltStyleItemWithParamPtr;
@@ -964,7 +966,6 @@ The content of this structure is not made public by the API.
int descending : sort
const xmlChar * lang : sort
int has_lang : sort
- <a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale : sort
const xmlChar * case_order : sort
int lower_first : sort
const xmlChar * use : copy, element
@@ -1211,6 +1212,11 @@ The content of this structure is not made public by the API.
int maxTemplateVars
unsigned long opLimit
unsigned long opCount
+ int sourceDocDirty
+ unsigned long currentId : For generate-id()
+ <a href="libxslt-xsltInternals.html#xsltNewLocaleFunc">xsltNewLocaleFunc</a> newLocale
+ <a href="libxslt-xsltInternals.html#xsltFreeLocaleFunc">xsltFreeLocaleFunc</a> freeLocale
+ <a href="libxslt-xsltInternals.html#xsltGenSortKeyFunc">xsltGenSortKeyFunc</a> genSortKey
} xsltTransformContext;
</pre><p/>
</div>
@@ -1245,6 +1251,18 @@ The content of this structure is not made public by the API.
</pre><p>Deallocates an #xsltElemPreComp structure.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>comp</tt></i>:</span></td><td>the #xsltElemPreComp to free up</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xsltFreeLocaleFunc"/>Function type xsltFreeLocaleFunc</h3><pre class="programlisting">void xsltFreeLocaleFunc (void * locale)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xsltGenSortKeyFunc"/>Function type xsltGenSortKeyFunc</h3><pre class="programlisting">xmlChar * xsltGenSortKeyFunc (void * locale, <br/> const xmlChar * lang)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>lang</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+ <hr/>
+ <div class="refsect2" lang="en"><h3><a name="xsltNewLocaleFunc"/>Function type xsltNewLocaleFunc</h3><pre class="programlisting">void * xsltNewLocaleFunc (const xmlChar * lang, <br/> int lowerFirst)<br/>
+</pre><p/>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>lang</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>lowerFirst</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td/></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSortFunc"/>Function type xsltSortFunc</h3><pre class="programlisting">void xsltSortFunc (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts)<br/>
</pre><p>Signature of the function to use during sorting</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a transformation context</td></tr><tr><td><span class="term"><i><tt>sorts</tt></i>:</span></td><td>the node-set to sort</td></tr><tr><td><span class="term"><i><tt>nbsorts</tt></i>:</span></td><td>the number of sorts</td></tr></tbody></table></div></div>
@@ -1258,7 +1276,7 @@ The content of this structure is not made public by the API.
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltXSLTAttrMarker">Variable </a>xsltXSLTAttrMarker</h3><pre class="programlisting">const xmlChar * xsltXSLTAttrMarker;
-</pre><p/>
+</pre><p>Marker for XSLT attribute on Literal Result Elements.</p>
</div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltAllocateExtra"/>xsltAllocateExtra ()</h3><pre class="programlisting">int xsltAllocateExtra (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style)<br/>
@@ -1297,7 +1315,7 @@ The content of this structure is not made public by the API.
</pre><p>Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>obj</tt></i>:</span></td><td>an XPath object to be inspected for result tree fragments</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error. It isn't necessary to call this function in newer releases of libxslt.</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xsltFlagRVTs"/>xsltFlagRVTs ()</h3><pre class="programlisting">int xsltFlagRVTs (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj, <br/> void * val)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xsltFlagRVTs"/>xsltFlagRVTs ()</h3><pre class="programlisting">int xsltFlagRVTs (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlXPathObjectPtr obj, <br/> int val)<br/>
</pre><p>Updates ownership information of RVTs in @obj according to @val. @val = <a href="libxslt-variables.html#XSLT_RVT_FUNC_RESULT">XSLT_RVT_FUNC_RESULT</a> for the result of an extension function, so its RVTs won't be destroyed after leaving the returning scope. @val = <a href="libxslt-variables.html#XSLT_RVT_LOCAL">XSLT_RVT_LOCAL</a> for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = <a href="libxslt-variables.html#XSLT_RVT_GLOBAL">XSLT_RVT_GLOBAL</a> for parts of global variables.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transformation context</td></tr><tr><td><span class="term"><i><tt>obj</tt></i>:</span></td><td>an XPath object to be inspected for result tree fragments</td></tr><tr><td><span class="term"><i><tt>val</tt></i>:</span></td><td>the flag value</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error.</td></tr></tbody></table></div></div>
<hr/>
@@ -1355,7 +1373,7 @@ The content of this structure is not made public by the API.
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltParseStylesheetDoc"/>xsltParseStylesheetDoc ()</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> xsltParseStylesheetDoc (xmlDocPtr doc)<br/>
</pre><p>parse an XSLT stylesheet, building the associated structures. doc is kept as a reference within the returned stylesheet, so changes to doc after the parsing will be reflected when the stylesheet is applied, and the doc is automatically freed when the stylesheet is closed.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>and xmlDoc parsed XML</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new XSLT stylesheet structure.</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc</tt></i>:</span></td><td>an xmlDoc parsed XML</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a new XSLT stylesheet structure.</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltParseStylesheetFile"/>xsltParseStylesheetFile ()</h3><pre class="programlisting"><a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> xsltParseStylesheetFile (const xmlChar * filename)<br/>
</pre><p>Load and parse an XSLT stylesheet</p>
diff --git a/doc/devhelp/libxslt-xsltexports.html b/doc/devhelp/libxslt-xsltexports.html
index dc9413df..07421495 100644
--- a/doc/devhelp/libxslt-xsltexports.html
+++ b/doc/devhelp/libxslt-xsltexports.html
@@ -44,10 +44,10 @@
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
<pre class="synopsis">#define <a href="#LIBXSLT_PUBLIC">LIBXSLT_PUBLIC</a>;
+#define <a href="#XSLTCALL">XSLTCALL</a>;
#define <a href="#XSLTPUBFUN">XSLTPUBFUN</a>;
-#define <a href="#XSLTPUBVAR">XSLTPUBVAR</a>;
#define <a href="#XSLTPUBLIC">XSLTPUBLIC</a>;
-#define <a href="#XSLTCALL">XSLTCALL</a>;
+#define <a href="#XSLTPUBVAR">XSLTPUBVAR</a>;
</pre>
</div>
<div class="refsect1" lang="en">
diff --git a/doc/devhelp/libxslt-xsltlocale.html b/doc/devhelp/libxslt-xsltlocale.html
index 9861b8c0..64ce6770 100644
--- a/doc/devhelp/libxslt-xsltlocale.html
+++ b/doc/devhelp/libxslt-xsltlocale.html
@@ -43,16 +43,13 @@
<p>Author(s): Nick Wellnhofer </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#XSLT_LOCALE_WINAPI">XSLT_LOCALE_WINAPI</a>;
-#define <a href="#XSLT_LOCALE_NONE">XSLT_LOCALE_NONE</a>;
-#define <a href="#XSLT_LOCALE_POSIX">XSLT_LOCALE_POSIX</a>;
-typedef void * <a href="#xsltLocale">xsltLocale</a>;
+ <pre class="synopsis">typedef void * <a href="#xsltLocale">xsltLocale</a>;
typedef xmlChar <a href="#xsltLocaleChar">xsltLocaleChar</a>;
-<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> <a href="#xsltNewLocale">xsltNewLocale</a> (const xmlChar * languageTag);
-int <a href="#xsltLocaleStrcmp">xsltLocaleStrcmp</a> (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale, <br/> const <a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * str1, <br/> const <a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * str2);
-void <a href="#xsltFreeLocale">xsltFreeLocale</a> (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale);
-<a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * <a href="#xsltStrxfrm">xsltStrxfrm</a> (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale, <br/> const xmlChar * string);
+void <a href="#xsltFreeLocale">xsltFreeLocale</a> (void * locale);
void <a href="#xsltFreeLocales">xsltFreeLocales</a> (void);
+int <a href="#xsltLocaleStrcmp">xsltLocaleStrcmp</a> (void * locale, <br/> const xmlChar * str1, <br/> const xmlChar * str2);
+void * <a href="#xsltNewLocale">xsltNewLocale</a> (const xmlChar * languageTag, <br/> int lowerFirst);
+xmlChar * <a href="#xsltStrxfrm">xsltStrxfrm</a> (void * vlocale, <br/> const xmlChar * string);
</pre>
</div>
<div class="refsect1" lang="en">
@@ -61,18 +58,6 @@ void <a href="#xsltFreeLocales">xsltFreeLocales</a> (void);
<div class="refsect1" lang="en">
<h2>Details</h2>
<div class="refsect2" lang="en">
- <div class="refsect2" lang="en"><h3><a name="XSLT_LOCALE_NONE">Macro </a>XSLT_LOCALE_NONE</h3><pre class="programlisting">#define <a href="#XSLT_LOCALE_NONE">XSLT_LOCALE_NONE</a>;
-</pre><p>Macro indicating that there's no extended locale support</p>
-</div>
- <hr/>
- <div class="refsect2" lang="en"><h3><a name="XSLT_LOCALE_POSIX">Macro </a>XSLT_LOCALE_POSIX</h3><pre class="programlisting">#define <a href="#XSLT_LOCALE_POSIX">XSLT_LOCALE_POSIX</a>;
-</pre><p>Macro indicating to use POSIX locale extensions</p>
-</div>
- <hr/>
- <div class="refsect2" lang="en"><h3><a name="XSLT_LOCALE_WINAPI">Macro </a>XSLT_LOCALE_WINAPI</h3><pre class="programlisting">#define <a href="#XSLT_LOCALE_WINAPI">XSLT_LOCALE_WINAPI</a>;
-</pre><p>Macro indicating to use WinAPI for extended locale support</p>
-</div>
- <hr/>
<div class="refsect2" lang="en"><h3><a name="xsltLocale">Typedef </a>xsltLocale</h3><pre class="programlisting">void * xsltLocale;
</pre><p/>
</div>
@@ -81,7 +66,7 @@ void <a href="#xsltFreeLocales">xsltFreeLocales</a> (void);
</pre><p/>
</div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xsltFreeLocale"/>xsltFreeLocale ()</h3><pre class="programlisting">void xsltFreeLocale (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xsltFreeLocale"/>xsltFreeLocale ()</h3><pre class="programlisting">void xsltFreeLocale (void * locale)<br/>
</pre><p>Frees a locale created with <a href="libxslt-xsltlocale.html#xsltNewLocale">xsltNewLocale</a></p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td>the locale to free</td></tr></tbody></table></div></div>
<hr/>
@@ -89,17 +74,17 @@ void <a href="#xsltFreeLocales">xsltFreeLocales</a> (void);
</pre><p>Cleanup function for the locale support on shutdown</p>
</div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xsltLocaleStrcmp"/>xsltLocaleStrcmp ()</h3><pre class="programlisting">int xsltLocaleStrcmp (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale, <br/> const <a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * str1, <br/> const <a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * str2)<br/>
-</pre><p>Compares two strings transformed with <a href="libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a></p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td>a locale identifier</td></tr><tr><td><span class="term"><i><tt>str1</tt></i>:</span></td><td>a string transformed with <a href="libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a></td></tr><tr><td><span class="term"><i><tt>str2</tt></i>:</span></td><td>a string transformed with <a href="libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a value &lt; 0 if str1 sorts before str2, a value &gt; 0 if str1 sorts after str2, 0 if str1 and str2 are equal wrt sorting</td></tr></tbody></table></div></div>
+ <div class="refsect2" lang="en"><h3><a name="xsltLocaleStrcmp"/>xsltLocaleStrcmp ()</h3><pre class="programlisting">int xsltLocaleStrcmp (void * locale, <br/> const xmlChar * str1, <br/> const xmlChar * str2)<br/>
+</pre><p>DEPRECATED: Same as xmlStrcmp. Compares two strings transformed with xsltStrxfrm.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td>unused</td></tr><tr><td><span class="term"><i><tt>str1</tt></i>:</span></td><td>a string transformed with <a href="libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a></td></tr><tr><td><span class="term"><i><tt>str2</tt></i>:</span></td><td>a string transformed with <a href="libxslt-xsltlocale.html#xsltStrxfrm">xsltStrxfrm</a></td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>a value &lt; 0 if str1 sorts before str2, a value &gt; 0 if str1 sorts after str2, 0 if str1 and str2 are equal wrt sorting</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xsltNewLocale"/>xsltNewLocale ()</h3><pre class="programlisting"><a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> xsltNewLocale (const xmlChar * languageTag)<br/>
+ <div class="refsect2" lang="en"><h3><a name="xsltNewLocale"/>xsltNewLocale ()</h3><pre class="programlisting">void * xsltNewLocale (const xmlChar * languageTag, <br/> int lowerFirst)<br/>
</pre><p>Creates a new locale of an opaque system dependent type based on the language tag.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>languageTag</tt></i>:</span></td><td>RFC 3066 language tag</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the locale or NULL on error or if no matching locale was found</td></tr></tbody></table></div></div>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>languageTag</tt></i>:</span></td><td>RFC 3066 language tag</td></tr><tr><td><span class="term"><i><tt>lowerFirst</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the locale or NULL on error or if no matching locale was found</td></tr></tbody></table></div></div>
<hr/>
- <div class="refsect2" lang="en"><h3><a name="xsltStrxfrm"/>xsltStrxfrm ()</h3><pre class="programlisting"><a href="libxslt-xsltlocale.html#xsltLocaleChar">xsltLocaleChar</a> * xsltStrxfrm (<a href="libxslt-xsltlocale.html#xsltLocale">xsltLocale</a> locale, <br/> const xmlChar * string)<br/>
-</pre><p>Transforms a string according to locale. The transformed string must then be compared with <a href="libxslt-xsltlocale.html#xsltLocaleStrcmp">xsltLocaleStrcmp</a> and freed with xmlFree.</p>
-<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>locale</tt></i>:</span></td><td>locale created with <a href="libxslt-xsltlocale.html#xsltNewLocale">xsltNewLocale</a></td></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>UTF-8 string to transform</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the transformed string or NULL on error</td></tr></tbody></table></div></div>
+ <div class="refsect2" lang="en"><h3><a name="xsltStrxfrm"/>xsltStrxfrm ()</h3><pre class="programlisting">xmlChar * xsltStrxfrm (void * vlocale, <br/> const xmlChar * string)<br/>
+</pre><p>Transforms a string according to locale. The transformed string must be freed with xmlFree.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>vlocale</tt></i>:</span></td><td/></tr><tr><td><span class="term"><i><tt>string</tt></i>:</span></td><td>UTF-8 string to transform</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the transformed string or NULL on error</td></tr></tbody></table></div></div>
<hr/>
</div>
</div>
diff --git a/doc/devhelp/libxslt-xsltutils.html b/doc/devhelp/libxslt-xsltutils.html
index 9611b946..59540fe6 100644
--- a/doc/devhelp/libxslt-xsltutils.html
+++ b/doc/devhelp/libxslt-xsltutils.html
@@ -38,55 +38,56 @@
<p>Author(s): Daniel Veillard </p>
<div class="refsynopsisdiv">
<h2>Synopsis</h2>
- <pre class="synopsis">#define <a href="#IS_XSLT_REAL_NODE">IS_XSLT_REAL_NODE</a>;
-#define <a href="#IS_XSLT_ELEM">IS_XSLT_ELEM</a>;
+ <pre class="synopsis">#define <a href="#IS_XSLT_ELEM">IS_XSLT_ELEM</a>;
#define <a href="#IS_XSLT_NAME">IS_XSLT_NAME</a>;
-#define <a href="#XSLT_TODO">XSLT_TODO</a>;
+#define <a href="#IS_XSLT_REAL_NODE">IS_XSLT_REAL_NODE</a>;
#define <a href="#XSLT_STRANGE">XSLT_STRANGE</a>;
#define <a href="#XSLT_TIMESTAMP_TICS_PER_SEC">XSLT_TIMESTAMP_TICS_PER_SEC</a>;
+#define <a href="#XSLT_TODO">XSLT_TODO</a>;
#define <a href="#XSLT_TRACE">XSLT_TRACE</a>;
-typedef enum <a href="#xsltDebugTraceCodes">xsltDebugTraceCodes</a>;
typedef enum <a href="#xsltDebugStatusCodes">xsltDebugStatusCodes</a>;
-int <a href="#xsltSaveResultToFile">xsltSaveResultToFile</a> (FILE * file, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-void <a href="#xsltSetGenericErrorFunc">xsltSetGenericErrorFunc</a> (void * ctx, <br/> xmlGenericErrorFunc handler);
-int <a href="#xsltSetDebuggerCallbacks">xsltSetDebuggerCallbacks</a> (int no, <br/> void * block);
-int <a href="#xsltSaveResultTo">xsltSaveResultTo</a> (xmlOutputBufferPtr buf, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-void <a href="#xsltTransformError">xsltTransformError</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node, <br/> const char * msg, <br/> ... ...);
+typedef enum <a href="#xsltDebugTraceCodes">xsltDebugTraceCodes</a>;
int <a href="#xslAddCall">xslAddCall</a> (<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> xmlNodePtr source);
-void <a href="#xsltDocumentSortFunction">xsltDocumentSortFunction</a> (xmlNodeSetPtr list);
-const xmlChar * <a href="#xsltGetQNameURI2">xsltGetQNameURI2</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node, <br/> const xmlChar ** name);
+void <a href="#xslDropCall">xslDropCall</a> (void);
+typedef int <a href="#xsltAddCallCallback">xsltAddCallCallback</a> (<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> xmlNodePtr source);
+void <a href="#xsltCalibrateAdjust">xsltCalibrateAdjust</a> (long delta);
xmlXPathObjectPtr * <a href="#xsltComputeSortResult">xsltComputeSortResult</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr sort);
-void <a href="#xsltPrintErrorContext">xsltPrintErrorContext</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node);
-int <a href="#xsltGetUTF8Char">xsltGetUTF8Char</a> (const unsigned char * utf, <br/> int * len);
+<a href="libxslt-xsltutils.html#xsltDebugTraceCodes">xsltDebugTraceCodes</a> <a href="#xsltDebugGetDefaultTrace">xsltDebugGetDefaultTrace</a> (void);
+void <a href="#xsltDebugSetDefaultTrace">xsltDebugSetDefaultTrace</a> (<a href="libxslt-xsltutils.html#xsltDebugTraceCodes">xsltDebugTraceCodes</a> val);
void <a href="#xsltDefaultSortFunction">xsltDefaultSortFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts);
-int <a href="#xsltSaveResultToFd">xsltSaveResultToFd</a> (int fd, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
-void <a href="#xsltSetCtxtSortFunc">xsltSetCtxtSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler);
-xmlChar * <a href="#xsltGetNsProp">xsltGetNsProp</a> (xmlNodePtr node, <br/> const xmlChar * name, <br/> const xmlChar * nameSpace);
+void <a href="#xsltDoSortFunction">xsltDoSortFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts);
+void <a href="#xsltDocumentSortFunction">xsltDocumentSortFunction</a> (xmlNodeSetPtr list);
+typedef void <a href="#xsltDropCallCallback">xsltDropCallCallback</a> (void);
const xmlChar * <a href="#xsltGetCNsProp">xsltGetCNsProp</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node, <br/> const xmlChar * name, <br/> const xmlChar * nameSpace);
+int <a href="#xsltGetDebuggerStatus">xsltGetDebuggerStatus</a> (void);
+xmlChar * <a href="#xsltGetNsProp">xsltGetNsProp</a> (xmlNodePtr node, <br/> const xmlChar * name, <br/> const xmlChar * nameSpace);
+xmlDocPtr <a href="#xsltGetProfileInformation">xsltGetProfileInformation</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
const xmlChar * <a href="#xsltGetQNameURI">xsltGetQNameURI</a> (xmlNodePtr node, <br/> xmlChar ** name);
-typedef int <a href="#xsltAddCallCallback">xsltAddCallCallback</a> (<a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> xmlNodePtr source);
-void <a href="#xsltCalibrateAdjust">xsltCalibrateAdjust</a> (long delta);
+const xmlChar * <a href="#xsltGetQNameURI2">xsltGetQNameURI2</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node, <br/> const xmlChar ** name);
+int <a href="#xsltGetUTF8Char">xsltGetUTF8Char</a> (const unsigned char * utf, <br/> int * len);
+typedef void <a href="#xsltHandleDebuggerCallback">xsltHandleDebuggerCallback</a> (xmlNodePtr cur, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
+void <a href="#xsltMessage">xsltMessage</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst);
+void <a href="#xsltPrintErrorContext">xsltPrintErrorContext</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node);
void <a href="#xsltSaveProfiling">xsltSaveProfiling</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> FILE * output);
+int <a href="#xsltSaveResultTo">xsltSaveResultTo</a> (xmlOutputBufferPtr buf, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+int <a href="#xsltSaveResultToFd">xsltSaveResultToFd</a> (int fd, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+int <a href="#xsltSaveResultToFile">xsltSaveResultToFile</a> (FILE * file, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+int <a href="#xsltSaveResultToFilename">xsltSaveResultToFilename</a> (const char * URL, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> int compression);
int <a href="#xsltSaveResultToString">xsltSaveResultToString</a> (xmlChar ** doc_txt_ptr, <br/> int * doc_txt_len, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style);
+void <a href="#xsltSetCtxtLocaleHandlers">xsltSetCtxtLocaleHandlers</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltNewLocaleFunc">xsltNewLocaleFunc</a> newLocale, <br/> <a href="libxslt-xsltInternals.html#xsltFreeLocaleFunc">xsltFreeLocaleFunc</a> freeLocale, <br/> <a href="libxslt-xsltInternals.html#xsltGenSortKeyFunc">xsltGenSortKeyFunc</a> genSortKey);
+int <a href="#xsltSetCtxtParseOptions">xsltSetCtxtParseOptions</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> int options);
+void <a href="#xsltSetCtxtSortFunc">xsltSetCtxtSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler);
+int <a href="#xsltSetDebuggerCallbacks">xsltSetDebuggerCallbacks</a> (int no, <br/> void * block);
+void <a href="#xsltSetDebuggerStatus">xsltSetDebuggerStatus</a> (int value);
+void <a href="#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a> (void * ctx, <br/> xmlGenericErrorFunc handler);
+void <a href="#xsltSetGenericErrorFunc">xsltSetGenericErrorFunc</a> (void * ctx, <br/> xmlGenericErrorFunc handler);
+void <a href="#xsltSetSortFunc">xsltSetSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler);
+void <a href="#xsltSetTransformErrorFunc">xsltSetTransformErrorFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> void * ctx, <br/> xmlGenericErrorFunc handler);
const xmlChar * <a href="#xsltSplitQName">xsltSplitQName</a> (xmlDictPtr dict, <br/> const xmlChar * name, <br/> const xmlChar ** prefix);
-void <a href="#xsltDoSortFunction">xsltDoSortFunction</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr * sorts, <br/> int nbsorts);
-<a href="libxslt-xsltutils.html#xsltDebugTraceCodes">xsltDebugTraceCodes</a> <a href="#xsltDebugGetDefaultTrace">xsltDebugGetDefaultTrace</a> (void);
-void <a href="#xsltMessage">xsltMessage</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> xmlNodePtr node, <br/> xmlNodePtr inst);
-int <a href="#xsltGetDebuggerStatus">xsltGetDebuggerStatus</a> (void);
long <a href="#xsltTimestamp">xsltTimestamp</a> (void);
-void <a href="#xsltSetTransformErrorFunc">xsltSetTransformErrorFunc</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> void * ctx, <br/> xmlGenericErrorFunc handler);
+void <a href="#xsltTransformError">xsltTransformError</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> xmlNodePtr node, <br/> const char * msg, <br/> ... ...);
xmlXPathCompExprPtr <a href="#xsltXPathCompile">xsltXPathCompile</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * str);
-void <a href="#xsltDebugSetDefaultTrace">xsltDebugSetDefaultTrace</a> (<a href="libxslt-xsltutils.html#xsltDebugTraceCodes">xsltDebugTraceCodes</a> val);
-void <a href="#xsltSetGenericDebugFunc">xsltSetGenericDebugFunc</a> (void * ctx, <br/> xmlGenericErrorFunc handler);
xmlXPathCompExprPtr <a href="#xsltXPathCompileFlags">xsltXPathCompileFlags</a> (<a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> const xmlChar * str, <br/> int flags);
-int <a href="#xsltSetCtxtParseOptions">xsltSetCtxtParseOptions</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> int options);
-void <a href="#xsltSetDebuggerStatus">xsltSetDebuggerStatus</a> (int value);
-void <a href="#xslDropCall">xslDropCall</a> (void);
-void <a href="#xsltSetSortFunc">xsltSetSortFunc</a> (<a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler);
-typedef void <a href="#xsltHandleDebuggerCallback">xsltHandleDebuggerCallback</a> (xmlNodePtr cur, <br/> xmlNodePtr node, <br/> <a href="libxslt-xsltInternals.html#xsltTemplatePtr">xsltTemplatePtr</a> templ, <br/> <a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
-int <a href="#xsltSaveResultToFilename">xsltSaveResultToFilename</a> (const char * URL, <br/> xmlDocPtr result, <br/> <a href="libxslt-xsltInternals.html#xsltStylesheetPtr">xsltStylesheetPtr</a> style, <br/> int compression);
-typedef void <a href="#xsltDropCallCallback">xsltDropCallCallback</a> (void);
-xmlDocPtr <a href="#xsltGetProfileInformation">xsltGetProfileInformation</a> (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt);
</pre>
</div>
<div class="refsect1" lang="en">
@@ -290,12 +291,16 @@ xmlDocPtr <a href="#xsltGetProfileInformation">xsltGetProfileInformation</a> (<a
</pre><p>Save the result @result obtained by applying the @style stylesheet to a new allocated string.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>doc_txt_ptr</tt></i>:</span></td><td>Memory pointer for allocated XML text</td></tr><tr><td><span class="term"><i><tt>doc_txt_len</tt></i>:</span></td><td>Length of the generated XML text</td></tr><tr><td><span class="term"><i><tt>result</tt></i>:</span></td><td>the result xmlDocPtr</td></tr><tr><td><span class="term"><i><tt>style</tt></i>:</span></td><td>the stylesheet</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>0 in case of success and -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
+ <div class="refsect2" lang="en"><h3><a name="xsltSetCtxtLocaleHandlers"/>xsltSetCtxtLocaleHandlers ()</h3><pre class="programlisting">void xsltSetCtxtLocaleHandlers (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltNewLocaleFunc">xsltNewLocaleFunc</a> newLocale, <br/> <a href="libxslt-xsltInternals.html#xsltFreeLocaleFunc">xsltFreeLocaleFunc</a> freeLocale, <br/> <a href="libxslt-xsltInternals.html#xsltGenSortKeyFunc">xsltGenSortKeyFunc</a> genSortKey)<br/>
+</pre><p>Set the locale handlers.</p>
+<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>an XSLT transform context</td></tr><tr><td><span class="term"><i><tt>newLocale</tt></i>:</span></td><td>locale constructor</td></tr><tr><td><span class="term"><i><tt>freeLocale</tt></i>:</span></td><td>locale destructor</td></tr><tr><td><span class="term"><i><tt>genSortKey</tt></i>:</span></td><td>sort key generator</td></tr></tbody></table></div></div>
+ <hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSetCtxtParseOptions"/>xsltSetCtxtParseOptions ()</h3><pre class="programlisting">int xsltSetCtxtParseOptions (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> int options)<br/>
</pre><p>Change the default parser option passed by the XSLT engine to the parser when using document() loading.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT process context</td></tr><tr><td><span class="term"><i><tt>options</tt></i>:</span></td><td>a combination of libxml2 xmlParserOption</td></tr><tr><td><span class="term"><i><tt>Returns</tt></i>:</span></td><td>the previous options or -1 in case of error</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSetCtxtSortFunc"/>xsltSetCtxtSortFunc ()</h3><pre class="programlisting">void xsltSetCtxtSortFunc (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> <a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler)<br/>
-</pre><p>Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called</p>
+</pre><p>DEPRECATED: Use xsltSetCtxtLocaleHandlers. Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctxt</tt></i>:</span></td><td>a XSLT process context</td></tr><tr><td><span class="term"><i><tt>handler</tt></i>:</span></td><td>the new handler function</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSetDebuggerCallbacks"/>xsltSetDebuggerCallbacks ()</h3><pre class="programlisting">int xsltSetDebuggerCallbacks (int no, <br/> void * block)<br/>
@@ -315,7 +320,7 @@ xmlDocPtr <a href="#xsltGetProfileInformation">xsltGetProfileInformation</a> (<a
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>ctx</tt></i>:</span></td><td>the new error handling context</td></tr><tr><td><span class="term"><i><tt>handler</tt></i>:</span></td><td>the new handler function</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSetSortFunc"/>xsltSetSortFunc ()</h3><pre class="programlisting">void xsltSetSortFunc (<a href="libxslt-xsltInternals.html#xsltSortFunc">xsltSortFunc</a> handler)<br/>
-</pre><p>Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used.</p>
+</pre><p>DEPRECATED: Use xsltSetCtxtLocaleHandlers. Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used.</p>
<div class="variablelist"><table border="0"><col align="left"/><tbody><tr><td><span class="term"><i><tt>handler</tt></i>:</span></td><td>the new handler function</td></tr></tbody></table></div></div>
<hr/>
<div class="refsect2" lang="en"><h3><a name="xsltSetTransformErrorFunc"/>xsltSetTransformErrorFunc ()</h3><pre class="programlisting">void xsltSetTransformErrorFunc (<a href="libxslt-xsltInternals.html#xsltTransformContextPtr">xsltTransformContextPtr</a> ctxt, <br/> void * ctx, <br/> xmlGenericErrorFunc handler)<br/>
diff --git a/doc/devhelp/libxslt.devhelp2 b/doc/devhelp/libxslt.devhelp2
index 40295fab..230c772d 100644
--- a/doc/devhelp/libxslt.devhelp2
+++ b/doc/devhelp/libxslt.devhelp2
@@ -57,9 +57,6 @@
<keyword type="macro" name="XSLT_ITEM_NAVIGATION_FIELDS" link="libxslt-xsltInternals.html#XSLT_ITEM_NAVIGATION_FIELDS"/>
<keyword type="macro" name="XSLT_ITEM_NSINSCOPE_FIELDS" link="libxslt-xsltInternals.html#XSLT_ITEM_NSINSCOPE_FIELDS"/>
<keyword type="macro" name="XSLT_LIBXSLT_NAMESPACE" link="libxslt-extra.html#XSLT_LIBXSLT_NAMESPACE"/>
- <keyword type="macro" name="XSLT_LOCALE_NONE" link="libxslt-xsltlocale.html#XSLT_LOCALE_NONE"/>
- <keyword type="macro" name="XSLT_LOCALE_POSIX" link="libxslt-xsltlocale.html#XSLT_LOCALE_POSIX"/>
- <keyword type="macro" name="XSLT_LOCALE_WINAPI" link="libxslt-xsltlocale.html#XSLT_LOCALE_WINAPI"/>
<keyword type="macro" name="XSLT_MARK_RES_TREE_FRAG" link="libxslt-xsltInternals.html#XSLT_MARK_RES_TREE_FRAG"/>
<keyword type="macro" name="XSLT_MAX_SORT" link="libxslt-xsltInternals.html#XSLT_MAX_SORT"/>
<keyword type="macro" name="XSLT_NAMESPACE" link="libxslt-xslt.html#XSLT_NAMESPACE"/>
@@ -286,7 +283,10 @@
<keyword type="function" name="xsltElemPreCompDeallocator" link="libxslt-xsltInternals.html#xsltElemPreCompDeallocator"/>
<keyword type="function" name="xsltExtInitFunction" link="libxslt-extensions.html#xsltExtInitFunction"/>
<keyword type="function" name="xsltExtShutdownFunction" link="libxslt-extensions.html#xsltExtShutdownFunction"/>
+ <keyword type="function" name="xsltFreeLocaleFunc" link="libxslt-xsltInternals.html#xsltFreeLocaleFunc"/>
+ <keyword type="function" name="xsltGenSortKeyFunc" link="libxslt-xsltInternals.html#xsltGenSortKeyFunc"/>
<keyword type="function" name="xsltHandleDebuggerCallback" link="libxslt-xsltutils.html#xsltHandleDebuggerCallback"/>
+ <keyword type="function" name="xsltNewLocaleFunc" link="libxslt-xsltInternals.html#xsltNewLocaleFunc"/>
<keyword type="function" name="xsltPreComputeFunction" link="libxslt-extensions.html#xsltPreComputeFunction"/>
<keyword type="function" name="xsltSecurityCheck" link="libxslt-security.html#xsltSecurityCheck"/>
<keyword type="function" name="xsltSortFunc" link="libxslt-xsltInternals.html#xsltSortFunc"/>
@@ -514,6 +514,7 @@
<keyword type="function" name="xsltSaveResultToString ()" link="libxslt-xsltutils.html#xsltSaveResultToString"/>
<keyword type="function" name="xsltSecurityAllow ()" link="libxslt-security.html#xsltSecurityAllow"/>
<keyword type="function" name="xsltSecurityForbid ()" link="libxslt-security.html#xsltSecurityForbid"/>
+ <keyword type="function" name="xsltSetCtxtLocaleHandlers ()" link="libxslt-xsltutils.html#xsltSetCtxtLocaleHandlers"/>
<keyword type="function" name="xsltSetCtxtParseOptions ()" link="libxslt-xsltutils.html#xsltSetCtxtParseOptions"/>
<keyword type="function" name="xsltSetCtxtSecurityPrefs ()" link="libxslt-security.html#xsltSetCtxtSecurityPrefs"/>
<keyword type="function" name="xsltSetCtxtSortFunc ()" link="libxslt-xsltutils.html#xsltSetCtxtSortFunc"/>
diff --git a/doc/libxslt-api.xml b/doc/libxslt-api.xml
index 785eeafc..70deb993 100644
--- a/doc/libxslt-api.xml
+++ b/doc/libxslt-api.xml
@@ -5,137 +5,137 @@
<summary>interface for the XSLT attribute handling</summary>
<description>this module handles the specificities of attribute and attribute groups processing. </description>
<author>Daniel Veillard </author>
- <exports symbol='xsltResolveStylesheetAttributeSet' type='function'/>
- <exports symbol='xsltParseStylesheetAttributeSet' type='function'/>
<exports symbol='xsltApplyAttributeSet' type='function'/>
<exports symbol='xsltFreeAttributeSetsHashes' type='function'/>
+ <exports symbol='xsltParseStylesheetAttributeSet' type='function'/>
+ <exports symbol='xsltResolveStylesheetAttributeSet' type='function'/>
</file>
<file name='documents'>
<summary>interface for the document handling</summary>
<description>implements document loading and cache (multiple document() reference for the same resources must be equal. </description>
<author>Daniel Veillard </author>
- <exports symbol='XSLT_LOAD_START' type='enum'/>
<exports symbol='XSLT_LOAD_DOCUMENT' type='enum'/>
+ <exports symbol='XSLT_LOAD_START' type='enum'/>
<exports symbol='XSLT_LOAD_STYLESHEET' type='enum'/>
<exports symbol='xsltLoadType' type='typedef'/>
<exports symbol='xsltDocDefaultLoader' type='variable'/>
- <exports symbol='xsltFreeStyleDocuments' type='function'/>
<exports symbol='xsltDocLoaderFunc' type='function'/>
+ <exports symbol='xsltFindDocument' type='function'/>
+ <exports symbol='xsltFreeDocuments' type='function'/>
+ <exports symbol='xsltFreeStyleDocuments' type='function'/>
<exports symbol='xsltLoadDocument' type='function'/>
+ <exports symbol='xsltLoadStyleDocument' type='function'/>
+ <exports symbol='xsltNewDocument' type='function'/>
<exports symbol='xsltNewStyleDocument' type='function'/>
<exports symbol='xsltSetLoaderFunc' type='function'/>
- <exports symbol='xsltFreeDocuments' type='function'/>
- <exports symbol='xsltNewDocument' type='function'/>
- <exports symbol='xsltLoadStyleDocument' type='function'/>
- <exports symbol='xsltFindDocument' type='function'/>
</file>
<file name='extensions'>
<summary>interface for the extension support</summary>
<description>This provide the API needed for simple and module extension support. </description>
<author>Daniel Veillard </author>
- <exports symbol='xsltRegisterExtFunction' type='function'/>
- <exports symbol='xsltRegisterExtModuleElement' type='function'/>
- <exports symbol='xsltInitCtxtExts' type='function'/>
- <exports symbol='xsltGetExtData' type='function'/>
- <exports symbol='xsltStyleGetExtData' type='function'/>
- <exports symbol='xsltStyleExtInitFunction' type='function'/>
- <exports symbol='xsltInitGlobals' type='function'/>
- <exports symbol='xsltShutdownExts' type='function'/>
- <exports symbol='xsltExtModuleElementPreComputeLookup' type='function'/>
- <exports symbol='xsltRegisterTestModule' type='function'/>
- <exports symbol='xsltStyleStylesheetLevelGetExtData' type='function'/>
- <exports symbol='xsltExtModuleElementLookup' type='function'/>
- <exports symbol='xsltStyleExtShutdownFunction' type='function'/>
- <exports symbol='xsltInitElemPreComp' type='function'/>
+ <exports symbol='xsltCheckExtPrefix' type='function'/>
+ <exports symbol='xsltCheckExtURI' type='function'/>
<exports symbol='xsltDebugDumpExtensions' type='function'/>
- <exports symbol='xsltGetExtInfo' type='function'/>
+ <exports symbol='xsltExtElementLookup' type='function'/>
+ <exports symbol='xsltExtInitFunction' type='function'/>
+ <exports symbol='xsltExtModuleElementLookup' type='function'/>
+ <exports symbol='xsltExtModuleElementPreComputeLookup' type='function'/>
+ <exports symbol='xsltExtModuleFunctionLookup' type='function'/>
<exports symbol='xsltExtModuleTopLevelLookup' type='function'/>
+ <exports symbol='xsltExtShutdownFunction' type='function'/>
+ <exports symbol='xsltFreeCtxtExts' type='function'/>
<exports symbol='xsltFreeExts' type='function'/>
- <exports symbol='xsltCheckExtURI' type='function'/>
- <exports symbol='xsltExtModuleFunctionLookup' type='function'/>
+ <exports symbol='xsltGetExtData' type='function'/>
+ <exports symbol='xsltGetExtInfo' type='function'/>
+ <exports symbol='xsltInitCtxtExts' type='function'/>
+ <exports symbol='xsltInitElemPreComp' type='function'/>
+ <exports symbol='xsltInitGlobals' type='function'/>
+ <exports symbol='xsltNewElemPreComp' type='function'/>
<exports symbol='xsltPreComputeExtModuleElement' type='function'/>
- <exports symbol='xsltRegisterExtModuleTopLevel' type='function'/>
<exports symbol='xsltPreComputeFunction' type='function'/>
- <exports symbol='xsltTopLevelFunction' type='function'/>
- <exports symbol='xsltShutdownCtxtExts' type='function'/>
- <exports symbol='xsltXPathGetTransformContext' type='function'/>
<exports symbol='xsltRegisterExtElement' type='function'/>
- <exports symbol='xsltExtInitFunction' type='function'/>
- <exports symbol='xsltFreeCtxtExts' type='function'/>
- <exports symbol='xsltUnregisterExtModule' type='function'/>
- <exports symbol='xsltRegisterExtModuleFull' type='function'/>
- <exports symbol='xsltUnregisterExtModuleTopLevel' type='function'/>
- <exports symbol='xsltNewElemPreComp' type='function'/>
- <exports symbol='xsltUnregisterExtModuleElement' type='function'/>
- <exports symbol='xsltUnregisterExtModuleFunction' type='function'/>
- <exports symbol='xsltCheckExtPrefix' type='function'/>
+ <exports symbol='xsltRegisterExtFunction' type='function'/>
<exports symbol='xsltRegisterExtModule' type='function'/>
- <exports symbol='xsltExtElementLookup' type='function'/>
+ <exports symbol='xsltRegisterExtModuleElement' type='function'/>
+ <exports symbol='xsltRegisterExtModuleFull' type='function'/>
<exports symbol='xsltRegisterExtModuleFunction' type='function'/>
+ <exports symbol='xsltRegisterExtModuleTopLevel' type='function'/>
<exports symbol='xsltRegisterExtPrefix' type='function'/>
- <exports symbol='xsltExtShutdownFunction' type='function'/>
+ <exports symbol='xsltRegisterTestModule' type='function'/>
+ <exports symbol='xsltShutdownCtxtExts' type='function'/>
+ <exports symbol='xsltShutdownExts' type='function'/>
+ <exports symbol='xsltStyleExtInitFunction' type='function'/>
+ <exports symbol='xsltStyleExtShutdownFunction' type='function'/>
+ <exports symbol='xsltStyleGetExtData' type='function'/>
+ <exports symbol='xsltStyleStylesheetLevelGetExtData' type='function'/>
+ <exports symbol='xsltTopLevelFunction' type='function'/>
+ <exports symbol='xsltUnregisterExtModule' type='function'/>
+ <exports symbol='xsltUnregisterExtModuleElement' type='function'/>
+ <exports symbol='xsltUnregisterExtModuleFunction' type='function'/>
+ <exports symbol='xsltUnregisterExtModuleTopLevel' type='function'/>
+ <exports symbol='xsltXPathGetTransformContext' type='function'/>
</file>
<file name='extra'>
<summary>interface for the non-standard features</summary>
<description>implement some extension outside the XSLT namespace but not EXSLT with is in a different library. </description>
<author>Daniel Veillard </author>
- <exports symbol='XSLT_XT_NAMESPACE' type='macro'/>
- <exports symbol='XSLT_XALAN_NAMESPACE' type='macro'/>
- <exports symbol='XSLT_SAXON_NAMESPACE' type='macro'/>
<exports symbol='XSLT_LIBXSLT_NAMESPACE' type='macro'/>
- <exports symbol='xsltFunctionNodeSet' type='function'/>
- <exports symbol='xsltRegisterExtras' type='function'/>
+ <exports symbol='XSLT_SAXON_NAMESPACE' type='macro'/>
+ <exports symbol='XSLT_XALAN_NAMESPACE' type='macro'/>
+ <exports symbol='XSLT_XT_NAMESPACE' type='macro'/>
<exports symbol='xsltDebug' type='function'/>
+ <exports symbol='xsltFunctionNodeSet' type='function'/>
<exports symbol='xsltRegisterAllExtras' type='function'/>
+ <exports symbol='xsltRegisterExtras' type='function'/>
</file>
<file name='functions'>
<summary>interface for the XSLT functions not from XPath</summary>
<description>a set of extra functions coming from XSLT but not in XPath </description>
<author>Daniel Veillard and Bjorn Reese &lt;breese@users.sourceforge.net&gt; </author>
<exports symbol='XSLT_REGISTER_FUNCTION_LOOKUP' type='macro'/>
- <exports symbol='xsltXPathFunctionLookup' type='function'/>
- <exports symbol='xsltFunctionAvailableFunction' type='function'/>
- <exports symbol='xsltFormatNumberFunction' type='function'/>
- <exports symbol='xsltRegisterAllFunctions' type='function'/>
- <exports symbol='xsltKeyFunction' type='function'/>
- <exports symbol='xsltUnparsedEntityURIFunction' type='function'/>
<exports symbol='xsltDocumentFunction' type='function'/>
- <exports symbol='xsltSystemPropertyFunction' type='function'/>
<exports symbol='xsltElementAvailableFunction' type='function'/>
+ <exports symbol='xsltFormatNumberFunction' type='function'/>
+ <exports symbol='xsltFunctionAvailableFunction' type='function'/>
<exports symbol='xsltGenerateIdFunction' type='function'/>
+ <exports symbol='xsltKeyFunction' type='function'/>
+ <exports symbol='xsltRegisterAllFunctions' type='function'/>
+ <exports symbol='xsltSystemPropertyFunction' type='function'/>
+ <exports symbol='xsltUnparsedEntityURIFunction' type='function'/>
+ <exports symbol='xsltXPathFunctionLookup' type='function'/>
</file>
<file name='imports'>
<summary>interface for the XSLT import support</summary>
<description>macros and fuctions needed to implement and access the import tree </description>
<author>Daniel Veillard </author>
- <exports symbol='XSLT_GET_IMPORT_PTR' type='macro'/>
<exports symbol='XSLT_GET_IMPORT_INT' type='macro'/>
+ <exports symbol='XSLT_GET_IMPORT_PTR' type='macro'/>
+ <exports symbol='xsltFindElemSpaceHandling' type='function'/>
<exports symbol='xsltFindTemplate' type='function'/>
- <exports symbol='xsltNextImport' type='function'/>
- <exports symbol='xsltParseStylesheetInclude' type='function'/>
<exports symbol='xsltNeedElemSpaceHandling' type='function'/>
- <exports symbol='xsltFindElemSpaceHandling' type='function'/>
+ <exports symbol='xsltNextImport' type='function'/>
<exports symbol='xsltParseStylesheetImport' type='function'/>
+ <exports symbol='xsltParseStylesheetInclude' type='function'/>
</file>
<file name='keys'>
<summary>interface for the key matching used in key() and template matches.</summary>
<description>implementation of the key mechanims. </description>
<author>Daniel Veillard </author>
<exports symbol='NODE_IS_KEYED' type='macro'/>
- <exports symbol='xsltInitCtxtKeys' type='function'/>
+ <exports symbol='xsltAddKey' type='function'/>
+ <exports symbol='xsltFreeDocumentKeys' type='function'/>
<exports symbol='xsltFreeKeys' type='function'/>
<exports symbol='xsltGetKey' type='function'/>
- <exports symbol='xsltFreeDocumentKeys' type='function'/>
- <exports symbol='xsltAddKey' type='function'/>
+ <exports symbol='xsltInitCtxtKeys' type='function'/>
</file>
<file name='namespaces'>
<summary>interface for the XSLT namespace handling</summary>
<description>set of function easing the processing and generation of namespace nodes in XSLT. </description>
<author>Daniel Veillard </author>
<exports symbol='UNDEFINED_DEFAULT_NS' type='macro'/>
- <exports symbol='xsltFreeNamespaceAliasHashes' type='function'/>
<exports symbol='xsltCopyNamespace' type='function'/>
<exports symbol='xsltCopyNamespaceList' type='function'/>
+ <exports symbol='xsltFreeNamespaceAliasHashes' type='function'/>
<exports symbol='xsltGetNamespace' type='function'/>
<exports symbol='xsltGetPlainNamespace' type='function'/>
<exports symbol='xsltGetSpecialNamespace' type='function'/>
@@ -146,12 +146,12 @@
<description>Implementation of the XSLT number functions </description>
<author>Bjorn Reese &lt;breese@users.sourceforge.net&gt; and Daniel Veillard </author>
<exports symbol='xsltFormatNumberInfo' type='typedef'/>
+ <exports symbol='xsltFormatNumberInfoPtr' type='typedef'/>
<exports symbol='xsltNumberData' type='typedef'/>
<exports symbol='xsltNumberDataPtr' type='typedef'/>
- <exports symbol='xsltFormatNumberInfoPtr' type='typedef'/>
- <exports symbol='_xsltNumberData' type='struct'/>
<exports symbol='_xsltCompMatch' type='struct'/>
<exports symbol='_xsltFormatNumberInfo' type='struct'/>
+ <exports symbol='_xsltNumberData' type='struct'/>
</file>
<file name='pattern'>
<summary>interface for the pattern matching used in template matches.</summary>
@@ -159,24 +159,24 @@
<author>Daniel Veillard </author>
<exports symbol='xsltCompMatch' type='typedef'/>
<exports symbol='xsltCompMatchPtr' type='typedef'/>
- <exports symbol='xsltNormalizeCompSteps' type='function'/>
<exports symbol='xsltAddTemplate' type='function'/>
- <exports symbol='xsltCompilePattern' type='function'/>
- <exports symbol='xsltMatchPattern' type='function'/>
- <exports symbol='xsltGetTemplate' type='function'/>
+ <exports symbol='xsltCleanupTemplates' type='function'/>
<exports symbol='xsltCompMatchClearCache' type='function'/>
- <exports symbol='xsltTestCompMatchList' type='function'/>
+ <exports symbol='xsltCompilePattern' type='function'/>
<exports symbol='xsltFreeCompMatchList' type='function'/>
<exports symbol='xsltFreeTemplateHashes' type='function'/>
- <exports symbol='xsltCleanupTemplates' type='function'/>
+ <exports symbol='xsltGetTemplate' type='function'/>
+ <exports symbol='xsltMatchPattern' type='function'/>
+ <exports symbol='xsltNormalizeCompSteps' type='function'/>
+ <exports symbol='xsltTestCompMatchList' type='function'/>
</file>
<file name='preproc'>
<summary>precomputing stylesheets</summary>
<description>this is the compilation phase, where most of the stylesheet is &quot;compiled&quot; into faster to use data. </description>
<author>Daniel Veillard </author>
<exports symbol='xsltExtMarker' type='variable'/>
- <exports symbol='xsltFreeStylePreComps' type='function'/>
<exports symbol='xsltDocumentComp' type='function'/>
+ <exports symbol='xsltFreeStylePreComps' type='function'/>
<exports symbol='xsltStylePreCompute' type='function'/>
</file>
<file name='security'>
@@ -184,80 +184,80 @@
<description>the libxslt security framework allow to restrict the access to new resources (file or URL) from the stylesheet at runtime. </description>
<author>Daniel Veillard </author>
<exports symbol='XSLT_SECPREF_CREATE_DIRECTORY' type='enum'/>
- <exports symbol='XSLT_SECPREF_WRITE_FILE' type='enum'/>
- <exports symbol='XSLT_SECPREF_READ_NETWORK' type='enum'/>
<exports symbol='XSLT_SECPREF_READ_FILE' type='enum'/>
+ <exports symbol='XSLT_SECPREF_READ_NETWORK' type='enum'/>
+ <exports symbol='XSLT_SECPREF_WRITE_FILE' type='enum'/>
<exports symbol='XSLT_SECPREF_WRITE_NETWORK' type='enum'/>
+ <exports symbol='xsltSecurityOption' type='typedef'/>
<exports symbol='xsltSecurityPrefs' type='typedef'/>
<exports symbol='xsltSecurityPrefsPtr' type='typedef'/>
- <exports symbol='xsltSecurityOption' type='typedef'/>
- <exports symbol='xsltNewSecurityPrefs' type='function'/>
- <exports symbol='xsltSecurityCheck' type='function'/>
- <exports symbol='xsltSetSecurityPrefs' type='function'/>
- <exports symbol='xsltGetDefaultSecurityPrefs' type='function'/>
+ <exports symbol='xsltCheckRead' type='function'/>
+ <exports symbol='xsltCheckWrite' type='function'/>
<exports symbol='xsltFreeSecurityPrefs' type='function'/>
- <exports symbol='xsltSetDefaultSecurityPrefs' type='function'/>
- <exports symbol='xsltSetCtxtSecurityPrefs' type='function'/>
+ <exports symbol='xsltGetDefaultSecurityPrefs' type='function'/>
<exports symbol='xsltGetSecurityPrefs' type='function'/>
+ <exports symbol='xsltNewSecurityPrefs' type='function'/>
<exports symbol='xsltSecurityAllow' type='function'/>
- <exports symbol='xsltCheckWrite' type='function'/>
- <exports symbol='xsltCheckRead' type='function'/>
+ <exports symbol='xsltSecurityCheck' type='function'/>
<exports symbol='xsltSecurityForbid' type='function'/>
+ <exports symbol='xsltSetCtxtSecurityPrefs' type='function'/>
+ <exports symbol='xsltSetDefaultSecurityPrefs' type='function'/>
+ <exports symbol='xsltSetSecurityPrefs' type='function'/>
</file>
<file name='templates'>
<summary>interface for the template processing</summary>
<description>This set of routine encapsulates XPath calls and Attribute Value Templates evaluation. </description>
<author>Daniel Veillard </author>
- <exports symbol='xsltEvalStaticAttrValueTemplate' type='function'/>
<exports symbol='xsltAttrListTemplateProcess' type='function'/>
- <exports symbol='xsltEvalTemplateString' type='function'/>
- <exports symbol='xsltAttrTemplateValueProcess' type='function'/>
<exports symbol='xsltAttrTemplateProcess' type='function'/>
+ <exports symbol='xsltAttrTemplateValueProcess' type='function'/>
+ <exports symbol='xsltAttrTemplateValueProcessNode' type='function'/>
<exports symbol='xsltEvalAttrValueTemplate' type='function'/>
+ <exports symbol='xsltEvalStaticAttrValueTemplate' type='function'/>
+ <exports symbol='xsltEvalTemplateString' type='function'/>
<exports symbol='xsltEvalXPathPredicate' type='function'/>
- <exports symbol='xsltAttrTemplateValueProcessNode' type='function'/>
- <exports symbol='xsltTemplateProcess' type='function'/>
- <exports symbol='xsltEvalXPathStringNs' type='function'/>
<exports symbol='xsltEvalXPathString' type='function'/>
+ <exports symbol='xsltEvalXPathStringNs' type='function'/>
+ <exports symbol='xsltTemplateProcess' type='function'/>
</file>
<file name='transform'>
<summary>the XSLT engine transformation part.</summary>
<description>This module implements the bulk of the actual</description>
<author>Daniel Veillard </author>
- <exports symbol='xsltValueOf' type='function'/>
- <exports symbol='xsltRegisterAllElement' type='function'/>
- <exports symbol='xsltSort' type='function'/>
- <exports symbol='xsltSetXIncludeDefault' type='function'/>
- <exports symbol='xsltCopyOf' type='function'/>
+ <exports symbol='xslHandleDebugger' type='function'/>
+ <exports symbol='xsltApplyImports' type='function'/>
+ <exports symbol='xsltApplyOneTemplate' type='function'/>
+ <exports symbol='xsltApplyStripSpaces' type='function'/>
+ <exports symbol='xsltApplyStylesheet' type='function'/>
+ <exports symbol='xsltApplyStylesheetUser' type='function'/>
<exports symbol='xsltApplyTemplates' type='function'/>
- <exports symbol='xsltIf' type='function'/>
+ <exports symbol='xsltAttribute' type='function'/>
<exports symbol='xsltCallTemplate' type='function'/>
- <exports symbol='xsltApplyStylesheet' type='function'/>
- <exports symbol='xsltApplyStripSpaces' type='function'/>
- <exports symbol='xsltLocalVariablePush' type='function'/>
- <exports symbol='xsltFreeTransformContext' type='function'/>
- <exports symbol='xsltRunStylesheet' type='function'/>
<exports symbol='xsltChoose' type='function'/>
- <exports symbol='xsltCopyTextString' type='function'/>
- <exports symbol='xsltText' type='function'/>
- <exports symbol='xsltProcessOneNode' type='function'/>
- <exports symbol='xsltLocalVariablePop' type='function'/>
- <exports symbol='xsltNumber' type='function'/>
- <exports symbol='xsltRunStylesheetUser' type='function'/>
- <exports symbol='xsltNewTransformContext' type='function'/>
- <exports symbol='xsltGetXIncludeDefault' type='function'/>
- <exports symbol='xsltApplyOneTemplate' type='function'/>
- <exports symbol='xslHandleDebugger' type='function'/>
+ <exports symbol='xsltComment' type='function'/>
<exports symbol='xsltCopy' type='function'/>
+ <exports symbol='xsltCopyOf' type='function'/>
+ <exports symbol='xsltCopyTextString' type='function'/>
<exports symbol='xsltDocumentElem' type='function'/>
- <exports symbol='xsltAttribute' type='function'/>
- <exports symbol='xsltApplyImports' type='function'/>
<exports symbol='xsltElement' type='function'/>
- <exports symbol='xsltProfileStylesheet' type='function'/>
<exports symbol='xsltForEach' type='function'/>
- <exports symbol='xsltApplyStylesheetUser' type='function'/>
+ <exports symbol='xsltFreeTransformContext' type='function'/>
+ <exports symbol='xsltGetXIncludeDefault' type='function'/>
+ <exports symbol='xsltIf' type='function'/>
+ <exports symbol='xsltLocalVariablePop' type='function'/>
+ <exports symbol='xsltLocalVariablePush' type='function'/>
+ <exports symbol='xsltNewTransformContext' type='function'/>
+ <exports symbol='xsltNumber' type='function'/>
+ <exports symbol='xsltProcessOneNode' type='function'/>
<exports symbol='xsltProcessingInstruction' type='function'/>
- <exports symbol='xsltComment' type='function'/>
+ <exports symbol='xsltProfileStylesheet' type='function'/>
+ <exports symbol='xsltRegisterAllElement' type='function'/>
+ <exports symbol='xsltRunStylesheet' type='function'/>
+ <exports symbol='xsltRunStylesheetUser' type='function'/>
+ <exports symbol='xsltSetXIncludeDefault' type='function'/>
+ <exports symbol='xsltSort' type='function'/>
+ <exports symbol='xsltText' type='function'/>
+ <exports symbol='xsltValueOf' type='function'/>
</file>
<file name='variables'>
<summary>interface for the variable matching and lookup.</summary>
@@ -267,32 +267,32 @@
<exports symbol='XSLT_RVT_FUNC_RESULT' type='macro'/>
<exports symbol='XSLT_RVT_GLOBAL' type='macro'/>
<exports symbol='XSLT_RVT_LOCAL' type='macro'/>
- <exports symbol='xsltFreeGlobalVariables' type='function'/>
- <exports symbol='xsltQuoteUserParams' type='function'/>
- <exports symbol='xsltXPathVariableLookup' type='function'/>
- <exports symbol='xsltEvalUserParams' type='function'/>
- <exports symbol='xsltParseStylesheetCallerParam' type='function'/>
<exports symbol='xsltAddStackElemList' type='function'/>
- <exports symbol='xsltParseGlobalVariable' type='function'/>
- <exports symbol='xsltQuoteOneUserParam' type='function'/>
- <exports symbol='xsltParseGlobalParam' type='function'/>
- <exports symbol='xsltParseStylesheetVariable' type='function'/>
<exports symbol='xsltEvalGlobalVariables' type='function'/>
<exports symbol='xsltEvalOneUserParam' type='function'/>
+ <exports symbol='xsltEvalUserParams' type='function'/>
+ <exports symbol='xsltFreeGlobalVariables' type='function'/>
+ <exports symbol='xsltParseGlobalParam' type='function'/>
+ <exports symbol='xsltParseGlobalVariable' type='function'/>
+ <exports symbol='xsltParseStylesheetCallerParam' type='function'/>
<exports symbol='xsltParseStylesheetParam' type='function'/>
+ <exports symbol='xsltParseStylesheetVariable' type='function'/>
+ <exports symbol='xsltQuoteOneUserParam' type='function'/>
+ <exports symbol='xsltQuoteUserParams' type='function'/>
<exports symbol='xsltVariableLookup' type='function'/>
+ <exports symbol='xsltXPathVariableLookup' type='function'/>
</file>
<file name='xslt'>
<summary>Interfaces, constants and types related to the XSLT engine</summary>
<description>Interfaces, constants and types related to the XSLT engine </description>
<author>Daniel Veillard </author>
- <exports symbol='XSLT_DEFAULT_VERSION' type='macro'/>
- <exports symbol='XSLT_DEFAULT_VENDOR' type='macro'/>
- <exports symbol='XSLT_PARSE_OPTIONS' type='macro'/>
<exports symbol='XSLT_DEFAULT_URL' type='macro'/>
+ <exports symbol='XSLT_DEFAULT_VENDOR' type='macro'/>
+ <exports symbol='XSLT_DEFAULT_VERSION' type='macro'/>
<exports symbol='XSLT_NAMESPACE' type='macro'/>
- <exports symbol='xsltLibxmlVersion' type='variable'/>
+ <exports symbol='XSLT_PARSE_OPTIONS' type='macro'/>
<exports symbol='xsltEngineVersion' type='variable'/>
+ <exports symbol='xsltLibxmlVersion' type='variable'/>
<exports symbol='xsltLibxsltVersion' type='variable'/>
<exports symbol='xsltMaxDepth' type='variable'/>
<exports symbol='xsltMaxVars' type='variable'/>
@@ -303,379 +303,380 @@
<summary>internal data structures, constants and functions</summary>
<description>Internal data structures, constants and functions used by the XSLT engine. They are not part of the API or ABI, i.e. they can change without prior notice, use carefully. </description>
<author>Daniel Veillard </author>
+ <exports symbol='CHECK_STOPPED' type='macro'/>
<exports symbol='CHECK_STOPPED0' type='macro'/>
- <exports symbol='XSLT_PAT_NO_PRIORITY' type='macro'/>
- <exports symbol='XSLT_ITEM_NSINSCOPE_FIELDS' type='macro'/>
- <exports symbol='XSLT_IS_TEXT_NODE' type='macro'/>
- <exports symbol='IS_XSLT_ELEM_FAST' type='macro'/>
- <exports symbol='XSLT_REFACTORED_VARS' type='macro'/>
- <exports symbol='XSLT_RUNTIME_EXTRA_LST' type='macro'/>
- <exports symbol='XSLT_ITEM_COMPATIBILITY_FIELDS' type='macro'/>
+ <exports symbol='CHECK_STOPPEDE' type='macro'/>
<exports symbol='IS_XSLT_ATTR_FAST' type='macro'/>
- <exports symbol='XSLT_HAS_INTERNAL_NSMAP' type='macro'/>
+ <exports symbol='IS_XSLT_ELEM_FAST' type='macro'/>
+ <exports symbol='XML_CAST_FPTR' type='macro'/>
+ <exports symbol='XSLT_CCTXT' type='macro'/>
<exports symbol='XSLT_FAST_IF' type='macro'/>
- <exports symbol='XSLT_MARK_RES_TREE_FRAG' type='macro'/>
<exports symbol='XSLT_GET_INTERNAL_NSMAP' type='macro'/>
- <exports symbol='XSLT_REFACTORED_KEYCOMP' type='macro'/>
+ <exports symbol='XSLT_HAS_INTERNAL_NSMAP' type='macro'/>
+ <exports symbol='XSLT_IS_RES_TREE_FRAG' type='macro'/>
+ <exports symbol='XSLT_IS_TEXT_NODE' type='macro'/>
+ <exports symbol='XSLT_ITEM_COMMON_FIELDS' type='macro'/>
+ <exports symbol='XSLT_ITEM_COMPATIBILITY_FIELDS' type='macro'/>
<exports symbol='XSLT_ITEM_NAVIGATION_FIELDS' type='macro'/>
+ <exports symbol='XSLT_ITEM_NSINSCOPE_FIELDS' type='macro'/>
+ <exports symbol='XSLT_MARK_RES_TREE_FRAG' type='macro'/>
<exports symbol='XSLT_MAX_SORT' type='macro'/>
+ <exports symbol='XSLT_PAT_NO_PRIORITY' type='macro'/>
+ <exports symbol='XSLT_REFACTORED_KEYCOMP' type='macro'/>
+ <exports symbol='XSLT_REFACTORED_VARS' type='macro'/>
<exports symbol='XSLT_RUNTIME_EXTRA' type='macro'/>
- <exports symbol='XSLT_IS_RES_TREE_FRAG' type='macro'/>
- <exports symbol='XML_CAST_FPTR' type='macro'/>
- <exports symbol='XSLT_ITEM_COMMON_FIELDS' type='macro'/>
- <exports symbol='CHECK_STOPPED' type='macro'/>
<exports symbol='XSLT_RUNTIME_EXTRA_FREE' type='macro'/>
- <exports symbol='XSLT_CCTXT' type='macro'/>
- <exports symbol='CHECK_STOPPEDE' type='macro'/>
+ <exports symbol='XSLT_RUNTIME_EXTRA_LST' type='macro'/>
<exports symbol='XSLT_ERROR_SEVERITY_ERROR' type='enum'/>
- <exports symbol='XSLT_FUNC_ELEMENT' type='enum'/>
- <exports symbol='XSLT_FUNC_VALUEOF' type='enum'/>
- <exports symbol='XSLT_FUNC_WITHPARAM' type='enum'/>
- <exports symbol='XSLT_OUTPUT_XML' type='enum'/>
- <exports symbol='XSLT_STATE_ERROR' type='enum'/>
- <exports symbol='XSLT_OUTPUT_HTML' type='enum'/>
- <exports symbol='XSLT_FUNC_LITERAL_RESULT_ELEMENT' type='enum'/>
- <exports symbol='XSLT_STATE_OK' type='enum'/>
- <exports symbol='XSLT_FUNC_FOREACH' type='enum'/>
- <exports symbol='XSLT_FUNC_CHOOSE' type='enum'/>
- <exports symbol='XSLT_FUNC_SORT' type='enum'/>
- <exports symbol='XSLT_STATE_STOPPED' type='enum'/>
<exports symbol='XSLT_ERROR_SEVERITY_WARNING' type='enum'/>
- <exports symbol='XSLT_FUNC_ATTRSET' type='enum'/>
- <exports symbol='XSLT_FUNC_NUMBER' type='enum'/>
- <exports symbol='XSLT_FUNC_ATTRIBUTE' type='enum'/>
- <exports symbol='XSLT_FUNC_APPLYTEMPLATES' type='enum'/>
- <exports symbol='XSLT_FUNC_INCLUDE' type='enum'/>
- <exports symbol='XSLT_FUNC_WHEN' type='enum'/>
<exports symbol='XSLT_FUNC_APPLYIMPORTS' type='enum'/>
+ <exports symbol='XSLT_FUNC_APPLYTEMPLATES' type='enum'/>
+ <exports symbol='XSLT_FUNC_ATTRIBUTE' type='enum'/>
+ <exports symbol='XSLT_FUNC_ATTRSET' type='enum'/>
+ <exports symbol='XSLT_FUNC_CALLTEMPLATE' type='enum'/>
+ <exports symbol='XSLT_FUNC_CHOOSE' type='enum'/>
+ <exports symbol='XSLT_FUNC_COMMENT' type='enum'/>
<exports symbol='XSLT_FUNC_COPY' type='enum'/>
- <exports symbol='XSLT_FUNC_EXTENSION' type='enum'/>
- <exports symbol='XSLT_FUNC_OTHERWISE' type='enum'/>
<exports symbol='XSLT_FUNC_COPYOF' type='enum'/>
- <exports symbol='XSLT_OUTPUT_TEXT' type='enum'/>
- <exports symbol='XSLT_FUNC_PARAM' type='enum'/>
- <exports symbol='XSLT_FUNC_COMMENT' type='enum'/>
- <exports symbol='XSLT_FUNC_MESSAGE' type='enum'/>
<exports symbol='XSLT_FUNC_DOCUMENT' type='enum'/>
+ <exports symbol='XSLT_FUNC_ELEMENT' type='enum'/>
+ <exports symbol='XSLT_FUNC_EXTENSION' type='enum'/>
+ <exports symbol='XSLT_FUNC_FALLBACK' type='enum'/>
+ <exports symbol='XSLT_FUNC_FOREACH' type='enum'/>
<exports symbol='XSLT_FUNC_IF' type='enum'/>
+ <exports symbol='XSLT_FUNC_INCLUDE' type='enum'/>
+ <exports symbol='XSLT_FUNC_LITERAL_RESULT_ELEMENT' type='enum'/>
+ <exports symbol='XSLT_FUNC_MESSAGE' type='enum'/>
+ <exports symbol='XSLT_FUNC_NUMBER' type='enum'/>
+ <exports symbol='XSLT_FUNC_OTHERWISE' type='enum'/>
+ <exports symbol='XSLT_FUNC_PARAM' type='enum'/>
<exports symbol='XSLT_FUNC_PI' type='enum'/>
- <exports symbol='XSLT_FUNC_UNKOWN_FORWARDS_COMPAT' type='enum'/>
+ <exports symbol='XSLT_FUNC_SORT' type='enum'/>
<exports symbol='XSLT_FUNC_TEXT' type='enum'/>
+ <exports symbol='XSLT_FUNC_UNKOWN_FORWARDS_COMPAT' type='enum'/>
+ <exports symbol='XSLT_FUNC_VALUEOF' type='enum'/>
<exports symbol='XSLT_FUNC_VARIABLE' type='enum'/>
- <exports symbol='XSLT_FUNC_FALLBACK' type='enum'/>
- <exports symbol='XSLT_FUNC_CALLTEMPLATE' type='enum'/>
- <exports symbol='xsltElemPreComp' type='typedef'/>
- <exports symbol='xsltStyleItemPIPtr' type='typedef'/>
- <exports symbol='xsltDocument' type='typedef'/>
- <exports symbol='xsltStyleItemDocument' type='typedef'/>
- <exports symbol='xsltStyleItemMessagePtr' type='typedef'/>
- <exports symbol='xsltStyleItemNumberPtr' type='typedef'/>
- <exports symbol='xsltStyleBasicItemVariablePtr' type='typedef'/>
- <exports symbol='xsltStyleItemForEachPtr' type='typedef'/>
- <exports symbol='xsltTransformState' type='typedef'/>
+ <exports symbol='XSLT_FUNC_WHEN' type='enum'/>
+ <exports symbol='XSLT_FUNC_WITHPARAM' type='enum'/>
+ <exports symbol='XSLT_OUTPUT_HTML' type='enum'/>
+ <exports symbol='XSLT_OUTPUT_TEXT' type='enum'/>
+ <exports symbol='XSLT_OUTPUT_XML' type='enum'/>
+ <exports symbol='XSLT_STATE_ERROR' type='enum'/>
+ <exports symbol='XSLT_STATE_OK' type='enum'/>
+ <exports symbol='XSLT_STATE_STOPPED' type='enum'/>
+ <exports symbol='xsltCompilerCtxt' type='typedef'/>
+ <exports symbol='xsltCompilerCtxtPtr' type='typedef'/>
+ <exports symbol='xsltCompilerNodeInfo' type='typedef'/>
<exports symbol='xsltCompilerNodeInfoPtr' type='typedef'/>
- <exports symbol='xsltStyleItemLRElementInfoPtr' type='typedef'/>
- <exports symbol='xsltRuntimeExtraPtr' type='typedef'/>
- <exports symbol='xsltStyleItemLRElementInfo' type='typedef'/>
- <exports symbol='xsltStyleItemWithParamPtr' type='typedef'/>
- <exports symbol='xsltStyleItemCommentPtr' type='typedef'/>
- <exports symbol='xsltStyleItemMessage' type='typedef'/>
- <exports symbol='xsltStyleItemParamPtr' type='typedef'/>
- <exports symbol='xsltStyleItemCopyOf' type='typedef'/>
- <exports symbol='xsltStyleItemCallTemplatePtr' type='typedef'/>
- <exports symbol='xsltTransformCache' type='typedef'/>
- <exports symbol='xsltStyleItemCopyOfPtr' type='typedef'/>
- <exports symbol='xsltNsMap' type='typedef'/>
- <exports symbol='xsltEffectiveNs' type='typedef'/>
- <exports symbol='xsltStyleItemApplyImportsPtr' type='typedef'/>
- <exports symbol='xsltStylesheet' type='typedef'/>
- <exports symbol='xsltStylePreCompPtr' type='typedef'/>
- <exports symbol='xsltNsMapPtr' type='typedef'/>
+ <exports symbol='xsltDecimalFormat' type='typedef'/>
<exports symbol='xsltDecimalFormatPtr' type='typedef'/>
- <exports symbol='xsltStyleItemIncludePtr' type='typedef'/>
- <exports symbol='xsltKeyTablePtr' type='typedef'/>
- <exports symbol='xsltStyleItemTextPtr' type='typedef'/>
- <exports symbol='xsltCompilerNodeInfo' type='typedef'/>
- <exports symbol='xsltStylesheetPtr' type='typedef'/>
- <exports symbol='xsltTemplatePtr' type='typedef'/>
- <exports symbol='xsltStyleBasicEmptyItem' type='typedef'/>
- <exports symbol='xsltStackElem' type='typedef'/>
- <exports symbol='xsltStyleItemIfPtr' type='typedef'/>
- <exports symbol='xsltStyleItemWhenPtr' type='typedef'/>
- <exports symbol='xsltStyleItemElementPtr' type='typedef'/>
- <exports symbol='xsltStyleItemOtherwise' type='typedef'/>
- <exports symbol='xsltStyleItemCopy' type='typedef'/>
- <exports symbol='xsltKeyDefPtr' type='typedef'/>
- <exports symbol='xsltVarInfoPtr' type='typedef'/>
- <exports symbol='xsltStyleItemSort' type='typedef'/>
- <exports symbol='xsltTransformCachePtr' type='typedef'/>
- <exports symbol='xsltStyleItemExtElementPtr' type='typedef'/>
- <exports symbol='xsltNsAliasPtr' type='typedef'/>
- <exports symbol='xsltStyleItemValueOfPtr' type='typedef'/>
+ <exports symbol='xsltDocument' type='typedef'/>
<exports symbol='xsltDocumentPtr' type='typedef'/>
- <exports symbol='xsltPointerListPtr' type='typedef'/>
- <exports symbol='xsltTemplate' type='typedef'/>
- <exports symbol='xsltStyleBasicExpressionItemPtr' type='typedef'/>
- <exports symbol='xsltRuntimeExtra' type='typedef'/>
- <exports symbol='xsltStyleItemAttributePtr' type='typedef'/>
- <exports symbol='xsltTransformContext' type='typedef'/>
- <exports symbol='xsltPointerList' type='typedef'/>
- <exports symbol='xsltStyleItemUknown' type='typedef'/>
- <exports symbol='xsltErrorSeverityType' type='typedef'/>
+ <exports symbol='xsltEffectiveNs' type='typedef'/>
+ <exports symbol='xsltEffectiveNsPtr' type='typedef'/>
+ <exports symbol='xsltElemPreComp' type='typedef'/>
<exports symbol='xsltElemPreCompPtr' type='typedef'/>
- <exports symbol='xsltStyleItemFallback' type='typedef'/>
- <exports symbol='xsltStyleItemOtherwisePtr' type='typedef'/>
- <exports symbol='xsltStyleItemWhen' type='typedef'/>
- <exports symbol='xsltStyleItemIf' type='typedef'/>
- <exports symbol='xsltTransformContextPtr' type='typedef'/>
+ <exports symbol='xsltErrorSeverityType' type='typedef'/>
+ <exports symbol='xsltKeyDef' type='typedef'/>
+ <exports symbol='xsltKeyDefPtr' type='typedef'/>
+ <exports symbol='xsltKeyTable' type='typedef'/>
+ <exports symbol='xsltKeyTablePtr' type='typedef'/>
+ <exports symbol='xsltNsAlias' type='typedef'/>
+ <exports symbol='xsltNsAliasPtr' type='typedef'/>
<exports symbol='xsltNsList' type='typedef'/>
- <exports symbol='xsltStyleItemForEach' type='typedef'/>
- <exports symbol='xsltStyleItemExtElement' type='typedef'/>
- <exports symbol='xsltNsListContainerPtr' type='typedef'/>
- <exports symbol='xsltStyleBasicExpressionItem' type='typedef'/>
- <exports symbol='xsltStyleItemWithParam' type='typedef'/>
- <exports symbol='xsltStyleItemElement' type='typedef'/>
- <exports symbol='xsltCompilerCtxt' type='typedef'/>
- <exports symbol='xsltStyleItemComment' type='typedef'/>
- <exports symbol='xsltEffectiveNsPtr' type='typedef'/>
- <exports symbol='xsltStyleItemVariable' type='typedef'/>
- <exports symbol='xsltStyleItemVariablePtr' type='typedef'/>
- <exports symbol='xsltStyleItemParam' type='typedef'/>
<exports symbol='xsltNsListContainer' type='typedef'/>
- <exports symbol='xsltStackElemPtr' type='typedef'/>
- <exports symbol='xsltStyleBasicEmptyItemPtr' type='typedef'/>
- <exports symbol='xsltStyleItemText' type='typedef'/>
- <exports symbol='xsltStyleItemCopyPtr' type='typedef'/>
- <exports symbol='xsltStyleItemSortPtr' type='typedef'/>
- <exports symbol='xsltPrincipalStylesheetData' type='typedef'/>
+ <exports symbol='xsltNsListContainerPtr' type='typedef'/>
+ <exports symbol='xsltNsListPtr' type='typedef'/>
+ <exports symbol='xsltNsMap' type='typedef'/>
+ <exports symbol='xsltNsMapPtr' type='typedef'/>
<exports symbol='xsltOutputType' type='typedef'/>
+ <exports symbol='xsltPointerList' type='typedef'/>
+ <exports symbol='xsltPointerListPtr' type='typedef'/>
+ <exports symbol='xsltPrincipalStylesheetData' type='typedef'/>
<exports symbol='xsltPrincipalStylesheetDataPtr' type='typedef'/>
+ <exports symbol='xsltRuntimeExtra' type='typedef'/>
+ <exports symbol='xsltRuntimeExtraPtr' type='typedef'/>
+ <exports symbol='xsltStackElem' type='typedef'/>
+ <exports symbol='xsltStackElemPtr' type='typedef'/>
+ <exports symbol='xsltStyleBasicEmptyItem' type='typedef'/>
+ <exports symbol='xsltStyleBasicEmptyItemPtr' type='typedef'/>
+ <exports symbol='xsltStyleBasicExpressionItem' type='typedef'/>
+ <exports symbol='xsltStyleBasicExpressionItemPtr' type='typedef'/>
<exports symbol='xsltStyleBasicItemVariable' type='typedef'/>
- <exports symbol='xsltStyleItemChoosePtr' type='typedef'/>
- <exports symbol='xsltNsAlias' type='typedef'/>
- <exports symbol='xsltVarInfo' type='typedef'/>
+ <exports symbol='xsltStyleBasicItemVariablePtr' type='typedef'/>
<exports symbol='xsltStyleItemApplyImports' type='typedef'/>
- <exports symbol='xsltKeyTable' type='typedef'/>
- <exports symbol='xsltStylePreComp' type='typedef'/>
- <exports symbol='xsltNsListPtr' type='typedef'/>
- <exports symbol='xsltKeyDef' type='typedef'/>
- <exports symbol='xsltDecimalFormat' type='typedef'/>
+ <exports symbol='xsltStyleItemApplyImportsPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemApplyTemplates' type='typedef'/>
<exports symbol='xsltStyleItemApplyTemplatesPtr' type='typedef'/>
- <exports symbol='xsltStyleItemUknownPtr' type='typedef'/>
- <exports symbol='xsltStyleItemValueOf' type='typedef'/>
- <exports symbol='xsltCompilerCtxtPtr' type='typedef'/>
<exports symbol='xsltStyleItemAttribute' type='typedef'/>
- <exports symbol='xsltStyleItemDocumentPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemAttributePtr' type='typedef'/>
<exports symbol='xsltStyleItemCallTemplate' type='typedef'/>
+ <exports symbol='xsltStyleItemCallTemplatePtr' type='typedef'/>
+ <exports symbol='xsltStyleItemChoose' type='typedef'/>
+ <exports symbol='xsltStyleItemChoosePtr' type='typedef'/>
+ <exports symbol='xsltStyleItemComment' type='typedef'/>
+ <exports symbol='xsltStyleItemCommentPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemCopy' type='typedef'/>
+ <exports symbol='xsltStyleItemCopyOf' type='typedef'/>
+ <exports symbol='xsltStyleItemCopyOfPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemCopyPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemDocument' type='typedef'/>
+ <exports symbol='xsltStyleItemDocumentPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemElement' type='typedef'/>
+ <exports symbol='xsltStyleItemElementPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemExtElement' type='typedef'/>
+ <exports symbol='xsltStyleItemExtElementPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemFallback' type='typedef'/>
<exports symbol='xsltStyleItemFallbackPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemForEach' type='typedef'/>
+ <exports symbol='xsltStyleItemForEachPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemIf' type='typedef'/>
+ <exports symbol='xsltStyleItemIfPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemInclude' type='typedef'/>
+ <exports symbol='xsltStyleItemIncludePtr' type='typedef'/>
+ <exports symbol='xsltStyleItemLRElementInfo' type='typedef'/>
+ <exports symbol='xsltStyleItemLRElementInfoPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemMessage' type='typedef'/>
+ <exports symbol='xsltStyleItemMessagePtr' type='typedef'/>
<exports symbol='xsltStyleItemNumber' type='typedef'/>
- <exports symbol='xsltStyleItemApplyTemplates' type='typedef'/>
- <exports symbol='xsltStyleItemChoose' type='typedef'/>
- <exports symbol='xsltStyleType' type='typedef'/>
+ <exports symbol='xsltStyleItemNumberPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemOtherwise' type='typedef'/>
+ <exports symbol='xsltStyleItemOtherwisePtr' type='typedef'/>
<exports symbol='xsltStyleItemPI' type='typedef'/>
- <exports symbol='xsltStyleItemInclude' type='typedef'/>
- <exports symbol='_xsltPointerList' type='struct'/>
- <exports symbol='_xsltStyleItemSort' type='struct'/>
+ <exports symbol='xsltStyleItemPIPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemParam' type='typedef'/>
+ <exports symbol='xsltStyleItemParamPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemSort' type='typedef'/>
+ <exports symbol='xsltStyleItemSortPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemText' type='typedef'/>
+ <exports symbol='xsltStyleItemTextPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemUknown' type='typedef'/>
+ <exports symbol='xsltStyleItemUknownPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemValueOf' type='typedef'/>
+ <exports symbol='xsltStyleItemValueOfPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemVariable' type='typedef'/>
+ <exports symbol='xsltStyleItemVariablePtr' type='typedef'/>
+ <exports symbol='xsltStyleItemWhen' type='typedef'/>
+ <exports symbol='xsltStyleItemWhenPtr' type='typedef'/>
+ <exports symbol='xsltStyleItemWithParam' type='typedef'/>
+ <exports symbol='xsltStyleItemWithParamPtr' type='typedef'/>
+ <exports symbol='xsltStylePreComp' type='typedef'/>
+ <exports symbol='xsltStylePreCompPtr' type='typedef'/>
+ <exports symbol='xsltStyleType' type='typedef'/>
+ <exports symbol='xsltStylesheet' type='typedef'/>
+ <exports symbol='xsltStylesheetPtr' type='typedef'/>
+ <exports symbol='xsltTemplate' type='typedef'/>
+ <exports symbol='xsltTemplatePtr' type='typedef'/>
+ <exports symbol='xsltTransformCache' type='typedef'/>
+ <exports symbol='xsltTransformCachePtr' type='typedef'/>
+ <exports symbol='xsltTransformContext' type='typedef'/>
+ <exports symbol='xsltTransformContextPtr' type='typedef'/>
+ <exports symbol='xsltTransformState' type='typedef'/>
+ <exports symbol='xsltVarInfo' type='typedef'/>
+ <exports symbol='xsltVarInfoPtr' type='typedef'/>
+ <exports symbol='_xsltCompilerCtxt' type='struct'/>
+ <exports symbol='_xsltCompilerNodeInfo' type='struct'/>
+ <exports symbol='_xsltDecimalFormat' type='struct'/>
+ <exports symbol='_xsltDocument' type='struct'/>
+ <exports symbol='_xsltEffectiveNs' type='struct'/>
+ <exports symbol='_xsltElemPreComp' type='struct'/>
+ <exports symbol='_xsltKeyDef' type='struct'/>
+ <exports symbol='_xsltKeyTable' type='struct'/>
<exports symbol='_xsltNsAlias' type='struct'/>
- <exports symbol='_xsltTemplate' type='struct'/>
- <exports symbol='_xsltStyleItemWhen' type='struct'/>
- <exports symbol='_xsltVarInfo' type='struct'/>
<exports symbol='_xsltNsList' type='struct'/>
- <exports symbol='_xsltStyleItemInclude' type='struct'/>
- <exports symbol='_xsltEffectiveNs' type='struct'/>
- <exports symbol='_xsltDecimalFormat' type='struct'/>
+ <exports symbol='_xsltNsListContainer' type='struct'/>
+ <exports symbol='_xsltNsMap' type='struct'/>
+ <exports symbol='_xsltPointerList' type='struct'/>
+ <exports symbol='_xsltPrincipalStylesheetData' type='struct'/>
+ <exports symbol='_xsltRuntimeExtra' type='struct'/>
+ <exports symbol='_xsltStackElem' type='struct'/>
+ <exports symbol='_xsltStyleBasicEmptyItem' type='struct'/>
+ <exports symbol='_xsltStyleBasicExpressionItem' type='struct'/>
+ <exports symbol='_xsltStyleBasicItemVariable' type='struct'/>
+ <exports symbol='_xsltStyleItemApplyTemplates' type='struct'/>
<exports symbol='_xsltStyleItemAttribute' type='struct'/>
- <exports symbol='_xsltStyleItemValueOf' type='struct'/>
+ <exports symbol='_xsltStyleItemCallTemplate' type='struct'/>
+ <exports symbol='_xsltStyleItemCopy' type='struct'/>
<exports symbol='_xsltStyleItemDocument' type='struct'/>
+ <exports symbol='_xsltStyleItemElement' type='struct'/>
+ <exports symbol='_xsltStyleItemExtElement' type='struct'/>
+ <exports symbol='_xsltStyleItemIf' type='struct'/>
+ <exports symbol='_xsltStyleItemInclude' type='struct'/>
+ <exports symbol='_xsltStyleItemLRElementInfo' type='struct'/>
<exports symbol='_xsltStyleItemMessage' type='struct'/>
- <exports symbol='_xsltStyleItemCopy' type='struct'/>
+ <exports symbol='_xsltStyleItemNumber' type='struct'/>
+ <exports symbol='_xsltStyleItemOtherwise' type='struct'/>
+ <exports symbol='_xsltStyleItemPI' type='struct'/>
+ <exports symbol='_xsltStyleItemParam' type='struct'/>
+ <exports symbol='_xsltStyleItemSort' type='struct'/>
<exports symbol='_xsltStyleItemText' type='struct'/>
- <exports symbol='_xsltStyleBasicExpressionItem' type='struct'/>
- <exports symbol='_xsltStylesheet' type='struct'/>
- <exports symbol='_xsltNsListContainer' type='struct'/>
- <exports symbol='_xsltStyleItemCallTemplate' type='struct'/>
- <exports symbol='_xsltStyleItemApplyTemplates' type='struct'/>
- <exports symbol='_xsltElemPreComp' type='struct'/>
- <exports symbol='_xsltCompilerCtxt' type='struct'/>
- <exports symbol='_xsltKeyTable' type='struct'/>
<exports symbol='_xsltStyleItemUknown' type='struct'/>
- <exports symbol='_xsltStyleItemNumber' type='struct'/>
+ <exports symbol='_xsltStyleItemValueOf' type='struct'/>
+ <exports symbol='_xsltStyleItemWhen' type='struct'/>
<exports symbol='_xsltStylePreComp' type='struct'/>
+ <exports symbol='_xsltStylesheet' type='struct'/>
+ <exports symbol='_xsltTemplate' type='struct'/>
<exports symbol='_xsltTransformCache' type='struct'/>
- <exports symbol='_xsltCompilerNodeInfo' type='struct'/>
- <exports symbol='_xsltNsMap' type='struct'/>
- <exports symbol='_xsltStyleItemElement' type='struct'/>
- <exports symbol='_xsltStyleItemPI' type='struct'/>
- <exports symbol='_xsltStyleItemExtElement' type='struct'/>
- <exports symbol='_xsltStyleItemParam' type='struct'/>
- <exports symbol='_xsltStackElem' type='struct'/>
<exports symbol='_xsltTransformContext' type='struct'/>
- <exports symbol='_xsltStyleItemIf' type='struct'/>
- <exports symbol='_xsltStyleBasicItemVariable' type='struct'/>
- <exports symbol='_xsltRuntimeExtra' type='struct'/>
- <exports symbol='_xsltKeyDef' type='struct'/>
- <exports symbol='_xsltPrincipalStylesheetData' type='struct'/>
- <exports symbol='_xsltStyleItemLRElementInfo' type='struct'/>
- <exports symbol='_xsltStyleItemOtherwise' type='struct'/>
- <exports symbol='_xsltDocument' type='struct'/>
- <exports symbol='_xsltStyleBasicEmptyItem' type='struct'/>
- <exports symbol='xsltXSLTAttrMarker' type='variable'/>
+ <exports symbol='_xsltVarInfo' type='struct'/>
<exports symbol='xsltConstNamespaceNameXSLT' type='variable'/>
- <exports symbol='xsltElemPreCompDeallocator' type='function'/>
- <exports symbol='xsltRegisterPersistRVT' type='function'/>
- <exports symbol='xsltParseStylesheetImportedDoc' type='function'/>
- <exports symbol='xsltFreeStackElemList' type='function'/>
+ <exports symbol='xsltXSLTAttrMarker' type='variable'/>
<exports symbol='xsltAllocateExtra' type='function'/>
- <exports symbol='xsltFlagRVTs' type='function'/>
- <exports symbol='xsltParseSequenceConstructor' type='function'/>
- <exports symbol='xsltRegisterTmpRVT' type='function'/>
- <exports symbol='xsltInitAllDocKeys' type='function'/>
+ <exports symbol='xsltAllocateExtraCtxt' type='function'/>
+ <exports symbol='xsltCompileAttr' type='function'/>
+ <exports symbol='xsltCreateRVT' type='function'/>
<exports symbol='xsltDecimalFormatGetByName' type='function'/>
+ <exports symbol='xsltDecimalFormatGetByQName' type='function'/>
+ <exports symbol='xsltElemPreCompDeallocator' type='function'/>
+ <exports symbol='xsltEvalAVT' type='function'/>
<exports symbol='xsltExtensionInstructionResultFinalize' type='function'/>
- <exports symbol='xsltParseStylesheetUser' type='function'/>
- <exports symbol='xsltPointerListFree' type='function'/>
- <exports symbol='xsltIsBlank' type='function'/>
+ <exports symbol='xsltExtensionInstructionResultRegister' type='function'/>
+ <exports symbol='xsltFlagRVTs' type='function'/>
<exports symbol='xsltFormatNumberConversion' type='function'/>
- <exports symbol='xsltPointerListAddSize' type='function'/>
- <exports symbol='xsltSortFunc' type='function'/>
- <exports symbol='xsltUninit' type='function'/>
+ <exports symbol='xsltFreeAVTList' type='function'/>
+ <exports symbol='xsltFreeLocaleFunc' type='function'/>
+ <exports symbol='xsltFreeRVTs' type='function'/>
+ <exports symbol='xsltFreeStackElemList' type='function'/>
<exports symbol='xsltFreeStylesheet' type='function'/>
- <exports symbol='xsltCreateRVT' type='function'/>
+ <exports symbol='xsltGenSortKeyFunc' type='function'/>
+ <exports symbol='xsltInitAllDocKeys' type='function'/>
+ <exports symbol='xsltInitCtxtKey' type='function'/>
+ <exports symbol='xsltIsBlank' type='function'/>
+ <exports symbol='xsltLoadStylesheetPI' type='function'/>
+ <exports symbol='xsltNewLocaleFunc' type='function'/>
+ <exports symbol='xsltNewStylesheet' type='function'/>
+ <exports symbol='xsltNumberFormat' type='function'/>
+ <exports symbol='xsltParseAnyXSLTElem' type='function'/>
+ <exports symbol='xsltParseSequenceConstructor' type='function'/>
+ <exports symbol='xsltParseStylesheetDoc' type='function'/>
<exports symbol='xsltParseStylesheetFile' type='function'/>
+ <exports symbol='xsltParseStylesheetImportedDoc' type='function'/>
<exports symbol='xsltParseStylesheetOutput' type='function'/>
- <exports symbol='xsltParseAnyXSLTElem' type='function'/>
- <exports symbol='xsltCompileAttr' type='function'/>
- <exports symbol='xsltRestoreDocumentNamespaces' type='function'/>
- <exports symbol='xsltNumberFormat' type='function'/>
- <exports symbol='xsltReleaseRVT' type='function'/>
- <exports symbol='xsltFreeRVTs' type='function'/>
- <exports symbol='xsltExtensionInstructionResultRegister' type='function'/>
- <exports symbol='xsltPointerListCreate' type='function'/>
- <exports symbol='xsltFreeAVTList' type='function'/>
- <exports symbol='xsltAllocateExtraCtxt' type='function'/>
- <exports symbol='xsltParseTemplateContent' type='function'/>
- <exports symbol='xsltNewStylesheet' type='function'/>
<exports symbol='xsltParseStylesheetProcess' type='function'/>
- <exports symbol='xsltDecimalFormatGetByQName' type='function'/>
- <exports symbol='xsltTransformFunction' type='function'/>
- <exports symbol='xsltRegisterLocalRVT' type='function'/>
- <exports symbol='xsltParseStylesheetDoc' type='function'/>
- <exports symbol='xsltInitCtxtKey' type='function'/>
- <exports symbol='xsltEvalAVT' type='function'/>
+ <exports symbol='xsltParseStylesheetUser' type='function'/>
+ <exports symbol='xsltParseTemplateContent' type='function'/>
+ <exports symbol='xsltPointerListAddSize' type='function'/>
<exports symbol='xsltPointerListClear' type='function'/>
- <exports symbol='xsltLoadStylesheetPI' type='function'/>
+ <exports symbol='xsltPointerListCreate' type='function'/>
+ <exports symbol='xsltPointerListFree' type='function'/>
+ <exports symbol='xsltRegisterLocalRVT' type='function'/>
+ <exports symbol='xsltRegisterPersistRVT' type='function'/>
+ <exports symbol='xsltRegisterTmpRVT' type='function'/>
+ <exports symbol='xsltReleaseRVT' type='function'/>
+ <exports symbol='xsltRestoreDocumentNamespaces' type='function'/>
+ <exports symbol='xsltSortFunc' type='function'/>
+ <exports symbol='xsltTransformFunction' type='function'/>
+ <exports symbol='xsltUninit' type='function'/>
</file>
<file name='xsltexports'>
<summary>macros for marking symbols as exportable/importable.</summary>
<description>macros for marking symbols as exportable/importable. </description>
<exports symbol='LIBXSLT_PUBLIC' type='macro'/>
+ <exports symbol='XSLTCALL' type='macro'/>
<exports symbol='XSLTPUBFUN' type='macro'/>
- <exports symbol='XSLTPUBVAR' type='macro'/>
<exports symbol='XSLTPUBLIC' type='macro'/>
- <exports symbol='XSLTCALL' type='macro'/>
+ <exports symbol='XSLTPUBVAR' type='macro'/>
</file>
<file name='xsltlocale'>
<summary>Locale handling</summary>
<description>Interfaces for locale handling. Needed for language dependent sorting. </description>
<author>Nick Wellnhofer </author>
- <exports symbol='XSLT_LOCALE_WINAPI' type='macro'/>
- <exports symbol='XSLT_LOCALE_NONE' type='macro'/>
- <exports symbol='XSLT_LOCALE_POSIX' type='macro'/>
<exports symbol='xsltLocale' type='typedef'/>
<exports symbol='xsltLocaleChar' type='typedef'/>
- <exports symbol='xsltNewLocale' type='function'/>
- <exports symbol='xsltLocaleStrcmp' type='function'/>
<exports symbol='xsltFreeLocale' type='function'/>
- <exports symbol='xsltStrxfrm' type='function'/>
<exports symbol='xsltFreeLocales' type='function'/>
+ <exports symbol='xsltLocaleStrcmp' type='function'/>
+ <exports symbol='xsltNewLocale' type='function'/>
+ <exports symbol='xsltStrxfrm' type='function'/>
</file>
<file name='xsltutils'>
<summary>set of utilities for the XSLT engine</summary>
<description>interfaces for the utilities module of the XSLT engine. things like message handling, profiling, and other generally useful routines. </description>
<author>Daniel Veillard </author>
- <exports symbol='IS_XSLT_REAL_NODE' type='macro'/>
<exports symbol='IS_XSLT_ELEM' type='macro'/>
<exports symbol='IS_XSLT_NAME' type='macro'/>
- <exports symbol='XSLT_TODO' type='macro'/>
+ <exports symbol='IS_XSLT_REAL_NODE' type='macro'/>
<exports symbol='XSLT_STRANGE' type='macro'/>
<exports symbol='XSLT_TIMESTAMP_TICS_PER_SEC' type='macro'/>
+ <exports symbol='XSLT_TODO' type='macro'/>
<exports symbol='XSLT_TRACE' type='macro'/>
- <exports symbol='XSLT_TRACE_KEYS' type='enum'/>
+ <exports symbol='XSLT_DEBUG_CONT' type='enum'/>
+ <exports symbol='XSLT_DEBUG_INIT' type='enum'/>
<exports symbol='XSLT_DEBUG_NEXT' type='enum'/>
- <exports symbol='XSLT_TRACE_COPY_OF' type='enum'/>
- <exports symbol='XSLT_TRACE_FOR_EACH' type='enum'/>
- <exports symbol='XSLT_DEBUG_STEPOUT' type='enum'/>
+ <exports symbol='XSLT_DEBUG_NONE' type='enum'/>
+ <exports symbol='XSLT_DEBUG_QUIT' type='enum'/>
<exports symbol='XSLT_DEBUG_RUN' type='enum'/>
- <exports symbol='XSLT_TRACE_APPLY_TEMPLATES' type='enum'/>
- <exports symbol='XSLT_TRACE_CHOOSE' type='enum'/>
- <exports symbol='XSLT_DEBUG_INIT' type='enum'/>
<exports symbol='XSLT_DEBUG_RUN_RESTART' type='enum'/>
- <exports symbol='XSLT_TRACE_ALL' type='enum'/>
- <exports symbol='XSLT_TRACE_CALL_TEMPLATE' type='enum'/>
- <exports symbol='XSLT_TRACE_IF' type='enum'/>
- <exports symbol='XSLT_TRACE_PROCESS_NODE' type='enum'/>
- <exports symbol='XSLT_TRACE_COPY_TEXT' type='enum'/>
- <exports symbol='XSLT_TRACE_APPLY_TEMPLATE' type='enum'/>
- <exports symbol='XSLT_DEBUG_CONT' type='enum'/>
- <exports symbol='XSLT_TRACE_VALUE_OF' type='enum'/>
<exports symbol='XSLT_DEBUG_STEP' type='enum'/>
- <exports symbol='XSLT_TRACE_STRIP_SPACES' type='enum'/>
+ <exports symbol='XSLT_DEBUG_STEPOUT' type='enum'/>
<exports symbol='XSLT_DEBUG_STOP' type='enum'/>
+ <exports symbol='XSLT_TRACE_ALL' type='enum'/>
+ <exports symbol='XSLT_TRACE_APPLY_TEMPLATE' type='enum'/>
+ <exports symbol='XSLT_TRACE_APPLY_TEMPLATES' type='enum'/>
+ <exports symbol='XSLT_TRACE_CALL_TEMPLATE' type='enum'/>
+ <exports symbol='XSLT_TRACE_CHOOSE' type='enum'/>
+ <exports symbol='XSLT_TRACE_COMMENT' type='enum'/>
<exports symbol='XSLT_TRACE_COPY' type='enum'/>
+ <exports symbol='XSLT_TRACE_COPY_OF' type='enum'/>
+ <exports symbol='XSLT_TRACE_COPY_TEXT' type='enum'/>
+ <exports symbol='XSLT_TRACE_FOR_EACH' type='enum'/>
+ <exports symbol='XSLT_TRACE_IF' type='enum'/>
+ <exports symbol='XSLT_TRACE_KEYS' type='enum'/>
<exports symbol='XSLT_TRACE_NONE' type='enum'/>
- <exports symbol='XSLT_DEBUG_NONE' type='enum'/>
<exports symbol='XSLT_TRACE_PI' type='enum'/>
- <exports symbol='XSLT_TRACE_COMMENT' type='enum'/>
- <exports symbol='XSLT_TRACE_VARIABLES' type='enum'/>
- <exports symbol='XSLT_DEBUG_QUIT' type='enum'/>
+ <exports symbol='XSLT_TRACE_PROCESS_NODE' type='enum'/>
+ <exports symbol='XSLT_TRACE_STRIP_SPACES' type='enum'/>
<exports symbol='XSLT_TRACE_TEMPLATES' type='enum'/>
- <exports symbol='xsltDebugTraceCodes' type='typedef'/>
+ <exports symbol='XSLT_TRACE_VALUE_OF' type='enum'/>
+ <exports symbol='XSLT_TRACE_VARIABLES' type='enum'/>
<exports symbol='xsltDebugStatusCodes' type='typedef'/>
- <exports symbol='xsltGenericError' type='variable'/>
- <exports symbol='xsltGenericDebug' type='variable'/>
- <exports symbol='xsltGenericErrorContext' type='variable'/>
+ <exports symbol='xsltDebugTraceCodes' type='typedef'/>
<exports symbol='xslDebugStatus' type='variable'/>
+ <exports symbol='xsltGenericDebug' type='variable'/>
<exports symbol='xsltGenericDebugContext' type='variable'/>
- <exports symbol='xsltSaveResultToFile' type='function'/>
- <exports symbol='xsltSetGenericErrorFunc' type='function'/>
- <exports symbol='xsltSetDebuggerCallbacks' type='function'/>
- <exports symbol='xsltSaveResultTo' type='function'/>
- <exports symbol='xsltTransformError' type='function'/>
+ <exports symbol='xsltGenericError' type='variable'/>
+ <exports symbol='xsltGenericErrorContext' type='variable'/>
<exports symbol='xslAddCall' type='function'/>
- <exports symbol='xsltDocumentSortFunction' type='function'/>
- <exports symbol='xsltGetQNameURI2' type='function'/>
+ <exports symbol='xslDropCall' type='function'/>
+ <exports symbol='xsltAddCallCallback' type='function'/>
+ <exports symbol='xsltCalibrateAdjust' type='function'/>
<exports symbol='xsltComputeSortResult' type='function'/>
- <exports symbol='xsltPrintErrorContext' type='function'/>
- <exports symbol='xsltGetUTF8Char' type='function'/>
+ <exports symbol='xsltDebugGetDefaultTrace' type='function'/>
+ <exports symbol='xsltDebugSetDefaultTrace' type='function'/>
<exports symbol='xsltDefaultSortFunction' type='function'/>
- <exports symbol='xsltSaveResultToFd' type='function'/>
- <exports symbol='xsltSetCtxtSortFunc' type='function'/>
- <exports symbol='xsltGetNsProp' type='function'/>
+ <exports symbol='xsltDoSortFunction' type='function'/>
+ <exports symbol='xsltDocumentSortFunction' type='function'/>
+ <exports symbol='xsltDropCallCallback' type='function'/>
<exports symbol='xsltGetCNsProp' type='function'/>
+ <exports symbol='xsltGetDebuggerStatus' type='function'/>
+ <exports symbol='xsltGetNsProp' type='function'/>
+ <exports symbol='xsltGetProfileInformation' type='function'/>
<exports symbol='xsltGetQNameURI' type='function'/>
- <exports symbol='xsltAddCallCallback' type='function'/>
- <exports symbol='xsltCalibrateAdjust' type='function'/>
+ <exports symbol='xsltGetQNameURI2' type='function'/>
+ <exports symbol='xsltGetUTF8Char' type='function'/>
+ <exports symbol='xsltHandleDebuggerCallback' type='function'/>
+ <exports symbol='xsltMessage' type='function'/>
+ <exports symbol='xsltPrintErrorContext' type='function'/>
<exports symbol='xsltSaveProfiling' type='function'/>
+ <exports symbol='xsltSaveResultTo' type='function'/>
+ <exports symbol='xsltSaveResultToFd' type='function'/>
+ <exports symbol='xsltSaveResultToFile' type='function'/>
+ <exports symbol='xsltSaveResultToFilename' type='function'/>
<exports symbol='xsltSaveResultToString' type='function'/>
+ <exports symbol='xsltSetCtxtLocaleHandlers' type='function'/>
+ <exports symbol='xsltSetCtxtParseOptions' type='function'/>
+ <exports symbol='xsltSetCtxtSortFunc' type='function'/>
+ <exports symbol='xsltSetDebuggerCallbacks' type='function'/>
+ <exports symbol='xsltSetDebuggerStatus' type='function'/>
+ <exports symbol='xsltSetGenericDebugFunc' type='function'/>
+ <exports symbol='xsltSetGenericErrorFunc' type='function'/>
+ <exports symbol='xsltSetSortFunc' type='function'/>
+ <exports symbol='xsltSetTransformErrorFunc' type='function'/>
<exports symbol='xsltSplitQName' type='function'/>
- <exports symbol='xsltDoSortFunction' type='function'/>
- <exports symbol='xsltDebugGetDefaultTrace' type='function'/>
- <exports symbol='xsltMessage' type='function'/>
- <exports symbol='xsltGetDebuggerStatus' type='function'/>
<exports symbol='xsltTimestamp' type='function'/>
- <exports symbol='xsltSetTransformErrorFunc' type='function'/>
+ <exports symbol='xsltTransformError' type='function'/>
<exports symbol='xsltXPathCompile' type='function'/>
- <exports symbol='xsltDebugSetDefaultTrace' type='function'/>
- <exports symbol='xsltSetGenericDebugFunc' type='function'/>
<exports symbol='xsltXPathCompileFlags' type='function'/>
- <exports symbol='xsltSetCtxtParseOptions' type='function'/>
- <exports symbol='xsltSetDebuggerStatus' type='function'/>
- <exports symbol='xslDropCall' type='function'/>
- <exports symbol='xsltSetSortFunc' type='function'/>
- <exports symbol='xsltHandleDebuggerCallback' type='function'/>
- <exports symbol='xsltSaveResultToFilename' type='function'/>
- <exports symbol='xsltDropCallCallback' type='function'/>
- <exports symbol='xsltGetProfileInformation' type='function'/>
</file>
</files>
<symbols>
@@ -775,15 +776,6 @@
<macro name='XSLT_LIBXSLT_NAMESPACE' file='extra'>
<info>This is the libxslt namespace for specific extensions.</info>
</macro>
- <macro name='XSLT_LOCALE_NONE' file='xsltlocale'>
- <info>Macro indicating that there&apos;s no extended locale support</info>
- </macro>
- <macro name='XSLT_LOCALE_POSIX' file='xsltlocale'>
- <info>Macro indicating to use POSIX locale extensions</info>
- </macro>
- <macro name='XSLT_LOCALE_WINAPI' file='xsltlocale'>
- <info>Macro indicating to use WinAPI for extended locale support</info>
- </macro>
<macro name='XSLT_MARK_RES_TREE_FRAG' file='xsltInternals'>
<info>internal macro to set up tree fragments</info>
</macro>
@@ -1186,7 +1178,9 @@ the variables'/>
<field name='has_ns' type='int' info=''/>
</struct>
<typedef name='xsltStyleBasicItemVariablePtr' file='xsltInternals' type='xsltStyleBasicItemVariable *'/>
- <typedef name='xsltStyleItemApplyImports' file='xsltInternals' type='xsltStyleBasicEmptyItem'/>
+ <typedef name='xsltStyleItemApplyImports' file='xsltInternals' type='xsltStyleBasicEmptyItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:apply-imports /&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemApplyImportsPtr' file='xsltInternals' type='xsltStyleItemApplyImports *'/>
<struct name='xsltStyleItemApplyTemplates' file='xsltInternals' type='struct _xsltStyleItemApplyTemplates'>
<field name='mode' type='const xmlChar *' info=' apply-templates'/>
@@ -1211,15 +1205,21 @@ the variables'/>
<field name='has_ns' type='int' info=' element TODO: with-params'/>
</struct>
<typedef name='xsltStyleItemCallTemplatePtr' file='xsltInternals' type='xsltStyleItemCallTemplate *'/>
- <typedef name='xsltStyleItemChoose' file='xsltInternals' type='xsltStyleBasicEmptyItem'/>
+ <typedef name='xsltStyleItemChoose' file='xsltInternals' type='xsltStyleBasicEmptyItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:choose&gt; &lt;!-- Content: (xsl:when+, xsl:otherwise?) --&gt; &lt;/xsl:choose&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemChoosePtr' file='xsltInternals' type='xsltStyleItemChoose *'/>
- <typedef name='xsltStyleItemComment' file='xsltInternals' type='xsltStyleBasicEmptyItem'/>
+ <typedef name='xsltStyleItemComment' file='xsltInternals' type='xsltStyleBasicEmptyItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:comment&gt; &lt;!-- Content: template --&gt; &lt;/xsl:comment&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemCommentPtr' file='xsltInternals' type='xsltStyleItemComment *'/>
<struct name='xsltStyleItemCopy' file='xsltInternals' type='struct _xsltStyleItemCopy'>
<field name='use' type='const xmlChar *' info=' copy, element'/>
<field name='has_use' type='int' info=' copy, element'/>
</struct>
- <typedef name='xsltStyleItemCopyOf' file='xsltInternals' type='xsltStyleBasicExpressionItem'/>
+ <typedef name='xsltStyleItemCopyOf' file='xsltInternals' type='xsltStyleBasicExpressionItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:copy-of select = expression /&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemCopyOfPtr' file='xsltInternals' type='xsltStyleItemCopyOf *'/>
<typedef name='xsltStyleItemCopyPtr' file='xsltInternals' type='xsltStyleItemCopy *'/>
<struct name='xsltStyleItemDocument' file='xsltInternals' type='struct _xsltStyleItemDocument'>
@@ -1244,9 +1244,13 @@ TODO: Check if we need.'/>
<field name='item' type='xsltElemPreCompPtr' info=''/>
</struct>
<typedef name='xsltStyleItemExtElementPtr' file='xsltInternals' type='xsltStyleItemExtElement *'/>
- <typedef name='xsltStyleItemFallback' file='xsltInternals' type='xsltStyleBasicEmptyItem'/>
+ <typedef name='xsltStyleItemFallback' file='xsltInternals' type='xsltStyleBasicEmptyItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:fallback&gt; &lt;!-- Content: template --&gt; &lt;/xsl:fallback&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemFallbackPtr' file='xsltInternals' type='xsltStyleItemFallback *'/>
- <typedef name='xsltStyleItemForEach' file='xsltInternals' type='xsltStyleBasicExpressionItem'/>
+ <typedef name='xsltStyleItemForEach' file='xsltInternals' type='xsltStyleBasicExpressionItem'>
+ <info>&lt;!-- Category: instruction --&gt; &lt;xsl:for-each select = node-set-expression&gt; &lt;!-- Content: (xsl:sort*, template) --&gt; &lt;/xsl:for-each&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemForEachPtr' file='xsltInternals' type='xsltStyleItemForEach *'/>
<struct name='xsltStyleItemIf' file='xsltInternals' type='struct _xsltStyleItemIf'>
<field name='test' type='const xmlChar *' info=' if'/>
@@ -1295,7 +1299,6 @@ TODO: Check if we need.'/>
<field name='descending' type='int' info=' sort'/>
<field name='lang' type='const xmlChar *' info=' sort'/>
<field name='has_lang' type='int' info=' sort'/>
- <field name='locale' type='xsltLocale' info=' sort'/>
<field name='case_order' type='const xmlChar *' info=' sort'/>
<field name='lower_first' type='int' info=' sort'/>
<field name='use' type='const xmlChar *' info=''/>
@@ -1317,14 +1320,18 @@ TODO: Check if we need.'/>
<field name='noescape' type='int' info=''/>
</struct>
<typedef name='xsltStyleItemValueOfPtr' file='xsltInternals' type='xsltStyleItemValueOf *'/>
- <typedef name='xsltStyleItemVariable' file='xsltInternals' type='xsltStyleBasicItemVariable'/>
+ <typedef name='xsltStyleItemVariable' file='xsltInternals' type='xsltStyleBasicItemVariable'>
+ <info>&lt;!-- Category: top-level-element --&gt; &lt;xsl:param name = qname select = expression&gt; &lt;!-- Content: template --&gt; &lt;/xsl:param&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemVariablePtr' file='xsltInternals' type='xsltStyleItemVariable *'/>
<struct name='xsltStyleItemWhen' file='xsltInternals' type='struct _xsltStyleItemWhen'>
<field name='test' type='const xmlChar *' info=''/>
<field name='comp' type='xmlXPathCompExprPtr' info=''/>
</struct>
<typedef name='xsltStyleItemWhenPtr' file='xsltInternals' type='xsltStyleItemWhen *'/>
- <typedef name='xsltStyleItemWithParam' file='xsltInternals' type='xsltStyleBasicItemVariable'/>
+ <typedef name='xsltStyleItemWithParam' file='xsltInternals' type='xsltStyleBasicItemVariable'>
+ <info>&lt;xsl:with-param name = qname select = expression&gt; &lt;!-- Content: template --&gt; &lt;/xsl:with-param&gt;</info>
+ </typedef>
<typedef name='xsltStyleItemWithParamPtr' file='xsltInternals' type='xsltStyleItemWithParam *'/>
<struct name='xsltStylePreComp' file='xsltInternals' type='struct _xsltStylePreComp'>
<field name='next' type='xsltElemPreCompPtr' info=' chained list'/>
@@ -1340,7 +1347,6 @@ TODO: Check if we need.'/>
<field name='descending' type='int' info=' sort'/>
<field name='lang' type='const xmlChar *' info=' sort'/>
<field name='has_lang' type='int' info=' sort'/>
- <field name='locale' type='xsltLocale' info=' sort'/>
<field name='case_order' type='const xmlChar *' info=' sort'/>
<field name='lower_first' type='int' info=' sort'/>
<field name='use' type='const xmlChar *' info=' copy, element'/>
@@ -1575,6 +1581,11 @@ exits'/>
<field name='maxTemplateVars' type='int' info=''/>
<field name='opLimit' type='unsigned long' info=''/>
<field name='opCount' type='unsigned long' info=''/>
+ <field name='sourceDocDirty' type='int' info=''/>
+ <field name='currentId' type='unsigned long' info=' For generate-id()'/>
+ <field name='newLocale' type='xsltNewLocaleFunc' info=''/>
+ <field name='freeLocale' type='xsltFreeLocaleFunc' info=''/>
+ <field name='genSortKey' type='xsltGenSortKeyFunc' info=''/>
</struct>
<typedef name='xsltTransformContextPtr' file='xsltInternals' type='xsltTransformContext *'/>
<typedef name='xsltTransformState' file='xsltInternals' type='enum'/>
@@ -1589,28 +1600,38 @@ exits'/>
<variable name='xslDebugStatus' file='xsltutils' type='int'/>
<variable name='xsltConstNamespaceNameXSLT' file='xsltInternals' type='const xmlChar *'/>
<variable name='xsltDocDefaultLoader' file='documents' type='xsltDocLoaderFunc'/>
- <variable name='xsltEngineVersion' file='xslt' type='const char *'/>
+ <variable name='xsltEngineVersion' file='xslt' type='const char *'>
+ <info>The version string for libxslt.</info>
+ </variable>
<variable name='xsltExtMarker' file='preproc' type='const xmlChar *'/>
<variable name='xsltGenericDebug' file='xsltutils' type='xmlGenericErrorFunc'/>
<variable name='xsltGenericDebugContext' file='xsltutils' type='void *'/>
<variable name='xsltGenericError' file='xsltutils' type='xmlGenericErrorFunc'/>
<variable name='xsltGenericErrorContext' file='xsltutils' type='void *'/>
- <variable name='xsltLibxmlVersion' file='xslt' type='const int'/>
- <variable name='xsltLibxsltVersion' file='xslt' type='const int'/>
- <variable name='xsltMaxDepth' file='xslt' type='int'/>
+ <variable name='xsltLibxmlVersion' file='xslt' type='const int'>
+ <info>The version of libxml libxslt was compiled against.</info>
+ </variable>
+ <variable name='xsltLibxsltVersion' file='xslt' type='const int'>
+ <info>The version of libxslt compiled.</info>
+ </variable>
+ <variable name='xsltMaxDepth' file='xslt' type='int'>
+ <info>This value is used to detect templates loops.</info>
+ </variable>
<variable name='xsltMaxVars' file='xslt' type='int'/>
- <variable name='xsltXSLTAttrMarker' file='xsltInternals' type='const xmlChar *'/>
- <function name='xslAddCall' file='xsltutils'>
+ <variable name='xsltXSLTAttrMarker' file='xsltInternals' type='const xmlChar *'>
+ <info>Marker for XSLT attribute on Literal Result Elements.</info>
+ </variable>
+ <function name='xslAddCall' file='xsltutils' module='xsltutils'>
<info>Add template &quot;call&quot; to call stack</info>
<return type='int' info=': 1 on sucess 0 otherwise an error may be printed if WITH_XSLT_DEBUG_BREAKPOINTS is defined'/>
<arg name='templ' type='xsltTemplatePtr' info='current template being applied'/>
<arg name='source' type='xmlNodePtr' info='the source node being processed'/>
</function>
- <function name='xslDropCall' file='xsltutils'>
+ <function name='xslDropCall' file='xsltutils' module='xsltutils'>
<info>Drop the topmost item off the call stack</info>
<return type='void'/>
</function>
- <function name='xslHandleDebugger' file='transform'>
+ <function name='xslHandleDebugger' file='transform' module='xsltutils'>
<info>If either cur or node are a breakpoint, or xslDebugStatus in state where debugging must occcur at this time then transfer control to the xslDebugBreak function</info>
<return type='void'/>
<arg name='cur' type='xmlNodePtr' info='source node being executed'/>
@@ -1618,13 +1639,13 @@ exits'/>
<arg name='templ' type='xsltTemplatePtr' info='temlate that applies to node'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the xslt transform context'/>
</function>
- <functype name='xsltAddCallCallback' file='xsltutils'>
+ <functype name='xsltAddCallCallback' file='xsltutils' module='xsltutils'>
<info></info>
<return type='int' info=''/>
<arg name='templ' type='xsltTemplatePtr' info=''/>
<arg name='source' type='xmlNodePtr' info=''/>
</functype>
- <function name='xsltAddKey' file='keys'>
+ <function name='xsltAddKey' file='keys' module='keys'>
<info>add a key definition to a stylesheet</info>
<return type='int' info='0 in case of success, and -1 in case of failure.'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
@@ -1634,13 +1655,13 @@ exits'/>
<arg name='use' type='const xmlChar *' info='the use value'/>
<arg name='inst' type='xmlNodePtr' info='the key instruction'/>
</function>
- <function name='xsltAddStackElemList' file='variables'>
+ <function name='xsltAddStackElemList' file='variables' module='variables'>
<info>Push an element list onto the stack.</info>
<return type='int' info='0 in case of success, -1 in case of failure.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='xn XSLT transformation context'/>
<arg name='elems' type='xsltStackElemPtr' info='a stack element list'/>
</function>
- <function name='xsltAddTemplate' file='pattern'>
+ <function name='xsltAddTemplate' file='pattern' module='pattern'>
<info>Register the XSLT pattern associated to @cur</info>
<return type='int' info='-1 in case of error, 0 otherwise'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
@@ -1648,17 +1669,17 @@ exits'/>
<arg name='mode' type='const xmlChar *' info='the mode name or NULL'/>
<arg name='modeURI' type='const xmlChar *' info='the mode URI or NULL'/>
</function>
- <function name='xsltAllocateExtra' file='xsltInternals'>
+ <function name='xsltAllocateExtra' file='xsltInternals' module='xslt'>
<info>Allocate an extra runtime information slot statically while compiling the stylesheet and return its number</info>
<return type='int' info='the number of the slot'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltAllocateExtraCtxt' file='xsltInternals'>
+ <function name='xsltAllocateExtraCtxt' file='xsltInternals' module='xslt'>
<info>Allocate an extra runtime information slot at run-time and return its number This make sure there is a slot ready in the transformation context</info>
<return type='int' info='the number of the slot'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltApplyAttributeSet' file='attributes'>
+ <function name='xsltApplyAttributeSet' file='attributes' module='attributes'>
<info>Apply the xsl:use-attribute-sets. If @attrSets is NULL, then @inst will be used to exctract this value. If both, @attrSets and @inst, are NULL, then this will do nothing.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT stylesheet'/>
@@ -1666,7 +1687,7 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the attribute node &quot;xsl:use-attribute-sets&quot;'/>
<arg name='attrSets' type='const xmlChar *' info='the list of QNames of the attribute-sets to be applied'/>
</function>
- <function name='xsltApplyImports' file='transform'>
+ <function name='xsltApplyImports' file='transform' module='transform'>
<info>Process the XSLT apply-imports element.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -1674,7 +1695,7 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the element node of the XSLT &apos;apply-imports&apos; instruction'/>
<arg name='comp' type='xsltElemPreCompPtr' info='the compiled instruction'/>
</function>
- <function name='xsltApplyOneTemplate' file='transform'>
+ <function name='xsltApplyOneTemplate' file='transform' module='transform'>
<info>Processes a sequence constructor on the current node in the source tree. @params are the already computed variable stack items; this function pushes them on the variable stack, and pops them before exiting; it&apos;s left to the caller to free or reuse @params afterwards. The initial states of the variable stack will always be restored before this function exits. NOTE that this does *not* initiate a new distinct variable scope; i.e. variables already on the stack are visible to the process. The caller&apos;s side needs to start a new variable scope if needed (e.g. in exsl:function). @templ is obsolete and not used anymore (e.g. &lt;exslt:function&gt; does not provide a @templ); a non-NULL @templ might raise an error in the future. BIG NOTE: This function is not intended to process the content of an xsl:template; it does not expect xsl:param instructions in @list and will report errors if found. Called by: - xsltEvalVariable() (variables.c) - exsltFuncFunctionFunction() (libexsl/functions.c)</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1683,20 +1704,20 @@ exits'/>
<arg name='templ' type='xsltTemplatePtr' info='not used'/>
<arg name='params' type='xsltStackElemPtr' info='a set of parameters (xsl:param) or NULL'/>
</function>
- <function name='xsltApplyStripSpaces' file='transform'>
+ <function name='xsltApplyStripSpaces' file='transform' module='transform'>
<info>Strip the unwanted ignorable spaces from the input tree</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='node' type='xmlNodePtr' info='the root of the XML tree'/>
</function>
- <function name='xsltApplyStylesheet' file='transform'>
+ <function name='xsltApplyStylesheet' file='transform' module='transform'>
<info>Apply the stylesheet to the document NOTE: This may lead to a non-wellformed output XML wise !</info>
<return type='xmlDocPtr' info='the result document or NULL in case of error'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
<arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
<arg name='params' type='const char **' info='a NULL terminated arry of parameters names/values tuples'/>
</function>
- <function name='xsltApplyStylesheetUser' file='transform'>
+ <function name='xsltApplyStylesheetUser' file='transform' module='transform'>
<info>Apply the stylesheet to the document and allow the user to provide its own transformation context.</info>
<return type='xmlDocPtr' info='the result document or NULL in case of error'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
@@ -1706,7 +1727,7 @@ exits'/>
<arg name='profile' type='FILE *' info='profile FILE * output or NULL'/>
<arg name='userCtxt' type='xsltTransformContextPtr' info='user provided transform context'/>
</function>
- <function name='xsltApplyTemplates' file='transform'>
+ <function name='xsltApplyTemplates' file='transform' module='transform'>
<info>Processes the XSLT &apos;apply-templates&apos; instruction on the current node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT transformation context'/>
@@ -1714,34 +1735,34 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the element node of an XSLT &apos;apply-templates&apos; instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='the compiled instruction'/>
</function>
- <function name='xsltAttrListTemplateProcess' file='templates'>
+ <function name='xsltAttrListTemplateProcess' file='templates' module='templates'>
<info>Processes all attributes of a Literal Result Element. Attribute references are applied via xsl:use-attribute-set attributes. Copies all non XSLT-attributes over to the @target element and evaluates Attribute Value Templates. Called by xsltApplySequenceConstructor() (transform.c).</info>
<return type='xmlAttrPtr' info='a new list of attribute nodes, or NULL in case of error. (Don&apos;t assign the result to @target-&gt;properties; if the result is NULL, you&apos;ll get memory leaks, since the attributes will be disattached.)'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='target' type='xmlNodePtr' info='the element where the attributes will be grafted'/>
<arg name='attrs' type='xmlAttrPtr' info='the first attribute'/>
</function>
- <function name='xsltAttrTemplateProcess' file='templates'>
+ <function name='xsltAttrTemplateProcess' file='templates' module='templates'>
<info>Process one attribute of a Literal Result Element (in the stylesheet). Evaluates Attribute Value Templates and copies the attribute over to the result element. This does *not* process attribute sets (xsl:use-attribute-set).</info>
<return type='xmlAttrPtr' info='the generated attribute node.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='target' type='xmlNodePtr' info='the element where the attribute will be grafted'/>
<arg name='attr' type='xmlAttrPtr' info='the attribute node of a literal result element'/>
</function>
- <function name='xsltAttrTemplateValueProcess' file='templates'>
+ <function name='xsltAttrTemplateValueProcess' file='templates' module='templates'>
<info>Process the given node and return the new string value.</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='str' type='const xmlChar *' info='the attribute template node value'/>
</function>
- <function name='xsltAttrTemplateValueProcessNode' file='templates'>
+ <function name='xsltAttrTemplateValueProcessNode' file='templates' module='templates'>
<info>Process the given string, allowing to pass a namespace mapping context and return the new string value. Called by: - xsltAttrTemplateValueProcess() (templates.c) - xsltEvalAttrValueTemplate() (templates.c) QUESTION: Why is this function public? It is not used outside of templates.c.</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='str' type='const xmlChar *' info='the attribute template node value'/>
<arg name='inst' type='xmlNodePtr' info='the instruction (or LRE) in the stylesheet holding the attribute with an AVT'/>
</function>
- <function name='xsltAttribute' file='transform'>
+ <function name='xsltAttribute' file='transform' module='attributes'>
<info>Process the xslt attribute node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1749,12 +1770,12 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xsl:attribute element'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltCalibrateAdjust' file='xsltutils'>
+ <function name='xsltCalibrateAdjust' file='xsltutils' module='xsltutils'>
<info>Used for to correct the calibration for xsltTimestamp()</info>
<return type='void'/>
<arg name='delta' type='long' info='a negative dealy value found'/>
</function>
- <function name='xsltCallTemplate' file='transform'>
+ <function name='xsltCallTemplate' file='transform' module='transform'>
<info>Processes the XSLT call-template instruction on the source node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT transformation context'/>
@@ -1762,33 +1783,33 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the XSLT &apos;call-template&apos; instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='the compiled information of the instruction'/>
</function>
- <function name='xsltCheckExtPrefix' file='extensions'>
+ <function name='xsltCheckExtPrefix' file='extensions' module='extensions'>
<info>Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltGetInheritedNsList() (xslt.c) xsltParseTemplateContent (xslt.c)</info>
<return type='int' info='1 if this is an extension, 0 otherwise'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='URI' type='const xmlChar *' info='the namespace prefix (possibly NULL)'/>
</function>
- <function name='xsltCheckExtURI' file='extensions'>
+ <function name='xsltCheckExtURI' file='extensions' module='extensions'>
<info>Check if the given prefix is one of the declared extensions. This is intended to be called only at compile-time. Called by: xsltPrecomputeStylesheet() (xslt.c) xsltParseTemplateContent (xslt.c)</info>
<return type='int' info='1 if this is an extension, 0 otherwise'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='URI' type='const xmlChar *' info='the namespace URI (possibly NULL)'/>
</function>
- <function name='xsltCheckRead' file='security'>
+ <function name='xsltCheckRead' file='security' module='security'>
<info>Check if the resource is allowed to be read</info>
<return type='int' info='1 if read is allowed, 0 if not and -1 in case or error.'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security options'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URL' type='const xmlChar *' info='the resource to be read'/>
</function>
- <function name='xsltCheckWrite' file='security'>
+ <function name='xsltCheckWrite' file='security' module='security'>
<info>Check if the resource is allowed to be written, if necessary makes some preliminary work like creating directories</info>
<return type='int' info='1 if write is allowed, 0 if not and -1 in case or error.'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security options'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URL' type='const xmlChar *' info='the resource to be written'/>
</function>
- <function name='xsltChoose' file='transform'>
+ <function name='xsltChoose' file='transform' module='transform'>
<info>Processes the xsl:choose instruction on the source node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1796,16 +1817,16 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xsl:choose instruction'/>
<arg name='comp' type='xsltElemPreCompPtr' info='compiled information of the instruction'/>
</function>
- <function name='xsltCleanupGlobals' file='xslt'>
+ <function name='xsltCleanupGlobals' file='xslt' module='extensions'>
<info>Unregister all global variables set up by the XSLT library</info>
<return type='void'/>
</function>
- <function name='xsltCleanupTemplates' file='pattern'>
+ <function name='xsltCleanupTemplates' file='pattern' module='pattern'>
<info>Cleanup the state of the templates used by the stylesheet and the ones it imports.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltComment' file='transform'>
+ <function name='xsltComment' file='transform' module='transform'>
<info>Process the xslt comment node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1813,19 +1834,19 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt comment node'/>
<arg name='comp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltCompMatchClearCache' file='pattern'>
+ <function name='xsltCompMatchClearCache' file='pattern' module='pattern'>
<info>Clear pattern match cache.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='comp' type='xsltCompMatchPtr' info='the precompiled pattern list'/>
</function>
- <function name='xsltCompileAttr' file='xsltInternals'>
+ <function name='xsltCompileAttr' file='xsltInternals' module='attrvt'>
<info>Precompile an attribute in a stylesheet, basically it checks if it is an attribute value template, and if yes, establish some structures needed to process it at transformation time.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='a XSLT process context'/>
<arg name='attr' type='xmlAttrPtr' info='the attribute coming from the stylesheet.'/>
</function>
- <function name='xsltCompilePattern' file='pattern'>
+ <function name='xsltCompilePattern' file='pattern' module='pattern'>
<info>Compile the XSLT pattern and generates a list of precompiled form suitable for fast matching. [1] Pattern ::= LocationPathPattern | Pattern &apos;|&apos; LocationPathPattern</info>
<return type='xsltCompMatchPtr' info='the generated pattern list or NULL in case of failure'/>
<arg name='pattern' type='const xmlChar *' info='an XSLT pattern'/>
@@ -1834,13 +1855,13 @@ exits'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='runtime' type='xsltTransformContextPtr' info='the transformation context, if done at run-time'/>
</function>
- <function name='xsltComputeSortResult' file='xsltutils'>
+ <function name='xsltComputeSortResult' file='xsltutils' module='xsltutils'>
<info>reorder the current node list accordingly to the set of sorting requirement provided by the array of nodes.</info>
<return type='xmlXPathObjectPtr *' info='a ordered XPath nodeset or NULL in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='sort' type='xmlNodePtr' info='node list'/>
</function>
- <function name='xsltCopy' file='transform'>
+ <function name='xsltCopy' file='transform' module='transform'>
<info>Execute the XSLT-copy instruction on the source node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT process context'/>
@@ -1848,21 +1869,21 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the element node of the XSLT-copy instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='computed information of the XSLT-copy instruction'/>
</function>
- <function name='xsltCopyNamespace' file='namespaces'>
+ <function name='xsltCopyNamespace' file='namespaces' module='namespaces'>
<info>Copies a namespace node (declaration). If @elem is not NULL, then the new namespace will be declared on @elem.</info>
<return type='xmlNsPtr' info='a new xmlNsPtr, or NULL in case of an error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
<arg name='elem' type='xmlNodePtr' info='the target element node'/>
<arg name='ns' type='xmlNsPtr' info='the namespace node'/>
</function>
- <function name='xsltCopyNamespaceList' file='namespaces'>
+ <function name='xsltCopyNamespaceList' file='namespaces' module='namespaces'>
<info>Do a copy of an namespace list. If @node is non-NULL the new namespaces are added automatically. This handles namespaces aliases. This function is intended only for *internal* use at transformation-time for copying ns-declarations of Literal Result Elements. Called by: xsltCopyTreeInternal() (transform.c) xsltShallowCopyElem() (transform.c) REVISIT: This function won&apos;t be used in the refactored code.</info>
<return type='xmlNsPtr' info='a new xmlNsPtr, or NULL in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
<arg name='node' type='xmlNodePtr' info='the target node'/>
<arg name='cur' type='xmlNsPtr' info='the first namespace'/>
</function>
- <function name='xsltCopyOf' file='transform'>
+ <function name='xsltCopyOf' file='transform' module='transform'>
<info>Process the XSLT copy-of instruction.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -1870,7 +1891,7 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the element node of the XSLT copy-of instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information of the XSLT copy-of instruction'/>
</function>
- <function name='xsltCopyTextString' file='transform'>
+ <function name='xsltCopyTextString' file='transform' module='transform'>
<info>Adds @string to a newly created or an existent text node child of @target.</info>
<return type='xmlNodePtr' info='the text node, where the text content of @cur is copied to. NULL in case of API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1878,12 +1899,12 @@ exits'/>
<arg name='string' type='const xmlChar *' info='the text string'/>
<arg name='noescape' type='int' info='should disable-escaping be activated for this text node.'/>
</function>
- <function name='xsltCreateRVT' file='xsltInternals'>
+ <function name='xsltCreateRVT' file='xsltInternals' module='variables'>
<info>Creates a Result Value Tree (the XSLT 1.0 term for this is &quot;Result Tree Fragment&quot;)</info>
<return type='xmlDocPtr' info='the result value tree or NULL in case of API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltDebug' file='extra'>
+ <function name='xsltDebug' file='extra' module='extra'>
<info>Process an debug node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT processing context'/>
@@ -1891,48 +1912,48 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the instruction in the stylesheet'/>
<arg name='comp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltDebugDumpExtensions' file='extensions'>
+ <function name='xsltDebugDumpExtensions' file='extensions' module='extensions'>
<info>Dumps a list of the registered XSLT extension functions and elements</info>
<return type='void'/>
<arg name='output' type='FILE *' info='the FILE * for the output, if NULL stdout is used'/>
</function>
- <function name='xsltDebugGetDefaultTrace' file='xsltutils'>
+ <function name='xsltDebugGetDefaultTrace' file='xsltutils' module='transform'>
<info>Get the current default debug tracing level mask</info>
<return type='xsltDebugTraceCodes' info='the current default debug tracing level mask'/>
</function>
- <function name='xsltDebugSetDefaultTrace' file='xsltutils'>
+ <function name='xsltDebugSetDefaultTrace' file='xsltutils' module='transform'>
<info>Set the default debug tracing level mask</info>
<return type='void'/>
<arg name='val' type='xsltDebugTraceCodes' info='tracing level mask'/>
</function>
- <function name='xsltDecimalFormatGetByName' file='xsltInternals'>
+ <function name='xsltDecimalFormatGetByName' file='xsltInternals' module='xslt'>
<info>Find decimal-format by name</info>
<return type='xsltDecimalFormatPtr' info='the xsltDecimalFormatPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='name' type='xmlChar *' info='the decimal-format name to find'/>
</function>
- <function name='xsltDecimalFormatGetByQName' file='xsltInternals'>
+ <function name='xsltDecimalFormatGetByQName' file='xsltInternals' module='xslt'>
<info>Find decimal-format by QName</info>
<return type='xsltDecimalFormatPtr' info='the xsltDecimalFormatPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='nsUri' type='const xmlChar *' info='the namespace URI of the QName'/>
<arg name='name' type='const xmlChar *' info='the local part of the QName'/>
</function>
- <function name='xsltDefaultSortFunction' file='xsltutils'>
+ <function name='xsltDefaultSortFunction' file='xsltutils' module='xsltutils'>
<info>reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='sorts' type='xmlNodePtr *' info='array of sort nodes'/>
<arg name='nbsorts' type='int' info='the number of sorts in the array'/>
</function>
- <function name='xsltDoSortFunction' file='xsltutils'>
+ <function name='xsltDoSortFunction' file='xsltutils' module='xsltutils'>
<info>reorder the current node list accordingly to the set of sorting requirement provided by the arry of nodes. This is a wrapper function, the actual function used is specified using xsltSetCtxtSortFunc() to set the context specific sort function, or xsltSetSortFunc() to set the global sort function. If a sort function is set on the context, this will get called. Otherwise the global sort function is called.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='sorts' type='xmlNodePtr *' info='array of sort nodes'/>
<arg name='nbsorts' type='int' info='the number of sorts in the array'/>
</function>
- <functype name='xsltDocLoaderFunc' file='documents'>
+ <functype name='xsltDocLoaderFunc' file='documents' module='documents'>
<info>An xsltDocLoaderFunc is a signature for a function which can be registered to load document not provided by the compilation or transformation API themselve, for example when an xsl:import, xsl:include is found at compilation time or when a document() call is made at runtime.</info>
<return type='xmlDocPtr' info='the pointer to the document (which will be modified and freed by the engine later), or NULL in case of error.'/>
<arg name='URI' type='const xmlChar *' info='the URI of the document to load'/>
@@ -1941,14 +1962,14 @@ exits'/>
<arg name='ctxt' type='void *' info='the context, either a stylesheet or a transformation context'/>
<arg name='type' type='xsltLoadType' info='the xsltLoadType indicating the kind of loading required'/>
</functype>
- <function name='xsltDocumentComp' file='preproc'>
+ <function name='xsltDocumentComp' file='preproc' module='preproc'>
<info>Pre process an XSLT-1.1 document element</info>
<return type='xsltElemPreCompPtr' info='a precompiled data structure for the element'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='inst' type='xmlNodePtr' info='the instruction in the stylesheet'/>
<arg name='function' type='xsltTransformFunction' info='unused'/>
</function>
- <function name='xsltDocumentElem' file='transform'>
+ <function name='xsltDocumentElem' file='transform' module='transform'>
<info>Process an EXSLT/XSLT-1.1 document element</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT processing context'/>
@@ -1956,27 +1977,27 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the instruction in the stylesheet'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltDocumentFunction' file='functions'>
+ <function name='xsltDocumentFunction' file='functions' module='functions'>
<info>Implement the document() XSLT function node-set document(object, node-set?)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltDocumentSortFunction' file='xsltutils'>
+ <function name='xsltDocumentSortFunction' file='xsltutils' module='xsltutils'>
<info>reorder the current node list @list accordingly to the document order This function is slow, obsolete and should not be used anymore.</info>
<return type='void'/>
<arg name='list' type='xmlNodeSetPtr' info='the node set'/>
</function>
- <functype name='xsltDropCallCallback' file='xsltutils'>
+ <functype name='xsltDropCallCallback' file='xsltutils' module='xsltutils'>
<info></info>
<return type='void'/>
</functype>
- <functype name='xsltElemPreCompDeallocator' file='xsltInternals'>
+ <functype name='xsltElemPreCompDeallocator' file='xsltInternals' module='xsltInternals'>
<info>Deallocates an #xsltElemPreComp structure.</info>
<return type='void'/>
<arg name='comp' type='xsltElemPreCompPtr' info='the #xsltElemPreComp to free up'/>
</functype>
- <function name='xsltElement' file='transform'>
+ <function name='xsltElement' file='transform' module='transform'>
<info>Process the xslt element node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -1984,20 +2005,20 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt element node'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltElementAvailableFunction' file='functions'>
+ <function name='xsltElementAvailableFunction' file='functions' module='functions'>
<info>Implement the element-available() XSLT function boolean element-available(string)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltEvalAVT' file='xsltInternals'>
+ <function name='xsltEvalAVT' file='xsltInternals' module='attrvt'>
<info>Process the given AVT, and return the new string value.</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='avt' type='void *' info='the prevompiled attribute value template info'/>
<arg name='node' type='xmlNodePtr' info='the node hosting the attribute'/>
</function>
- <function name='xsltEvalAttrValueTemplate' file='templates'>
+ <function name='xsltEvalAttrValueTemplate' file='templates' module='templates'>
<info>Evaluate a attribute value template, i.e. the attribute value can contain expressions contained in curly braces ({}) and those are substituted by they computed value.</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
@@ -2005,19 +2026,19 @@ exits'/>
<arg name='name' type='const xmlChar *' info='the attribute QName'/>
<arg name='ns' type='const xmlChar *' info='the attribute namespace URI'/>
</function>
- <function name='xsltEvalGlobalVariables' file='variables'>
+ <function name='xsltEvalGlobalVariables' file='variables' module='variables'>
<info>Evaluates all global variables and parameters of a stylesheet. For internal use only. This is called at start of a transformation.</info>
<return type='int' info='0 in case of success, -1 in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
</function>
- <function name='xsltEvalOneUserParam' file='variables'>
+ <function name='xsltEvalOneUserParam' file='variables' module='variables'>
<info>This is normally called from xsltEvalUserParams to process a single parameter from a list of parameters. The @value is evaluated as an XPath expression and the result is stored in the context&apos;s global variable/parameter hash table. To have a parameter treated literally (not as an XPath expression) use xsltQuoteUserParams (or xsltQuoteOneUserParam). For more details see description of xsltProcessOneUserParamInternal.</info>
<return type='int' info='0 in case of success, -1 in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='name' type='const xmlChar *' info='a null terminated string giving the name of the parameter'/>
<arg name='value' type='const xmlChar *' info='a null terminated string giving the XPath expression to be evaluated'/>
</function>
- <function name='xsltEvalStaticAttrValueTemplate' file='templates'>
+ <function name='xsltEvalStaticAttrValueTemplate' file='templates' module='templates'>
<info>Check if an attribute value template has a static value, i.e. the attribute value does not contain expressions contained in curly braces ({})</info>
<return type='const xmlChar *' info='the static string value or NULL, must be deallocated by the caller.'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
@@ -2026,20 +2047,20 @@ exits'/>
<arg name='ns' type='const xmlChar *' info='the attribute namespace URI'/>
<arg name='found' type='int *' info='indicator whether the attribute is present'/>
</function>
- <function name='xsltEvalTemplateString' file='templates'>
+ <function name='xsltEvalTemplateString' file='templates' module='templates'>
<info>Processes the sequence constructor of the given instruction on @contextNode and converts the resulting tree to a string. This is needed by e.g. xsl:comment and xsl:processing-instruction.</info>
<return type='xmlChar *' info='the computed string value or NULL; it&apos;s up to the caller to free the result.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='contextNode' type='xmlNodePtr' info='the current node in the source tree'/>
<arg name='inst' type='xmlNodePtr' info='the XSLT instruction (xsl:comment, xsl:processing-instruction)'/>
</function>
- <function name='xsltEvalUserParams' file='variables'>
+ <function name='xsltEvalUserParams' file='variables' module='variables'>
<info>Evaluate the global variables of a stylesheet. This needs to be done on parsed stylesheets before starting to apply transformations. Each of the parameters is evaluated as an XPath expression and stored in the global variables/parameter hash table. If you want your parameter used literally, use xsltQuoteUserParams.</info>
<return type='int' info='0 in case of success, -1 in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='params' type='const char **' info='a NULL terminated array of parameters name/value tuples'/>
</function>
- <function name='xsltEvalXPathPredicate' file='templates'>
+ <function name='xsltEvalXPathPredicate' file='templates' module='templates'>
<info>Process the expression using XPath and evaluate the result as an XPath predicate</info>
<return type='int' info='1 is the predicate was true, 0 otherwise'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
@@ -2047,13 +2068,13 @@ exits'/>
<arg name='nsList' type='xmlNsPtr *' info='the namespaces in scope'/>
<arg name='nsNr' type='int' info='the number of namespaces in scope'/>
</function>
- <function name='xsltEvalXPathString' file='templates'>
+ <function name='xsltEvalXPathString' file='templates' module='templates'>
<info>Process the expression using XPath and get a string</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='comp' type='xmlXPathCompExprPtr' info='the compiled XPath expression'/>
</function>
- <function name='xsltEvalXPathStringNs' file='templates'>
+ <function name='xsltEvalXPathStringNs' file='templates' module='templates'>
<info>Process the expression using XPath, allowing to pass a namespace mapping context and get a string</info>
<return type='xmlChar *' info='the computed string value or NULL, must be deallocated by the caller.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
@@ -2061,88 +2082,88 @@ exits'/>
<arg name='nsNr' type='int' info='the number of namespaces in the list'/>
<arg name='nsList' type='xmlNsPtr *' info='the list of in-scope namespaces to use'/>
</function>
- <function name='xsltExtElementLookup' file='extensions'>
+ <function name='xsltExtElementLookup' file='extensions' module='extensions'>
<info>Looks up an extension element. @ctxt can be NULL to search only in module elements.</info>
<return type='xsltTransformFunction' info='the element callback or NULL if not found'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT process context'/>
<arg name='name' type='const xmlChar *' info='the element name'/>
<arg name='URI' type='const xmlChar *' info='the element namespace URI'/>
</function>
- <functype name='xsltExtInitFunction' file='extensions'>
+ <functype name='xsltExtInitFunction' file='extensions' module='extensions'>
<info>A function called at initialization time of an XSLT extension module.</info>
<return type='void *' info='a pointer to the module specific data for this transformation.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URI' type='const xmlChar *' info='the namespace URI for the extension'/>
</functype>
- <function name='xsltExtModuleElementLookup' file='extensions'>
+ <function name='xsltExtModuleElementLookup' file='extensions' module='extensions'>
<info>Looks up an extension module element</info>
<return type='xsltTransformFunction' info='the callback function if found, NULL otherwise.'/>
<arg name='name' type='const xmlChar *' info='the element name'/>
<arg name='URI' type='const xmlChar *' info='the element namespace URI'/>
</function>
- <function name='xsltExtModuleElementPreComputeLookup' file='extensions'>
+ <function name='xsltExtModuleElementPreComputeLookup' file='extensions' module='extensions'>
<info>Looks up an extension module element pre-computation function</info>
<return type='xsltPreComputeFunction' info='the callback function if found, NULL otherwise.'/>
<arg name='name' type='const xmlChar *' info='the element name'/>
<arg name='URI' type='const xmlChar *' info='the element namespace URI'/>
</function>
- <function name='xsltExtModuleFunctionLookup' file='extensions'>
+ <function name='xsltExtModuleFunctionLookup' file='extensions' module='extensions'>
<info>Looks up an extension module function</info>
<return type='xmlXPathFunction' info='the function if found, NULL otherwise.'/>
<arg name='name' type='const xmlChar *' info='the function name'/>
<arg name='URI' type='const xmlChar *' info='the function namespace URI'/>
</function>
- <function name='xsltExtModuleTopLevelLookup' file='extensions'>
+ <function name='xsltExtModuleTopLevelLookup' file='extensions' module='extensions'>
<info>Looks up an extension module top-level element</info>
<return type='xsltTopLevelFunction' info='the callback function if found, NULL otherwise.'/>
<arg name='name' type='const xmlChar *' info='the top-level element name'/>
<arg name='URI' type='const xmlChar *' info='the top-level element namespace URI'/>
</function>
- <functype name='xsltExtShutdownFunction' file='extensions'>
+ <functype name='xsltExtShutdownFunction' file='extensions' module='extensions'>
<info>A function called at shutdown time of an XSLT extension module.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URI' type='const xmlChar *' info='the namespace URI for the extension'/>
<arg name='data' type='void *' info='the data associated to this module'/>
</functype>
- <function name='xsltExtensionInstructionResultFinalize' file='xsltInternals'>
+ <function name='xsltExtensionInstructionResultFinalize' file='xsltInternals' module='variables'>
<info>Finalizes the data (e.g. result tree fragments) created within a value-returning process (e.g. EXSLT&apos;s function). Tree fragments marked as being returned by a function are set to normal state, which means that the fragment garbage collector will free them after the function-calling process exits.</info>
<return type='int' info='0 in case of success and -1 in case of API or internal errors. This function is unsupported in newer releases of libxslt.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltExtensionInstructionResultRegister' file='xsltInternals'>
+ <function name='xsltExtensionInstructionResultRegister' file='xsltInternals' module='variables'>
<info>Marks the result of a value-returning extension instruction in order to avoid it being garbage collected before the extension instruction exits. Note that one still has to additionally register any newly created tree fragments (via xsltCreateRVT()) with xsltRegisterLocalRVT().</info>
<return type='int' info='0 in case of success and -1 in case of error. It isn&apos;t necessary to call this function in newer releases of libxslt.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='obj' type='xmlXPathObjectPtr' info='an XPath object to be inspected for result tree fragments'/>
</function>
- <function name='xsltFindDocument' file='documents'>
+ <function name='xsltFindDocument' file='documents' module='documents'>
<info>Try to find a document within the XSLT transformation context. This will not find document infos for temporary Result Tree Fragments.</info>
<return type='xsltDocumentPtr' info='the desired xsltDocumentPtr or NULL in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
</function>
- <function name='xsltFindElemSpaceHandling' file='imports'>
+ <function name='xsltFindElemSpaceHandling' file='imports' module='imports'>
<info>Find strip-space or preserve-space information for an element respect the import precedence or the wildcards</info>
<return type='int' info='1 if space should be stripped, 0 if not, and 2 if everything should be CDTATA wrapped.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='node' type='xmlNodePtr' info='an XML node'/>
</function>
- <function name='xsltFindTemplate' file='imports'>
+ <function name='xsltFindTemplate' file='imports' module='imports'>
<info>Finds the named template, apply import precedence rule. REVISIT TODO: We&apos;ll change the nameURI fields of templates to be in the string dict, so if the specified @nameURI is in the same dict, then use pointer comparison. Check if this can be done in a sane way. Maybe this function is not needed internally at transformation-time if we hard-wire the called templates to the caller.</info>
<return type='xsltTemplatePtr' info='the xsltTemplatePtr or NULL if not found'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='name' type='const xmlChar *' info='the template name'/>
<arg name='nameURI' type='const xmlChar *' info='the template name URI'/>
</function>
- <function name='xsltFlagRVTs' file='xsltInternals'>
+ <function name='xsltFlagRVTs' file='xsltInternals' module='variables'>
<info>Updates ownership information of RVTs in @obj according to @val. @val = XSLT_RVT_FUNC_RESULT for the result of an extension function, so its RVTs won&apos;t be destroyed after leaving the returning scope. @val = XSLT_RVT_LOCAL for the result of an extension function to reset the state of its RVTs after it was returned to a new scope. @val = XSLT_RVT_GLOBAL for parts of global variables.</info>
<return type='int' info='0 in case of success and -1 in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='obj' type='xmlXPathObjectPtr' info='an XPath object to be inspected for result tree fragments'/>
- <arg name='val' type='void *' info='the flag value'/>
+ <arg name='val' type='int' info='the flag value'/>
</function>
- <function name='xsltForEach' file='transform'>
+ <function name='xsltForEach' file='transform' module='transform'>
<info>Process the xslt for-each node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -2150,7 +2171,7 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the element node of the xsl:for-each instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='the compiled information of the instruction'/>
</function>
- <function name='xsltFormatNumberConversion' file='xsltInternals'>
+ <function name='xsltFormatNumberConversion' file='xsltInternals' module='numbers'>
<info>format-number() uses the JDK 1.1 DecimalFormat class: http://java.sun.com/products/jdk/1.1/docs/api/java.text.DecimalFormat.html Structure: pattern := subpattern{;subpattern} subpattern := {prefix}integer{.fraction}{suffix} prefix := &apos;\\u0000&apos;..&apos;\\uFFFD&apos; - specialCharacters suffix := &apos;\\u0000&apos;..&apos;\\uFFFD&apos; - specialCharacters integer := &apos;#&apos;* &apos;0&apos;* &apos;0&apos; fraction := &apos;0&apos;* &apos;#&apos;* Notation: X* 0 or more instances of X (X | Y) either X or Y. X..Y any character from X up to Y, inclusive. S - T characters in S, except those in T Special Characters: Symbol Meaning 0 a digit # a digit, zero shows as absent . placeholder for decimal separator , placeholder for grouping separator. ; separates formats. - default negative prefix. % multiply by 100 and show as percentage ? multiply by 1000 and show as per mille X any other characters can be used in the prefix or suffix &apos; used to quote special characters in a prefix or suffix.</info>
<return type='xmlXPathError' info='a possible XPath error'/>
<arg name='self' type='xsltDecimalFormatPtr' info='the decimal format'/>
@@ -2158,130 +2179,141 @@ exits'/>
<arg name='number' type='double' info='the value to format'/>
<arg name='result' type='xmlChar **' info='the place to output the result'/>
</function>
- <function name='xsltFormatNumberFunction' file='functions'>
+ <function name='xsltFormatNumberFunction' file='functions' module='functions'>
<info>Implement the format-number() XSLT function string format-number(number, string, string?)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltFreeAVTList' file='xsltInternals'>
+ <function name='xsltFreeAVTList' file='xsltInternals' module='attrvt'>
<info>Free up the memory associated to the attribute value templates</info>
<return type='void'/>
<arg name='avt' type='void *' info='pointer to an list of AVT structures'/>
</function>
- <function name='xsltFreeAttributeSetsHashes' file='attributes'>
+ <function name='xsltFreeAttributeSetsHashes' file='attributes' module='attributes'>
<info>Free up the memory used by attribute sets</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeCompMatchList' file='pattern'>
+ <function name='xsltFreeCompMatchList' file='pattern' module='pattern'>
<info>Free up the memory allocated by all the elements of @comp</info>
<return type='void'/>
<arg name='comp' type='xsltCompMatchPtr' info='an XSLT comp list'/>
</function>
- <function name='xsltFreeCtxtExts' file='extensions'>
+ <function name='xsltFreeCtxtExts' file='extensions' module='extensions'>
<info>Free the XSLT extension data</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltFreeDocumentKeys' file='keys'>
+ <function name='xsltFreeDocumentKeys' file='keys' module='keys'>
<info>Free the keys associated to a document</info>
<return type='void'/>
<arg name='idoc' type='xsltDocumentPtr' info='a XSLT document'/>
</function>
- <function name='xsltFreeDocuments' file='documents'>
+ <function name='xsltFreeDocuments' file='documents' module='documents'>
<info>Free up all the space used by the loaded documents</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltFreeExts' file='extensions'>
+ <function name='xsltFreeExts' file='extensions' module='extensions'>
<info>Free up the memory used by XSLT extensions in a stylesheet</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeGlobalVariables' file='variables'>
+ <function name='xsltFreeGlobalVariables' file='variables' module='variables'>
<info>Free up the data associated to the global variables its value.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
</function>
- <function name='xsltFreeKeys' file='keys'>
+ <function name='xsltFreeKeys' file='keys' module='keys'>
<info>Free up the memory used by XSLT keys in a stylesheet</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeLocale' file='xsltlocale'>
+ <function name='xsltFreeLocale' file='xsltlocale' module='xsltlocale'>
<info>Frees a locale created with xsltNewLocale</info>
<return type='void'/>
- <arg name='locale' type='xsltLocale' info='the locale to free'/>
+ <arg name='locale' type='void *' info='the locale to free'/>
</function>
- <function name='xsltFreeLocales' file='xsltlocale'>
+ <functype name='xsltFreeLocaleFunc' file='xsltInternals' module='xsltInternals'>
+ <info></info>
+ <return type='void'/>
+ <arg name='locale' type='void *' info=''/>
+ </functype>
+ <function name='xsltFreeLocales' file='xsltlocale' module='xsltlocale'>
<info>Cleanup function for the locale support on shutdown</info>
<return type='void'/>
</function>
- <function name='xsltFreeNamespaceAliasHashes' file='namespaces'>
+ <function name='xsltFreeNamespaceAliasHashes' file='namespaces' module='namespaces'>
<info>Free up the memory used by namespaces aliases</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeRVTs' file='xsltInternals'>
+ <function name='xsltFreeRVTs' file='xsltInternals' module='variables'>
<info>Frees all registered result value trees (Result Tree Fragments) of the transformation. Internal function; should not be called by user-code.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltFreeSecurityPrefs' file='security'>
+ <function name='xsltFreeSecurityPrefs' file='security' module='security'>
<info>Free up a security preference block</info>
<return type='void'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to free'/>
</function>
- <function name='xsltFreeStackElemList' file='xsltInternals'>
+ <function name='xsltFreeStackElemList' file='xsltInternals' module='variables'>
<info>Free up the memory allocated by @elem</info>
<return type='void'/>
<arg name='elem' type='xsltStackElemPtr' info='an XSLT stack element'/>
</function>
- <function name='xsltFreeStyleDocuments' file='documents'>
+ <function name='xsltFreeStyleDocuments' file='documents' module='documents'>
<info>Frees the node-trees (and xsltDocument structures) of all stylesheet-modules of the stylesheet-level represented by the given @style.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet (representing a stylesheet-level)'/>
</function>
- <function name='xsltFreeStylePreComps' file='preproc'>
+ <function name='xsltFreeStylePreComps' file='preproc' module='preproc'>
<info>Free up the memory allocated by all precomputed blocks</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltFreeStylesheet' file='xsltInternals'>
+ <function name='xsltFreeStylesheet' file='xsltInternals' module='xslt'>
<info>Free up the memory allocated by @style</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeTemplateHashes' file='pattern'>
+ <function name='xsltFreeTemplateHashes' file='pattern' module='pattern'>
<info>Free up the memory used by xsltAddTemplate/xsltGetTemplate mechanism</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltFreeTransformContext' file='transform'>
+ <function name='xsltFreeTransformContext' file='transform' module='transform'>
<info>Free up the memory allocated by @ctxt</info>
<return type='void'/>
- <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT parser context'/>
+ <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transform context'/>
</function>
- <function name='xsltFunctionAvailableFunction' file='functions'>
+ <function name='xsltFunctionAvailableFunction' file='functions' module='functions'>
<info>Implement the function-available() XSLT function boolean function-available(string)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltFunctionNodeSet' file='extra'>
+ <function name='xsltFunctionNodeSet' file='extra' module='extra'>
<info>Implement the node-set() XSLT function node-set node-set(result-tree) This function is available in libxslt, saxon or xt namespace.</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltGenerateIdFunction' file='functions'>
+ <functype name='xsltGenSortKeyFunc' file='xsltInternals' module='xsltInternals'>
+ <info></info>
+ <return type='xmlChar *' info=''/>
+ <arg name='locale' type='void *' info=''/>
+ <arg name='lang' type='const xmlChar *' info=''/>
+ </functype>
+ <function name='xsltGenerateIdFunction' file='functions' module='functions'>
<info>Implement the generate-id() XSLT function string generate-id(node-set?)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltGetCNsProp' file='xsltutils'>
+ <function name='xsltGetCNsProp' file='xsltutils' module='xsltutils'>
<info>Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
<return type='const xmlChar *' info='the attribute value or NULL if not found. The string is allocated in the stylesheet dictionary.'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
@@ -2289,27 +2321,27 @@ exits'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
<arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
</function>
- <function name='xsltGetDebuggerStatus' file='xsltutils'>
+ <function name='xsltGetDebuggerStatus' file='xsltutils' module='xsltutils'>
<info>Get xslDebugStatus.</info>
<return type='int' info='the value of xslDebugStatus.'/>
</function>
- <function name='xsltGetDefaultSecurityPrefs' file='security'>
+ <function name='xsltGetDefaultSecurityPrefs' file='security' module='security'>
<info>Get the default security preference application-wide</info>
<return type='xsltSecurityPrefsPtr' info='the current xsltSecurityPrefsPtr in use or NULL if none'/>
</function>
- <function name='xsltGetExtData' file='extensions'>
+ <function name='xsltGetExtData' file='extensions' module='extensions'>
<info>Retrieve the data associated to the extension module in this given transformation.</info>
<return type='void *' info='the pointer or NULL if not present'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the exension module'/>
</function>
- <function name='xsltGetExtInfo' file='extensions'>
+ <function name='xsltGetExtInfo' file='extensions' module='extensions'>
<info>looks up URI in extInfos of the stylesheet</info>
<return type='xmlHashTablePtr' info='a pointer to the hash table if found, else NULL'/>
<arg name='style' type='xsltStylesheetPtr' info='pointer to a stylesheet'/>
<arg name='URI' type='const xmlChar *' info='the namespace URI desired'/>
</function>
- <function name='xsltGetKey' file='keys'>
+ <function name='xsltGetKey' file='keys' module='keys'>
<info>Looks up a key of the in current source doc (the document info on @ctxt-&gt;document). Computes the key if not already done for the current source doc.</info>
<return type='xmlNodeSetPtr' info='the nodeset resulting from the query or NULL'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -2317,7 +2349,7 @@ exits'/>
<arg name='nameURI' type='const xmlChar *' info='the name URI or NULL'/>
<arg name='value' type='const xmlChar *' info='the key value to look for'/>
</function>
- <function name='xsltGetNamespace' file='namespaces'>
+ <function name='xsltGetNamespace' file='namespaces' module='namespaces'>
<info>Find a matching (prefix and ns-name) ns-declaration for the requested @ns-&gt;prefix and @ns-&gt;href in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Called by: - xsltCopyPropList() (*not* anymore) - xsltShallowCopyElement() - xsltCopyTreeInternal() (*not* anymore) - xsltApplySequenceConstructor() (*not* in the refactored code), - xsltElement() (*not* anymore)</info>
<return type='xmlNsPtr' info='a namespace declaration or NULL in case of namespace fixup failures or API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
@@ -2325,14 +2357,14 @@ exits'/>
<arg name='ns' type='xmlNsPtr' info='the namespace'/>
<arg name='out' type='xmlNodePtr' info='the output node (or its parent)'/>
</function>
- <function name='xsltGetNsProp' file='xsltutils'>
+ <function name='xsltGetNsProp' file='xsltutils' module='xsltutils'>
<info>Similar to xmlGetNsProp() but with a slightly different semantic Search and get the value of an attribute associated to a node This attribute has to be anchored in the namespace specified, or has no namespace and the element is in that namespace. This does the entity substitution. This function looks in DTD attribute declaration for #FIXED or default declaration values unless DTD use has been turned off.</info>
<return type='xmlChar *' info='the attribute value or NULL if not found. It&apos;s up to the caller to free the memory.'/>
<arg name='node' type='xmlNodePtr' info='the node'/>
<arg name='name' type='const xmlChar *' info='the attribute name'/>
<arg name='nameSpace' type='const xmlChar *' info='the URI of the namespace'/>
</function>
- <function name='xsltGetPlainNamespace' file='namespaces'>
+ <function name='xsltGetPlainNamespace' file='namespaces' module='namespaces'>
<info>Obsolete. *Not* called by any Libxslt/Libexslt function. Exaclty the same as xsltGetNamespace().</info>
<return type='xmlNsPtr' info='a namespace declaration or NULL in case of namespace fixup failures or API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
@@ -2340,31 +2372,31 @@ exits'/>
<arg name='ns' type='xmlNsPtr' info='the namespace'/>
<arg name='out' type='xmlNodePtr' info='the result element'/>
</function>
- <function name='xsltGetProfileInformation' file='xsltutils'>
+ <function name='xsltGetProfileInformation' file='xsltutils' module='xsltutils'>
<info>This function should be called after the transformation completed to extract template processing profiling information if available. The information is returned as an XML document tree like &lt;?xml version=&quot;1.0&quot;?&gt; &lt;profile&gt; &lt;template rank=&quot;1&quot; match=&quot;*&quot; name=&quot;&quot; mode=&quot;&quot; calls=&quot;6&quot; time=&quot;48&quot; average=&quot;8&quot;/&gt; &lt;template rank=&quot;2&quot; match=&quot;item2|item3&quot; name=&quot;&quot; mode=&quot;&quot; calls=&quot;10&quot; time=&quot;30&quot; average=&quot;3&quot;/&gt; &lt;template rank=&quot;3&quot; match=&quot;item1&quot; name=&quot;&quot; mode=&quot;&quot; calls=&quot;5&quot; time=&quot;17&quot; average=&quot;3&quot;/&gt; &lt;/profile&gt; The caller will need to free up the returned tree with xmlFreeDoc()</info>
<return type='xmlDocPtr' info='the xmlDocPtr corresponding to the result or NULL if not available.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
</function>
- <function name='xsltGetQNameURI' file='xsltutils'>
+ <function name='xsltGetQNameURI' file='xsltutils' module='xsltutils'>
<info>This function analyzes @name, if the name contains a prefix, the function seaches the associated namespace in scope for it. It will also replace @name value with the NCName, the old value being freed. Errors in the prefix lookup are signalled by setting @name to NULL. NOTE: the namespace returned is a pointer to the place where it is defined and hence has the same lifespan as the document holding it.</info>
<return type='const xmlChar *' info='the namespace URI if there is a prefix, or NULL if @name is not prefixed.'/>
<arg name='node' type='xmlNodePtr' info='the node holding the QName'/>
<arg name='name' type='xmlChar **' info='pointer to the initial QName value'/>
</function>
- <function name='xsltGetQNameURI2' file='xsltutils'>
+ <function name='xsltGetQNameURI2' file='xsltutils' module='xsltutils'>
<info>This function is similar to xsltGetQNameURI, but is used when @name is a dictionary entry.</info>
<return type='const xmlChar *' info='the namespace URI if there is a prefix, or NULL if @name is not prefixed.'/>
<arg name='style' type='xsltStylesheetPtr' info='stylesheet pointer'/>
<arg name='node' type='xmlNodePtr' info='the node holding the QName'/>
<arg name='name' type='const xmlChar **' info='pointer to the initial QName value'/>
</function>
- <function name='xsltGetSecurityPrefs' file='security'>
+ <function name='xsltGetSecurityPrefs' file='security' module='security'>
<info>Lookup the security option to get the callback checking function</info>
<return type='xsltSecurityCheck' info='NULL if not found, the function otherwise'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to update'/>
<arg name='option' type='xsltSecurityOption' info='the option to lookup'/>
</function>
- <function name='xsltGetSpecialNamespace' file='namespaces'>
+ <function name='xsltGetSpecialNamespace' file='namespaces' module='namespaces'>
<info>Find a matching (prefix and ns-name) ns-declaration for the requested @nsName and @nsPrefix in the result tree. If none is found then a new ns-declaration will be added to @resultElem. If, in this case, the given prefix is already in use, then a ns-declaration with a modified ns-prefix be we created. Note that this function&apos;s priority is to preserve ns-prefixes; it will only change a prefix if there&apos;s a namespace clash. If both @nsName and @nsPrefix are NULL, then this will try to &quot;undeclare&quot; a default namespace by declaring an xmlns=&quot;&quot;.</info>
<return type='xmlNsPtr' info='a namespace declaration or NULL.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the transformation context'/>
@@ -2373,24 +2405,24 @@ exits'/>
<arg name='nsPrefix' type='const xmlChar *' info='the suggested namespace prefix (or NULL)'/>
<arg name='target' type='xmlNodePtr' info='the result element on which to anchor a namespace'/>
</function>
- <function name='xsltGetTemplate' file='pattern'>
+ <function name='xsltGetTemplate' file='pattern' module='pattern'>
<info>Finds the template applying to this node, if @style is non-NULL it means one needs to look for the next imported template in scope.</info>
<return type='xsltTemplatePtr' info='the xsltTemplatePtr or NULL if not found'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='node' type='xmlNodePtr' info='the node being processed'/>
<arg name='style' type='xsltStylesheetPtr' info='the current style'/>
</function>
- <function name='xsltGetUTF8Char' file='xsltutils'>
+ <function name='xsltGetUTF8Char' file='xsltutils' module='xsltutils'>
<info>Read one UTF8 Char from @utf Function copied from libxml2 xmlGetUTF8Char() ... to discard ultimately and use the original API</info>
<return type='int' info='the char value or -1 in case of error and update @len with the number of bytes used'/>
<arg name='utf' type='const unsigned char *' info='a sequence of UTF-8 encoded bytes'/>
<arg name='len' type='int *' info='a pointer to @bytes len'/>
</function>
- <function name='xsltGetXIncludeDefault' file='transform'>
+ <function name='xsltGetXIncludeDefault' file='transform' module='transform'>
<info>Provides the default state for XInclude processing</info>
<return type='int' info='0 if there is no processing 1 otherwise'/>
</function>
- <functype name='xsltHandleDebuggerCallback' file='xsltutils'>
+ <functype name='xsltHandleDebuggerCallback' file='xsltutils' module='xsltutils'>
<info></info>
<return type='void'/>
<arg name='cur' type='xmlNodePtr' info=''/>
@@ -2398,7 +2430,7 @@ exits'/>
<arg name='templ' type='xsltTemplatePtr' info=''/>
<arg name='ctxt' type='xsltTransformContextPtr' info=''/>
</functype>
- <function name='xsltIf' file='transform'>
+ <function name='xsltIf' file='transform' module='transform'>
<info>Processes the xsl:if instruction on the source node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -2406,34 +2438,34 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xsl:if instruction'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='compiled information of the instruction'/>
</function>
- <function name='xsltInit' file='xslt'>
+ <function name='xsltInit' file='xslt' module='xslt'>
<info>Initializes the processor (e.g. registers built-in extensions, etc.)</info>
<return type='void'/>
</function>
- <function name='xsltInitAllDocKeys' file='xsltInternals'>
+ <function name='xsltInitAllDocKeys' file='xsltInternals' module='keys'>
<info>INTERNAL ROUTINE ONLY Check if any keys on the current document need to be computed</info>
<return type='int' info='0 in case of success, -1 in case of failure'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='transformation context'/>
</function>
- <function name='xsltInitCtxtExts' file='extensions'>
+ <function name='xsltInitCtxtExts' file='extensions' module='extensions'>
<info>Initialize the set of modules with registered stylesheet data</info>
<return type='int' info='the number of modules initialized or -1 in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltInitCtxtKey' file='xsltInternals'>
+ <function name='xsltInitCtxtKey' file='xsltInternals' module='keys'>
<info>Computes the key tables this key and for the current input document.</info>
<return type='int' info='0 on success, -1 on error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='idoc' type='xsltDocumentPtr' info='the document information (holds key values)'/>
<arg name='keyDef' type='xsltKeyDefPtr' info='the key definition'/>
</function>
- <function name='xsltInitCtxtKeys' file='keys'>
+ <function name='xsltInitCtxtKeys' file='keys' module='keys'>
<info>Computes all the keys tables for the current input document. Should be done before global varibales are initialized. NOTE: Not used anymore in the refactored code.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='idoc' type='xsltDocumentPtr' info='a document info'/>
</function>
- <function name='xsltInitElemPreComp' file='extensions'>
+ <function name='xsltInitElemPreComp' file='extensions' module='extensions'>
<info>Initializes an existing #xsltElemPreComp structure. This is usefull when extending an #xsltElemPreComp to store precomputed data. This function MUST be called on any extension element precomputed data struct.</info>
<return type='void'/>
<arg name='comp' type='xsltElemPreCompPtr' info='an #xsltElemPreComp (or generally a derived structure)'/>
@@ -2442,60 +2474,60 @@ exits'/>
<arg name='function' type='xsltTransformFunction' info='the transform function'/>
<arg name='freeFunc' type='xsltElemPreCompDeallocator' info='the @comp deallocator'/>
</function>
- <function name='xsltInitGlobals' file='extensions'>
+ <function name='xsltInitGlobals' file='extensions' module='extensions'>
<info>Initialize the global variables for extensions</info>
<return type='void'/>
</function>
- <function name='xsltIsBlank' file='xsltInternals'>
+ <function name='xsltIsBlank' file='xsltInternals' module='xslt'>
<info>Check if a string is ignorable</info>
<return type='int' info='1 if the string is NULL or made of blanks chars, 0 otherwise'/>
<arg name='str' type='xmlChar *' info='a string'/>
</function>
- <function name='xsltKeyFunction' file='functions'>
+ <function name='xsltKeyFunction' file='functions' module='functions'>
<info>Implement the key() XSLT function node-set key(string, object)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltLoadDocument' file='documents'>
+ <function name='xsltLoadDocument' file='documents' module='documents'>
<info>Try to load a document (not a stylesheet) within the XSLT transformation context</info>
<return type='xsltDocumentPtr' info='the new xsltDocumentPtr or NULL in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='URI' type='const xmlChar *' info='the computed URI of the document'/>
</function>
- <function name='xsltLoadStyleDocument' file='documents'>
+ <function name='xsltLoadStyleDocument' file='documents' module='documents'>
<info>Try to load a stylesheet document within the XSLT transformation context</info>
<return type='xsltDocumentPtr' info='the new xsltDocumentPtr or NULL in case of error'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT style sheet'/>
<arg name='URI' type='const xmlChar *' info='the computed URI of the document'/>
</function>
- <function name='xsltLoadStylesheetPI' file='xsltInternals'>
+ <function name='xsltLoadStylesheetPI' file='xsltInternals' module='xslt'>
<info>This function tries to locate the stylesheet PI in the given document If found, and if contained within the document, it will extract that subtree to build the stylesheet to process @doc (doc itself will be modified). If found but referencing an external document it will attempt to load it and generate a stylesheet from it. In both cases, the resulting stylesheet and the document need to be freed once the transformation is done.</info>
<return type='xsltStylesheetPtr' info='a new XSLT stylesheet structure or NULL if not found.'/>
<arg name='doc' type='xmlDocPtr' info='a document to process'/>
</function>
- <function name='xsltLocalVariablePop' file='transform'>
+ <function name='xsltLocalVariablePop' file='transform' module='transform'>
<info>Pops all variable values at the given @depth from the stack.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the transformation context'/>
<arg name='limitNr' type='int' info='number of variables which should remain'/>
<arg name='level' type='int' info='the depth in the xsl:template&apos;s tree'/>
</function>
- <function name='xsltLocalVariablePush' file='transform'>
+ <function name='xsltLocalVariablePush' file='transform' module='transform'>
<info>Places the variable onto the local variable stack</info>
<return type='int' info='0 for success, -1 for any error **NOTE:** This is an internal routine and should not be called by users!'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the transformation context'/>
<arg name='variable' type='xsltStackElemPtr' info='variable to be pushed to the variable stack'/>
<arg name='level' type='int' info='new value for variable&apos;s level'/>
</function>
- <function name='xsltLocaleStrcmp' file='xsltlocale'>
- <info>Compares two strings transformed with xsltStrxfrm</info>
+ <function name='xsltLocaleStrcmp' file='xsltlocale' module='xsltlocale'>
+ <info>DEPRECATED: Same as xmlStrcmp. Compares two strings transformed with xsltStrxfrm.</info>
<return type='int' info='a value &lt; 0 if str1 sorts before str2, a value &gt; 0 if str1 sorts after str2, 0 if str1 and str2 are equal wrt sorting'/>
- <arg name='locale' type='xsltLocale' info='a locale identifier'/>
- <arg name='str1' type='const xsltLocaleChar *' info='a string transformed with xsltStrxfrm'/>
- <arg name='str2' type='const xsltLocaleChar *' info='a string transformed with xsltStrxfrm'/>
+ <arg name='locale' type='void *' info='unused'/>
+ <arg name='str1' type='const xmlChar *' info='a string transformed with xsltStrxfrm'/>
+ <arg name='str2' type='const xmlChar *' info='a string transformed with xsltStrxfrm'/>
</function>
- <function name='xsltMatchPattern' file='pattern'>
+ <function name='xsltMatchPattern' file='pattern' module='pattern'>
<info></info>
<return type='int' info=''/>
<arg name='ctxt' type='xsltTransformContextPtr' info=''/>
@@ -2504,75 +2536,82 @@ exits'/>
<arg name='ctxtdoc' type='xmlDocPtr' info=''/>
<arg name='ctxtnode' type='xmlNodePtr' info=''/>
</function>
- <function name='xsltMessage' file='xsltutils'>
+ <function name='xsltMessage' file='xsltutils' module='xsltutils'>
<info>Process and xsl:message construct</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT processing context'/>
<arg name='node' type='xmlNodePtr' info='The current node'/>
<arg name='inst' type='xmlNodePtr' info='The node containing the message instruction'/>
</function>
- <function name='xsltNamespaceAlias' file='namespaces'>
+ <function name='xsltNamespaceAlias' file='namespaces' module='namespaces'>
<info>Read the stylesheet-prefix and result-prefix attributes, register them as well as the corresponding namespace.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='node' type='xmlNodePtr' info='the xsl:namespace-alias node'/>
</function>
- <function name='xsltNeedElemSpaceHandling' file='imports'>
+ <function name='xsltNeedElemSpaceHandling' file='imports' module='imports'>
<info>Checks whether that stylesheet requires white-space stripping</info>
<return type='int' info='1 if space should be stripped, 0 if not'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltNewDocument' file='documents'>
+ <function name='xsltNewDocument' file='documents' module='documents'>
<info>Register a new document, apply key computations</info>
<return type='xsltDocumentPtr' info='a handler to the document'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context (or NULL)'/>
<arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
</function>
- <function name='xsltNewElemPreComp' file='extensions'>
+ <function name='xsltNewElemPreComp' file='extensions' module='extensions'>
<info>Creates and initializes an #xsltElemPreComp</info>
<return type='xsltElemPreCompPtr' info='the new and initialized #xsltElemPreComp'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='inst' type='xmlNodePtr' info='the element node'/>
<arg name='function' type='xsltTransformFunction' info='the transform function'/>
</function>
- <function name='xsltNewLocale' file='xsltlocale'>
+ <function name='xsltNewLocale' file='xsltlocale' module='xsltlocale'>
<info>Creates a new locale of an opaque system dependent type based on the language tag.</info>
- <return type='xsltLocale' info='the locale or NULL on error or if no matching locale was found'/>
+ <return type='void *' info='the locale or NULL on error or if no matching locale was found'/>
<arg name='languageTag' type='const xmlChar *' info='RFC 3066 language tag'/>
+ <arg name='lowerFirst' type='int' info=''/>
</function>
- <function name='xsltNewSecurityPrefs' file='security'>
+ <functype name='xsltNewLocaleFunc' file='xsltInternals' module='xsltInternals'>
+ <info></info>
+ <return type='void *' info=''/>
+ <arg name='lang' type='const xmlChar *' info=''/>
+ <arg name='lowerFirst' type='int' info=''/>
+ </functype>
+ <function name='xsltNewSecurityPrefs' file='security' module='security'>
<info>Create a new security preference block</info>
<return type='xsltSecurityPrefsPtr' info='a pointer to the new block or NULL in case of error'/>
</function>
- <function name='xsltNewStyleDocument' file='documents'>
+ <function name='xsltNewStyleDocument' file='documents' module='documents'>
<info>Register a new document, apply key computations</info>
<return type='xsltDocumentPtr' info='a handler to the document'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT style sheet'/>
<arg name='doc' type='xmlDocPtr' info='a parsed XML document'/>
</function>
- <function name='xsltNewStylesheet' file='xsltInternals'>
+ <function name='xsltNewStylesheet' file='xsltInternals' module='xslt'>
<info>Create a new XSLT Stylesheet</info>
<return type='xsltStylesheetPtr' info='the newly allocated xsltStylesheetPtr or NULL in case of error'/>
</function>
- <function name='xsltNewTransformContext' file='transform'>
+ <function name='xsltNewTransformContext' file='transform' module='transform'>
<info>Create a new XSLT TransformContext</info>
<return type='xsltTransformContextPtr' info='the newly allocated xsltTransformContextPtr or NULL in case of error'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
<arg name='doc' type='xmlDocPtr' info='the input document'/>
</function>
- <function name='xsltNextImport' file='imports'>
+ <function name='xsltNextImport' file='imports' module='imports'>
<info>Find the next stylesheet in import precedence.</info>
<return type='xsltStylesheetPtr' info='the next stylesheet or NULL if it was the last one'/>
<arg name='cur' type='xsltStylesheetPtr' info='the current XSLT stylesheet'/>
</function>
- <function name='xsltNormalizeCompSteps' file='pattern'>
+ <function name='xsltNormalizeCompSteps' file='pattern' module='pattern'>
<info>This is a hashtable scanner function to normalize the compiled steps of an imported stylesheet.</info>
<return type='void'/>
<arg name='payload' type='void *' info='pointer to template hash table entry'/>
<arg name='data' type='void *' info='pointer to the stylesheet'/>
<arg name='name' type='const xmlChar *' info='template match name'/>
</function>
- <function name='xsltNumber' file='transform'>
+ <function name='xsltNumber' file='transform' module='transform'>
<info>Process the xslt number node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -2580,163 +2619,163 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt number node'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltNumberFormat' file='xsltInternals'>
+ <function name='xsltNumberFormat' file='xsltInternals' module='numbers'>
<info>Convert one number.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='data' type='xsltNumberDataPtr' info='the formatting information'/>
<arg name='node' type='xmlNodePtr' info='the data to format'/>
</function>
- <function name='xsltParseAnyXSLTElem' file='xsltInternals'>
+ <function name='xsltParseAnyXSLTElem' file='xsltInternals' module='xslt'>
<info>Parses, validates the content models and compiles XSLT instructions.</info>
<return type='int' info='0 if everything&apos;s fine; -1 on API or internal errors.'/>
<arg name='cctxt' type='xsltCompilerCtxtPtr' info='the compilation context'/>
<arg name='elem' type='xmlNodePtr' info='the element node of the XSLT instruction'/>
</function>
- <function name='xsltParseGlobalParam' file='variables'>
+ <function name='xsltParseGlobalParam' file='variables' module='variables'>
<info>parse an XSLT transformation param declaration and record its value.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the &quot;param&quot; element'/>
</function>
- <function name='xsltParseGlobalVariable' file='variables'>
+ <function name='xsltParseGlobalVariable' file='variables' module='variables'>
<info>Parses a global XSLT &apos;variable&apos; declaration at compilation time and registers it</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the &quot;variable&quot; element'/>
</function>
- <function name='xsltParseSequenceConstructor' file='xsltInternals'>
+ <function name='xsltParseSequenceConstructor' file='xsltInternals' module='xslt'>
<info>Parses a &quot;template&quot; content (or &quot;sequence constructor&quot; in XSLT 2.0 terms). This will additionally remove xsl:text elements from the tree.</info>
<return type='void'/>
<arg name='cctxt' type='xsltCompilerCtxtPtr' info='the compilation context'/>
<arg name='cur' type='xmlNodePtr' info='the start-node of the content to be parsed'/>
</function>
- <function name='xsltParseStylesheetAttributeSet' file='attributes'>
+ <function name='xsltParseStylesheetAttributeSet' file='attributes' module='attributes'>
<info>parse an XSLT stylesheet attribute-set element</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the &quot;attribute-set&quot; element'/>
</function>
- <function name='xsltParseStylesheetCallerParam' file='variables'>
+ <function name='xsltParseStylesheetCallerParam' file='variables' module='variables'>
<info>Processes an xsl:with-param instruction at transformation time. The value is computed, but not recorded. NOTE that this is also called with an *xsl:param* element from exsltFuncFunctionFunction().</info>
<return type='xsltStackElemPtr' info='the new xsltStackElemPtr or NULL'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='inst' type='xmlNodePtr' info='the xsl:with-param instruction element'/>
</function>
- <function name='xsltParseStylesheetDoc' file='xsltInternals'>
+ <function name='xsltParseStylesheetDoc' file='xsltInternals' module='xslt'>
<info>parse an XSLT stylesheet, building the associated structures. doc is kept as a reference within the returned stylesheet, so changes to doc after the parsing will be reflected when the stylesheet is applied, and the doc is automatically freed when the stylesheet is closed.</info>
<return type='xsltStylesheetPtr' info='a new XSLT stylesheet structure.'/>
- <arg name='doc' type='xmlDocPtr' info='and xmlDoc parsed XML'/>
+ <arg name='doc' type='xmlDocPtr' info='an xmlDoc parsed XML'/>
</function>
- <function name='xsltParseStylesheetFile' file='xsltInternals'>
+ <function name='xsltParseStylesheetFile' file='xsltInternals' module='xslt'>
<info>Load and parse an XSLT stylesheet</info>
<return type='xsltStylesheetPtr' info='a new XSLT stylesheet structure.'/>
<arg name='filename' type='const xmlChar *' info='the filename/URL to the stylesheet'/>
</function>
- <function name='xsltParseStylesheetImport' file='imports'>
+ <function name='xsltParseStylesheetImport' file='imports' module='imports'>
<info>parse an XSLT stylesheet import element</info>
<return type='int' info='0 in case of success -1 in case of failure.'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the import element'/>
</function>
- <function name='xsltParseStylesheetImportedDoc' file='xsltInternals'>
+ <function name='xsltParseStylesheetImportedDoc' file='xsltInternals' module='xslt'>
<info>parse an XSLT stylesheet building the associated structures except the processing not needed for imported documents.</info>
<return type='xsltStylesheetPtr' info='a new XSLT stylesheet structure.'/>
<arg name='doc' type='xmlDocPtr' info='an xmlDoc parsed XML'/>
<arg name='parentStyle' type='xsltStylesheetPtr' info='pointer to the parent stylesheet (if it exists)'/>
</function>
- <function name='xsltParseStylesheetInclude' file='imports'>
+ <function name='xsltParseStylesheetInclude' file='imports' module='imports'>
<info>parse an XSLT stylesheet include element</info>
<return type='int' info='0 in case of success -1 in case of failure'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the include node'/>
</function>
- <function name='xsltParseStylesheetOutput' file='xsltInternals'>
+ <function name='xsltParseStylesheetOutput' file='xsltInternals' module='xslt'>
<info>parse an XSLT stylesheet output element and record information related to the stylesheet output</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='cur' type='xmlNodePtr' info='the &quot;output&quot; element'/>
</function>
- <function name='xsltParseStylesheetParam' file='variables'>
+ <function name='xsltParseStylesheetParam' file='variables' module='variables'>
<info>Registers a local XSLT &apos;param&apos; declaration at transformation time and evaluates its value.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='cur' type='xmlNodePtr' info='the XSLT &apos;param&apos; element'/>
</function>
- <function name='xsltParseStylesheetProcess' file='xsltInternals'>
+ <function name='xsltParseStylesheetProcess' file='xsltInternals' module='xslt'>
<info>Parses an XSLT stylesheet, adding the associated structures. Called by: xsltParseStylesheetImportedDoc() (xslt.c) xsltParseStylesheetInclude() (imports.c)</info>
<return type='xsltStylesheetPtr' info='the value of the @style parameter if everything went right, NULL if something went amiss.'/>
<arg name='ret' type='xsltStylesheetPtr' info='the XSLT stylesheet (the current stylesheet-level)'/>
<arg name='doc' type='xmlDocPtr' info='and xmlDoc parsed XML'/>
</function>
- <function name='xsltParseStylesheetUser' file='xsltInternals'>
+ <function name='xsltParseStylesheetUser' file='xsltInternals' module='xslt'>
<info>Parse an XSLT stylesheet with a user-provided stylesheet struct.</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='style' type='xsltStylesheetPtr' info='pointer to the stylesheet'/>
<arg name='doc' type='xmlDocPtr' info='an xmlDoc parsed XML'/>
</function>
- <function name='xsltParseStylesheetVariable' file='variables'>
+ <function name='xsltParseStylesheetVariable' file='variables' module='variables'>
<info>Registers a local XSLT &apos;variable&apos; instruction at transformation time and evaluates its value.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='inst' type='xmlNodePtr' info='the xsl:variable instruction element'/>
</function>
- <function name='xsltParseTemplateContent' file='xsltInternals'>
+ <function name='xsltParseTemplateContent' file='xsltInternals' module='xslt'>
<info>parse a template content-model Clean-up the template content from unwanted ignorable blank nodes and process xslt:text</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='templ' type='xmlNodePtr' info='the container node (can be a document for literal results)'/>
</function>
- <function name='xsltPointerListAddSize' file='xsltInternals'>
+ <function name='xsltPointerListAddSize' file='xsltInternals' module='xsltutils'>
<info>Adds an item to the list.</info>
<return type='int' info='the position of the added item in the list or -1 in case of an error.'/>
<arg name='list' type='xsltPointerListPtr' info='the pointer list structure'/>
<arg name='item' type='void *' info='the item to be stored'/>
<arg name='initialSize' type='int' info='the initial size of the list'/>
</function>
- <function name='xsltPointerListClear' file='xsltInternals'>
+ <function name='xsltPointerListClear' file='xsltInternals' module='xsltutils'>
<info>Resets the list, but does not free the allocated array and does not free the content of the list.</info>
<return type='void'/>
<arg name='list' type='xsltPointerListPtr' info='pointer to the list to be cleared'/>
</function>
- <function name='xsltPointerListCreate' file='xsltInternals'>
+ <function name='xsltPointerListCreate' file='xsltInternals' module='xsltutils'>
<info>Creates an xsltPointerList structure.</info>
<return type='xsltPointerListPtr' info='a xsltPointerList structure or NULL in case of an error.'/>
<arg name='initialSize' type='int' info='the initial size for the list'/>
</function>
- <function name='xsltPointerListFree' file='xsltInternals'>
+ <function name='xsltPointerListFree' file='xsltInternals' module='xsltutils'>
<info>Frees the xsltPointerList structure. This does not free the content of the list.</info>
<return type='void'/>
<arg name='list' type='xsltPointerListPtr' info='pointer to the list to be freed'/>
</function>
- <function name='xsltPreComputeExtModuleElement' file='extensions'>
+ <function name='xsltPreComputeExtModuleElement' file='extensions' module='extensions'>
<info>Precomputes an extension module element</info>
<return type='xsltElemPreCompPtr' info='the precomputed data'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='inst' type='xmlNodePtr' info='the element node'/>
</function>
- <functype name='xsltPreComputeFunction' file='extensions'>
+ <functype name='xsltPreComputeFunction' file='extensions' module='extensions'>
<info></info>
<return type='xsltElemPreCompPtr' info=''/>
<arg name='style' type='xsltStylesheetPtr' info=''/>
<arg name='inst' type='xmlNodePtr' info=''/>
<arg name='function' type='xsltTransformFunction' info=''/>
</functype>
- <function name='xsltPrintErrorContext' file='xsltutils'>
+ <function name='xsltPrintErrorContext' file='xsltutils' module='xsltutils'>
<info>Display the context of an error.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the transformation context'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='node' type='xmlNodePtr' info='the current node being processed'/>
</function>
- <function name='xsltProcessOneNode' file='transform'>
+ <function name='xsltProcessOneNode' file='transform' module='transform'>
<info>Process the source node.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='contextNode' type='xmlNodePtr' info='the &quot;current node&quot; in the source tree'/>
<arg name='withParams' type='xsltStackElemPtr' info='extra parameters (e.g. xsl:with-param) passed to the template if any'/>
</function>
- <function name='xsltProcessingInstruction' file='transform'>
+ <function name='xsltProcessingInstruction' file='transform' module='transform'>
<info>Process the xslt processing-instruction node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -2744,7 +2783,7 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt processing-instruction node'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltProfileStylesheet' file='transform'>
+ <function name='xsltProfileStylesheet' file='transform' module='transform'>
<info>Apply the stylesheet to the document and dump the profiling to the given output.</info>
<return type='xmlDocPtr' info='the result document or NULL in case of error'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
@@ -2752,34 +2791,34 @@ exits'/>
<arg name='params' type='const char **' info='a NULL terminated arry of parameters names/values tuples'/>
<arg name='output' type='FILE *' info='a FILE * for the profiling output'/>
</function>
- <function name='xsltQuoteOneUserParam' file='variables'>
+ <function name='xsltQuoteOneUserParam' file='variables' module='variables'>
<info>This is normally called from xsltQuoteUserParams to process a single parameter from a list of parameters. The @value is stored in the context&apos;s global variable/parameter hash table.</info>
<return type='int' info='0 in case of success, -1 in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='name' type='const xmlChar *' info='a null terminated string giving the name of the parameter'/>
<arg name='value' type='const xmlChar *' info='a null terminated string giving the parameter value'/>
</function>
- <function name='xsltQuoteUserParams' file='variables'>
+ <function name='xsltQuoteUserParams' file='variables' module='variables'>
<info>Similar to xsltEvalUserParams, but the values are treated literally and are * *not* evaluated as XPath expressions. This should be done on parsed stylesheets before starting to apply transformations.</info>
<return type='int' info='0 in case of success, -1 in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='params' type='const char **' info='a NULL terminated arry of parameters names/values tuples'/>
</function>
- <function name='xsltRegisterAllElement' file='transform'>
+ <function name='xsltRegisterAllElement' file='transform' module='transform'>
<info>Registers all default XSLT elements in this context</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XPath context'/>
</function>
- <function name='xsltRegisterAllExtras' file='extra'>
+ <function name='xsltRegisterAllExtras' file='extra' module='extra'>
<info>Registers the built-in extensions</info>
<return type='void'/>
</function>
- <function name='xsltRegisterAllFunctions' file='functions'>
+ <function name='xsltRegisterAllFunctions' file='functions' module='functions'>
<info>Registers all default XSLT functions in this context</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathContextPtr' info='the XPath context'/>
</function>
- <function name='xsltRegisterExtElement' file='extensions'>
+ <function name='xsltRegisterExtElement' file='extensions' module='extensions'>
<info>Registers an extension element</info>
<return type='int' info='0 in case of success, -1 in case of failure'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -2787,7 +2826,7 @@ exits'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the element'/>
<arg name='function' type='xsltTransformFunction' info='the actual implementation which should be called'/>
</function>
- <function name='xsltRegisterExtFunction' file='extensions'>
+ <function name='xsltRegisterExtFunction' file='extensions' module='extensions'>
<info>Registers an extension function</info>
<return type='int' info='0 in case of success, -1 in case of failure'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -2795,14 +2834,14 @@ exits'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the element'/>
<arg name='function' type='xmlXPathFunction' info='the actual implementation which should be called'/>
</function>
- <function name='xsltRegisterExtModule' file='extensions'>
+ <function name='xsltRegisterExtModule' file='extensions' module='extensions'>
<info>Register an XSLT extension module to the library.</info>
<return type='int' info='0 if sucessful, -1 in case of error'/>
<arg name='URI' type='const xmlChar *' info='URI associated to this module'/>
<arg name='initFunc' type='xsltExtInitFunction' info='the module initialization function'/>
<arg name='shutdownFunc' type='xsltExtShutdownFunction' info='the module shutdown function'/>
</function>
- <function name='xsltRegisterExtModuleElement' file='extensions'>
+ <function name='xsltRegisterExtModuleElement' file='extensions' module='extensions'>
<info>Registers an extension module element.</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the element name'/>
@@ -2810,7 +2849,7 @@ exits'/>
<arg name='precomp' type='xsltPreComputeFunction' info='the pre-computation callback'/>
<arg name='transform' type='xsltTransformFunction' info='the transformation callback'/>
</function>
- <function name='xsltRegisterExtModuleFull' file='extensions'>
+ <function name='xsltRegisterExtModuleFull' file='extensions' module='extensions'>
<info>Register an XSLT extension module to the library.</info>
<return type='int' info='0 if sucessful, -1 in case of error'/>
<arg name='URI' type='const xmlChar *' info='URI associated to this module'/>
@@ -2819,72 +2858,72 @@ exits'/>
<arg name='styleInitFunc' type='xsltStyleExtInitFunction' info='the module initialization function'/>
<arg name='styleShutdownFunc' type='xsltStyleExtShutdownFunction' info='the module shutdown function'/>
</function>
- <function name='xsltRegisterExtModuleFunction' file='extensions'>
+ <function name='xsltRegisterExtModuleFunction' file='extensions' module='extensions'>
<info>Registers an extension module function.</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the function name'/>
<arg name='URI' type='const xmlChar *' info='the function namespace URI'/>
<arg name='function' type='xmlXPathFunction' info='the function callback'/>
</function>
- <function name='xsltRegisterExtModuleTopLevel' file='extensions'>
+ <function name='xsltRegisterExtModuleTopLevel' file='extensions' module='extensions'>
<info>Registers an extension module top-level element.</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the top-level element name'/>
<arg name='URI' type='const xmlChar *' info='the top-level element namespace URI'/>
<arg name='function' type='xsltTopLevelFunction' info='the top-level element callback'/>
</function>
- <function name='xsltRegisterExtPrefix' file='extensions'>
+ <function name='xsltRegisterExtPrefix' file='extensions' module='extensions'>
<info>Registers an extension namespace This is called from xslt.c during compile-time. The given prefix is not needed. Called by: xsltParseExtElemPrefixes() (new function) xsltRegisterExtPrefix() (old function)</info>
<return type='int' info='0 in case of success, 1 if the @URI was already registered as an extension namespace and -1 in case of failure'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
<arg name='prefix' type='const xmlChar *' info='the prefix used (optional)'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the extension'/>
</function>
- <function name='xsltRegisterExtras' file='extra'>
+ <function name='xsltRegisterExtras' file='extra' module='extra'>
<info>Registers the built-in extensions. This function is deprecated, use xsltRegisterAllExtras instead.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
</function>
- <function name='xsltRegisterLocalRVT' file='xsltInternals'>
+ <function name='xsltRegisterLocalRVT' file='xsltInternals' module='variables'>
<info>Registers a result value tree (XSLT 1.0 term: Result Tree Fragment) in the RVT garbage collector. The fragment will be freed when the instruction which created the fragment exits.</info>
<return type='int' info='0 in case of success and -1 in case of API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='RVT' type='xmlDocPtr' info='a result value tree (Result Tree Fragment; xmlDocPtr)'/>
</function>
- <function name='xsltRegisterPersistRVT' file='xsltInternals'>
+ <function name='xsltRegisterPersistRVT' file='xsltInternals' module='variables'>
<info>Register the result value tree (XSLT 1.0 term: Result Tree Fragment) in the fragment garbage collector. The fragment will be freed when the transformation context is freed.</info>
<return type='int' info='0 in case of success and -1 in case of error.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='RVT' type='xmlDocPtr' info='a result value tree (Result Tree Fragment)'/>
</function>
- <function name='xsltRegisterTestModule' file='extensions'>
+ <function name='xsltRegisterTestModule' file='extensions' module='extensions'>
<info>Registers the test module</info>
<return type='void'/>
</function>
- <function name='xsltRegisterTmpRVT' file='xsltInternals'>
+ <function name='xsltRegisterTmpRVT' file='xsltInternals' module='variables'>
<info>Registers the result value tree (XSLT 1.0 term: Result Tree Fragment) in the garbage collector. The fragment will be freed at the exit of the currently instantiated xsl:template. Obsolete; this function might produce massive memory overhead, since the fragment is only freed when the current xsl:template exits. Use xsltRegisterLocalRVT() instead.</info>
<return type='int' info='0 in case of success and -1 in case of API or internal errors.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='RVT' type='xmlDocPtr' info='a result value tree (Result Tree Fragment)'/>
</function>
- <function name='xsltReleaseRVT' file='xsltInternals'>
+ <function name='xsltReleaseRVT' file='xsltInternals' module='variables'>
<info>Either frees the RVT (which is an xmlDoc) or stores it in the context&apos;s cache for later reuse.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='RVT' type='xmlDocPtr' info='a result value tree (Result Tree Fragment)'/>
</function>
- <function name='xsltResolveStylesheetAttributeSet' file='attributes'>
+ <function name='xsltResolveStylesheetAttributeSet' file='attributes' module='attributes'>
<info>resolve the references between attribute sets.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
</function>
- <function name='xsltRestoreDocumentNamespaces' file='xsltInternals'>
+ <function name='xsltRestoreDocumentNamespaces' file='xsltInternals' module='xslt'>
<info>Restore the namespaces for the document</info>
<return type='int' info='0 in case of success, -1 in case of failure'/>
<arg name='ns' type='xsltNsMapPtr' info='map of namespaces'/>
<arg name='doc' type='xmlDocPtr' info='the document'/>
</function>
- <function name='xsltRunStylesheet' file='transform'>
+ <function name='xsltRunStylesheet' file='transform' module='transform'>
<info>Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It&apos;s an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8</info>
<return type='int' info='the number of bytes written to the main resource or -1 in case of error.'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
@@ -2894,7 +2933,7 @@ exits'/>
<arg name='SAX' type='xmlSAXHandlerPtr' info='a SAX handler for progressive callback output (not implemented yet)'/>
<arg name='IObuf' type='xmlOutputBufferPtr' info='an output buffer for progressive output (not implemented yet)'/>
</function>
- <function name='xsltRunStylesheetUser' file='transform'>
+ <function name='xsltRunStylesheetUser' file='transform' module='transform'>
<info>Apply the stylesheet to the document and generate the output according to @output @SAX and @IObuf. It&apos;s an error to specify both @SAX and @IObuf. NOTE: This may lead to a non-wellformed output XML wise ! NOTE: This may also result in multiple files being generated NOTE: using IObuf, the result encoding used will be the one used for creating the output buffer, use the following macro to read it from the stylesheet XSLT_GET_IMPORT_PTR(encoding, style, encoding) NOTE: using SAX, any encoding specified in the stylesheet will be lost since the interface uses only UTF8</info>
<return type='int' info='the number of by written to the main resource or -1 in case of error.'/>
<arg name='style' type='xsltStylesheetPtr' info='a parsed XSLT stylesheet'/>
@@ -2906,34 +2945,34 @@ exits'/>
<arg name='profile' type='FILE *' info='profile FILE * output or NULL'/>
<arg name='userCtxt' type='xsltTransformContextPtr' info='user provided transform context'/>
</function>
- <function name='xsltSaveProfiling' file='xsltutils'>
+ <function name='xsltSaveProfiling' file='xsltutils' module='xsltutils'>
<info>Save the profiling information on @output</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT context'/>
<arg name='output' type='FILE *' info='a FILE * for saving the information'/>
</function>
- <function name='xsltSaveResultTo' file='xsltutils'>
+ <function name='xsltSaveResultTo' file='xsltutils' module='xsltutils'>
<info>Save the result @result obtained by applying the @style stylesheet to an I/O output channel @buf</info>
<return type='int' info='the number of byte written or -1 in case of failure.'/>
<arg name='buf' type='xmlOutputBufferPtr' info='an output buffer'/>
<arg name='result' type='xmlDocPtr' info='the result xmlDocPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
</function>
- <function name='xsltSaveResultToFd' file='xsltutils'>
+ <function name='xsltSaveResultToFd' file='xsltutils' module='xsltutils'>
<info>Save the result @result obtained by applying the @style stylesheet to an open file descriptor This does not close the descriptor.</info>
<return type='int' info='the number of bytes written or -1 in case of failure.'/>
<arg name='fd' type='int' info='a file descriptor'/>
<arg name='result' type='xmlDocPtr' info='the result xmlDocPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
</function>
- <function name='xsltSaveResultToFile' file='xsltutils'>
+ <function name='xsltSaveResultToFile' file='xsltutils' module='xsltutils'>
<info>Save the result @result obtained by applying the @style stylesheet to an open FILE * I/O. This does not close the FILE @file</info>
<return type='int' info='the number of bytes written or -1 in case of failure.'/>
<arg name='file' type='FILE *' info='a FILE * I/O'/>
<arg name='result' type='xmlDocPtr' info='the result xmlDocPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
</function>
- <function name='xsltSaveResultToFilename' file='xsltutils'>
+ <function name='xsltSaveResultToFilename' file='xsltutils' module='xsltutils'>
<info>Save the result @result obtained by applying the @style stylesheet to a file or @URL</info>
<return type='int' info='the number of byte written or -1 in case of failure.'/>
<arg name='URL' type='const char *' info='a filename or URL'/>
@@ -2941,7 +2980,7 @@ exits'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='compression' type='int' info='the compression factor (0 - 9 included)'/>
</function>
- <function name='xsltSaveResultToString' file='xsltutils'>
+ <function name='xsltSaveResultToString' file='xsltutils' module='xsltutils'>
<info>Save the result @result obtained by applying the @style stylesheet to a new allocated string.</info>
<return type='int' info='0 in case of success and -1 in case of error'/>
<arg name='doc_txt_ptr' type='xmlChar **' info='Memory pointer for allocated XML text'/>
@@ -2949,113 +2988,121 @@ exits'/>
<arg name='result' type='xmlDocPtr' info='the result xmlDocPtr'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
</function>
- <function name='xsltSecurityAllow' file='security'>
+ <function name='xsltSecurityAllow' file='security' module='security'>
<info>Function used to always allow an operation</info>
<return type='int' info='1 always'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to use'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='value' type='const char *' info='unused'/>
</function>
- <functype name='xsltSecurityCheck' file='security'>
+ <functype name='xsltSecurityCheck' file='security' module='security'>
<info>User provided function to check the value of a string like a file path or an URL ...</info>
<return type='int' info=''/>
<arg name='sec' type='xsltSecurityPrefsPtr' info=''/>
<arg name='ctxt' type='xsltTransformContextPtr' info=''/>
<arg name='value' type='const char *' info=''/>
</functype>
- <function name='xsltSecurityForbid' file='security'>
+ <function name='xsltSecurityForbid' file='security' module='security'>
<info>Function used to always forbid an operation</info>
<return type='int' info='0 always'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to use'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
<arg name='value' type='const char *' info='unused'/>
</function>
- <function name='xsltSetCtxtParseOptions' file='xsltutils'>
+ <function name='xsltSetCtxtLocaleHandlers' file='xsltutils' module='xsltutils'>
+ <info>Set the locale handlers.</info>
+ <return type='void'/>
+ <arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transform context'/>
+ <arg name='newLocale' type='xsltNewLocaleFunc' info='locale constructor'/>
+ <arg name='freeLocale' type='xsltFreeLocaleFunc' info='locale destructor'/>
+ <arg name='genSortKey' type='xsltGenSortKeyFunc' info='sort key generator'/>
+ </function>
+ <function name='xsltSetCtxtParseOptions' file='xsltutils' module='xsltutils'>
<info>Change the default parser option passed by the XSLT engine to the parser when using document() loading.</info>
<return type='int' info='the previous options or -1 in case of error'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='options' type='int' info='a combination of libxml2 xmlParserOption'/>
</function>
- <function name='xsltSetCtxtSecurityPrefs' file='security'>
+ <function name='xsltSetCtxtSecurityPrefs' file='security' module='security'>
<info>Set the security preference for a specific transformation</info>
<return type='int' info='-1 in case of error, 0 otherwise'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to use'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltSetCtxtSortFunc' file='xsltutils'>
- <info>Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called</info>
+ <function name='xsltSetCtxtSortFunc' file='xsltutils' module='xsltutils'>
+ <info>DEPRECATED: Use xsltSetCtxtLocaleHandlers. Function to set the handler for XSLT sorting for the specified context. If the handler is NULL, then the global sort function will be called</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='handler' type='xsltSortFunc' info='the new handler function'/>
</function>
- <function name='xsltSetDebuggerCallbacks' file='xsltutils'>
+ <function name='xsltSetDebuggerCallbacks' file='xsltutils' module='xsltutils'>
<info>This function allow to plug a debugger into the XSLT library @block points to a block of memory containing the address of @no callback routines.</info>
<return type='int' info='0 in case of success and -1 in case of error'/>
<arg name='no' type='int' info='number of callbacks'/>
<arg name='block' type='void *' info='the block of callbacks'/>
</function>
- <function name='xsltSetDebuggerStatus' file='xsltutils'>
+ <function name='xsltSetDebuggerStatus' file='xsltutils' module='xsltutils'>
<info>This function sets the value of xslDebugStatus.</info>
<return type='void'/>
<arg name='value' type='int' info='the value to be set'/>
</function>
- <function name='xsltSetDefaultSecurityPrefs' file='security'>
+ <function name='xsltSetDefaultSecurityPrefs' file='security' module='security'>
<info>Set the default security preference application-wide</info>
<return type='void'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to use'/>
</function>
- <function name='xsltSetGenericDebugFunc' file='xsltutils'>
+ <function name='xsltSetGenericDebugFunc' file='xsltutils' module='xsltutils'>
<info>Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing or validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL.</info>
<return type='void'/>
<arg name='ctx' type='void *' info='the new error handling context'/>
<arg name='handler' type='xmlGenericErrorFunc' info='the new handler function'/>
</function>
- <function name='xsltSetGenericErrorFunc' file='xsltutils'>
+ <function name='xsltSetGenericErrorFunc' file='xsltutils' module='xsltutils'>
<info>Function to reset the handler and the error context for out of context error messages. This simply means that @handler will be called for subsequent error messages while not parsing nor validating. And @ctx will be passed as first argument to @handler One can simply force messages to be emitted to another FILE * than stderr by setting @ctx to this file handle and @handler to NULL.</info>
<return type='void'/>
<arg name='ctx' type='void *' info='the new error handling context'/>
<arg name='handler' type='xmlGenericErrorFunc' info='the new handler function'/>
</function>
- <function name='xsltSetLoaderFunc' file='documents'>
+ <function name='xsltSetLoaderFunc' file='documents' module='documents'>
<info>Set the new function to load document, if NULL it resets it to the default function.</info>
<return type='void'/>
<arg name='f' type='xsltDocLoaderFunc' info='the new function to handle document loading.'/>
</function>
- <function name='xsltSetSecurityPrefs' file='security'>
+ <function name='xsltSetSecurityPrefs' file='security' module='security'>
<info>Update the security option to use the new callback checking function</info>
<return type='int' info='-1 in case of error, 0 otherwise'/>
<arg name='sec' type='xsltSecurityPrefsPtr' info='the security block to update'/>
<arg name='option' type='xsltSecurityOption' info='the option to update'/>
<arg name='func' type='xsltSecurityCheck' info='the user callback to use for this option'/>
</function>
- <function name='xsltSetSortFunc' file='xsltutils'>
- <info>Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used.</info>
+ <function name='xsltSetSortFunc' file='xsltutils' module='xsltutils'>
+ <info>DEPRECATED: Use xsltSetCtxtLocaleHandlers. Function to reset the global handler for XSLT sorting. If the handler is NULL, the default sort function will be used.</info>
<return type='void'/>
<arg name='handler' type='xsltSortFunc' info='the new handler function'/>
</function>
- <function name='xsltSetTransformErrorFunc' file='xsltutils'>
+ <function name='xsltSetTransformErrorFunc' file='xsltutils' module='xsltutils'>
<info>Function to reset the handler and the error context for out of context error messages specific to a given XSLT transromation. This simply means that @handler will be called for subsequent error messages while running the transformation.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='ctx' type='void *' info='the new error handling context'/>
<arg name='handler' type='xmlGenericErrorFunc' info='the new handler function'/>
</function>
- <function name='xsltSetXIncludeDefault' file='transform'>
+ <function name='xsltSetXIncludeDefault' file='transform' module='transform'>
<info>Set whether XInclude should be processed on document being loaded by default</info>
<return type='void'/>
<arg name='xinclude' type='int' info='whether to do XInclude processing'/>
</function>
- <function name='xsltShutdownCtxtExts' file='extensions'>
+ <function name='xsltShutdownCtxtExts' file='extensions' module='extensions'>
<info>Shutdown the set of modules loaded</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
</function>
- <function name='xsltShutdownExts' file='extensions'>
+ <function name='xsltShutdownExts' file='extensions' module='extensions'>
<info>Shutdown the set of modules loaded</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
</function>
- <function name='xsltSort' file='transform'>
+ <function name='xsltSort' file='transform' module='transform'>
<info>function attached to xsl:sort nodes, but this should not be called directly</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -3063,77 +3110,77 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt sort node'/>
<arg name='comp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <functype name='xsltSortFunc' file='xsltInternals'>
+ <functype name='xsltSortFunc' file='xsltInternals' module='xsltInternals'>
<info>Signature of the function to use during sorting</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a transformation context'/>
<arg name='sorts' type='xmlNodePtr *' info='the node-set to sort'/>
<arg name='nbsorts' type='int' info='the number of sorts'/>
</functype>
- <function name='xsltSplitQName' file='xsltutils'>
+ <function name='xsltSplitQName' file='xsltutils' module='xsltutils'>
<info>Split QNames into prefix and local names, both allocated from a dictionary.</info>
<return type='const xmlChar *' info='the localname or NULL in case of error.'/>
<arg name='dict' type='xmlDictPtr' info='a dictionary'/>
<arg name='name' type='const xmlChar *' info='the full QName'/>
<arg name='prefix' type='const xmlChar **' info='the return value'/>
</function>
- <function name='xsltStrxfrm' file='xsltlocale'>
- <info>Transforms a string according to locale. The transformed string must then be compared with xsltLocaleStrcmp and freed with xmlFree.</info>
- <return type='xsltLocaleChar *' info='the transformed string or NULL on error'/>
- <arg name='locale' type='xsltLocale' info='locale created with xsltNewLocale'/>
+ <function name='xsltStrxfrm' file='xsltlocale' module='xsltlocale'>
+ <info>Transforms a string according to locale. The transformed string must be freed with xmlFree.</info>
+ <return type='xmlChar *' info='the transformed string or NULL on error'/>
+ <arg name='vlocale' type='void *' info=''/>
<arg name='string' type='const xmlChar *' info='UTF-8 string to transform'/>
</function>
- <functype name='xsltStyleExtInitFunction' file='extensions'>
+ <functype name='xsltStyleExtInitFunction' file='extensions' module='extensions'>
<info>A function called at initialization time of an XSLT extension module.</info>
<return type='void *' info='a pointer to the module specific data for this transformation.'/>
<arg name='style' type='xsltStylesheetPtr' info=''/>
<arg name='URI' type='const xmlChar *' info='the namespace URI for the extension'/>
</functype>
- <functype name='xsltStyleExtShutdownFunction' file='extensions'>
+ <functype name='xsltStyleExtShutdownFunction' file='extensions' module='extensions'>
<info>A function called at shutdown time of an XSLT extension module.</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info=''/>
<arg name='URI' type='const xmlChar *' info='the namespace URI for the extension'/>
<arg name='data' type='void *' info='the data associated to this module'/>
</functype>
- <function name='xsltStyleGetExtData' file='extensions'>
+ <function name='xsltStyleGetExtData' file='extensions' module='extensions'>
<info>Retrieve the data associated to the extension module in this given stylesheet. Called by: xsltRegisterExtPrefix(), ( xsltExtElementPreCompTest(), xsltExtInitTest )</info>
<return type='void *' info='the pointer or NULL if not present'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the exension module'/>
</function>
- <function name='xsltStylePreCompute' file='preproc'>
+ <function name='xsltStylePreCompute' file='preproc' module='preproc'>
<info>Precompute an XSLT stylesheet element</info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info='the XSLT stylesheet'/>
<arg name='inst' type='xmlNodePtr' info='the instruction in the stylesheet'/>
</function>
- <function name='xsltStyleStylesheetLevelGetExtData' file='extensions'>
+ <function name='xsltStyleStylesheetLevelGetExtData' file='extensions' module='extensions'>
<info>Retrieve the data associated to the extension module in this given stylesheet.</info>
<return type='void *' info='the pointer or NULL if not present'/>
<arg name='style' type='xsltStylesheetPtr' info='an XSLT stylesheet'/>
<arg name='URI' type='const xmlChar *' info='the URI associated to the exension module'/>
</function>
- <function name='xsltSystemPropertyFunction' file='functions'>
+ <function name='xsltSystemPropertyFunction' file='functions' module='functions'>
<info>Implement the system-property() XSLT function object system-property(string)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltTemplateProcess' file='templates'>
+ <function name='xsltTemplateProcess' file='templates' module='templates'>
<info>Obsolete. Don&apos;t use it.</info>
<return type='xmlNodePtr *' info='NULL.'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='node' type='xmlNodePtr' info='the attribute template node'/>
</function>
- <function name='xsltTestCompMatchList' file='pattern'>
+ <function name='xsltTestCompMatchList' file='pattern' module='pattern'>
<info>Test whether the node matches one of the patterns in the list</info>
<return type='int' info='1 if it matches, 0 if it doesn&apos;t and -1 in case of failure'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
<arg name='node' type='xmlNodePtr' info='a node'/>
<arg name='comp' type='xsltCompMatchPtr' info='the precompiled pattern list'/>
</function>
- <function name='xsltText' file='transform'>
+ <function name='xsltText' file='transform' module='transform'>
<info>Process the xslt text node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -3141,17 +3188,17 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt text node'/>
<arg name='comp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltTimestamp' file='xsltutils'>
+ <function name='xsltTimestamp' file='xsltutils' module='xsltutils'>
<info>Used for gathering profiling data</info>
<return type='long' info='the number of tenth of milliseconds since the beginning of the profiling'/>
</function>
- <functype name='xsltTopLevelFunction' file='extensions'>
+ <functype name='xsltTopLevelFunction' file='extensions' module='extensions'>
<info></info>
<return type='void'/>
<arg name='style' type='xsltStylesheetPtr' info=''/>
<arg name='inst' type='xmlNodePtr' info=''/>
</functype>
- <function name='xsltTransformError' file='xsltutils'>
+ <function name='xsltTransformError' file='xsltutils' module='xsltutils'>
<info>Display and format an error messages, gives file, line, position and extra parameters, will use the specific transformation context if available</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='an XSLT transformation context'/>
@@ -3160,7 +3207,7 @@ exits'/>
<arg name='msg' type='const char *' info='the message to display/transmit'/>
<arg name='...' type='...' info='extra parameters for the message display'/>
</function>
- <functype name='xsltTransformFunction' file='xsltInternals'>
+ <functype name='xsltTransformFunction' file='xsltInternals' module='xsltInternals'>
<info>Signature of the function associated to elements part of the stylesheet language like xsl:if or xsl:apply-templates.</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
@@ -3168,40 +3215,40 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the stylesheet node'/>
<arg name='comp' type='xsltElemPreCompPtr' info='the compiled information from the stylesheet'/>
</functype>
- <function name='xsltUninit' file='xsltInternals'>
+ <function name='xsltUninit' file='xsltInternals' module='xslt'>
<info>Uninitializes the processor.</info>
<return type='void'/>
</function>
- <function name='xsltUnparsedEntityURIFunction' file='functions'>
+ <function name='xsltUnparsedEntityURIFunction' file='functions' module='functions'>
<info>Implement the unparsed-entity-uri() XSLT function string unparsed-entity-uri(string)</info>
<return type='void'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='the XPath Parser context'/>
<arg name='nargs' type='int' info='the number of arguments'/>
</function>
- <function name='xsltUnregisterExtModule' file='extensions'>
+ <function name='xsltUnregisterExtModule' file='extensions' module='extensions'>
<info>Unregister an XSLT extension module from the library.</info>
<return type='int' info='0 if sucessful, -1 in case of error'/>
<arg name='URI' type='const xmlChar *' info='URI associated to this module'/>
</function>
- <function name='xsltUnregisterExtModuleElement' file='extensions'>
+ <function name='xsltUnregisterExtModuleElement' file='extensions' module='extensions'>
<info>Unregisters an extension module element</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the element name'/>
<arg name='URI' type='const xmlChar *' info='the element namespace URI'/>
</function>
- <function name='xsltUnregisterExtModuleFunction' file='extensions'>
+ <function name='xsltUnregisterExtModuleFunction' file='extensions' module='extensions'>
<info>Unregisters an extension module function</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the function name'/>
<arg name='URI' type='const xmlChar *' info='the function namespace URI'/>
</function>
- <function name='xsltUnregisterExtModuleTopLevel' file='extensions'>
+ <function name='xsltUnregisterExtModuleTopLevel' file='extensions' module='extensions'>
<info>Unregisters an extension module top-level element</info>
<return type='int' info='0 if successful, -1 in case of error.'/>
<arg name='name' type='const xmlChar *' info='the top-level element name'/>
<arg name='URI' type='const xmlChar *' info='the top-level element namespace URI'/>
</function>
- <function name='xsltValueOf' file='transform'>
+ <function name='xsltValueOf' file='transform' module='transform'>
<info>Process the xslt value-of node on the source node</info>
<return type='void'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='a XSLT process context'/>
@@ -3209,39 +3256,39 @@ exits'/>
<arg name='inst' type='xmlNodePtr' info='the xslt value-of node'/>
<arg name='castedComp' type='xsltElemPreCompPtr' info='precomputed information'/>
</function>
- <function name='xsltVariableLookup' file='variables'>
+ <function name='xsltVariableLookup' file='variables' module='variables'>
<info>Search in the Variable array of the context for the given variable value.</info>
<return type='xmlXPathObjectPtr' info='the value or NULL if not found'/>
<arg name='ctxt' type='xsltTransformContextPtr' info='the XSLT transformation context'/>
<arg name='name' type='const xmlChar *' info='the variable name'/>
<arg name='ns_uri' type='const xmlChar *' info='the variable namespace URI'/>
</function>
- <function name='xsltXPathCompile' file='xsltutils'>
+ <function name='xsltXPathCompile' file='xsltutils' module='xsltutils'>
<info>Compile an XPath expression</info>
<return type='xmlXPathCompExprPtr' info='the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='str' type='const xmlChar *' info='the XPath expression'/>
</function>
- <function name='xsltXPathCompileFlags' file='xsltutils'>
+ <function name='xsltXPathCompileFlags' file='xsltutils' module='xsltutils'>
<info>Compile an XPath expression</info>
<return type='xmlXPathCompExprPtr' info='the xmlXPathCompExprPtr resulting from the compilation or NULL. the caller has to free the object.'/>
<arg name='style' type='xsltStylesheetPtr' info='the stylesheet'/>
<arg name='str' type='const xmlChar *' info='the XPath expression'/>
<arg name='flags' type='int' info='extra compilation flags to pass down to libxml2 XPath'/>
</function>
- <function name='xsltXPathFunctionLookup' file='functions'>
+ <function name='xsltXPathFunctionLookup' file='functions' module='functions'>
<info>This is the entry point when a function is needed by the XPath interpretor.</info>
<return type='xmlXPathFunction' info='the callback function or NULL if not found'/>
<arg name='vctxt' type='void *' info='a void * but the XSLT transformation context actually'/>
<arg name='name' type='const xmlChar *' info='the function name'/>
<arg name='ns_uri' type='const xmlChar *' info='the function namespace URI'/>
</function>
- <function name='xsltXPathGetTransformContext' file='extensions'>
+ <function name='xsltXPathGetTransformContext' file='extensions' module='extensions'>
<info>Provides the XSLT transformation context from the XPath transformation context. This is useful when an XPath function in the extension module is called by the XPath interpreter and that the XSLT context is needed for example to retrieve the associated data pertaining to this XSLT transformation.</info>
<return type='xsltTransformContextPtr' info='the XSLT transformation context or NULL in case of error.'/>
<arg name='ctxt' type='xmlXPathParserContextPtr' info='an XPath transformation context'/>
</function>
- <function name='xsltXPathVariableLookup' file='variables'>
+ <function name='xsltXPathVariableLookup' file='variables' module='variables'>
<info>This is the entry point when a varibale is needed by the XPath interpretor.</info>
<return type='xmlXPathObjectPtr' info='the value or NULL if not found'/>
<arg name='ctxt' type='void *' info='a void * but the the XSLT transformation context actually'/>
diff --git a/doc/libxslt-refs.xml b/doc/libxslt-refs.xml
deleted file mode 100644
index 5a285277..00000000
--- a/doc/libxslt-refs.xml
+++ /dev/null
@@ -1,8787 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<apirefs name='libxslt'>
- <references>
- <reference name='CHECK_STOPPED' href='html/libxslt-xsltInternals.html#CHECK_STOPPED'/>
- <reference name='CHECK_STOPPED0' href='html/libxslt-xsltInternals.html#CHECK_STOPPED0'/>
- <reference name='CHECK_STOPPEDE' href='html/libxslt-xsltInternals.html#CHECK_STOPPEDE'/>
- <reference name='IS_XSLT_ATTR_FAST' href='html/libxslt-xsltInternals.html#IS_XSLT_ATTR_FAST'/>
- <reference name='IS_XSLT_ELEM' href='html/libxslt-xsltutils.html#IS_XSLT_ELEM'/>
- <reference name='IS_XSLT_ELEM_FAST' href='html/libxslt-xsltInternals.html#IS_XSLT_ELEM_FAST'/>
- <reference name='IS_XSLT_NAME' href='html/libxslt-xsltutils.html#IS_XSLT_NAME'/>
- <reference name='IS_XSLT_REAL_NODE' href='html/libxslt-xsltutils.html#IS_XSLT_REAL_NODE'/>
- <reference name='LIBXSLT_PUBLIC' href='html/libxslt-xsltexports.html#LIBXSLT_PUBLIC'/>
- <reference name='NODE_IS_KEYED' href='html/libxslt-keys.html#NODE_IS_KEYED'/>
- <reference name='UNDEFINED_DEFAULT_NS' href='html/libxslt-namespaces.html#UNDEFINED_DEFAULT_NS'/>
- <reference name='XML_CAST_FPTR' href='html/libxslt-xsltInternals.html#XML_CAST_FPTR'/>
- <reference name='XSLTCALL' href='html/libxslt-xsltexports.html#XSLTCALL'/>
- <reference name='XSLTPUBFUN' href='html/libxslt-xsltexports.html#XSLTPUBFUN'/>
- <reference name='XSLTPUBLIC' href='html/libxslt-xsltexports.html#XSLTPUBLIC'/>
- <reference name='XSLTPUBVAR' href='html/libxslt-xsltexports.html#XSLTPUBVAR'/>
- <reference name='XSLT_CCTXT' href='html/libxslt-xsltInternals.html#XSLT_CCTXT'/>
- <reference name='XSLT_DEBUG_CONT' href='html/libxslt-xsltutils.html#XSLT_DEBUG_CONT'/>
- <reference name='XSLT_DEBUG_INIT' href='html/libxslt-xsltutils.html#XSLT_DEBUG_INIT'/>
- <reference name='XSLT_DEBUG_NEXT' href='html/libxslt-xsltutils.html#XSLT_DEBUG_NEXT'/>
- <reference name='XSLT_DEBUG_NONE' href='html/libxslt-xsltutils.html#XSLT_DEBUG_NONE'/>
- <reference name='XSLT_DEBUG_QUIT' href='html/libxslt-xsltutils.html#XSLT_DEBUG_QUIT'/>
- <reference name='XSLT_DEBUG_RUN' href='html/libxslt-xsltutils.html#XSLT_DEBUG_RUN'/>
- <reference name='XSLT_DEBUG_RUN_RESTART' href='html/libxslt-xsltutils.html#XSLT_DEBUG_RUN_RESTART'/>
- <reference name='XSLT_DEBUG_STEP' href='html/libxslt-xsltutils.html#XSLT_DEBUG_STEP'/>
- <reference name='XSLT_DEBUG_STEPOUT' href='html/libxslt-xsltutils.html#XSLT_DEBUG_STEPOUT'/>
- <reference name='XSLT_DEBUG_STOP' href='html/libxslt-xsltutils.html#XSLT_DEBUG_STOP'/>
- <reference name='XSLT_DEFAULT_URL' href='html/libxslt-xslt.html#XSLT_DEFAULT_URL'/>
- <reference name='XSLT_DEFAULT_VENDOR' href='html/libxslt-xslt.html#XSLT_DEFAULT_VENDOR'/>
- <reference name='XSLT_DEFAULT_VERSION' href='html/libxslt-xslt.html#XSLT_DEFAULT_VERSION'/>
- <reference name='XSLT_ERROR_SEVERITY_ERROR' href='html/libxslt-xsltInternals.html#XSLT_ERROR_SEVERITY_ERROR'/>
- <reference name='XSLT_ERROR_SEVERITY_WARNING' href='html/libxslt-xsltInternals.html#XSLT_ERROR_SEVERITY_WARNING'/>
- <reference name='XSLT_FAST_IF' href='html/libxslt-xsltInternals.html#XSLT_FAST_IF'/>
- <reference name='XSLT_FUNC_APPLYIMPORTS' href='html/libxslt-xsltInternals.html#XSLT_FUNC_APPLYIMPORTS'/>
- <reference name='XSLT_FUNC_APPLYTEMPLATES' href='html/libxslt-xsltInternals.html#XSLT_FUNC_APPLYTEMPLATES'/>
- <reference name='XSLT_FUNC_ATTRIBUTE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_ATTRIBUTE'/>
- <reference name='XSLT_FUNC_ATTRSET' href='html/libxslt-xsltInternals.html#XSLT_FUNC_ATTRSET'/>
- <reference name='XSLT_FUNC_CALLTEMPLATE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_CALLTEMPLATE'/>
- <reference name='XSLT_FUNC_CHOOSE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_CHOOSE'/>
- <reference name='XSLT_FUNC_COMMENT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_COMMENT'/>
- <reference name='XSLT_FUNC_COPY' href='html/libxslt-xsltInternals.html#XSLT_FUNC_COPY'/>
- <reference name='XSLT_FUNC_COPYOF' href='html/libxslt-xsltInternals.html#XSLT_FUNC_COPYOF'/>
- <reference name='XSLT_FUNC_DOCUMENT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_DOCUMENT'/>
- <reference name='XSLT_FUNC_ELEMENT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_ELEMENT'/>
- <reference name='XSLT_FUNC_EXTENSION' href='html/libxslt-xsltInternals.html#XSLT_FUNC_EXTENSION'/>
- <reference name='XSLT_FUNC_FALLBACK' href='html/libxslt-xsltInternals.html#XSLT_FUNC_FALLBACK'/>
- <reference name='XSLT_FUNC_FOREACH' href='html/libxslt-xsltInternals.html#XSLT_FUNC_FOREACH'/>
- <reference name='XSLT_FUNC_IF' href='html/libxslt-xsltInternals.html#XSLT_FUNC_IF'/>
- <reference name='XSLT_FUNC_INCLUDE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_INCLUDE'/>
- <reference name='XSLT_FUNC_LITERAL_RESULT_ELEMENT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_LITERAL_RESULT_ELEMENT'/>
- <reference name='XSLT_FUNC_MESSAGE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_MESSAGE'/>
- <reference name='XSLT_FUNC_NUMBER' href='html/libxslt-xsltInternals.html#XSLT_FUNC_NUMBER'/>
- <reference name='XSLT_FUNC_OTHERWISE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_OTHERWISE'/>
- <reference name='XSLT_FUNC_PARAM' href='html/libxslt-xsltInternals.html#XSLT_FUNC_PARAM'/>
- <reference name='XSLT_FUNC_PI' href='html/libxslt-xsltInternals.html#XSLT_FUNC_PI'/>
- <reference name='XSLT_FUNC_SORT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_SORT'/>
- <reference name='XSLT_FUNC_TEXT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_TEXT'/>
- <reference name='XSLT_FUNC_UNKOWN_FORWARDS_COMPAT' href='html/libxslt-xsltInternals.html#XSLT_FUNC_UNKOWN_FORWARDS_COMPAT'/>
- <reference name='XSLT_FUNC_VALUEOF' href='html/libxslt-xsltInternals.html#XSLT_FUNC_VALUEOF'/>
- <reference name='XSLT_FUNC_VARIABLE' href='html/libxslt-xsltInternals.html#XSLT_FUNC_VARIABLE'/>
- <reference name='XSLT_FUNC_WHEN' href='html/libxslt-xsltInternals.html#XSLT_FUNC_WHEN'/>
- <reference name='XSLT_FUNC_WITHPARAM' href='html/libxslt-xsltInternals.html#XSLT_FUNC_WITHPARAM'/>
- <reference name='XSLT_GET_IMPORT_INT' href='html/libxslt-imports.html#XSLT_GET_IMPORT_INT'/>
- <reference name='XSLT_GET_IMPORT_PTR' href='html/libxslt-imports.html#XSLT_GET_IMPORT_PTR'/>
- <reference name='XSLT_GET_INTERNAL_NSMAP' href='html/libxslt-xsltInternals.html#XSLT_GET_INTERNAL_NSMAP'/>
- <reference name='XSLT_HAS_INTERNAL_NSMAP' href='html/libxslt-xsltInternals.html#XSLT_HAS_INTERNAL_NSMAP'/>
- <reference name='XSLT_IS_RES_TREE_FRAG' href='html/libxslt-xsltInternals.html#XSLT_IS_RES_TREE_FRAG'/>
- <reference name='XSLT_IS_TEXT_NODE' href='html/libxslt-xsltInternals.html#XSLT_IS_TEXT_NODE'/>
- <reference name='XSLT_ITEM_COMMON_FIELDS' href='html/libxslt-xsltInternals.html#XSLT_ITEM_COMMON_FIELDS'/>
- <reference name='XSLT_ITEM_COMPATIBILITY_FIELDS' href='html/libxslt-xsltInternals.html#XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <reference name='XSLT_ITEM_NAVIGATION_FIELDS' href='html/libxslt-xsltInternals.html#XSLT_ITEM_NAVIGATION_FIELDS'/>
- <reference name='XSLT_ITEM_NSINSCOPE_FIELDS' href='html/libxslt-xsltInternals.html#XSLT_ITEM_NSINSCOPE_FIELDS'/>
- <reference name='XSLT_LIBXSLT_NAMESPACE' href='html/libxslt-extra.html#XSLT_LIBXSLT_NAMESPACE'/>
- <reference name='XSLT_LOAD_DOCUMENT' href='html/libxslt-documents.html#XSLT_LOAD_DOCUMENT'/>
- <reference name='XSLT_LOAD_START' href='html/libxslt-documents.html#XSLT_LOAD_START'/>
- <reference name='XSLT_LOAD_STYLESHEET' href='html/libxslt-documents.html#XSLT_LOAD_STYLESHEET'/>
- <reference name='XSLT_LOCALE_NONE' href='html/libxslt-xsltlocale.html#XSLT_LOCALE_NONE'/>
- <reference name='XSLT_LOCALE_POSIX' href='html/libxslt-xsltlocale.html#XSLT_LOCALE_POSIX'/>
- <reference name='XSLT_LOCALE_WINAPI' href='html/libxslt-xsltlocale.html#XSLT_LOCALE_WINAPI'/>
- <reference name='XSLT_MARK_RES_TREE_FRAG' href='html/libxslt-xsltInternals.html#XSLT_MARK_RES_TREE_FRAG'/>
- <reference name='XSLT_MAX_SORT' href='html/libxslt-xsltInternals.html#XSLT_MAX_SORT'/>
- <reference name='XSLT_NAMESPACE' href='html/libxslt-xslt.html#XSLT_NAMESPACE'/>
- <reference name='XSLT_OUTPUT_HTML' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_HTML'/>
- <reference name='XSLT_OUTPUT_TEXT' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_TEXT'/>
- <reference name='XSLT_OUTPUT_XML' href='html/libxslt-xsltInternals.html#XSLT_OUTPUT_XML'/>
- <reference name='XSLT_PARSE_OPTIONS' href='html/libxslt-xslt.html#XSLT_PARSE_OPTIONS'/>
- <reference name='XSLT_PAT_NO_PRIORITY' href='html/libxslt-xsltInternals.html#XSLT_PAT_NO_PRIORITY'/>
- <reference name='XSLT_REFACTORED_KEYCOMP' href='html/libxslt-xsltInternals.html#XSLT_REFACTORED_KEYCOMP'/>
- <reference name='XSLT_REFACTORED_VARS' href='html/libxslt-xsltInternals.html#XSLT_REFACTORED_VARS'/>
- <reference name='XSLT_REGISTER_FUNCTION_LOOKUP' href='html/libxslt-functions.html#XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <reference name='XSLT_REGISTER_VARIABLE_LOOKUP' href='html/libxslt-variables.html#XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <reference name='XSLT_RUNTIME_EXTRA' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA'/>
- <reference name='XSLT_RUNTIME_EXTRA_FREE' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_FREE'/>
- <reference name='XSLT_RUNTIME_EXTRA_LST' href='html/libxslt-xsltInternals.html#XSLT_RUNTIME_EXTRA_LST'/>
- <reference name='XSLT_RVT_FUNC_RESULT' href='html/libxslt-variables.html#XSLT_RVT_FUNC_RESULT'/>
- <reference name='XSLT_RVT_GLOBAL' href='html/libxslt-variables.html#XSLT_RVT_GLOBAL'/>
- <reference name='XSLT_RVT_LOCAL' href='html/libxslt-variables.html#XSLT_RVT_LOCAL'/>
- <reference name='XSLT_SAXON_NAMESPACE' href='html/libxslt-extra.html#XSLT_SAXON_NAMESPACE'/>
- <reference name='XSLT_SECPREF_CREATE_DIRECTORY' href='html/libxslt-security.html#XSLT_SECPREF_CREATE_DIRECTORY'/>
- <reference name='XSLT_SECPREF_READ_FILE' href='html/libxslt-security.html#XSLT_SECPREF_READ_FILE'/>
- <reference name='XSLT_SECPREF_READ_NETWORK' href='html/libxslt-security.html#XSLT_SECPREF_READ_NETWORK'/>
- <reference name='XSLT_SECPREF_WRITE_FILE' href='html/libxslt-security.html#XSLT_SECPREF_WRITE_FILE'/>
- <reference name='XSLT_SECPREF_WRITE_NETWORK' href='html/libxslt-security.html#XSLT_SECPREF_WRITE_NETWORK'/>
- <reference name='XSLT_STATE_ERROR' href='html/libxslt-xsltInternals.html#XSLT_STATE_ERROR'/>
- <reference name='XSLT_STATE_OK' href='html/libxslt-xsltInternals.html#XSLT_STATE_OK'/>
- <reference name='XSLT_STATE_STOPPED' href='html/libxslt-xsltInternals.html#XSLT_STATE_STOPPED'/>
- <reference name='XSLT_STRANGE' href='html/libxslt-xsltutils.html#XSLT_STRANGE'/>
- <reference name='XSLT_TIMESTAMP_TICS_PER_SEC' href='html/libxslt-xsltutils.html#XSLT_TIMESTAMP_TICS_PER_SEC'/>
- <reference name='XSLT_TODO' href='html/libxslt-xsltutils.html#XSLT_TODO'/>
- <reference name='XSLT_TRACE' href='html/libxslt-xsltutils.html#XSLT_TRACE'/>
- <reference name='XSLT_TRACE_ALL' href='html/libxslt-xsltutils.html#XSLT_TRACE_ALL'/>
- <reference name='XSLT_TRACE_APPLY_TEMPLATE' href='html/libxslt-xsltutils.html#XSLT_TRACE_APPLY_TEMPLATE'/>
- <reference name='XSLT_TRACE_APPLY_TEMPLATES' href='html/libxslt-xsltutils.html#XSLT_TRACE_APPLY_TEMPLATES'/>
- <reference name='XSLT_TRACE_CALL_TEMPLATE' href='html/libxslt-xsltutils.html#XSLT_TRACE_CALL_TEMPLATE'/>
- <reference name='XSLT_TRACE_CHOOSE' href='html/libxslt-xsltutils.html#XSLT_TRACE_CHOOSE'/>
- <reference name='XSLT_TRACE_COMMENT' href='html/libxslt-xsltutils.html#XSLT_TRACE_COMMENT'/>
- <reference name='XSLT_TRACE_COPY' href='html/libxslt-xsltutils.html#XSLT_TRACE_COPY'/>
- <reference name='XSLT_TRACE_COPY_OF' href='html/libxslt-xsltutils.html#XSLT_TRACE_COPY_OF'/>
- <reference name='XSLT_TRACE_COPY_TEXT' href='html/libxslt-xsltutils.html#XSLT_TRACE_COPY_TEXT'/>
- <reference name='XSLT_TRACE_FOR_EACH' href='html/libxslt-xsltutils.html#XSLT_TRACE_FOR_EACH'/>
- <reference name='XSLT_TRACE_IF' href='html/libxslt-xsltutils.html#XSLT_TRACE_IF'/>
- <reference name='XSLT_TRACE_KEYS' href='html/libxslt-xsltutils.html#XSLT_TRACE_KEYS'/>
- <reference name='XSLT_TRACE_NONE' href='html/libxslt-xsltutils.html#XSLT_TRACE_NONE'/>
- <reference name='XSLT_TRACE_PI' href='html/libxslt-xsltutils.html#XSLT_TRACE_PI'/>
- <reference name='XSLT_TRACE_PROCESS_NODE' href='html/libxslt-xsltutils.html#XSLT_TRACE_PROCESS_NODE'/>
- <reference name='XSLT_TRACE_STRIP_SPACES' href='html/libxslt-xsltutils.html#XSLT_TRACE_STRIP_SPACES'/>
- <reference name='XSLT_TRACE_TEMPLATES' href='html/libxslt-xsltutils.html#XSLT_TRACE_TEMPLATES'/>
- <reference name='XSLT_TRACE_VALUE_OF' href='html/libxslt-xsltutils.html#XSLT_TRACE_VALUE_OF'/>
- <reference name='XSLT_TRACE_VARIABLES' href='html/libxslt-xsltutils.html#XSLT_TRACE_VARIABLES'/>
- <reference name='XSLT_XALAN_NAMESPACE' href='html/libxslt-extra.html#XSLT_XALAN_NAMESPACE'/>
- <reference name='XSLT_XT_NAMESPACE' href='html/libxslt-extra.html#XSLT_XT_NAMESPACE'/>
- <reference name='_xsltCompMatch' href='html/libxslt-numbersInternals.html#_xsltCompMatch'/>
- <reference name='_xsltCompilerCtxt' href='html/libxslt-xsltInternals.html#_xsltCompilerCtxt'/>
- <reference name='_xsltCompilerNodeInfo' href='html/libxslt-xsltInternals.html#_xsltCompilerNodeInfo'/>
- <reference name='_xsltDecimalFormat' href='html/libxslt-xsltInternals.html#_xsltDecimalFormat'/>
- <reference name='_xsltDocument' href='html/libxslt-xsltInternals.html#_xsltDocument'/>
- <reference name='_xsltEffectiveNs' href='html/libxslt-xsltInternals.html#_xsltEffectiveNs'/>
- <reference name='_xsltElemPreComp' href='html/libxslt-xsltInternals.html#_xsltElemPreComp'/>
- <reference name='_xsltFormatNumberInfo' href='html/libxslt-numbersInternals.html#_xsltFormatNumberInfo'/>
- <reference name='_xsltKeyDef' href='html/libxslt-xsltInternals.html#_xsltKeyDef'/>
- <reference name='_xsltKeyTable' href='html/libxslt-xsltInternals.html#_xsltKeyTable'/>
- <reference name='_xsltNsAlias' href='html/libxslt-xsltInternals.html#_xsltNsAlias'/>
- <reference name='_xsltNsList' href='html/libxslt-xsltInternals.html#_xsltNsList'/>
- <reference name='_xsltNsListContainer' href='html/libxslt-xsltInternals.html#_xsltNsListContainer'/>
- <reference name='_xsltNsMap' href='html/libxslt-xsltInternals.html#_xsltNsMap'/>
- <reference name='_xsltNumberData' href='html/libxslt-numbersInternals.html#_xsltNumberData'/>
- <reference name='_xsltPointerList' href='html/libxslt-xsltInternals.html#_xsltPointerList'/>
- <reference name='_xsltPrincipalStylesheetData' href='html/libxslt-xsltInternals.html#_xsltPrincipalStylesheetData'/>
- <reference name='_xsltRuntimeExtra' href='html/libxslt-xsltInternals.html#_xsltRuntimeExtra'/>
- <reference name='_xsltStackElem' href='html/libxslt-xsltInternals.html#_xsltStackElem'/>
- <reference name='_xsltStyleBasicEmptyItem' href='html/libxslt-xsltInternals.html#_xsltStyleBasicEmptyItem'/>
- <reference name='_xsltStyleBasicExpressionItem' href='html/libxslt-xsltInternals.html#_xsltStyleBasicExpressionItem'/>
- <reference name='_xsltStyleBasicItemVariable' href='html/libxslt-xsltInternals.html#_xsltStyleBasicItemVariable'/>
- <reference name='_xsltStyleItemApplyTemplates' href='html/libxslt-xsltInternals.html#_xsltStyleItemApplyTemplates'/>
- <reference name='_xsltStyleItemAttribute' href='html/libxslt-xsltInternals.html#_xsltStyleItemAttribute'/>
- <reference name='_xsltStyleItemCallTemplate' href='html/libxslt-xsltInternals.html#_xsltStyleItemCallTemplate'/>
- <reference name='_xsltStyleItemCopy' href='html/libxslt-xsltInternals.html#_xsltStyleItemCopy'/>
- <reference name='_xsltStyleItemDocument' href='html/libxslt-xsltInternals.html#_xsltStyleItemDocument'/>
- <reference name='_xsltStyleItemElement' href='html/libxslt-xsltInternals.html#_xsltStyleItemElement'/>
- <reference name='_xsltStyleItemExtElement' href='html/libxslt-xsltInternals.html#_xsltStyleItemExtElement'/>
- <reference name='_xsltStyleItemIf' href='html/libxslt-xsltInternals.html#_xsltStyleItemIf'/>
- <reference name='_xsltStyleItemInclude' href='html/libxslt-xsltInternals.html#_xsltStyleItemInclude'/>
- <reference name='_xsltStyleItemLRElementInfo' href='html/libxslt-xsltInternals.html#_xsltStyleItemLRElementInfo'/>
- <reference name='_xsltStyleItemMessage' href='html/libxslt-xsltInternals.html#_xsltStyleItemMessage'/>
- <reference name='_xsltStyleItemNumber' href='html/libxslt-xsltInternals.html#_xsltStyleItemNumber'/>
- <reference name='_xsltStyleItemOtherwise' href='html/libxslt-xsltInternals.html#_xsltStyleItemOtherwise'/>
- <reference name='_xsltStyleItemPI' href='html/libxslt-xsltInternals.html#_xsltStyleItemPI'/>
- <reference name='_xsltStyleItemParam' href='html/libxslt-xsltInternals.html#_xsltStyleItemParam'/>
- <reference name='_xsltStyleItemSort' href='html/libxslt-xsltInternals.html#_xsltStyleItemSort'/>
- <reference name='_xsltStyleItemText' href='html/libxslt-xsltInternals.html#_xsltStyleItemText'/>
- <reference name='_xsltStyleItemUknown' href='html/libxslt-xsltInternals.html#_xsltStyleItemUknown'/>
- <reference name='_xsltStyleItemValueOf' href='html/libxslt-xsltInternals.html#_xsltStyleItemValueOf'/>
- <reference name='_xsltStyleItemWhen' href='html/libxslt-xsltInternals.html#_xsltStyleItemWhen'/>
- <reference name='_xsltStylePreComp' href='html/libxslt-xsltInternals.html#_xsltStylePreComp'/>
- <reference name='_xsltStylesheet' href='html/libxslt-xsltInternals.html#_xsltStylesheet'/>
- <reference name='_xsltTemplate' href='html/libxslt-xsltInternals.html#_xsltTemplate'/>
- <reference name='_xsltTransformCache' href='html/libxslt-xsltInternals.html#_xsltTransformCache'/>
- <reference name='_xsltTransformContext' href='html/libxslt-xsltInternals.html#_xsltTransformContext'/>
- <reference name='_xsltVarInfo' href='html/libxslt-xsltInternals.html#_xsltVarInfo'/>
- <reference name='xslAddCall' href='html/libxslt-xsltutils.html#xslAddCall'/>
- <reference name='xslDebugStatus' href='html/libxslt-xsltutils.html#xslDebugStatus'/>
- <reference name='xslDropCall' href='html/libxslt-xsltutils.html#xslDropCall'/>
- <reference name='xslHandleDebugger' href='html/libxslt-transform.html#xslHandleDebugger'/>
- <reference name='xsltAddCallCallback' href='html/libxslt-xsltutils.html#xsltAddCallCallback'/>
- <reference name='xsltAddKey' href='html/libxslt-keys.html#xsltAddKey'/>
- <reference name='xsltAddStackElemList' href='html/libxslt-variables.html#xsltAddStackElemList'/>
- <reference name='xsltAddTemplate' href='html/libxslt-pattern.html#xsltAddTemplate'/>
- <reference name='xsltAllocateExtra' href='html/libxslt-xsltInternals.html#xsltAllocateExtra'/>
- <reference name='xsltAllocateExtraCtxt' href='html/libxslt-xsltInternals.html#xsltAllocateExtraCtxt'/>
- <reference name='xsltApplyAttributeSet' href='html/libxslt-attributes.html#xsltApplyAttributeSet'/>
- <reference name='xsltApplyImports' href='html/libxslt-transform.html#xsltApplyImports'/>
- <reference name='xsltApplyOneTemplate' href='html/libxslt-transform.html#xsltApplyOneTemplate'/>
- <reference name='xsltApplyStripSpaces' href='html/libxslt-transform.html#xsltApplyStripSpaces'/>
- <reference name='xsltApplyStylesheet' href='html/libxslt-transform.html#xsltApplyStylesheet'/>
- <reference name='xsltApplyStylesheetUser' href='html/libxslt-transform.html#xsltApplyStylesheetUser'/>
- <reference name='xsltApplyTemplates' href='html/libxslt-transform.html#xsltApplyTemplates'/>
- <reference name='xsltAttrListTemplateProcess' href='html/libxslt-templates.html#xsltAttrListTemplateProcess'/>
- <reference name='xsltAttrTemplateProcess' href='html/libxslt-templates.html#xsltAttrTemplateProcess'/>
- <reference name='xsltAttrTemplateValueProcess' href='html/libxslt-templates.html#xsltAttrTemplateValueProcess'/>
- <reference name='xsltAttrTemplateValueProcessNode' href='html/libxslt-templates.html#xsltAttrTemplateValueProcessNode'/>
- <reference name='xsltAttribute' href='html/libxslt-transform.html#xsltAttribute'/>
- <reference name='xsltCalibrateAdjust' href='html/libxslt-xsltutils.html#xsltCalibrateAdjust'/>
- <reference name='xsltCallTemplate' href='html/libxslt-transform.html#xsltCallTemplate'/>
- <reference name='xsltCheckExtPrefix' href='html/libxslt-extensions.html#xsltCheckExtPrefix'/>
- <reference name='xsltCheckExtURI' href='html/libxslt-extensions.html#xsltCheckExtURI'/>
- <reference name='xsltCheckRead' href='html/libxslt-security.html#xsltCheckRead'/>
- <reference name='xsltCheckWrite' href='html/libxslt-security.html#xsltCheckWrite'/>
- <reference name='xsltChoose' href='html/libxslt-transform.html#xsltChoose'/>
- <reference name='xsltCleanupGlobals' href='html/libxslt-xslt.html#xsltCleanupGlobals'/>
- <reference name='xsltCleanupTemplates' href='html/libxslt-pattern.html#xsltCleanupTemplates'/>
- <reference name='xsltComment' href='html/libxslt-transform.html#xsltComment'/>
- <reference name='xsltCompMatch' href='html/libxslt-pattern.html#xsltCompMatch'/>
- <reference name='xsltCompMatchClearCache' href='html/libxslt-pattern.html#xsltCompMatchClearCache'/>
- <reference name='xsltCompMatchPtr' href='html/libxslt-pattern.html#xsltCompMatchPtr'/>
- <reference name='xsltCompileAttr' href='html/libxslt-xsltInternals.html#xsltCompileAttr'/>
- <reference name='xsltCompilePattern' href='html/libxslt-pattern.html#xsltCompilePattern'/>
- <reference name='xsltCompilerCtxt' href='html/libxslt-xsltInternals.html#xsltCompilerCtxt'/>
- <reference name='xsltCompilerCtxtPtr' href='html/libxslt-xsltInternals.html#xsltCompilerCtxtPtr'/>
- <reference name='xsltCompilerNodeInfo' href='html/libxslt-xsltInternals.html#xsltCompilerNodeInfo'/>
- <reference name='xsltCompilerNodeInfoPtr' href='html/libxslt-xsltInternals.html#xsltCompilerNodeInfoPtr'/>
- <reference name='xsltComputeSortResult' href='html/libxslt-xsltutils.html#xsltComputeSortResult'/>
- <reference name='xsltConstNamespaceNameXSLT' href='html/libxslt-xsltInternals.html#xsltConstNamespaceNameXSLT'/>
- <reference name='xsltCopy' href='html/libxslt-transform.html#xsltCopy'/>
- <reference name='xsltCopyNamespace' href='html/libxslt-namespaces.html#xsltCopyNamespace'/>
- <reference name='xsltCopyNamespaceList' href='html/libxslt-namespaces.html#xsltCopyNamespaceList'/>
- <reference name='xsltCopyOf' href='html/libxslt-transform.html#xsltCopyOf'/>
- <reference name='xsltCopyTextString' href='html/libxslt-transform.html#xsltCopyTextString'/>
- <reference name='xsltCreateRVT' href='html/libxslt-xsltInternals.html#xsltCreateRVT'/>
- <reference name='xsltDebug' href='html/libxslt-extra.html#xsltDebug'/>
- <reference name='xsltDebugDumpExtensions' href='html/libxslt-extensions.html#xsltDebugDumpExtensions'/>
- <reference name='xsltDebugGetDefaultTrace' href='html/libxslt-xsltutils.html#xsltDebugGetDefaultTrace'/>
- <reference name='xsltDebugSetDefaultTrace' href='html/libxslt-xsltutils.html#xsltDebugSetDefaultTrace'/>
- <reference name='xsltDebugStatusCodes' href='html/libxslt-xsltutils.html#xsltDebugStatusCodes'/>
- <reference name='xsltDebugTraceCodes' href='html/libxslt-xsltutils.html#xsltDebugTraceCodes'/>
- <reference name='xsltDecimalFormat' href='html/libxslt-xsltInternals.html#xsltDecimalFormat'/>
- <reference name='xsltDecimalFormatGetByName' href='html/libxslt-xsltInternals.html#xsltDecimalFormatGetByName'/>
- <reference name='xsltDecimalFormatGetByQName' href='html/libxslt-xsltInternals.html#xsltDecimalFormatGetByQName'/>
- <reference name='xsltDecimalFormatPtr' href='html/libxslt-xsltInternals.html#xsltDecimalFormatPtr'/>
- <reference name='xsltDefaultSortFunction' href='html/libxslt-xsltutils.html#xsltDefaultSortFunction'/>
- <reference name='xsltDoSortFunction' href='html/libxslt-xsltutils.html#xsltDoSortFunction'/>
- <reference name='xsltDocDefaultLoader' href='html/libxslt-documents.html#xsltDocDefaultLoader'/>
- <reference name='xsltDocLoaderFunc' href='html/libxslt-documents.html#xsltDocLoaderFunc'/>
- <reference name='xsltDocument' href='html/libxslt-xsltInternals.html#xsltDocument'/>
- <reference name='xsltDocumentComp' href='html/libxslt-preproc.html#xsltDocumentComp'/>
- <reference name='xsltDocumentElem' href='html/libxslt-transform.html#xsltDocumentElem'/>
- <reference name='xsltDocumentFunction' href='html/libxslt-functions.html#xsltDocumentFunction'/>
- <reference name='xsltDocumentPtr' href='html/libxslt-xsltInternals.html#xsltDocumentPtr'/>
- <reference name='xsltDocumentSortFunction' href='html/libxslt-xsltutils.html#xsltDocumentSortFunction'/>
- <reference name='xsltDropCallCallback' href='html/libxslt-xsltutils.html#xsltDropCallCallback'/>
- <reference name='xsltEffectiveNs' href='html/libxslt-xsltInternals.html#xsltEffectiveNs'/>
- <reference name='xsltEffectiveNsPtr' href='html/libxslt-xsltInternals.html#xsltEffectiveNsPtr'/>
- <reference name='xsltElemPreComp' href='html/libxslt-xsltInternals.html#xsltElemPreComp'/>
- <reference name='xsltElemPreCompDeallocator' href='html/libxslt-xsltInternals.html#xsltElemPreCompDeallocator'/>
- <reference name='xsltElemPreCompPtr' href='html/libxslt-xsltInternals.html#xsltElemPreCompPtr'/>
- <reference name='xsltElement' href='html/libxslt-transform.html#xsltElement'/>
- <reference name='xsltElementAvailableFunction' href='html/libxslt-functions.html#xsltElementAvailableFunction'/>
- <reference name='xsltEngineVersion' href='html/libxslt-xslt.html#xsltEngineVersion'/>
- <reference name='xsltErrorSeverityType' href='html/libxslt-xsltInternals.html#xsltErrorSeverityType'/>
- <reference name='xsltEvalAVT' href='html/libxslt-xsltInternals.html#xsltEvalAVT'/>
- <reference name='xsltEvalAttrValueTemplate' href='html/libxslt-templates.html#xsltEvalAttrValueTemplate'/>
- <reference name='xsltEvalGlobalVariables' href='html/libxslt-variables.html#xsltEvalGlobalVariables'/>
- <reference name='xsltEvalOneUserParam' href='html/libxslt-variables.html#xsltEvalOneUserParam'/>
- <reference name='xsltEvalStaticAttrValueTemplate' href='html/libxslt-templates.html#xsltEvalStaticAttrValueTemplate'/>
- <reference name='xsltEvalTemplateString' href='html/libxslt-templates.html#xsltEvalTemplateString'/>
- <reference name='xsltEvalUserParams' href='html/libxslt-variables.html#xsltEvalUserParams'/>
- <reference name='xsltEvalXPathPredicate' href='html/libxslt-templates.html#xsltEvalXPathPredicate'/>
- <reference name='xsltEvalXPathString' href='html/libxslt-templates.html#xsltEvalXPathString'/>
- <reference name='xsltEvalXPathStringNs' href='html/libxslt-templates.html#xsltEvalXPathStringNs'/>
- <reference name='xsltExtElementLookup' href='html/libxslt-extensions.html#xsltExtElementLookup'/>
- <reference name='xsltExtInitFunction' href='html/libxslt-extensions.html#xsltExtInitFunction'/>
- <reference name='xsltExtMarker' href='html/libxslt-preproc.html#xsltExtMarker'/>
- <reference name='xsltExtModuleElementLookup' href='html/libxslt-extensions.html#xsltExtModuleElementLookup'/>
- <reference name='xsltExtModuleElementPreComputeLookup' href='html/libxslt-extensions.html#xsltExtModuleElementPreComputeLookup'/>
- <reference name='xsltExtModuleFunctionLookup' href='html/libxslt-extensions.html#xsltExtModuleFunctionLookup'/>
- <reference name='xsltExtModuleTopLevelLookup' href='html/libxslt-extensions.html#xsltExtModuleTopLevelLookup'/>
- <reference name='xsltExtShutdownFunction' href='html/libxslt-extensions.html#xsltExtShutdownFunction'/>
- <reference name='xsltExtensionInstructionResultFinalize' href='html/libxslt-xsltInternals.html#xsltExtensionInstructionResultFinalize'/>
- <reference name='xsltExtensionInstructionResultRegister' href='html/libxslt-xsltInternals.html#xsltExtensionInstructionResultRegister'/>
- <reference name='xsltFindDocument' href='html/libxslt-documents.html#xsltFindDocument'/>
- <reference name='xsltFindElemSpaceHandling' href='html/libxslt-imports.html#xsltFindElemSpaceHandling'/>
- <reference name='xsltFindTemplate' href='html/libxslt-imports.html#xsltFindTemplate'/>
- <reference name='xsltFlagRVTs' href='html/libxslt-xsltInternals.html#xsltFlagRVTs'/>
- <reference name='xsltForEach' href='html/libxslt-transform.html#xsltForEach'/>
- <reference name='xsltFormatNumberConversion' href='html/libxslt-xsltInternals.html#xsltFormatNumberConversion'/>
- <reference name='xsltFormatNumberFunction' href='html/libxslt-functions.html#xsltFormatNumberFunction'/>
- <reference name='xsltFormatNumberInfo' href='html/libxslt-numbersInternals.html#xsltFormatNumberInfo'/>
- <reference name='xsltFormatNumberInfoPtr' href='html/libxslt-numbersInternals.html#xsltFormatNumberInfoPtr'/>
- <reference name='xsltFreeAVTList' href='html/libxslt-xsltInternals.html#xsltFreeAVTList'/>
- <reference name='xsltFreeAttributeSetsHashes' href='html/libxslt-attributes.html#xsltFreeAttributeSetsHashes'/>
- <reference name='xsltFreeCompMatchList' href='html/libxslt-pattern.html#xsltFreeCompMatchList'/>
- <reference name='xsltFreeCtxtExts' href='html/libxslt-extensions.html#xsltFreeCtxtExts'/>
- <reference name='xsltFreeDocumentKeys' href='html/libxslt-keys.html#xsltFreeDocumentKeys'/>
- <reference name='xsltFreeDocuments' href='html/libxslt-documents.html#xsltFreeDocuments'/>
- <reference name='xsltFreeExts' href='html/libxslt-extensions.html#xsltFreeExts'/>
- <reference name='xsltFreeGlobalVariables' href='html/libxslt-variables.html#xsltFreeGlobalVariables'/>
- <reference name='xsltFreeKeys' href='html/libxslt-keys.html#xsltFreeKeys'/>
- <reference name='xsltFreeLocale' href='html/libxslt-xsltlocale.html#xsltFreeLocale'/>
- <reference name='xsltFreeLocales' href='html/libxslt-xsltlocale.html#xsltFreeLocales'/>
- <reference name='xsltFreeNamespaceAliasHashes' href='html/libxslt-namespaces.html#xsltFreeNamespaceAliasHashes'/>
- <reference name='xsltFreeRVTs' href='html/libxslt-xsltInternals.html#xsltFreeRVTs'/>
- <reference name='xsltFreeSecurityPrefs' href='html/libxslt-security.html#xsltFreeSecurityPrefs'/>
- <reference name='xsltFreeStackElemList' href='html/libxslt-xsltInternals.html#xsltFreeStackElemList'/>
- <reference name='xsltFreeStyleDocuments' href='html/libxslt-documents.html#xsltFreeStyleDocuments'/>
- <reference name='xsltFreeStylePreComps' href='html/libxslt-preproc.html#xsltFreeStylePreComps'/>
- <reference name='xsltFreeStylesheet' href='html/libxslt-xsltInternals.html#xsltFreeStylesheet'/>
- <reference name='xsltFreeTemplateHashes' href='html/libxslt-pattern.html#xsltFreeTemplateHashes'/>
- <reference name='xsltFreeTransformContext' href='html/libxslt-transform.html#xsltFreeTransformContext'/>
- <reference name='xsltFunctionAvailableFunction' href='html/libxslt-functions.html#xsltFunctionAvailableFunction'/>
- <reference name='xsltFunctionNodeSet' href='html/libxslt-extra.html#xsltFunctionNodeSet'/>
- <reference name='xsltGenerateIdFunction' href='html/libxslt-functions.html#xsltGenerateIdFunction'/>
- <reference name='xsltGenericDebug' href='html/libxslt-xsltutils.html#xsltGenericDebug'/>
- <reference name='xsltGenericDebugContext' href='html/libxslt-xsltutils.html#xsltGenericDebugContext'/>
- <reference name='xsltGenericError' href='html/libxslt-xsltutils.html#xsltGenericError'/>
- <reference name='xsltGenericErrorContext' href='html/libxslt-xsltutils.html#xsltGenericErrorContext'/>
- <reference name='xsltGetCNsProp' href='html/libxslt-xsltutils.html#xsltGetCNsProp'/>
- <reference name='xsltGetDebuggerStatus' href='html/libxslt-xsltutils.html#xsltGetDebuggerStatus'/>
- <reference name='xsltGetDefaultSecurityPrefs' href='html/libxslt-security.html#xsltGetDefaultSecurityPrefs'/>
- <reference name='xsltGetExtData' href='html/libxslt-extensions.html#xsltGetExtData'/>
- <reference name='xsltGetExtInfo' href='html/libxslt-extensions.html#xsltGetExtInfo'/>
- <reference name='xsltGetKey' href='html/libxslt-keys.html#xsltGetKey'/>
- <reference name='xsltGetNamespace' href='html/libxslt-namespaces.html#xsltGetNamespace'/>
- <reference name='xsltGetNsProp' href='html/libxslt-xsltutils.html#xsltGetNsProp'/>
- <reference name='xsltGetPlainNamespace' href='html/libxslt-namespaces.html#xsltGetPlainNamespace'/>
- <reference name='xsltGetProfileInformation' href='html/libxslt-xsltutils.html#xsltGetProfileInformation'/>
- <reference name='xsltGetQNameURI' href='html/libxslt-xsltutils.html#xsltGetQNameURI'/>
- <reference name='xsltGetQNameURI2' href='html/libxslt-xsltutils.html#xsltGetQNameURI2'/>
- <reference name='xsltGetSecurityPrefs' href='html/libxslt-security.html#xsltGetSecurityPrefs'/>
- <reference name='xsltGetSpecialNamespace' href='html/libxslt-namespaces.html#xsltGetSpecialNamespace'/>
- <reference name='xsltGetTemplate' href='html/libxslt-pattern.html#xsltGetTemplate'/>
- <reference name='xsltGetUTF8Char' href='html/libxslt-xsltutils.html#xsltGetUTF8Char'/>
- <reference name='xsltGetXIncludeDefault' href='html/libxslt-transform.html#xsltGetXIncludeDefault'/>
- <reference name='xsltHandleDebuggerCallback' href='html/libxslt-xsltutils.html#xsltHandleDebuggerCallback'/>
- <reference name='xsltIf' href='html/libxslt-transform.html#xsltIf'/>
- <reference name='xsltInit' href='html/libxslt-xslt.html#xsltInit'/>
- <reference name='xsltInitAllDocKeys' href='html/libxslt-xsltInternals.html#xsltInitAllDocKeys'/>
- <reference name='xsltInitCtxtExts' href='html/libxslt-extensions.html#xsltInitCtxtExts'/>
- <reference name='xsltInitCtxtKey' href='html/libxslt-xsltInternals.html#xsltInitCtxtKey'/>
- <reference name='xsltInitCtxtKeys' href='html/libxslt-keys.html#xsltInitCtxtKeys'/>
- <reference name='xsltInitElemPreComp' href='html/libxslt-extensions.html#xsltInitElemPreComp'/>
- <reference name='xsltInitGlobals' href='html/libxslt-extensions.html#xsltInitGlobals'/>
- <reference name='xsltIsBlank' href='html/libxslt-xsltInternals.html#xsltIsBlank'/>
- <reference name='xsltKeyDef' href='html/libxslt-xsltInternals.html#xsltKeyDef'/>
- <reference name='xsltKeyDefPtr' href='html/libxslt-xsltInternals.html#xsltKeyDefPtr'/>
- <reference name='xsltKeyFunction' href='html/libxslt-functions.html#xsltKeyFunction'/>
- <reference name='xsltKeyTable' href='html/libxslt-xsltInternals.html#xsltKeyTable'/>
- <reference name='xsltKeyTablePtr' href='html/libxslt-xsltInternals.html#xsltKeyTablePtr'/>
- <reference name='xsltLibxmlVersion' href='html/libxslt-xslt.html#xsltLibxmlVersion'/>
- <reference name='xsltLibxsltVersion' href='html/libxslt-xslt.html#xsltLibxsltVersion'/>
- <reference name='xsltLoadDocument' href='html/libxslt-documents.html#xsltLoadDocument'/>
- <reference name='xsltLoadStyleDocument' href='html/libxslt-documents.html#xsltLoadStyleDocument'/>
- <reference name='xsltLoadStylesheetPI' href='html/libxslt-xsltInternals.html#xsltLoadStylesheetPI'/>
- <reference name='xsltLoadType' href='html/libxslt-documents.html#xsltLoadType'/>
- <reference name='xsltLocalVariablePop' href='html/libxslt-transform.html#xsltLocalVariablePop'/>
- <reference name='xsltLocalVariablePush' href='html/libxslt-transform.html#xsltLocalVariablePush'/>
- <reference name='xsltLocale' href='html/libxslt-xsltlocale.html#xsltLocale'/>
- <reference name='xsltLocaleChar' href='html/libxslt-xsltlocale.html#xsltLocaleChar'/>
- <reference name='xsltLocaleStrcmp' href='html/libxslt-xsltlocale.html#xsltLocaleStrcmp'/>
- <reference name='xsltMatchPattern' href='html/libxslt-pattern.html#xsltMatchPattern'/>
- <reference name='xsltMaxDepth' href='html/libxslt-xslt.html#xsltMaxDepth'/>
- <reference name='xsltMaxVars' href='html/libxslt-xslt.html#xsltMaxVars'/>
- <reference name='xsltMessage' href='html/libxslt-xsltutils.html#xsltMessage'/>
- <reference name='xsltNamespaceAlias' href='html/libxslt-namespaces.html#xsltNamespaceAlias'/>
- <reference name='xsltNeedElemSpaceHandling' href='html/libxslt-imports.html#xsltNeedElemSpaceHandling'/>
- <reference name='xsltNewDocument' href='html/libxslt-documents.html#xsltNewDocument'/>
- <reference name='xsltNewElemPreComp' href='html/libxslt-extensions.html#xsltNewElemPreComp'/>
- <reference name='xsltNewLocale' href='html/libxslt-xsltlocale.html#xsltNewLocale'/>
- <reference name='xsltNewSecurityPrefs' href='html/libxslt-security.html#xsltNewSecurityPrefs'/>
- <reference name='xsltNewStyleDocument' href='html/libxslt-documents.html#xsltNewStyleDocument'/>
- <reference name='xsltNewStylesheet' href='html/libxslt-xsltInternals.html#xsltNewStylesheet'/>
- <reference name='xsltNewTransformContext' href='html/libxslt-transform.html#xsltNewTransformContext'/>
- <reference name='xsltNextImport' href='html/libxslt-imports.html#xsltNextImport'/>
- <reference name='xsltNormalizeCompSteps' href='html/libxslt-pattern.html#xsltNormalizeCompSteps'/>
- <reference name='xsltNsAlias' href='html/libxslt-xsltInternals.html#xsltNsAlias'/>
- <reference name='xsltNsAliasPtr' href='html/libxslt-xsltInternals.html#xsltNsAliasPtr'/>
- <reference name='xsltNsList' href='html/libxslt-xsltInternals.html#xsltNsList'/>
- <reference name='xsltNsListContainer' href='html/libxslt-xsltInternals.html#xsltNsListContainer'/>
- <reference name='xsltNsListContainerPtr' href='html/libxslt-xsltInternals.html#xsltNsListContainerPtr'/>
- <reference name='xsltNsListPtr' href='html/libxslt-xsltInternals.html#xsltNsListPtr'/>
- <reference name='xsltNsMap' href='html/libxslt-xsltInternals.html#xsltNsMap'/>
- <reference name='xsltNsMapPtr' href='html/libxslt-xsltInternals.html#xsltNsMapPtr'/>
- <reference name='xsltNumber' href='html/libxslt-transform.html#xsltNumber'/>
- <reference name='xsltNumberData' href='html/libxslt-numbersInternals.html#xsltNumberData'/>
- <reference name='xsltNumberDataPtr' href='html/libxslt-numbersInternals.html#xsltNumberDataPtr'/>
- <reference name='xsltNumberFormat' href='html/libxslt-xsltInternals.html#xsltNumberFormat'/>
- <reference name='xsltOutputType' href='html/libxslt-xsltInternals.html#xsltOutputType'/>
- <reference name='xsltParseAnyXSLTElem' href='html/libxslt-xsltInternals.html#xsltParseAnyXSLTElem'/>
- <reference name='xsltParseGlobalParam' href='html/libxslt-variables.html#xsltParseGlobalParam'/>
- <reference name='xsltParseGlobalVariable' href='html/libxslt-variables.html#xsltParseGlobalVariable'/>
- <reference name='xsltParseSequenceConstructor' href='html/libxslt-xsltInternals.html#xsltParseSequenceConstructor'/>
- <reference name='xsltParseStylesheetAttributeSet' href='html/libxslt-attributes.html#xsltParseStylesheetAttributeSet'/>
- <reference name='xsltParseStylesheetCallerParam' href='html/libxslt-variables.html#xsltParseStylesheetCallerParam'/>
- <reference name='xsltParseStylesheetDoc' href='html/libxslt-xsltInternals.html#xsltParseStylesheetDoc'/>
- <reference name='xsltParseStylesheetFile' href='html/libxslt-xsltInternals.html#xsltParseStylesheetFile'/>
- <reference name='xsltParseStylesheetImport' href='html/libxslt-imports.html#xsltParseStylesheetImport'/>
- <reference name='xsltParseStylesheetImportedDoc' href='html/libxslt-xsltInternals.html#xsltParseStylesheetImportedDoc'/>
- <reference name='xsltParseStylesheetInclude' href='html/libxslt-imports.html#xsltParseStylesheetInclude'/>
- <reference name='xsltParseStylesheetOutput' href='html/libxslt-xsltInternals.html#xsltParseStylesheetOutput'/>
- <reference name='xsltParseStylesheetParam' href='html/libxslt-variables.html#xsltParseStylesheetParam'/>
- <reference name='xsltParseStylesheetProcess' href='html/libxslt-xsltInternals.html#xsltParseStylesheetProcess'/>
- <reference name='xsltParseStylesheetUser' href='html/libxslt-xsltInternals.html#xsltParseStylesheetUser'/>
- <reference name='xsltParseStylesheetVariable' href='html/libxslt-variables.html#xsltParseStylesheetVariable'/>
- <reference name='xsltParseTemplateContent' href='html/libxslt-xsltInternals.html#xsltParseTemplateContent'/>
- <reference name='xsltPointerList' href='html/libxslt-xsltInternals.html#xsltPointerList'/>
- <reference name='xsltPointerListAddSize' href='html/libxslt-xsltInternals.html#xsltPointerListAddSize'/>
- <reference name='xsltPointerListClear' href='html/libxslt-xsltInternals.html#xsltPointerListClear'/>
- <reference name='xsltPointerListCreate' href='html/libxslt-xsltInternals.html#xsltPointerListCreate'/>
- <reference name='xsltPointerListFree' href='html/libxslt-xsltInternals.html#xsltPointerListFree'/>
- <reference name='xsltPointerListPtr' href='html/libxslt-xsltInternals.html#xsltPointerListPtr'/>
- <reference name='xsltPreComputeExtModuleElement' href='html/libxslt-extensions.html#xsltPreComputeExtModuleElement'/>
- <reference name='xsltPreComputeFunction' href='html/libxslt-extensions.html#xsltPreComputeFunction'/>
- <reference name='xsltPrincipalStylesheetData' href='html/libxslt-xsltInternals.html#xsltPrincipalStylesheetData'/>
- <reference name='xsltPrincipalStylesheetDataPtr' href='html/libxslt-xsltInternals.html#xsltPrincipalStylesheetDataPtr'/>
- <reference name='xsltPrintErrorContext' href='html/libxslt-xsltutils.html#xsltPrintErrorContext'/>
- <reference name='xsltProcessOneNode' href='html/libxslt-transform.html#xsltProcessOneNode'/>
- <reference name='xsltProcessingInstruction' href='html/libxslt-transform.html#xsltProcessingInstruction'/>
- <reference name='xsltProfileStylesheet' href='html/libxslt-transform.html#xsltProfileStylesheet'/>
- <reference name='xsltQuoteOneUserParam' href='html/libxslt-variables.html#xsltQuoteOneUserParam'/>
- <reference name='xsltQuoteUserParams' href='html/libxslt-variables.html#xsltQuoteUserParams'/>
- <reference name='xsltRegisterAllElement' href='html/libxslt-transform.html#xsltRegisterAllElement'/>
- <reference name='xsltRegisterAllExtras' href='html/libxslt-extra.html#xsltRegisterAllExtras'/>
- <reference name='xsltRegisterAllFunctions' href='html/libxslt-functions.html#xsltRegisterAllFunctions'/>
- <reference name='xsltRegisterExtElement' href='html/libxslt-extensions.html#xsltRegisterExtElement'/>
- <reference name='xsltRegisterExtFunction' href='html/libxslt-extensions.html#xsltRegisterExtFunction'/>
- <reference name='xsltRegisterExtModule' href='html/libxslt-extensions.html#xsltRegisterExtModule'/>
- <reference name='xsltRegisterExtModuleElement' href='html/libxslt-extensions.html#xsltRegisterExtModuleElement'/>
- <reference name='xsltRegisterExtModuleFull' href='html/libxslt-extensions.html#xsltRegisterExtModuleFull'/>
- <reference name='xsltRegisterExtModuleFunction' href='html/libxslt-extensions.html#xsltRegisterExtModuleFunction'/>
- <reference name='xsltRegisterExtModuleTopLevel' href='html/libxslt-extensions.html#xsltRegisterExtModuleTopLevel'/>
- <reference name='xsltRegisterExtPrefix' href='html/libxslt-extensions.html#xsltRegisterExtPrefix'/>
- <reference name='xsltRegisterExtras' href='html/libxslt-extra.html#xsltRegisterExtras'/>
- <reference name='xsltRegisterLocalRVT' href='html/libxslt-xsltInternals.html#xsltRegisterLocalRVT'/>
- <reference name='xsltRegisterPersistRVT' href='html/libxslt-xsltInternals.html#xsltRegisterPersistRVT'/>
- <reference name='xsltRegisterTestModule' href='html/libxslt-extensions.html#xsltRegisterTestModule'/>
- <reference name='xsltRegisterTmpRVT' href='html/libxslt-xsltInternals.html#xsltRegisterTmpRVT'/>
- <reference name='xsltReleaseRVT' href='html/libxslt-xsltInternals.html#xsltReleaseRVT'/>
- <reference name='xsltResolveStylesheetAttributeSet' href='html/libxslt-attributes.html#xsltResolveStylesheetAttributeSet'/>
- <reference name='xsltRestoreDocumentNamespaces' href='html/libxslt-xsltInternals.html#xsltRestoreDocumentNamespaces'/>
- <reference name='xsltRunStylesheet' href='html/libxslt-transform.html#xsltRunStylesheet'/>
- <reference name='xsltRunStylesheetUser' href='html/libxslt-transform.html#xsltRunStylesheetUser'/>
- <reference name='xsltRuntimeExtra' href='html/libxslt-xsltInternals.html#xsltRuntimeExtra'/>
- <reference name='xsltRuntimeExtraPtr' href='html/libxslt-xsltInternals.html#xsltRuntimeExtraPtr'/>
- <reference name='xsltSaveProfiling' href='html/libxslt-xsltutils.html#xsltSaveProfiling'/>
- <reference name='xsltSaveResultTo' href='html/libxslt-xsltutils.html#xsltSaveResultTo'/>
- <reference name='xsltSaveResultToFd' href='html/libxslt-xsltutils.html#xsltSaveResultToFd'/>
- <reference name='xsltSaveResultToFile' href='html/libxslt-xsltutils.html#xsltSaveResultToFile'/>
- <reference name='xsltSaveResultToFilename' href='html/libxslt-xsltutils.html#xsltSaveResultToFilename'/>
- <reference name='xsltSaveResultToString' href='html/libxslt-xsltutils.html#xsltSaveResultToString'/>
- <reference name='xsltSecurityAllow' href='html/libxslt-security.html#xsltSecurityAllow'/>
- <reference name='xsltSecurityCheck' href='html/libxslt-security.html#xsltSecurityCheck'/>
- <reference name='xsltSecurityForbid' href='html/libxslt-security.html#xsltSecurityForbid'/>
- <reference name='xsltSecurityOption' href='html/libxslt-security.html#xsltSecurityOption'/>
- <reference name='xsltSecurityPrefs' href='html/libxslt-security.html#xsltSecurityPrefs'/>
- <reference name='xsltSecurityPrefsPtr' href='html/libxslt-security.html#xsltSecurityPrefsPtr'/>
- <reference name='xsltSetCtxtParseOptions' href='html/libxslt-xsltutils.html#xsltSetCtxtParseOptions'/>
- <reference name='xsltSetCtxtSecurityPrefs' href='html/libxslt-security.html#xsltSetCtxtSecurityPrefs'/>
- <reference name='xsltSetCtxtSortFunc' href='html/libxslt-xsltutils.html#xsltSetCtxtSortFunc'/>
- <reference name='xsltSetDebuggerCallbacks' href='html/libxslt-xsltutils.html#xsltSetDebuggerCallbacks'/>
- <reference name='xsltSetDebuggerStatus' href='html/libxslt-xsltutils.html#xsltSetDebuggerStatus'/>
- <reference name='xsltSetDefaultSecurityPrefs' href='html/libxslt-security.html#xsltSetDefaultSecurityPrefs'/>
- <reference name='xsltSetGenericDebugFunc' href='html/libxslt-xsltutils.html#xsltSetGenericDebugFunc'/>
- <reference name='xsltSetGenericErrorFunc' href='html/libxslt-xsltutils.html#xsltSetGenericErrorFunc'/>
- <reference name='xsltSetLoaderFunc' href='html/libxslt-documents.html#xsltSetLoaderFunc'/>
- <reference name='xsltSetSecurityPrefs' href='html/libxslt-security.html#xsltSetSecurityPrefs'/>
- <reference name='xsltSetSortFunc' href='html/libxslt-xsltutils.html#xsltSetSortFunc'/>
- <reference name='xsltSetTransformErrorFunc' href='html/libxslt-xsltutils.html#xsltSetTransformErrorFunc'/>
- <reference name='xsltSetXIncludeDefault' href='html/libxslt-transform.html#xsltSetXIncludeDefault'/>
- <reference name='xsltShutdownCtxtExts' href='html/libxslt-extensions.html#xsltShutdownCtxtExts'/>
- <reference name='xsltShutdownExts' href='html/libxslt-extensions.html#xsltShutdownExts'/>
- <reference name='xsltSort' href='html/libxslt-transform.html#xsltSort'/>
- <reference name='xsltSortFunc' href='html/libxslt-xsltInternals.html#xsltSortFunc'/>
- <reference name='xsltSplitQName' href='html/libxslt-xsltutils.html#xsltSplitQName'/>
- <reference name='xsltStackElem' href='html/libxslt-xsltInternals.html#xsltStackElem'/>
- <reference name='xsltStackElemPtr' href='html/libxslt-xsltInternals.html#xsltStackElemPtr'/>
- <reference name='xsltStrxfrm' href='html/libxslt-xsltlocale.html#xsltStrxfrm'/>
- <reference name='xsltStyleBasicEmptyItem' href='html/libxslt-xsltInternals.html#xsltStyleBasicEmptyItem'/>
- <reference name='xsltStyleBasicEmptyItemPtr' href='html/libxslt-xsltInternals.html#xsltStyleBasicEmptyItemPtr'/>
- <reference name='xsltStyleBasicExpressionItem' href='html/libxslt-xsltInternals.html#xsltStyleBasicExpressionItem'/>
- <reference name='xsltStyleBasicExpressionItemPtr' href='html/libxslt-xsltInternals.html#xsltStyleBasicExpressionItemPtr'/>
- <reference name='xsltStyleBasicItemVariable' href='html/libxslt-xsltInternals.html#xsltStyleBasicItemVariable'/>
- <reference name='xsltStyleBasicItemVariablePtr' href='html/libxslt-xsltInternals.html#xsltStyleBasicItemVariablePtr'/>
- <reference name='xsltStyleExtInitFunction' href='html/libxslt-extensions.html#xsltStyleExtInitFunction'/>
- <reference name='xsltStyleExtShutdownFunction' href='html/libxslt-extensions.html#xsltStyleExtShutdownFunction'/>
- <reference name='xsltStyleGetExtData' href='html/libxslt-extensions.html#xsltStyleGetExtData'/>
- <reference name='xsltStyleItemApplyImports' href='html/libxslt-xsltInternals.html#xsltStyleItemApplyImports'/>
- <reference name='xsltStyleItemApplyImportsPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemApplyImportsPtr'/>
- <reference name='xsltStyleItemApplyTemplates' href='html/libxslt-xsltInternals.html#xsltStyleItemApplyTemplates'/>
- <reference name='xsltStyleItemApplyTemplatesPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemApplyTemplatesPtr'/>
- <reference name='xsltStyleItemAttribute' href='html/libxslt-xsltInternals.html#xsltStyleItemAttribute'/>
- <reference name='xsltStyleItemAttributePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemAttributePtr'/>
- <reference name='xsltStyleItemCallTemplate' href='html/libxslt-xsltInternals.html#xsltStyleItemCallTemplate'/>
- <reference name='xsltStyleItemCallTemplatePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemCallTemplatePtr'/>
- <reference name='xsltStyleItemChoose' href='html/libxslt-xsltInternals.html#xsltStyleItemChoose'/>
- <reference name='xsltStyleItemChoosePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemChoosePtr'/>
- <reference name='xsltStyleItemComment' href='html/libxslt-xsltInternals.html#xsltStyleItemComment'/>
- <reference name='xsltStyleItemCommentPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemCommentPtr'/>
- <reference name='xsltStyleItemCopy' href='html/libxslt-xsltInternals.html#xsltStyleItemCopy'/>
- <reference name='xsltStyleItemCopyOf' href='html/libxslt-xsltInternals.html#xsltStyleItemCopyOf'/>
- <reference name='xsltStyleItemCopyOfPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemCopyOfPtr'/>
- <reference name='xsltStyleItemCopyPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemCopyPtr'/>
- <reference name='xsltStyleItemDocument' href='html/libxslt-xsltInternals.html#xsltStyleItemDocument'/>
- <reference name='xsltStyleItemDocumentPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemDocumentPtr'/>
- <reference name='xsltStyleItemElement' href='html/libxslt-xsltInternals.html#xsltStyleItemElement'/>
- <reference name='xsltStyleItemElementPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemElementPtr'/>
- <reference name='xsltStyleItemExtElement' href='html/libxslt-xsltInternals.html#xsltStyleItemExtElement'/>
- <reference name='xsltStyleItemExtElementPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemExtElementPtr'/>
- <reference name='xsltStyleItemFallback' href='html/libxslt-xsltInternals.html#xsltStyleItemFallback'/>
- <reference name='xsltStyleItemFallbackPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemFallbackPtr'/>
- <reference name='xsltStyleItemForEach' href='html/libxslt-xsltInternals.html#xsltStyleItemForEach'/>
- <reference name='xsltStyleItemForEachPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemForEachPtr'/>
- <reference name='xsltStyleItemIf' href='html/libxslt-xsltInternals.html#xsltStyleItemIf'/>
- <reference name='xsltStyleItemIfPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemIfPtr'/>
- <reference name='xsltStyleItemInclude' href='html/libxslt-xsltInternals.html#xsltStyleItemInclude'/>
- <reference name='xsltStyleItemIncludePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemIncludePtr'/>
- <reference name='xsltStyleItemLRElementInfo' href='html/libxslt-xsltInternals.html#xsltStyleItemLRElementInfo'/>
- <reference name='xsltStyleItemLRElementInfoPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemLRElementInfoPtr'/>
- <reference name='xsltStyleItemMessage' href='html/libxslt-xsltInternals.html#xsltStyleItemMessage'/>
- <reference name='xsltStyleItemMessagePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemMessagePtr'/>
- <reference name='xsltStyleItemNumber' href='html/libxslt-xsltInternals.html#xsltStyleItemNumber'/>
- <reference name='xsltStyleItemNumberPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemNumberPtr'/>
- <reference name='xsltStyleItemOtherwise' href='html/libxslt-xsltInternals.html#xsltStyleItemOtherwise'/>
- <reference name='xsltStyleItemOtherwisePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemOtherwisePtr'/>
- <reference name='xsltStyleItemPI' href='html/libxslt-xsltInternals.html#xsltStyleItemPI'/>
- <reference name='xsltStyleItemPIPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemPIPtr'/>
- <reference name='xsltStyleItemParam' href='html/libxslt-xsltInternals.html#xsltStyleItemParam'/>
- <reference name='xsltStyleItemParamPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemParamPtr'/>
- <reference name='xsltStyleItemSort' href='html/libxslt-xsltInternals.html#xsltStyleItemSort'/>
- <reference name='xsltStyleItemSortPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemSortPtr'/>
- <reference name='xsltStyleItemText' href='html/libxslt-xsltInternals.html#xsltStyleItemText'/>
- <reference name='xsltStyleItemTextPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemTextPtr'/>
- <reference name='xsltStyleItemUknown' href='html/libxslt-xsltInternals.html#xsltStyleItemUknown'/>
- <reference name='xsltStyleItemUknownPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemUknownPtr'/>
- <reference name='xsltStyleItemValueOf' href='html/libxslt-xsltInternals.html#xsltStyleItemValueOf'/>
- <reference name='xsltStyleItemValueOfPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemValueOfPtr'/>
- <reference name='xsltStyleItemVariable' href='html/libxslt-xsltInternals.html#xsltStyleItemVariable'/>
- <reference name='xsltStyleItemVariablePtr' href='html/libxslt-xsltInternals.html#xsltStyleItemVariablePtr'/>
- <reference name='xsltStyleItemWhen' href='html/libxslt-xsltInternals.html#xsltStyleItemWhen'/>
- <reference name='xsltStyleItemWhenPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemWhenPtr'/>
- <reference name='xsltStyleItemWithParam' href='html/libxslt-xsltInternals.html#xsltStyleItemWithParam'/>
- <reference name='xsltStyleItemWithParamPtr' href='html/libxslt-xsltInternals.html#xsltStyleItemWithParamPtr'/>
- <reference name='xsltStylePreComp' href='html/libxslt-xsltInternals.html#xsltStylePreComp'/>
- <reference name='xsltStylePreCompPtr' href='html/libxslt-xsltInternals.html#xsltStylePreCompPtr'/>
- <reference name='xsltStylePreCompute' href='html/libxslt-preproc.html#xsltStylePreCompute'/>
- <reference name='xsltStyleStylesheetLevelGetExtData' href='html/libxslt-extensions.html#xsltStyleStylesheetLevelGetExtData'/>
- <reference name='xsltStyleType' href='html/libxslt-xsltInternals.html#xsltStyleType'/>
- <reference name='xsltStylesheet' href='html/libxslt-xsltInternals.html#xsltStylesheet'/>
- <reference name='xsltStylesheetPtr' href='html/libxslt-xsltInternals.html#xsltStylesheetPtr'/>
- <reference name='xsltSystemPropertyFunction' href='html/libxslt-functions.html#xsltSystemPropertyFunction'/>
- <reference name='xsltTemplate' href='html/libxslt-xsltInternals.html#xsltTemplate'/>
- <reference name='xsltTemplateProcess' href='html/libxslt-templates.html#xsltTemplateProcess'/>
- <reference name='xsltTemplatePtr' href='html/libxslt-xsltInternals.html#xsltTemplatePtr'/>
- <reference name='xsltTestCompMatchList' href='html/libxslt-pattern.html#xsltTestCompMatchList'/>
- <reference name='xsltText' href='html/libxslt-transform.html#xsltText'/>
- <reference name='xsltTimestamp' href='html/libxslt-xsltutils.html#xsltTimestamp'/>
- <reference name='xsltTopLevelFunction' href='html/libxslt-extensions.html#xsltTopLevelFunction'/>
- <reference name='xsltTransformCache' href='html/libxslt-xsltInternals.html#xsltTransformCache'/>
- <reference name='xsltTransformCachePtr' href='html/libxslt-xsltInternals.html#xsltTransformCachePtr'/>
- <reference name='xsltTransformContext' href='html/libxslt-xsltInternals.html#xsltTransformContext'/>
- <reference name='xsltTransformContextPtr' href='html/libxslt-xsltInternals.html#xsltTransformContextPtr'/>
- <reference name='xsltTransformError' href='html/libxslt-xsltutils.html#xsltTransformError'/>
- <reference name='xsltTransformFunction' href='html/libxslt-xsltInternals.html#xsltTransformFunction'/>
- <reference name='xsltTransformState' href='html/libxslt-xsltInternals.html#xsltTransformState'/>
- <reference name='xsltUninit' href='html/libxslt-xsltInternals.html#xsltUninit'/>
- <reference name='xsltUnparsedEntityURIFunction' href='html/libxslt-functions.html#xsltUnparsedEntityURIFunction'/>
- <reference name='xsltUnregisterExtModule' href='html/libxslt-extensions.html#xsltUnregisterExtModule'/>
- <reference name='xsltUnregisterExtModuleElement' href='html/libxslt-extensions.html#xsltUnregisterExtModuleElement'/>
- <reference name='xsltUnregisterExtModuleFunction' href='html/libxslt-extensions.html#xsltUnregisterExtModuleFunction'/>
- <reference name='xsltUnregisterExtModuleTopLevel' href='html/libxslt-extensions.html#xsltUnregisterExtModuleTopLevel'/>
- <reference name='xsltValueOf' href='html/libxslt-transform.html#xsltValueOf'/>
- <reference name='xsltVarInfo' href='html/libxslt-xsltInternals.html#xsltVarInfo'/>
- <reference name='xsltVarInfoPtr' href='html/libxslt-xsltInternals.html#xsltVarInfoPtr'/>
- <reference name='xsltVariableLookup' href='html/libxslt-variables.html#xsltVariableLookup'/>
- <reference name='xsltXPathCompile' href='html/libxslt-xsltutils.html#xsltXPathCompile'/>
- <reference name='xsltXPathCompileFlags' href='html/libxslt-xsltutils.html#xsltXPathCompileFlags'/>
- <reference name='xsltXPathFunctionLookup' href='html/libxslt-functions.html#xsltXPathFunctionLookup'/>
- <reference name='xsltXPathGetTransformContext' href='html/libxslt-extensions.html#xsltXPathGetTransformContext'/>
- <reference name='xsltXPathVariableLookup' href='html/libxslt-variables.html#xsltXPathVariableLookup'/>
- <reference name='xsltXSLTAttrMarker' href='html/libxslt-xsltInternals.html#xsltXSLTAttrMarker'/>
- </references>
- <alpha>
- <letter name='C'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- </letter>
- <letter name='I'>
- <ref name='IS_XSLT_ATTR_FAST'/>
- <ref name='IS_XSLT_ELEM'/>
- <ref name='IS_XSLT_ELEM_FAST'/>
- <ref name='IS_XSLT_NAME'/>
- <ref name='IS_XSLT_REAL_NODE'/>
- </letter>
- <letter name='L'>
- <ref name='LIBXSLT_PUBLIC'/>
- </letter>
- <letter name='N'>
- <ref name='NODE_IS_KEYED'/>
- </letter>
- <letter name='U'>
- <ref name='UNDEFINED_DEFAULT_NS'/>
- </letter>
- <letter name='X'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLTCALL'/>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBLIC'/>
- <ref name='XSLTPUBVAR'/>
- <ref name='XSLT_CCTXT'/>
- <ref name='XSLT_DEBUG_CONT'/>
- <ref name='XSLT_DEBUG_INIT'/>
- <ref name='XSLT_DEBUG_NEXT'/>
- <ref name='XSLT_DEBUG_NONE'/>
- <ref name='XSLT_DEBUG_QUIT'/>
- <ref name='XSLT_DEBUG_RUN'/>
- <ref name='XSLT_DEBUG_RUN_RESTART'/>
- <ref name='XSLT_DEBUG_STEP'/>
- <ref name='XSLT_DEBUG_STEPOUT'/>
- <ref name='XSLT_DEBUG_STOP'/>
- <ref name='XSLT_DEFAULT_URL'/>
- <ref name='XSLT_DEFAULT_VENDOR'/>
- <ref name='XSLT_DEFAULT_VERSION'/>
- <ref name='XSLT_ERROR_SEVERITY_ERROR'/>
- <ref name='XSLT_ERROR_SEVERITY_WARNING'/>
- <ref name='XSLT_FAST_IF'/>
- <ref name='XSLT_FUNC_APPLYIMPORTS'/>
- <ref name='XSLT_FUNC_APPLYTEMPLATES'/>
- <ref name='XSLT_FUNC_ATTRIBUTE'/>
- <ref name='XSLT_FUNC_ATTRSET'/>
- <ref name='XSLT_FUNC_CALLTEMPLATE'/>
- <ref name='XSLT_FUNC_CHOOSE'/>
- <ref name='XSLT_FUNC_COMMENT'/>
- <ref name='XSLT_FUNC_COPY'/>
- <ref name='XSLT_FUNC_COPYOF'/>
- <ref name='XSLT_FUNC_DOCUMENT'/>
- <ref name='XSLT_FUNC_ELEMENT'/>
- <ref name='XSLT_FUNC_EXTENSION'/>
- <ref name='XSLT_FUNC_FALLBACK'/>
- <ref name='XSLT_FUNC_FOREACH'/>
- <ref name='XSLT_FUNC_IF'/>
- <ref name='XSLT_FUNC_INCLUDE'/>
- <ref name='XSLT_FUNC_LITERAL_RESULT_ELEMENT'/>
- <ref name='XSLT_FUNC_MESSAGE'/>
- <ref name='XSLT_FUNC_NUMBER'/>
- <ref name='XSLT_FUNC_OTHERWISE'/>
- <ref name='XSLT_FUNC_PARAM'/>
- <ref name='XSLT_FUNC_PI'/>
- <ref name='XSLT_FUNC_SORT'/>
- <ref name='XSLT_FUNC_TEXT'/>
- <ref name='XSLT_FUNC_UNKOWN_FORWARDS_COMPAT'/>
- <ref name='XSLT_FUNC_VALUEOF'/>
- <ref name='XSLT_FUNC_VARIABLE'/>
- <ref name='XSLT_FUNC_WHEN'/>
- <ref name='XSLT_FUNC_WITHPARAM'/>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- <ref name='XSLT_GET_INTERNAL_NSMAP'/>
- <ref name='XSLT_HAS_INTERNAL_NSMAP'/>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='XSLT_IS_TEXT_NODE'/>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='XSLT_ITEM_NSINSCOPE_FIELDS'/>
- <ref name='XSLT_LIBXSLT_NAMESPACE'/>
- <ref name='XSLT_LOAD_DOCUMENT'/>
- <ref name='XSLT_LOAD_START'/>
- <ref name='XSLT_LOAD_STYLESHEET'/>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='XSLT_MAX_SORT'/>
- <ref name='XSLT_NAMESPACE'/>
- <ref name='XSLT_OUTPUT_HTML'/>
- <ref name='XSLT_OUTPUT_TEXT'/>
- <ref name='XSLT_OUTPUT_XML'/>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_GLOBAL'/>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- <ref name='XSLT_SECPREF_CREATE_DIRECTORY'/>
- <ref name='XSLT_SECPREF_READ_FILE'/>
- <ref name='XSLT_SECPREF_READ_NETWORK'/>
- <ref name='XSLT_SECPREF_WRITE_FILE'/>
- <ref name='XSLT_SECPREF_WRITE_NETWORK'/>
- <ref name='XSLT_STATE_ERROR'/>
- <ref name='XSLT_STATE_OK'/>
- <ref name='XSLT_STATE_STOPPED'/>
- <ref name='XSLT_STRANGE'/>
- <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
- <ref name='XSLT_TODO'/>
- <ref name='XSLT_TRACE'/>
- <ref name='XSLT_TRACE_ALL'/>
- <ref name='XSLT_TRACE_APPLY_TEMPLATE'/>
- <ref name='XSLT_TRACE_APPLY_TEMPLATES'/>
- <ref name='XSLT_TRACE_CALL_TEMPLATE'/>
- <ref name='XSLT_TRACE_CHOOSE'/>
- <ref name='XSLT_TRACE_COMMENT'/>
- <ref name='XSLT_TRACE_COPY'/>
- <ref name='XSLT_TRACE_COPY_OF'/>
- <ref name='XSLT_TRACE_COPY_TEXT'/>
- <ref name='XSLT_TRACE_FOR_EACH'/>
- <ref name='XSLT_TRACE_IF'/>
- <ref name='XSLT_TRACE_KEYS'/>
- <ref name='XSLT_TRACE_NONE'/>
- <ref name='XSLT_TRACE_PI'/>
- <ref name='XSLT_TRACE_PROCESS_NODE'/>
- <ref name='XSLT_TRACE_STRIP_SPACES'/>
- <ref name='XSLT_TRACE_TEMPLATES'/>
- <ref name='XSLT_TRACE_VALUE_OF'/>
- <ref name='XSLT_TRACE_VARIABLES'/>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- <ref name='XSLT_XT_NAMESPACE'/>
- </letter>
- <letter name='_'>
- <ref name='_xsltCompMatch'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltDecimalFormat'/>
- <ref name='_xsltDocument'/>
- <ref name='_xsltEffectiveNs'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltKeyDef'/>
- <ref name='_xsltKeyTable'/>
- <ref name='_xsltNsAlias'/>
- <ref name='_xsltNsList'/>
- <ref name='_xsltNsListContainer'/>
- <ref name='_xsltNsMap'/>
- <ref name='_xsltNumberData'/>
- <ref name='_xsltPointerList'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltRuntimeExtra'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStyleBasicEmptyItem'/>
- <ref name='_xsltStyleBasicExpressionItem'/>
- <ref name='_xsltStyleBasicItemVariable'/>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemAttribute'/>
- <ref name='_xsltStyleItemCallTemplate'/>
- <ref name='_xsltStyleItemCopy'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='_xsltStyleItemElement'/>
- <ref name='_xsltStyleItemExtElement'/>
- <ref name='_xsltStyleItemIf'/>
- <ref name='_xsltStyleItemInclude'/>
- <ref name='_xsltStyleItemLRElementInfo'/>
- <ref name='_xsltStyleItemMessage'/>
- <ref name='_xsltStyleItemNumber'/>
- <ref name='_xsltStyleItemOtherwise'/>
- <ref name='_xsltStyleItemPI'/>
- <ref name='_xsltStyleItemParam'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStyleItemText'/>
- <ref name='_xsltStyleItemUknown'/>
- <ref name='_xsltStyleItemValueOf'/>
- <ref name='_xsltStyleItemWhen'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformCache'/>
- <ref name='_xsltTransformContext'/>
- <ref name='_xsltVarInfo'/>
- </letter>
- <letter name='x'>
- <ref name='xslAddCall'/>
- <ref name='xslDebugStatus'/>
- <ref name='xslDropCall'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAddCallCallback'/>
- <ref name='xsltAddKey'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCalibrateAdjust'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltChoose'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltComment'/>
- <ref name='xsltCompMatch'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltCompMatchPtr'/>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltCompilerCtxt'/>
- <ref name='xsltCompilerCtxtPtr'/>
- <ref name='xsltCompilerNodeInfo'/>
- <ref name='xsltCompilerNodeInfoPtr'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltConstNamespaceNameXSLT'/>
- <ref name='xsltCopy'/>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- <ref name='xsltDebugStatusCodes'/>
- <ref name='xsltDebugTraceCodes'/>
- <ref name='xsltDecimalFormat'/>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltDecimalFormatPtr'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocDefaultLoader'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltDocument'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltDocumentPtr'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltDropCallCallback'/>
- <ref name='xsltEffectiveNs'/>
- <ref name='xsltEffectiveNsPtr'/>
- <ref name='xsltElemPreComp'/>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltElemPreCompPtr'/>
- <ref name='xsltElement'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltEngineVersion'/>
- <ref name='xsltErrorSeverityType'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtMarker'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltForEach'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFormatNumberInfo'/>
- <ref name='xsltFormatNumberInfoPtr'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeCtxtExts'/>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltFreeLocales'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltFreeTemplateHashes'/>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltGenericDebug'/>
- <ref name='xsltGenericDebugContext'/>
- <ref name='xsltGenericError'/>
- <ref name='xsltGenericErrorContext'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetDebuggerStatus'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltHandleDebuggerCallback'/>
- <ref name='xsltIf'/>
- <ref name='xsltInit'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltInitGlobals'/>
- <ref name='xsltIsBlank'/>
- <ref name='xsltKeyDef'/>
- <ref name='xsltKeyDefPtr'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltKeyTable'/>
- <ref name='xsltKeyTablePtr'/>
- <ref name='xsltLibxmlVersion'/>
- <ref name='xsltLibxsltVersion'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltLoadType'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltLocale'/>
- <ref name='xsltLocaleChar'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltMaxDepth'/>
- <ref name='xsltMaxVars'/>
- <ref name='xsltMessage'/>
- <ref name='xsltNamespaceAlias'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltNsAlias'/>
- <ref name='xsltNsAliasPtr'/>
- <ref name='xsltNsList'/>
- <ref name='xsltNsListContainer'/>
- <ref name='xsltNsListContainerPtr'/>
- <ref name='xsltNsListPtr'/>
- <ref name='xsltNsMap'/>
- <ref name='xsltNsMapPtr'/>
- <ref name='xsltNumber'/>
- <ref name='xsltNumberData'/>
- <ref name='xsltNumberDataPtr'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltOutputType'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseStylesheetAttributeSet'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltPointerList'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListCreate'/>
- <ref name='xsltPointerListFree'/>
- <ref name='xsltPointerListPtr'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltPreComputeFunction'/>
- <ref name='xsltPrincipalStylesheetData'/>
- <ref name='xsltPrincipalStylesheetDataPtr'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRegisterAllExtras'/>
- <ref name='xsltRegisterAllFunctions'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltRegisterExtras'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTestModule'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltRuntimeExtra'/>
- <ref name='xsltRuntimeExtraPtr'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSecurityOption'/>
- <ref name='xsltSecurityPrefs'/>
- <ref name='xsltSecurityPrefsPtr'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSetDebuggerStatus'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetLoaderFunc'/>
- <ref name='xsltSetSecurityPrefs'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltSetXIncludeDefault'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- <ref name='xsltSort'/>
- <ref name='xsltSortFunc'/>
- <ref name='xsltSplitQName'/>
- <ref name='xsltStackElem'/>
- <ref name='xsltStackElemPtr'/>
- <ref name='xsltStrxfrm'/>
- <ref name='xsltStyleBasicEmptyItem'/>
- <ref name='xsltStyleBasicEmptyItemPtr'/>
- <ref name='xsltStyleBasicExpressionItem'/>
- <ref name='xsltStyleBasicExpressionItemPtr'/>
- <ref name='xsltStyleBasicItemVariable'/>
- <ref name='xsltStyleBasicItemVariablePtr'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleItemApplyImports'/>
- <ref name='xsltStyleItemApplyImportsPtr'/>
- <ref name='xsltStyleItemApplyTemplates'/>
- <ref name='xsltStyleItemApplyTemplatesPtr'/>
- <ref name='xsltStyleItemAttribute'/>
- <ref name='xsltStyleItemAttributePtr'/>
- <ref name='xsltStyleItemCallTemplate'/>
- <ref name='xsltStyleItemCallTemplatePtr'/>
- <ref name='xsltStyleItemChoose'/>
- <ref name='xsltStyleItemChoosePtr'/>
- <ref name='xsltStyleItemComment'/>
- <ref name='xsltStyleItemCommentPtr'/>
- <ref name='xsltStyleItemCopy'/>
- <ref name='xsltStyleItemCopyOf'/>
- <ref name='xsltStyleItemCopyOfPtr'/>
- <ref name='xsltStyleItemCopyPtr'/>
- <ref name='xsltStyleItemDocument'/>
- <ref name='xsltStyleItemDocumentPtr'/>
- <ref name='xsltStyleItemElement'/>
- <ref name='xsltStyleItemElementPtr'/>
- <ref name='xsltStyleItemExtElement'/>
- <ref name='xsltStyleItemExtElementPtr'/>
- <ref name='xsltStyleItemFallback'/>
- <ref name='xsltStyleItemFallbackPtr'/>
- <ref name='xsltStyleItemForEach'/>
- <ref name='xsltStyleItemForEachPtr'/>
- <ref name='xsltStyleItemIf'/>
- <ref name='xsltStyleItemIfPtr'/>
- <ref name='xsltStyleItemInclude'/>
- <ref name='xsltStyleItemIncludePtr'/>
- <ref name='xsltStyleItemLRElementInfo'/>
- <ref name='xsltStyleItemLRElementInfoPtr'/>
- <ref name='xsltStyleItemMessage'/>
- <ref name='xsltStyleItemMessagePtr'/>
- <ref name='xsltStyleItemNumber'/>
- <ref name='xsltStyleItemNumberPtr'/>
- <ref name='xsltStyleItemOtherwise'/>
- <ref name='xsltStyleItemOtherwisePtr'/>
- <ref name='xsltStyleItemPI'/>
- <ref name='xsltStyleItemPIPtr'/>
- <ref name='xsltStyleItemParam'/>
- <ref name='xsltStyleItemParamPtr'/>
- <ref name='xsltStyleItemSort'/>
- <ref name='xsltStyleItemSortPtr'/>
- <ref name='xsltStyleItemText'/>
- <ref name='xsltStyleItemTextPtr'/>
- <ref name='xsltStyleItemUknown'/>
- <ref name='xsltStyleItemUknownPtr'/>
- <ref name='xsltStyleItemValueOf'/>
- <ref name='xsltStyleItemValueOfPtr'/>
- <ref name='xsltStyleItemVariable'/>
- <ref name='xsltStyleItemVariablePtr'/>
- <ref name='xsltStyleItemWhen'/>
- <ref name='xsltStyleItemWhenPtr'/>
- <ref name='xsltStyleItemWithParam'/>
- <ref name='xsltStyleItemWithParamPtr'/>
- <ref name='xsltStylePreComp'/>
- <ref name='xsltStylePreCompPtr'/>
- <ref name='xsltStylePreCompute'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltStyleType'/>
- <ref name='xsltStylesheet'/>
- <ref name='xsltStylesheetPtr'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltTemplate'/>
- <ref name='xsltTemplateProcess'/>
- <ref name='xsltTemplatePtr'/>
- <ref name='xsltTestCompMatchList'/>
- <ref name='xsltText'/>
- <ref name='xsltTimestamp'/>
- <ref name='xsltTopLevelFunction'/>
- <ref name='xsltTransformCache'/>
- <ref name='xsltTransformCachePtr'/>
- <ref name='xsltTransformContext'/>
- <ref name='xsltTransformContextPtr'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltTransformState'/>
- <ref name='xsltUninit'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- <ref name='xsltUnregisterExtModule'/>
- <ref name='xsltUnregisterExtModuleElement'/>
- <ref name='xsltUnregisterExtModuleFunction'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- <ref name='xsltValueOf'/>
- <ref name='xsltVarInfo'/>
- <ref name='xsltVarInfoPtr'/>
- <ref name='xsltVariableLookup'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathGetTransformContext'/>
- <ref name='xsltXPathVariableLookup'/>
- <ref name='xsltXSLTAttrMarker'/>
- </letter>
- </alpha>
- <constructors>
- <type name='const xmlChar *'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltSplitQName'/>
- </type>
- <type name='long'>
- <ref name='xsltTimestamp'/>
- </type>
- <type name='void *'>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- </type>
- <type name='xmlAttrPtr'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </type>
- <type name='xmlChar *'>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltGetNsProp'/>
- </type>
- <type name='xmlDocPtr'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltProfileStylesheet'/>
- </type>
- <type name='xmlHashTablePtr'>
- <ref name='xsltGetExtInfo'/>
- </type>
- <type name='xmlNodePtr'>
- <ref name='xsltCopyTextString'/>
- </type>
- <type name='xmlNodePtr *'>
- <ref name='xsltTemplateProcess'/>
- </type>
- <type name='xmlNodeSetPtr'>
- <ref name='xsltGetKey'/>
- </type>
- <type name='xmlNsPtr'>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </type>
- <type name='xmlXPathCompExprPtr'>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </type>
- <type name='xmlXPathError'>
- <ref name='xsltFormatNumberConversion'/>
- </type>
- <type name='xmlXPathFunction'>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltXPathFunctionLookup'/>
- </type>
- <type name='xmlXPathObjectPtr'>
- <ref name='xsltVariableLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </type>
- <type name='xmlXPathObjectPtr *'>
- <ref name='xsltComputeSortResult'/>
- </type>
- <type name='xsltCompMatchPtr'>
- <ref name='xsltCompilePattern'/>
- </type>
- <type name='xsltDebugTraceCodes'>
- <ref name='xsltDebugGetDefaultTrace'/>
- </type>
- <type name='xsltDecimalFormatPtr'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- </type>
- <type name='xsltDocumentPtr'>
- <ref name='xsltFindDocument'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- </type>
- <type name='xsltElemPreCompPtr'>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltPreComputeFunction'/>
- </type>
- <type name='xsltLocale'>
- <ref name='xsltNewLocale'/>
- </type>
- <type name='xsltLocaleChar *'>
- <ref name='xsltStrxfrm'/>
- </type>
- <type name='xsltPointerListPtr'>
- <ref name='xsltPointerListCreate'/>
- </type>
- <type name='xsltPreComputeFunction'>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- </type>
- <type name='xsltSecurityCheck'>
- <ref name='xsltGetSecurityPrefs'/>
- </type>
- <type name='xsltSecurityPrefsPtr'>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltNewSecurityPrefs'/>
- </type>
- <type name='xsltStackElemPtr'>
- <ref name='xsltParseStylesheetCallerParam'/>
- </type>
- <type name='xsltStylesheetPtr'>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- </type>
- <type name='xsltTemplatePtr'>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetTemplate'/>
- </type>
- <type name='xsltTopLevelFunction'>
- <ref name='xsltExtModuleTopLevelLookup'/>
- </type>
- <type name='xsltTransformContextPtr'>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltXPathGetTransformContext'/>
- </type>
- <type name='xsltTransformFunction'>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtModuleElementLookup'/>
- </type>
- </constructors>
- <functions>
- <type name='...'>
- <ref name='xsltTransformError'/>
- </type>
- <type name='FILE *'>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSaveResultToFile'/>
- </type>
- <type name='const char **'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </type>
- <type name='const unsigned char *'>
- <ref name='xsltGetUTF8Char'/>
- </type>
- <type name='const xmlChar *'>
- <ref name='xsltAddKey'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSplitQName'/>
- <ref name='xsltStrxfrm'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltUnregisterExtModule'/>
- <ref name='xsltUnregisterExtModuleElement'/>
- <ref name='xsltUnregisterExtModuleFunction'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- <ref name='xsltVariableLookup'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </type>
- <type name='const xmlChar **'>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltSplitQName'/>
- </type>
- <type name='const xsltLocaleChar *'>
- <ref name='xsltLocaleStrcmp'/>
- </type>
- <type name='double'>
- <ref name='xsltFormatNumberConversion'/>
- </type>
- <type name='int *'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltSaveResultToString'/>
- </type>
- <type name='long'>
- <ref name='xsltCalibrateAdjust'/>
- </type>
- <type name='void *'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </type>
- <type name='xmlAttrPtr'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCompileAttr'/>
- </type>
- <type name='xmlChar *'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltIsBlank'/>
- </type>
- <type name='xmlChar **'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltSaveResultToString'/>
- </type>
- <type name='xmlDictPtr'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltSplitQName'/>
- </type>
- <type name='xmlDocPtr'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- </type>
- <type name='xmlGenericErrorFunc'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </type>
- <type name='xmlNodePtr'>
- <ref name='xslAddCall'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAddCallCallback'/>
- <ref name='xsltAddKey'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltChoose'/>
- <ref name='xsltComment'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltCopy'/>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElement'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltForEach'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltHandleDebuggerCallback'/>
- <ref name='xsltIf'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltMessage'/>
- <ref name='xsltNamespaceAlias'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltNumber'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseStylesheetAttributeSet'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltPreComputeFunction'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltSort'/>
- <ref name='xsltStylePreCompute'/>
- <ref name='xsltTemplateProcess'/>
- <ref name='xsltTestCompMatchList'/>
- <ref name='xsltText'/>
- <ref name='xsltTopLevelFunction'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltValueOf'/>
- </type>
- <type name='xmlNodePtr *'>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltSortFunc'/>
- </type>
- <type name='xmlNodeSetPtr'>
- <ref name='xsltDocumentSortFunction'/>
- </type>
- <type name='xmlNsPtr'>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- </type>
- <type name='xmlNsPtr *'>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathStringNs'/>
- </type>
- <type name='xmlOutputBufferPtr'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- </type>
- <type name='xmlSAXHandlerPtr'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </type>
- <type name='xmlXPathCompExprPtr'>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- </type>
- <type name='xmlXPathContextPtr'>
- <ref name='xsltRegisterAllFunctions'/>
- </type>
- <type name='xmlXPathFunction'>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- </type>
- <type name='xmlXPathObjectPtr'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- </type>
- <type name='xmlXPathParserContextPtr'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- <ref name='xsltXPathGetTransformContext'/>
- </type>
- <type name='xsltCompMatchPtr'>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltTestCompMatchList'/>
- </type>
- <type name='xsltCompilerCtxtPtr'>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseSequenceConstructor'/>
- </type>
- <type name='xsltDebugTraceCodes'>
- <ref name='xsltDebugSetDefaultTrace'/>
- </type>
- <type name='xsltDecimalFormatPtr'>
- <ref name='xsltFormatNumberConversion'/>
- </type>
- <type name='xsltDocLoaderFunc'>
- <ref name='xsltSetLoaderFunc'/>
- </type>
- <type name='xsltDocumentPtr'>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- </type>
- <type name='xsltElemPreCompDeallocator'>
- <ref name='xsltInitElemPreComp'/>
- </type>
- <type name='xsltElemPreCompPtr'>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltChoose'/>
- <ref name='xsltComment'/>
- <ref name='xsltCopy'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltElement'/>
- <ref name='xsltForEach'/>
- <ref name='xsltIf'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNumber'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltSort'/>
- <ref name='xsltText'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltValueOf'/>
- </type>
- <type name='xsltExtInitFunction'>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- </type>
- <type name='xsltExtShutdownFunction'>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- </type>
- <type name='xsltKeyDefPtr'>
- <ref name='xsltInitCtxtKey'/>
- </type>
- <type name='xsltLoadType'>
- <ref name='xsltDocLoaderFunc'/>
- </type>
- <type name='xsltLocale'>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltStrxfrm'/>
- </type>
- <type name='xsltNsMapPtr'>
- <ref name='xsltRestoreDocumentNamespaces'/>
- </type>
- <type name='xsltNumberDataPtr'>
- <ref name='xsltNumberFormat'/>
- </type>
- <type name='xsltPointerListPtr'>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListFree'/>
- </type>
- <type name='xsltPreComputeFunction'>
- <ref name='xsltRegisterExtModuleElement'/>
- </type>
- <type name='xsltSecurityCheck'>
- <ref name='xsltSetSecurityPrefs'/>
- </type>
- <type name='xsltSecurityOption'>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </type>
- <type name='xsltSecurityPrefsPtr'>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </type>
- <type name='xsltSortFunc'>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetSortFunc'/>
- </type>
- <type name='xsltStackElemPtr'>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltProcessOneNode'/>
- </type>
- <type name='xsltStyleExtInitFunction'>
- <ref name='xsltRegisterExtModuleFull'/>
- </type>
- <type name='xsltStyleExtShutdownFunction'>
- <ref name='xsltRegisterExtModuleFull'/>
- </type>
- <type name='xsltStylesheetPtr'>
- <ref name='xsltAddKey'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltFreeTemplateHashes'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltNamespaceAlias'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseStylesheetAttributeSet'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltPreComputeFunction'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltShutdownExts'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStylePreCompute'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltTopLevelFunction'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </type>
- <type name='xsltTemplatePtr'>
- <ref name='xslAddCall'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAddCallCallback'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltHandleDebuggerCallback'/>
- </type>
- <type name='xsltTopLevelFunction'>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- </type>
- <type name='xsltTransformContextPtr'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltChoose'/>
- <ref name='xsltComment'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltCopy'/>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElement'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltForEach'/>
- <ref name='xsltFreeCtxtExts'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltHandleDebuggerCallback'/>
- <ref name='xsltIf'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltMessage'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNumber'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtras'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltSort'/>
- <ref name='xsltSortFunc'/>
- <ref name='xsltTemplateProcess'/>
- <ref name='xsltTestCompMatchList'/>
- <ref name='xsltText'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltValueOf'/>
- <ref name='xsltVariableLookup'/>
- </type>
- <type name='xsltTransformFunction'>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltPreComputeFunction'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtModuleElement'/>
- </type>
- </functions>
- <files>
- <file name='attributes'>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltParseStylesheetAttributeSet'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- </file>
- <file name='documents'>
- <ref name='XSLT_LOAD_DOCUMENT'/>
- <ref name='XSLT_LOAD_START'/>
- <ref name='XSLT_LOAD_STYLESHEET'/>
- <ref name='xsltDocDefaultLoader'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltLoadType'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltSetLoaderFunc'/>
- </file>
- <file name='extensions'>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFreeCtxtExts'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltInitGlobals'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltPreComputeFunction'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltRegisterTestModule'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltTopLevelFunction'/>
- <ref name='xsltUnregisterExtModule'/>
- <ref name='xsltUnregisterExtModuleElement'/>
- <ref name='xsltUnregisterExtModuleFunction'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- <ref name='xsltXPathGetTransformContext'/>
- </file>
- <file name='extra'>
- <ref name='XSLT_LIBXSLT_NAMESPACE'/>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- <ref name='XSLT_XT_NAMESPACE'/>
- <ref name='xsltDebug'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltRegisterAllExtras'/>
- <ref name='xsltRegisterExtras'/>
- </file>
- <file name='functions'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltRegisterAllFunctions'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- <ref name='xsltXPathFunctionLookup'/>
- </file>
- <file name='imports'>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetInclude'/>
- </file>
- <file name='keys'>
- <ref name='NODE_IS_KEYED'/>
- <ref name='xsltAddKey'/>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltInitCtxtKeys'/>
- </file>
- <file name='namespaces'>
- <ref name='UNDEFINED_DEFAULT_NS'/>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltNamespaceAlias'/>
- </file>
- <file name='numbersInternals'>
- <ref name='_xsltCompMatch'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltNumberData'/>
- <ref name='xsltFormatNumberInfo'/>
- <ref name='xsltFormatNumberInfoPtr'/>
- <ref name='xsltNumberData'/>
- <ref name='xsltNumberDataPtr'/>
- </file>
- <file name='pattern'>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltCompMatch'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltCompMatchPtr'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeTemplateHashes'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltMatchPattern'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltTestCompMatchList'/>
- </file>
- <file name='preproc'>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltExtMarker'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltStylePreCompute'/>
- </file>
- <file name='security'>
- <ref name='XSLT_SECPREF_CREATE_DIRECTORY'/>
- <ref name='XSLT_SECPREF_READ_FILE'/>
- <ref name='XSLT_SECPREF_READ_NETWORK'/>
- <ref name='XSLT_SECPREF_WRITE_FILE'/>
- <ref name='XSLT_SECPREF_WRITE_NETWORK'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSecurityOption'/>
- <ref name='xsltSecurityPrefs'/>
- <ref name='xsltSecurityPrefsPtr'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </file>
- <file name='templates'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltTemplateProcess'/>
- </file>
- <file name='transform'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltChoose'/>
- <ref name='xsltComment'/>
- <ref name='xsltCopy'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElement'/>
- <ref name='xsltForEach'/>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltIf'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltNumber'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetXIncludeDefault'/>
- <ref name='xsltSort'/>
- <ref name='xsltText'/>
- <ref name='xsltValueOf'/>
- </file>
- <file name='variables'>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_GLOBAL'/>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltVariableLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </file>
- <file name='xslt'>
- <ref name='XSLT_DEFAULT_URL'/>
- <ref name='XSLT_DEFAULT_VENDOR'/>
- <ref name='XSLT_DEFAULT_VERSION'/>
- <ref name='XSLT_NAMESPACE'/>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltEngineVersion'/>
- <ref name='xsltInit'/>
- <ref name='xsltLibxmlVersion'/>
- <ref name='xsltLibxsltVersion'/>
- <ref name='xsltMaxDepth'/>
- <ref name='xsltMaxVars'/>
- </file>
- <file name='xsltInternals'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- <ref name='IS_XSLT_ATTR_FAST'/>
- <ref name='IS_XSLT_ELEM_FAST'/>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLT_CCTXT'/>
- <ref name='XSLT_ERROR_SEVERITY_ERROR'/>
- <ref name='XSLT_ERROR_SEVERITY_WARNING'/>
- <ref name='XSLT_FAST_IF'/>
- <ref name='XSLT_FUNC_APPLYIMPORTS'/>
- <ref name='XSLT_FUNC_APPLYTEMPLATES'/>
- <ref name='XSLT_FUNC_ATTRIBUTE'/>
- <ref name='XSLT_FUNC_ATTRSET'/>
- <ref name='XSLT_FUNC_CALLTEMPLATE'/>
- <ref name='XSLT_FUNC_CHOOSE'/>
- <ref name='XSLT_FUNC_COMMENT'/>
- <ref name='XSLT_FUNC_COPY'/>
- <ref name='XSLT_FUNC_COPYOF'/>
- <ref name='XSLT_FUNC_DOCUMENT'/>
- <ref name='XSLT_FUNC_ELEMENT'/>
- <ref name='XSLT_FUNC_EXTENSION'/>
- <ref name='XSLT_FUNC_FALLBACK'/>
- <ref name='XSLT_FUNC_FOREACH'/>
- <ref name='XSLT_FUNC_IF'/>
- <ref name='XSLT_FUNC_INCLUDE'/>
- <ref name='XSLT_FUNC_LITERAL_RESULT_ELEMENT'/>
- <ref name='XSLT_FUNC_MESSAGE'/>
- <ref name='XSLT_FUNC_NUMBER'/>
- <ref name='XSLT_FUNC_OTHERWISE'/>
- <ref name='XSLT_FUNC_PARAM'/>
- <ref name='XSLT_FUNC_PI'/>
- <ref name='XSLT_FUNC_SORT'/>
- <ref name='XSLT_FUNC_TEXT'/>
- <ref name='XSLT_FUNC_UNKOWN_FORWARDS_COMPAT'/>
- <ref name='XSLT_FUNC_VALUEOF'/>
- <ref name='XSLT_FUNC_VARIABLE'/>
- <ref name='XSLT_FUNC_WHEN'/>
- <ref name='XSLT_FUNC_WITHPARAM'/>
- <ref name='XSLT_GET_INTERNAL_NSMAP'/>
- <ref name='XSLT_HAS_INTERNAL_NSMAP'/>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='XSLT_IS_TEXT_NODE'/>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='XSLT_ITEM_NSINSCOPE_FIELDS'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='XSLT_MAX_SORT'/>
- <ref name='XSLT_OUTPUT_HTML'/>
- <ref name='XSLT_OUTPUT_TEXT'/>
- <ref name='XSLT_OUTPUT_XML'/>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- <ref name='XSLT_STATE_ERROR'/>
- <ref name='XSLT_STATE_OK'/>
- <ref name='XSLT_STATE_STOPPED'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltDecimalFormat'/>
- <ref name='_xsltDocument'/>
- <ref name='_xsltEffectiveNs'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltKeyDef'/>
- <ref name='_xsltKeyTable'/>
- <ref name='_xsltNsAlias'/>
- <ref name='_xsltNsList'/>
- <ref name='_xsltNsListContainer'/>
- <ref name='_xsltNsMap'/>
- <ref name='_xsltPointerList'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltRuntimeExtra'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStyleBasicEmptyItem'/>
- <ref name='_xsltStyleBasicExpressionItem'/>
- <ref name='_xsltStyleBasicItemVariable'/>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemAttribute'/>
- <ref name='_xsltStyleItemCallTemplate'/>
- <ref name='_xsltStyleItemCopy'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='_xsltStyleItemElement'/>
- <ref name='_xsltStyleItemExtElement'/>
- <ref name='_xsltStyleItemIf'/>
- <ref name='_xsltStyleItemInclude'/>
- <ref name='_xsltStyleItemLRElementInfo'/>
- <ref name='_xsltStyleItemMessage'/>
- <ref name='_xsltStyleItemNumber'/>
- <ref name='_xsltStyleItemOtherwise'/>
- <ref name='_xsltStyleItemPI'/>
- <ref name='_xsltStyleItemParam'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStyleItemText'/>
- <ref name='_xsltStyleItemUknown'/>
- <ref name='_xsltStyleItemValueOf'/>
- <ref name='_xsltStyleItemWhen'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformCache'/>
- <ref name='_xsltTransformContext'/>
- <ref name='_xsltVarInfo'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltCompilerCtxt'/>
- <ref name='xsltCompilerCtxtPtr'/>
- <ref name='xsltCompilerNodeInfo'/>
- <ref name='xsltCompilerNodeInfoPtr'/>
- <ref name='xsltConstNamespaceNameXSLT'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltDecimalFormat'/>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltDecimalFormatPtr'/>
- <ref name='xsltDocument'/>
- <ref name='xsltDocumentPtr'/>
- <ref name='xsltEffectiveNs'/>
- <ref name='xsltEffectiveNsPtr'/>
- <ref name='xsltElemPreComp'/>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltElemPreCompPtr'/>
- <ref name='xsltErrorSeverityType'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltIsBlank'/>
- <ref name='xsltKeyDef'/>
- <ref name='xsltKeyDefPtr'/>
- <ref name='xsltKeyTable'/>
- <ref name='xsltKeyTablePtr'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNsAlias'/>
- <ref name='xsltNsAliasPtr'/>
- <ref name='xsltNsList'/>
- <ref name='xsltNsListContainer'/>
- <ref name='xsltNsListContainerPtr'/>
- <ref name='xsltNsListPtr'/>
- <ref name='xsltNsMap'/>
- <ref name='xsltNsMapPtr'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltOutputType'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltPointerList'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListCreate'/>
- <ref name='xsltPointerListFree'/>
- <ref name='xsltPointerListPtr'/>
- <ref name='xsltPrincipalStylesheetData'/>
- <ref name='xsltPrincipalStylesheetDataPtr'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- <ref name='xsltRuntimeExtra'/>
- <ref name='xsltRuntimeExtraPtr'/>
- <ref name='xsltSortFunc'/>
- <ref name='xsltStackElem'/>
- <ref name='xsltStackElemPtr'/>
- <ref name='xsltStyleBasicEmptyItem'/>
- <ref name='xsltStyleBasicEmptyItemPtr'/>
- <ref name='xsltStyleBasicExpressionItem'/>
- <ref name='xsltStyleBasicExpressionItemPtr'/>
- <ref name='xsltStyleBasicItemVariable'/>
- <ref name='xsltStyleBasicItemVariablePtr'/>
- <ref name='xsltStyleItemApplyImports'/>
- <ref name='xsltStyleItemApplyImportsPtr'/>
- <ref name='xsltStyleItemApplyTemplates'/>
- <ref name='xsltStyleItemApplyTemplatesPtr'/>
- <ref name='xsltStyleItemAttribute'/>
- <ref name='xsltStyleItemAttributePtr'/>
- <ref name='xsltStyleItemCallTemplate'/>
- <ref name='xsltStyleItemCallTemplatePtr'/>
- <ref name='xsltStyleItemChoose'/>
- <ref name='xsltStyleItemChoosePtr'/>
- <ref name='xsltStyleItemComment'/>
- <ref name='xsltStyleItemCommentPtr'/>
- <ref name='xsltStyleItemCopy'/>
- <ref name='xsltStyleItemCopyOf'/>
- <ref name='xsltStyleItemCopyOfPtr'/>
- <ref name='xsltStyleItemCopyPtr'/>
- <ref name='xsltStyleItemDocument'/>
- <ref name='xsltStyleItemDocumentPtr'/>
- <ref name='xsltStyleItemElement'/>
- <ref name='xsltStyleItemElementPtr'/>
- <ref name='xsltStyleItemExtElement'/>
- <ref name='xsltStyleItemExtElementPtr'/>
- <ref name='xsltStyleItemFallback'/>
- <ref name='xsltStyleItemFallbackPtr'/>
- <ref name='xsltStyleItemForEach'/>
- <ref name='xsltStyleItemForEachPtr'/>
- <ref name='xsltStyleItemIf'/>
- <ref name='xsltStyleItemIfPtr'/>
- <ref name='xsltStyleItemInclude'/>
- <ref name='xsltStyleItemIncludePtr'/>
- <ref name='xsltStyleItemLRElementInfo'/>
- <ref name='xsltStyleItemLRElementInfoPtr'/>
- <ref name='xsltStyleItemMessage'/>
- <ref name='xsltStyleItemMessagePtr'/>
- <ref name='xsltStyleItemNumber'/>
- <ref name='xsltStyleItemNumberPtr'/>
- <ref name='xsltStyleItemOtherwise'/>
- <ref name='xsltStyleItemOtherwisePtr'/>
- <ref name='xsltStyleItemPI'/>
- <ref name='xsltStyleItemPIPtr'/>
- <ref name='xsltStyleItemParam'/>
- <ref name='xsltStyleItemParamPtr'/>
- <ref name='xsltStyleItemSort'/>
- <ref name='xsltStyleItemSortPtr'/>
- <ref name='xsltStyleItemText'/>
- <ref name='xsltStyleItemTextPtr'/>
- <ref name='xsltStyleItemUknown'/>
- <ref name='xsltStyleItemUknownPtr'/>
- <ref name='xsltStyleItemValueOf'/>
- <ref name='xsltStyleItemValueOfPtr'/>
- <ref name='xsltStyleItemVariable'/>
- <ref name='xsltStyleItemVariablePtr'/>
- <ref name='xsltStyleItemWhen'/>
- <ref name='xsltStyleItemWhenPtr'/>
- <ref name='xsltStyleItemWithParam'/>
- <ref name='xsltStyleItemWithParamPtr'/>
- <ref name='xsltStylePreComp'/>
- <ref name='xsltStylePreCompPtr'/>
- <ref name='xsltStyleType'/>
- <ref name='xsltStylesheet'/>
- <ref name='xsltStylesheetPtr'/>
- <ref name='xsltTemplate'/>
- <ref name='xsltTemplatePtr'/>
- <ref name='xsltTransformCache'/>
- <ref name='xsltTransformCachePtr'/>
- <ref name='xsltTransformContext'/>
- <ref name='xsltTransformContextPtr'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltTransformState'/>
- <ref name='xsltUninit'/>
- <ref name='xsltVarInfo'/>
- <ref name='xsltVarInfoPtr'/>
- <ref name='xsltXSLTAttrMarker'/>
- </file>
- <file name='xsltexports'>
- <ref name='LIBXSLT_PUBLIC'/>
- <ref name='XSLTCALL'/>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBLIC'/>
- <ref name='XSLTPUBVAR'/>
- </file>
- <file name='xsltlocale'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltFreeLocales'/>
- <ref name='xsltLocale'/>
- <ref name='xsltLocaleChar'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltStrxfrm'/>
- </file>
- <file name='xsltutils'>
- <ref name='IS_XSLT_ELEM'/>
- <ref name='IS_XSLT_NAME'/>
- <ref name='IS_XSLT_REAL_NODE'/>
- <ref name='XSLT_DEBUG_CONT'/>
- <ref name='XSLT_DEBUG_INIT'/>
- <ref name='XSLT_DEBUG_NEXT'/>
- <ref name='XSLT_DEBUG_NONE'/>
- <ref name='XSLT_DEBUG_QUIT'/>
- <ref name='XSLT_DEBUG_RUN'/>
- <ref name='XSLT_DEBUG_RUN_RESTART'/>
- <ref name='XSLT_DEBUG_STEP'/>
- <ref name='XSLT_DEBUG_STEPOUT'/>
- <ref name='XSLT_DEBUG_STOP'/>
- <ref name='XSLT_STRANGE'/>
- <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
- <ref name='XSLT_TODO'/>
- <ref name='XSLT_TRACE'/>
- <ref name='XSLT_TRACE_ALL'/>
- <ref name='XSLT_TRACE_APPLY_TEMPLATE'/>
- <ref name='XSLT_TRACE_APPLY_TEMPLATES'/>
- <ref name='XSLT_TRACE_CALL_TEMPLATE'/>
- <ref name='XSLT_TRACE_CHOOSE'/>
- <ref name='XSLT_TRACE_COMMENT'/>
- <ref name='XSLT_TRACE_COPY'/>
- <ref name='XSLT_TRACE_COPY_OF'/>
- <ref name='XSLT_TRACE_COPY_TEXT'/>
- <ref name='XSLT_TRACE_FOR_EACH'/>
- <ref name='XSLT_TRACE_IF'/>
- <ref name='XSLT_TRACE_KEYS'/>
- <ref name='XSLT_TRACE_NONE'/>
- <ref name='XSLT_TRACE_PI'/>
- <ref name='XSLT_TRACE_PROCESS_NODE'/>
- <ref name='XSLT_TRACE_STRIP_SPACES'/>
- <ref name='XSLT_TRACE_TEMPLATES'/>
- <ref name='XSLT_TRACE_VALUE_OF'/>
- <ref name='XSLT_TRACE_VARIABLES'/>
- <ref name='xslAddCall'/>
- <ref name='xslDebugStatus'/>
- <ref name='xslDropCall'/>
- <ref name='xsltAddCallCallback'/>
- <ref name='xsltCalibrateAdjust'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- <ref name='xsltDebugStatusCodes'/>
- <ref name='xsltDebugTraceCodes'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltDropCallCallback'/>
- <ref name='xsltGenericDebug'/>
- <ref name='xsltGenericDebugContext'/>
- <ref name='xsltGenericError'/>
- <ref name='xsltGenericErrorContext'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetDebuggerStatus'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltHandleDebuggerCallback'/>
- <ref name='xsltMessage'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSetDebuggerStatus'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltSplitQName'/>
- <ref name='xsltTimestamp'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </file>
- </files>
- <index>
- <chunk name='chunk0'>
- <letter name='A'>
- <word name='API'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='ATTENTION:'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='AVT'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltFreeAVTList'/>
- </word>
- <word name='Add'>
- <ref name='xslAddCall'/>
- </word>
- <word name='Adds'>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltPointerListAddSize'/>
- </word>
- <word name='Allocate'>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- </word>
- <word name='Apache'>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- </word>
- <word name='Apply'>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='Attribute'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- </letter>
- <letter name='B'>
- <word name='BIG'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- </letter>
- <letter name='C'>
- <word name='CDTATA'>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='Called'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltStyleGetExtData'/>
- </word>
- <word name='Change'>
- <ref name='_xsltStyleBasicExpressionItem'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='Char'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='Characters:'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Check'>
- <ref name='IS_XSLT_REAL_NODE'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltIsBlank'/>
- </word>
- <word name='Checks'>
- <ref name='IS_XSLT_ELEM'/>
- <ref name='IS_XSLT_NAME'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='Clark'>
- <ref name='XSLT_XT_NAMESPACE'/>
- </word>
- <word name='Clean-up'>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='Cleanup'>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltFreeLocales'/>
- </word>
- <word name='Clear'>
- <ref name='xsltCompMatchClearCache'/>
- </word>
- <word name='Common'>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- </word>
- <word name='Compares'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='Compilation'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Compile'>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='Computes'>
- <ref name='xsltGetKey'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='Conflict'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='Context'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Control'>
- <ref name='XSLT_TRACE'/>
- </word>
- <word name='Convert'>
- <ref name='xsltNumberFormat'/>
- </word>
- <word name='Copies'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCopyNamespace'/>
- </word>
- <word name='Create'>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNewTransformContext'/>
- </word>
- <word name='Creates'>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltPointerListCreate'/>
- </word>
- <word name='Current'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Currently'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- </word>
- </letter>
- <letter name='D'>
- <word name='DTD'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='Deallocates'>
- <ref name='xsltElemPreCompDeallocator'/>
- </word>
- <word name='Debugging'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='DecimalFormat'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Display'>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='Don'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltTemplateProcess'/>
- </word>
- <word name='Drop'>
- <ref name='xslDropCall'/>
- </word>
- <word name='Dumps'>
- <ref name='xsltDebugDumpExtensions'/>
- </word>
- </letter>
- <letter name='E'>
- <word name='EXSLT'>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='Each'>
- <ref name='xsltEvalUserParams'/>
- </word>
- <word name='Either'>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='Element'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='Elements'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='Eliminate'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Errors'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='Evaluate'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalUserParams'/>
- </word>
- <word name='Evaluates'>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltEvalGlobalVariables'/>
- </word>
- <word name='Exaclty'>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='Execute'>
- <ref name='xsltCopy'/>
- </word>
- <word name='Extensions'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- </letter>
- <letter name='F'>
- <word name='FILE'>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='FIXED'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='Fields'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- </word>
- <word name='Finalizes'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='Find'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltNextImport'/>
- </word>
- <word name='Finds'>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='Flag'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='For'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='Forwards-compatible'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Fragment'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='Fragments'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFreeRVTs'/>
- </word>
- <word name='Free'>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeCtxtExts'/>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltFreeTemplateHashes'/>
- <ref name='xsltFreeTransformContext'/>
- </word>
- <word name='Frees'>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltPointerListFree'/>
- </word>
- <word name='Function'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- </letter>
- <letter name='G'>
- <word name='General'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Get'>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltGetDebuggerStatus'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- </word>
- <word name='Global'>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- </letter>
- <letter name='I'>
- <word name='INTERNAL'>
- <ref name='xsltInitAllDocKeys'/>
- </word>
- <word name='IObuf'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='ISO'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='Implement'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- </word>
- <word name='Indicates'>
- <ref name='_xsltEffectiveNs'/>
- </word>
- <word name='Indicator'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='Initialize'>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitGlobals'/>
- </word>
- <word name='Initializes'>
- <ref name='xsltInit'/>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='Internal'>
- <ref name='XSLT_FAST_IF'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='xsltFreeRVTs'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk1'>
- <letter name='J'>
- <word name='JDK'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='James'>
- <ref name='XSLT_XT_NAMESPACE'/>
- </word>
- </letter>
- <letter name='K'>
- <word name='Kay'>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- </word>
- <word name='Key'>
- <ref name='_xsltStylesheet'/>
- </word>
- </letter>
- <letter name='L'>
- <word name='LR-element'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='LRE'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='Length'>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='Libexslt'>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='Libxslt'>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='Literal'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='Load'>
- <ref name='xsltParseStylesheetFile'/>
- </word>
- <word name='LocationPathPattern'>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='Looks'>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltGetKey'/>
- </word>
- <word name='Lookup'>
- <ref name='xsltGetSecurityPrefs'/>
- </word>
- </letter>
- <letter name='M'>
- <word name='MUST'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='Macro'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLTCALL'/>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBLIC'/>
- <ref name='XSLTPUBVAR'/>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- <ref name='XSLT_STRANGE'/>
- <ref name='XSLT_TODO'/>
- </word>
- <word name='Marks'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='Max'>
- <ref name='XSLT_MAX_SORT'/>
- </word>
- <word name='May'>
- <ref name='_xsltDecimalFormat'/>
- </word>
- <word name='Maybe'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='Meaning'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Memory'>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='Michael'>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- </word>
- </letter>
- <letter name='N'>
- <word name='NCName'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='NOTE'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='NOTE:'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='Name'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='Namespace'>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Namespaces'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Needed'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Not'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='Not-a-number'>
- <ref name='_xsltDecimalFormat'/>
- </word>
- <word name='Notation:'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Note'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='Number'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltStylesheet'/>
- </word>
- </letter>
- <letter name='O'>
- <word name='ONLY'>
- <ref name='xsltInitAllDocKeys'/>
- </word>
- <word name='Obsolete'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltTemplateProcess'/>
- </word>
- <word name='One'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='Otherwise'>
- <ref name='xsltDoSortFunction'/>
- </word>
- <word name='Output'>
- <ref name='_xsltStylesheet'/>
- </word>
- </letter>
- <letter name='P'>
- <word name='POSIX'>
- <ref name='XSLT_LOCALE_POSIX'/>
- </word>
- <word name='Parse'>
- <ref name='xsltParseStylesheetUser'/>
- </word>
- <word name='Parser'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- </word>
- <word name='Parses'>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='Pattern'>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='Per'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Places'>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='Pops'>
- <ref name='xsltLocalVariablePop'/>
- </word>
- <word name='Pre'>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltDocumentComp'/>
- </word>
- <word name='Precompile'>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='Precompute'>
- <ref name='xsltStylePreCompute'/>
- </word>
- <word name='Precomputed'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='Precomputes'>
- <ref name='xsltPreComputeExtModuleElement'/>
- </word>
- <word name='Process'>
- <ref name='xsltApplyImports'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltComment'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElement'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltForEach'/>
- <ref name='xsltMessage'/>
- <ref name='xsltNumber'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltText'/>
- <ref name='xsltValueOf'/>
- </word>
- <word name='Processes'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltChoose'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltIf'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='Profiling'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='Provides'>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='Push'>
- <ref name='xsltAddStackElemList'/>
- </word>
- </letter>
- <letter name='Q'>
- <word name='QName'>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='QNames'>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='QUESTION:'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- </letter>
- <letter name='R'>
- <word name='REVISIT'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='REVISIT:'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='RFC'>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='ROUTINE'>
- <ref name='xsltInitAllDocKeys'/>
- </word>
- <word name='RTF'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='RVT'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_GLOBAL'/>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='RVTs'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='Read'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='Register'>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltRegisterPersistRVT'/>
- </word>
- <word name='Registering'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- </word>
- <word name='Registers'>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRegisterAllExtras'/>
- <ref name='xsltRegisterAllFunctions'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltRegisterExtras'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterTestModule'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='Resets'>
- <ref name='xsltPointerListClear'/>
- </word>
- <word name='Restore'>
- <ref name='xsltRestoreDocumentNamespaces'/>
- </word>
- <word name='Result'>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='Retrieve'>
- <ref name='xsltGetExtData'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- </word>
- <word name='Rule'>
- <ref name='_xsltTransformContext'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk2'>
- <letter name='S'>
- <word name='SAX'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='Sampling'>
- <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
- </word>
- <word name='Save'>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='Saxon'>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- </word>
- <word name='Scaling'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='Search'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltVariableLookup'/>
- </word>
- <word name='Set'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetLoaderFunc'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='Should'>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='Shutdown'>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- </word>
- <word name='Signature'>
- <ref name='xsltSortFunc'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='Similar'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='Size'>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Special'>
- <ref name='UNDEFINED_DEFAULT_NS'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Specific'>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- </word>
- <word name='Speed'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Split'>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='Storage'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='Strip'>
- <ref name='xsltApplyStripSpaces'/>
- </word>
- <word name='Structure:'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='Stylesheet'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltNewStylesheet'/>
- </word>
- <word name='Symbol'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- </letter>
- <letter name='T'>
- <word name='TEMP'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='TODO:'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStyleBasicExpressionItem'/>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemCallTemplate'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='Template'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='Templates'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='Test'>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='That'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='TransformContext'>
- <ref name='xsltNewTransformContext'/>
- </word>
- <word name='Transforms'>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='Tree'>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='Try'>
- <ref name='xsltFindDocument'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- </word>
- </letter>
- <letter name='U'>
- <word name='URL'>
- <ref name='XSLT_DEFAULT_URL'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSecurityCheck'/>
- </word>
- <word name='UTF-8'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='UTF8'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='Uninitializes'>
- <ref name='xsltUninit'/>
- </word>
- <word name='Unregister'>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltUnregisterExtModule'/>
- </word>
- <word name='Unregisters'>
- <ref name='xsltUnregisterExtModuleElement'/>
- <ref name='xsltUnregisterExtModuleFunction'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- </word>
- <word name='Update'>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='Updates'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='Use'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='Used'>
- <ref name='_xsltDecimalFormat'/>
- <ref name='xsltCalibrateAdjust'/>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='User'>
- <ref name='xsltSecurityCheck'/>
- </word>
- </letter>
- <letter name='V'>
- <word name='Value'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCreateRVT'/>
- </word>
- <word name='Variable'>
- <ref name='xsltVariableLookup'/>
- </word>
- </letter>
- <letter name='W'>
- <word name='WITH_XSLT_DEBUG_BREAKPOINTS'>
- <ref name='xslAddCall'/>
- </word>
- <word name='Why'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- <word name='Will'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- </word>
- <word name='WinAPI'>
- <ref name='XSLT_LOCALE_WINAPI'/>
- </word>
- </letter>
- <letter name='X'>
- <word name='XALAN'>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- </word>
- <word name='XInclude'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='XML'>
- <ref name='_xsltNsMap'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='XML_CAST_FPTR'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='XSLT-1'>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltDocumentElem'/>
- </word>
- <word name='XSLT-attributes'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='XSLT-copy'>
- <ref name='xsltCopy'/>
- </word>
- <word name='XSLT_ERROR_SEVERITY_WARNING'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='XSLT_GET_IMPORT_PTR'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='XSLT_RVT_FUNC_RESULT'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='XSLT_RVT_GLOBAL'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='XSLT_RVT_LOCAL'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='XSLT_RVT_VARIABLE'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- </word>
- </letter>
- <letter name='a'>
- <word name='absent'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='accelerators'>
- <ref name='_xsltNumberData'/>
- </word>
- <word name='access'>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- </word>
- <word name='according'>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='accordingly'>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocumentSortFunction'/>
- </word>
- <word name='activated'>
- <ref name='xsltCopyTextString'/>
- </word>
- <word name='actual'>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- </word>
- <word name='actually'>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='add'>
- <ref name='xsltAddKey'/>
- </word>
- <word name='added'>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltPointerListAddSize'/>
- </word>
- <word name='adding'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='additionally'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='address'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='after'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='afterwards'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='alias'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='aliases'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- </word>
- <word name='aliasing'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='all'>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRegisterAllFunctions'/>
- </word>
- <word name='allocated'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='allow'>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='allowed'>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='allowing'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalXPathStringNs'/>
- </word>
- <word name='already'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='also'>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='always'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- </word>
- <word name='amiss'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='analyzes'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='anchor'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='anchored'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='another'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='any'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='anymore'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='api'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='appear'>
- <ref name='_xsltDecimalFormat'/>
- </word>
- <word name='appears'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='application-wide'>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- </word>
- <word name='applied'>
- <ref name='xslAddCall'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='applies'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='apply'>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='apply-imports'>
- <ref name='xsltApplyImports'/>
- </word>
- <word name='apply-templates'>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltApplyTemplates'/>
- </word>
- <word name='applying'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='are'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='argument'>
- <ref name='XSLT_IS_TEXT_NODE'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='arguments'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFormatNumberFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGenerateIdFunction'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltUnparsedEntityURIFunction'/>
- </word>
- <word name='array'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltVariableLookup'/>
- </word>
- <word name='arry'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='assign'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='assigned:'>
- <ref name='_xsltStyleItemDocument'/>
- </word>
- <word name='associated'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltTransformFunction'/>
- <ref name='xsltUnregisterExtModule'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='attached'>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltSort'/>
- </word>
- <word name='attempt'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='attr'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='attribute-set'>
- <ref name='xsltParseStylesheetAttributeSet'/>
- </word>
- <word name='attribute-sets'>
- <ref name='xsltApplyAttributeSet'/>
- </word>
- <word name='attributes'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='automatically'>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='available'>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='average='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='avoid'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk3'>
- <letter name='b'>
- <word name='bar'>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='based'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='basically'>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='been'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='before'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='beginning'>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='behaviour'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='being'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslAddCall'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='between'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- </word>
- <word name='bit'>
- <ref name='NODE_IS_KEYED'/>
- </word>
- <word name='blank'>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='blanks'>
- <ref name='xsltIsBlank'/>
- </word>
- <word name='block'>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='blocks'>
- <ref name='XSLT_TODO'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltFreeStylePreComps'/>
- </word>
- <word name='boolean'>
- <ref name='xsltElementAvailableFunction'/>
- <ref name='xsltFunctionAvailableFunction'/>
- </word>
- <word name='both'>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='bound'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='braces'>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='breakpoint'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='broke'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='buffer'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- </word>
- <word name='build'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='building'>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='built-in'>
- <ref name='xsltInit'/>
- <ref name='xsltRegisterAllExtras'/>
- <ref name='xsltRegisterExtras'/>
- </word>
- <word name='but'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltSort'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='by:'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltStyleGetExtData'/>
- </word>
- <word name='bypass'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='byte'>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='bytes'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- </word>
- </letter>
- <letter name='c'>
- <word name='cache'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='calibration'>
- <ref name='xsltCalibrateAdjust'/>
- </word>
- <word name='call'>
- <ref name='xslAddCall'/>
- <ref name='xslDropCall'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='call-template'>
- <ref name='_xsltStyleItemCallTemplate'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltCallTemplate'/>
- </word>
- <word name='callback'>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSetSecurityPrefs'/>
- <ref name='xsltXPathFunctionLookup'/>
- </word>
- <word name='callbacks'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='called'>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltSort'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='caller'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='calling'>
- <ref name='XSLTCALL'/>
- </word>
- <word name='calls='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='can'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='cascading'>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- </word>
- <word name='cases'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='casting'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='catch'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='chained'>
- <ref name='_xsltDecimalFormat'/>
- <ref name='_xsltDocument'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='change'>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='changed'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='changes'>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='channel'>
- <ref name='xsltSaveResultTo'/>
- </word>
- <word name='char'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='character'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='characters'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='chars'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltIsBlank'/>
- </word>
- <word name='check'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- <ref name='IS_XSLT_ATTR_FAST'/>
- <ref name='IS_XSLT_ELEM_FAST'/>
- <ref name='NODE_IS_KEYED'/>
- <ref name='XSLT_HAS_INTERNAL_NSMAP'/>
- <ref name='XSLT_IS_TEXT_NODE'/>
- <ref name='xsltSecurityCheck'/>
- </word>
- <word name='checking'>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='checks'>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='child'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='xsltCopyTextString'/>
- </word>
- <word name='clash'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='class:'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='cleared'>
- <ref name='xsltPointerListClear'/>
- </word>
- <word name='close'>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- </word>
- <word name='closed'>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='coalescing'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='code'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='collected'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='collector'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='com'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='combination'>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='coming'>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='comment'>
- <ref name='xsltComment'/>
- </word>
- <word name='common'>
- <ref name='_xsltElemPreComp'/>
- </word>
- <word name='comp'>
- <ref name='xsltFreeCompMatchList'/>
- </word>
- <word name='compExpr'>
- <ref name='_xsltStyleBasicExpressionItem'/>
- </word>
- <word name='compared'>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='comparison'>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='compatibility'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='compilation'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='compile-time'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='compiled'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyImports'/>
- <ref name='xsltApplyTemplates'/>
- <ref name='xsltCallTemplate'/>
- <ref name='xsltChoose'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltForEach'/>
- <ref name='xsltIf'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='compiler'>
- <ref name='XSLT_CCTXT'/>
- </word>
- <word name='compiles'>
- <ref name='xsltParseAnyXSLTElem'/>
- </word>
- <word name='compiling'>
- <ref name='xsltAllocateExtra'/>
- </word>
- <word name='completed'>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='compression'>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='computation'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='computations'>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- </word>
- <word name='computed'>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCopy'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='construct'>
- <ref name='xsltMessage'/>
- </word>
- <word name='constructor'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='consumption'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- </word>
- <word name='contain'>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='contained'>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='container'>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='containing'>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltMessage'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='contains'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='content'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListFree'/>
- </word>
- <word name='content-model'>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='contexts'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='control'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='convention'>
- <ref name='XSLTCALL'/>
- </word>
- <word name='converts'>
- <ref name='xsltEvalTemplateString'/>
- </word>
- <word name='copied'>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='copies'>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='copy'>
- <ref name='_xsltStyleItemCopy'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='copy-of'>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltCopyOf'/>
- </word>
- <word name='copying'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='correct'>
- <ref name='xsltCalibrateAdjust'/>
- </word>
- <word name='corresponding'>
- <ref name='_xsltElemPreComp'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='created'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='creating'>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='creation'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='cur'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='curly'>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='currently'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk4'>
- <letter name='d'>
- <word name='data'>
- <ref name='_xsltRuntimeExtra'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFreeCtxtExts'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltTimestamp'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='deallocated'>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- </word>
- <word name='deallocation'>
- <ref name='_xsltRuntimeExtra'/>
- </word>
- <word name='deallocator'>
- <ref name='_xsltElemPreComp'/>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='dealy'>
- <ref name='xsltCalibrateAdjust'/>
- </word>
- <word name='debug'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- </word>
- <word name='debugger'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='debugging'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='debugtrace'>
- <ref name='XSLT_TRACE'/>
- </word>
- <word name='decimal'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='decimal-format'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- </word>
- <word name='declaration'>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseStylesheetParam'/>
- </word>
- <word name='declared'>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCopyNamespace'/>
- </word>
- <word name='declares'>
- <ref name='XSLTCALL'/>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBLIC'/>
- <ref name='XSLTPUBVAR'/>
- </word>
- <word name='declaring'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='default'>
- <ref name='XSLT_DEFAULT_VERSION'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltRegisterAllFunctions'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetLoaderFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='define'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLT_FAST_IF'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- </word>
- <word name='defined'>
- <ref name='_xsltTransformContext'/>
- <ref name='xslAddCall'/>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='definition'>
- <ref name='xsltAddKey'/>
- <ref name='xsltInitCtxtKey'/>
- </word>
- <word name='definitions'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='dependent'>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='deprecated'>
- <ref name='xsltRegisterExtras'/>
- </word>
- <word name='depth'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltVarInfo'/>
- <ref name='xsltLocalVariablePop'/>
- </word>
- <word name='derived'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='description'>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='descriptions'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='descriptor'>
- <ref name='xsltSaveResultToFd'/>
- </word>
- <word name='desired'>
- <ref name='xsltFindDocument'/>
- <ref name='xsltGetExtInfo'/>
- </word>
- <word name='destroyed'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='details'>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='detected'>
- <ref name='XSLT_STRANGE'/>
- </word>
- <word name='dict'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='dictionary'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='dictionary:'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='different'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='digit'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='directly'>
- <ref name='xsltSort'/>
- </word>
- <word name='directories'>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='disable-escaping'>
- <ref name='xsltCopyTextString'/>
- </word>
- <word name='disabled'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='disattached'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='discard'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='display'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='distinct'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='doc'>
- <ref name='xsltGetKey'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='docs'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='doctype-public'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='doctype-system'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='documents'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='does'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListFree'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- </word>
- <word name='doesn'>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='done'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='down'>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='dump'>
- <ref name='xsltProfileStylesheet'/>
- </word>
- <word name='dunno'>
- <ref name='_xsltEffectiveNs'/>
- </word>
- <word name='during'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSortFunc'/>
- </word>
- </letter>
- <letter name='e'>
- <word name='eclared'>
- <ref name='_xsltEffectiveNs'/>
- </word>
- <word name='effect'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='either'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='element-available'>
- <ref name='xsltElementAvailableFunction'/>
- </word>
- <word name='elements'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltRegisterAllElement'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='else'>
- <ref name='xsltGetExtInfo'/>
- </word>
- <word name='emitted'>
- <ref name='XSLT_TRACE'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='empty'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- </word>
- <word name='enable'>
- <ref name='XSLT_FAST_IF'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- </word>
- <word name='enabled'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='encoded'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='encoding'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='encountering'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='end'>
- <ref name='_xsltElemPreComp'/>
- </word>
- <word name='ends'>
- <ref name='XSLT_RVT_LOCAL'/>
- </word>
- <word name='engine'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='entity'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='entry'>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='episode'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='equal'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='error:'>
- <ref name='CHECK_STOPPEDE'/>
- </word>
- <word name='errors'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='establish'>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='etc'>
- <ref name='xsltInit'/>
- </word>
- <word name='eval'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='evaluate'>
- <ref name='xsltEvalXPathPredicate'/>
- </word>
- <word name='evaluated'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='evaluates'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- </word>
- <word name='evaluation'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='everything'>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='example'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='except'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='excluded'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='excluded-result-prefixes'>
- <ref name='_xsltPrincipalStylesheetData'/>
- </word>
- <word name='exctract'>
- <ref name='xsltApplyAttributeSet'/>
- </word>
- <word name='executed'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='execution'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='exension'>
- <ref name='xsltGetExtData'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- </word>
- <word name='existent'>
- <ref name='xsltCopyTextString'/>
- </word>
- <word name='existing'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='exists'>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='exit'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='exiting'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='exits'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='expect'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='exportable'>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBVAR'/>
- </word>
- <word name='exported'>
- <ref name='XSLTCALL'/>
- </word>
- <word name='expressed'>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- </word>
- <word name='expression'>
- <ref name='_xsltStyleBasicExpressionItem'/>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemIf'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStyleItemValueOf'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='expressions'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='exsl:function'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='exslt:function'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='exsltFuncFunctionFunction'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='extInfos'>
- <ref name='xsltGetExtInfo'/>
- </word>
- <word name='extended'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- </word>
- <word name='extending'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='extension-element-prefixes'>
- <ref name='_xsltPrincipalStylesheetData'/>
- </word>
- <word name='extensions'>
- <ref name='XSLT_LIBXSLT_NAMESPACE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- <ref name='XSLT_XT_NAMESPACE'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltInit'/>
- <ref name='xsltInitGlobals'/>
- <ref name='xsltRegisterAllExtras'/>
- <ref name='xsltRegisterExtras'/>
- </word>
- <word name='external'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='extra'>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- <ref name='_xsltRuntimeExtra'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltTransformError'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='extract'>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='extras'>
- <ref name='_xsltTransformContext'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk5'>
- <letter name='f'>
- <word name='factor'>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='failure'>
- <ref name='xsltAddKey'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='failures'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='fast'>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='fields'>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='file'>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='filename'>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='files'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='find'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltFindDocument'/>
- </word>
- <word name='fine'>
- <ref name='xsltParseAnyXSLTElem'/>
- </word>
- <word name='first'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='fixup'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='flag'>
- <ref name='XSLT_STRANGE'/>
- <ref name='XSLT_TODO'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='flags'>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='following'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='foo'>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='for-each'>
- <ref name='xsltForEach'/>
- </word>
- <word name='forbid'>
- <ref name='xsltSecurityForbid'/>
- </word>
- <word name='force'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='form'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='format'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='format-number'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltFormatNumberFunction'/>
- </word>
- <word name='formats'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='formatting'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltNumberFormat'/>
- </word>
- <word name='forwards-compatible'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='found'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCalibrateAdjust'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltVariableLookup'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='fptr'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='fraction'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='fractional'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='fraction}{suffix}'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='fragment'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='fragments'>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='free'>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltPointerListClear'/>
- <ref name='xsltPointerListFree'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='freed'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltPointerListFree'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='frees'>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='full'>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='func:result'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- </word>
- <word name='function-available'>
- <ref name='xsltFunctionAvailableFunction'/>
- </word>
- <word name='function-calling'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='functions'>
- <ref name='XSLTCALL'/>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltRegisterAllFunctions'/>
- </word>
- <word name='future'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- </letter>
- <letter name='g'>
- <word name='garbage'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='gathering'>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='gcc'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='gcc4'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='general'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- </word>
- <word name='generally'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='generate'>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='generate-id'>
- <ref name='xsltGenerateIdFunction'/>
- </word>
- <word name='generated'>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='generates'>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='get'>
- <ref name='XSLT_CCTXT'/>
- <ref name='XSLT_GET_INTERNAL_NSMAP'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSecurityPrefs'/>
- </word>
- <word name='given'>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- <ref name='xsltVariableLookup'/>
- </word>
- <word name='gives'>
- <ref name='xsltTransformError'/>
- </word>
- <word name='giving'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='global'>
- <ref name='XSLT_RVT_GLOBAL'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltInitGlobals'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetSortFunc'/>
- </word>
- <word name='goto'>
- <ref name='CHECK_STOPPEDE'/>
- </word>
- <word name='grafted'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='group'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='grouping'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk6'>
- <letter name='h'>
- <word name='handle'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetLoaderFunc'/>
- </word>
- <word name='handler'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='handles'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='handling'>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='hard-wire'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='has'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='hash'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='hashtable'>
- <ref name='xsltNormalizeCompSteps'/>
- </word>
- <word name='have'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='held'>
- <ref name='_xsltElemPreComp'/>
- </word>
- <word name='hence'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='hold'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- </word>
- <word name='holding'>
- <ref name='_xsltNsMap'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- </word>
- <word name='holds'>
- <ref name='xsltInitCtxtKey'/>
- </word>
- <word name='hosting'>
- <ref name='xsltEvalAVT'/>
- </word>
- <word name='how'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='href'>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='html'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='http:'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- </letter>
- <letter name='i'>
- <word name='identifier'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='ignorable'>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltIsBlank'/>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='implementation'>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- </word>
- <word name='implemented'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='import'>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltParseStylesheetImport'/>
- </word>
- <word name='imported'>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='imports'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='in-scope'>
- <ref name='XSLT_ITEM_NSINSCOPE_FIELDS'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='xsltEvalXPathStringNs'/>
- </word>
- <word name='include'>
- <ref name='xsltParseStylesheetInclude'/>
- </word>
- <word name='included'>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='includes'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='inclusive'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='indented'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='index'>
- <ref name='nr'/>
- </word>
- <word name='indicating'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='indicator'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='info'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='infos'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='xsltFindDocument'/>
- </word>
- <word name='inherited'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='initial'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListCreate'/>
- </word>
- <word name='initialization'>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltStyleExtInitFunction'/>
- </word>
- <word name='initialized'>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltNewElemPreComp'/>
- </word>
- <word name='initializes'>
- <ref name='xsltNewElemPreComp'/>
- </word>
- <word name='initiate'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='input'>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='insertion'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='inspected'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='instances'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='instantiated'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='instead'>
- <ref name='xsltRegisterExtras'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='instructions'>
- <ref name='XSLT_RVT_LOCAL'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltParseAnyXSLTElem'/>
- </word>
- <word name='integer'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='intended'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='interest'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='interface'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='intergers'>
- <ref name='XSLT_GET_IMPORT_INT'/>
- </word>
- <word name='internal'>
- <ref name='UNDEFINED_DEFAULT_NS'/>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltCreateRVT'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltParseAnyXSLTElem'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='internalized'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='internally'>
- <ref name='XSLT_STRANGE'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='interpretation'>
- <ref name='_xsltDecimalFormat'/>
- </word>
- <word name='interpreter'>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='interpretor'>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='into'>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='invoking'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='isn'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='issues'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='item'>
- <ref name='_xsltEffectiveNs'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslDropCall'/>
- <ref name='xsltPointerListAddSize'/>
- </word>
- <word name='item1'>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='item2|item3'>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='items'>
- <ref name='XSLT_ITEM_COMMON_FIELDS'/>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='its'>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- </word>
- <word name='itself'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- </letter>
- <letter name='j'>
- <word name='java'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='jdk'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='just'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- </letter>
- <letter name='k'>
- <word name='keep'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='keeping'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='kept'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='_xsltDocument'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='key'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAddKey'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- </word>
- <word name='keys'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFreeDocumentKeys'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='kind'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='known'>
- <ref name='_xsltTransformContext'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk7'>
- <letter name='l'>
- <word name='label'>
- <ref name='CHECK_STOPPEDE'/>
- </word>
- <word name='language'>
- <ref name='xsltNewLocale'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='last'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltNextImport'/>
- </word>
- <word name='later'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='lead'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='leaks'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='leaving'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='left'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='len'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='level'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='libexsl'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='library'>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- <ref name='xsltUnregisterExtModule'/>
- </word>
- <word name='libxml2'>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='libxslt'>
- <ref name='XSLT_LIBXSLT_NAMESPACE'/>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFunctionNodeSet'/>
- </word>
- <word name='lifespan'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='lifetime'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='like'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltSecurityCheck'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='line'>
- <ref name='xsltTransformError'/>
- </word>
- <word name='literal'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltEffectiveNs'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='literally'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='load'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltSetLoaderFunc'/>
- </word>
- <word name='loaded'>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltSetXIncludeDefault'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- </word>
- <word name='loading'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetLoaderFunc'/>
- </word>
- <word name='local'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='locale'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltFreeLocales'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='localname'>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='locate'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='location'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='look'>
- <ref name='xsltGetKey'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='looks'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='lookup'>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetSecurityPrefs'/>
- </word>
- <word name='lost'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- </letter>
- <letter name='m'>
- <word name='macro'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='made'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltIsBlank'/>
- </word>
- <word name='main'>
- <ref name='_xsltDocument'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='make'>
- <ref name='xsltAllocateExtraCtxt'/>
- </word>
- <word name='makes'>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='map'>
- <ref name='XSLT_GET_INTERNAL_NSMAP'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- </word>
- <word name='mapped'>
- <ref name='_xsltNsMap'/>
- </word>
- <word name='mapping'>
- <ref name='XSLT_HAS_INTERNAL_NSMAP'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalXPathStringNs'/>
- </word>
- <word name='marked'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='mask'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- </word>
- <word name='massive'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='match'>
- <ref name='xsltAddKey'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltNormalizeCompSteps'/>
- </word>
- <word name='match='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='matches'>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='matching'>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='may'>
- <ref name='_xsltDecimalFormat'/>
- <ref name='xslAddCall'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='means'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='mechanism'>
- <ref name='xsltFreeTemplateHashes'/>
- </word>
- <word name='mechanisms'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='memory'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltFreeCompMatchList'/>
- <ref name='xsltFreeExts'/>
- <ref name='xsltFreeKeys'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltFreeStylesheet'/>
- <ref name='xsltFreeTemplateHashes'/>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='message'>
- <ref name='xsltMessage'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='messages'>
- <ref name='XSLT_TRACE'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='method'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='might'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='mille'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='milliseconds'>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='mode'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAddTemplate'/>
- </word>
- <word name='mode='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='models'>
- <ref name='xsltParseAnyXSLTElem'/>
- </word>
- <word name='modified'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='modules'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- </word>
- <word name='more'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='multiple'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='multiply'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='must'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltStrxfrm'/>
- </word>
- </letter>
- <letter name='n'>
- <word name='name='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='nameURI'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='named'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='names'>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='namespace-alias'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='namespaces'>
- <ref name='XSLT_ITEM_NSINSCOPE_FIELDS'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltKeyDef'/>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltFreeNamespaceAliasHashes'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- </word>
- <word name='navigational'>
- <ref name='XSLT_ITEM_NAVIGATION_FIELDS'/>
- </word>
- <word name='necessary'>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='need'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltStyleItemDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='needed'>
- <ref name='_xsltEffectiveNs'/>
- <ref name='_xsltStackElem'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathGetTransformContext'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='needs'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='negative'>
- <ref name='xsltCalibrateAdjust'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='nested'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='newer'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='newly'>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltNewStylesheet'/>
- <ref name='xsltNewTransformContext'/>
- </word>
- <word name='next'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltEffectiveNs'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltNsAlias'/>
- <ref name='_xsltNsList'/>
- <ref name='_xsltNsMap'/>
- <ref name='_xsltVarInfo'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltNextImport'/>
- </word>
- <word name='node-set'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltFunctionNodeSet'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSortFunc'/>
- </word>
- <word name='node-set?'>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltGenerateIdFunction'/>
- </word>
- <word name='node-trees'>
- <ref name='xsltFreeStyleDocuments'/>
- </word>
- <word name='nodes'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltParseTemplateContent'/>
- <ref name='xsltSort'/>
- </word>
- <word name='nodeset'>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltGetKey'/>
- </word>
- <word name='non'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='non-NULL'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='non-excluded'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='non-wellformed'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='none'>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='nor'>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='normal'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='normalize'>
- <ref name='xsltNormalizeCompSteps'/>
- </word>
- <word name='normally'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='nothing'>
- <ref name='xsltApplyAttributeSet'/>
- </word>
- <word name='now'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='nowhere'>
- <ref name='_xsltStyleItemDocument'/>
- </word>
- <word name='ns-decl'>
- <ref name='_xsltNsMap'/>
- </word>
- <word name='ns-declaration'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='ns-declarations'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='ns-name'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='ns-prefix'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='ns-prefixes'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='null'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk8'>
- <letter name='o'>
- <word name='object'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='xsltDocumentFunction'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltKeyFunction'/>
- <ref name='xsltSystemPropertyFunction'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='obsolete'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltDocumentSortFunction'/>
- </word>
- <word name='obtained'>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='occcur'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='occurences'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='off'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xslDropCall'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='often'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='old'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='on-demand'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='once'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='one'>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltNumberFormat'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='one:'>
- <ref name='IS_XSLT_REAL_NODE'/>
- </word>
- <word name='ones'>
- <ref name='xsltCleanupTemplates'/>
- </word>
- <word name='only'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltExtElementLookup'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='onto'>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='opaque'>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='open'>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- </word>
- <word name='operation'>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- </word>
- <word name='optimization'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='option'>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='optional'>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='options'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='order'>
- <ref name='XSLT_GET_IMPORT_INT'/>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='ordered'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltComputeSortResult'/>
- </word>
- <word name='original'>
- <ref name='_xsltNsMap'/>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='other'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='otherwise'>
- <ref name='xslAddCall'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltExtModuleElementLookup'/>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltExtModuleFunctionLookup'/>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltIsBlank'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='out'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='output'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- </word>
- <word name='outside'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- <word name='over'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='overhead'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='own'>
- <ref name='xsltApplyStylesheetUser'/>
- </word>
- <word name='ownership'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='owning'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- </letter>
- <letter name='p'>
- <word name='param'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseStylesheetParam'/>
- </word>
- <word name='parameter'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='parameters'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='params'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='parent'>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- </word>
- <word name='parse'>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseStylesheetAttributeSet'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltParseStylesheetOutput'/>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='parsed'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltNewDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltNewTransformContext'/>
- <ref name='xsltParseSequenceConstructor'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='parser'>
- <ref name='xsltFreeTransformContext'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='parsing'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='part'>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_RVT_GLOBAL'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='parts'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='pass'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='passed'>
- <ref name='xsltProcessOneNode'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='path'>
- <ref name='xsltSecurityCheck'/>
- </word>
- <word name='pattern'>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- <ref name='_xsltDecimalFormat'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltAddTemplate'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='patterns'>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='per'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='percent'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='percentage'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='permille'>
- <ref name='_xsltFormatNumberInfo'/>
- </word>
- <word name='persistance'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='persistant'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='persistent'>
- <ref name='_xsltStackElem'/>
- </word>
- <word name='pertaining'>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='pertains'>
- <ref name='IS_XSLT_ELEM'/>
- </word>
- <word name='place'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='placeholder'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='plug'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='point'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='pointers'>
- <ref name='XSLT_GET_IMPORT_PTR'/>
- </word>
- <word name='points'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='pops'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='position'>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='possible'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='possibly'>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- </word>
- <word name='pre-computation'>
- <ref name='xsltExtModuleElementPreComputeLookup'/>
- <ref name='xsltRegisterExtModuleElement'/>
- </word>
- <word name='pre-processing'>
- <ref name='_xsltDocument'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='precedence'>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltNextImport'/>
- </word>
- <word name='precision'>
- <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
- </word>
- <word name='precompiled'>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemIf'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStyleItemValueOf'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCompMatchClearCache'/>
- <ref name='xsltCompilePattern'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='precomputed'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltComment'/>
- <ref name='xsltCopyOf'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltElement'/>
- <ref name='xsltFreeStylePreComps'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNumber'/>
- <ref name='xsltPreComputeExtModuleElement'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltSort'/>
- <ref name='xsltText'/>
- <ref name='xsltValueOf'/>
- </word>
- <word name='predicate'>
- <ref name='xsltEvalXPathPredicate'/>
- </word>
- <word name='preference'>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- </word>
- <word name='preferences'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='prefix'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='prefixed'>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- </word>
- <word name='prefixes'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='preliminary'>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='present'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltGetExtData'/>
- <ref name='xsltStyleGetExtData'/>
- <ref name='xsltStyleStylesheetLevelGetExtData'/>
- </word>
- <word name='preserve'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='preserve-space'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='previous'>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='prevompiled'>
- <ref name='xsltEvalAVT'/>
- </word>
- <word name='principal'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='printed'>
- <ref name='xslAddCall'/>
- </word>
- <word name='priority'>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='problem'>
- <ref name='XSLT_STRANGE'/>
- </word>
- <word name='processed'>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslAddCall'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltPrintErrorContext'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='processing'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltDebug'/>
- <ref name='xsltDocumentElem'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetXIncludeDefault'/>
- <ref name='xsltMessage'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltSetXIncludeDefault'/>
- </word>
- <word name='processing-instruction'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltProcessingInstruction'/>
- </word>
- <word name='processor'>
- <ref name='XSLT_DEFAULT_URL'/>
- <ref name='XSLT_DEFAULT_VENDOR'/>
- <ref name='XSLT_SAXON_NAMESPACE'/>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- <ref name='XSLT_XT_NAMESPACE'/>
- <ref name='xsltInit'/>
- <ref name='xsltUninit'/>
- </word>
- <word name='produce'>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='products'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='profile'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='profiled'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='profiling'>
- <ref name='XSLT_TIMESTAMP_TICS_PER_SEC'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltSaveProfiling'/>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='progressive'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='project'>
- <ref name='XSLT_XALAN_NAMESPACE'/>
- </word>
- <word name='properties'>
- <ref name='xsltAttrListTemplateProcess'/>
- </word>
- <word name='provide'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltApplyStylesheetUser'/>
- </word>
- <word name='provided'>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSecurityCheck'/>
- </word>
- <word name='public'>
- <ref name='XSLTPUBLIC'/>
- </word>
- <word name='public?'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- <word name='purpose'>
- <ref name='XSLT_REGISTER_FUNCTION_LOOKUP'/>
- <ref name='XSLT_REGISTER_VARIABLE_LOOKUP'/>
- </word>
- <word name='pushed'>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='pushes'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk9'>
- <letter name='q'>
- <word name='query'>
- <ref name='xsltGetKey'/>
- </word>
- <word name='quick'>
- <ref name='IS_XSLT_ATTR_FAST'/>
- <ref name='IS_XSLT_ELEM_FAST'/>
- </word>
- <word name='quote'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- </letter>
- <letter name='r'>
- <word name='raise'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='rank='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='read'>
- <ref name='xsltCheckRead'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='read:'>
- <ref name='_xsltStyleItemDocument'/>
- </word>
- <word name='ready'>
- <ref name='xsltAllocateExtraCtxt'/>
- </word>
- <word name='real'>
- <ref name='IS_XSLT_REAL_NODE'/>
- </word>
- <word name='really'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltEffectiveNs'/>
- </word>
- <word name='receives'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- </word>
- <word name='record'>
- <ref name='xsltParseGlobalParam'/>
- <ref name='xsltParseStylesheetOutput'/>
- </word>
- <word name='recorded'>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='recursions'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='recursive'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='refactored'>
- <ref name='XSLT_REFACTORED_VARS'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='reference'>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='references'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- </word>
- <word name='referencing'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='reflect'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- </word>
- <word name='reflected'>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='register'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='registered'>
- <ref name='xsltDebugDumpExtensions'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='registers'>
- <ref name='xsltInit'/>
- <ref name='xsltParseGlobalVariable'/>
- </word>
- <word name='related'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltParseStylesheetOutput'/>
- </word>
- <word name='releases'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='remain'>
- <ref name='xsltLocalVariablePop'/>
- </word>
- <word name='remove'>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='reorder'>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocumentSortFunction'/>
- </word>
- <word name='replace'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='replacement'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='report'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='reports'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='represented'>
- <ref name='xsltFreeStyleDocuments'/>
- </word>
- <word name='representing'>
- <ref name='xsltFreeStyleDocuments'/>
- </word>
- <word name='requested'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='required'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='requirement'>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- </word>
- <word name='requires'>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='reset'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='resets'>
- <ref name='xsltSetLoaderFunc'/>
- </word>
- <word name='resolution'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='resolve'>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- </word>
- <word name='resource'>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='respect'>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='restored'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='restricts'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='result-prefix'>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='result-tree'>
- <ref name='xsltFunctionNodeSet'/>
- </word>
- <word name='resulting'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltGetKey'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='results'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='retrieve'>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='return'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltAttrTemplateValueProcess'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAVT'/>
- <ref name='xsltSplitQName'/>
- </word>
- <word name='returned'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='returning'>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='reuse'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='rid'>
- <ref name='_xsltPrincipalStylesheetData'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='right'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='root'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='xsltApplyStripSpaces'/>
- </word>
- <word name='routine'>
- <ref name='_xsltRuntimeExtra'/>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='routines'>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='rule'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='rules'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='run'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='run-time'>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='running'>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='runtime'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- </letter>
- <letter name='s'>
- <word name='s390'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='same'>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetPlainNamespace'/>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='sane'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='saving'>
- <ref name='xsltSaveProfiling'/>
- </word>
- <word name='saxon'>
- <ref name='xsltFunctionNodeSet'/>
- </word>
- <word name='scanner'>
- <ref name='xsltNormalizeCompSteps'/>
- </word>
- <word name='scope'>
- <ref name='_xsltKeyDef'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='seaches'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='search'>
- <ref name='xsltExtElementLookup'/>
- </word>
- <word name='section'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='security'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCheckRead'/>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltFreeSecurityPrefs'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltNewSecurityPrefs'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='see'>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='semantic'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='separates'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='separator'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='sequence'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalTemplateString'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='set'>
- <ref name='NODE_IS_KEYED'/>
- <ref name='XSLT_MARK_RES_TREE_FRAG'/>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetDebuggerStatus'/>
- <ref name='xsltShutdownCtxtExts'/>
- <ref name='xsltShutdownExts'/>
- </word>
- <word name='sets'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltFreeAttributeSetsHashes'/>
- <ref name='xsltResolveStylesheetAttributeSet'/>
- <ref name='xsltSetDebuggerStatus'/>
- </word>
- <word name='setting'>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='shared'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='sheet'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltNewStyleDocument'/>
- </word>
- <word name='should'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltDocumentSortFunction'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFreeRVTs'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltSetXIncludeDefault'/>
- <ref name='xsltSort'/>
- </word>
- <word name='show'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='shows'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='shutdown'>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltFreeLocales'/>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- </word>
- <word name='sibling'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- </word>
- <word name='side'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='signalled'>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='signature'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='similar'>
- <ref name='xsltGetQNameURI2'/>
- </word>
- <word name='simplified'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='simply'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='since'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='single'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='size'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListCreate'/>
- </word>
- <word name='slightly'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='slot'>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltAllocateExtraCtxt'/>
- </word>
- <word name='slow'>
- <ref name='xsltDocumentSortFunction'/>
- </word>
- <word name='some'>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='something'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='sorted'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='sorting'>
- <ref name='xsltComputeSortResult'/>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltSetSortFunc'/>
- <ref name='xsltSortFunc'/>
- </word>
- <word name='sorts'>
- <ref name='xsltDefaultSortFunction'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltSortFunc'/>
- </word>
- <word name='space'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltFreeDocuments'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='spaces'>
- <ref name='xsltApplyStripSpaces'/>
- </word>
- <word name='spec'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='special'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='specialCharacters'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='specific'>
- <ref name='XSLT_LIBXSLT_NAMESPACE'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='specification'>
- <ref name='XSLT_NAMESPACE'/>
- </word>
- <word name='specified'>
- <ref name='XSLT_MAX_SORT'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetCtxtSortFunc'/>
- </word>
- <word name='specify'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='spent'>
- <ref name='_xsltTemplate'/>
- </word>
- <word name='stack'>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xslAddCall'/>
- <ref name='xslDropCall'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltFreeStackElemList'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='standalone'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='start'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltEvalGlobalVariables'/>
- </word>
- <word name='start-node'>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='starting'>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='state'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltGetXIncludeDefault'/>
- </word>
- <word name='states'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='static'>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- </word>
- <word name='statically'>
- <ref name='xsltAllocateExtra'/>
- </word>
- <word name='status'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='stderr'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='stdout'>
- <ref name='xsltDebugDumpExtensions'/>
- </word>
- <word name='steps'>
- <ref name='xsltNormalizeCompSteps'/>
- </word>
- <word name='still'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='stopped'>
- <ref name='CHECK_STOPPED'/>
- <ref name='CHECK_STOPPED0'/>
- <ref name='CHECK_STOPPEDE'/>
- </word>
- <word name='storage'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltDocument'/>
- <ref name='_xsltEffectiveNs'/>
- </word>
- <word name='store'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='stored'>
- <ref name='XSLT_RUNTIME_EXTRA'/>
- <ref name='XSLT_RUNTIME_EXTRA_FREE'/>
- <ref name='XSLT_RUNTIME_EXTRA_LST'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='stores'>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='str1'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='str2'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='strict'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='string?'>
- <ref name='xsltFormatNumberFunction'/>
- </word>
- <word name='strings'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='strip-space'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='stripped'>
- <ref name='xsltFindElemSpaceHandling'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='stripping'>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='struct'>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltParseStylesheetUser'/>
- </word>
- <word name='structure'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltNsMap'/>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetFile'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltPointerListAddSize'/>
- <ref name='xsltPointerListCreate'/>
- <ref name='xsltPointerListFree'/>
- </word>
- <word name='structured'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='structures'>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltFreeAVTList'/>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='stuff'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='style'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltGetTemplate'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltNewStyleDocument'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='stylesheet-level'>
- <ref name='xsltFreeStyleDocuments'/>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='stylesheet-modules'>
- <ref name='xsltFreeStyleDocuments'/>
- </word>
- <word name='stylesheet-prefix'>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='stylesheets'>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='subpattern'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='subpattern{'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='subpattern}'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='subsequent'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='subsidiary'>
- <ref name='_xsltDocument'/>
- </word>
- <word name='substituted'>
- <ref name='xsltEvalAttrValueTemplate'/>
- </word>
- <word name='substitution'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='subtree'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='success'>
- <ref name='xsltAddKey'/>
- <ref name='xsltAddStackElemList'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltInitAllDocKeys'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltLocalVariablePush'/>
- <ref name='xsltParseStylesheetImport'/>
- <ref name='xsltParseStylesheetInclude'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltRestoreDocumentNamespaces'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltSetDebuggerCallbacks'/>
- </word>
- <word name='successful'>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltRegisterExtModuleElement'/>
- <ref name='xsltRegisterExtModuleFunction'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltUnregisterExtModuleElement'/>
- <ref name='xsltUnregisterExtModuleFunction'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- </word>
- <word name='sucess'>
- <ref name='xslAddCall'/>
- </word>
- <word name='sucessful'>
- <ref name='xsltRegisterExtModule'/>
- <ref name='xsltRegisterExtModuleFull'/>
- <ref name='xsltUnregisterExtModule'/>
- </word>
- <word name='such'>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- </word>
- <word name='suffix'>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='suggested'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='suitable'>
- <ref name='xsltCompilePattern'/>
- </word>
- <word name='sun'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='support'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='xsltFreeLocales'/>
- </word>
- <word name='supported'>
- <ref name='XSLT_DEFAULT_VERSION'/>
- </word>
- <word name='sure'>
- <ref name='xsltAllocateExtraCtxt'/>
- </word>
- <word name='symbol'>
- <ref name='XSLTPUBLIC'/>
- </word>
- <word name='system'>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='system-property'>
- <ref name='xsltSystemPropertyFunction'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk10'>
- <letter name='t'>
- <word name='table'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltGetExtInfo'/>
- <ref name='xsltNormalizeCompSteps'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='tables'>
- <ref name='_xsltDocument'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='tag'>
- <ref name='xsltNewLocale'/>
- </word>
- <word name='target'>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='targetted'>
- <ref name='xsltApplyStylesheetUser'/>
- </word>
- <word name='temlate'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='templates'>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltCleanupTemplates'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltFreeAVTList'/>
- </word>
- <word name='templtaes'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='templtes'>
- <ref name='_xsltTemplate'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='temporary'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltFindDocument'/>
- </word>
- <word name='tenth'>
- <ref name='xsltTimestamp'/>
- </word>
- <word name='term'>
- <ref name='xsltCreateRVT'/>
- </word>
- <word name='term:'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='terminated'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='terms'>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='test'>
- <ref name='XSLT_IS_RES_TREE_FRAG'/>
- <ref name='xsltRegisterTestModule'/>
- </word>
- <word name='test='>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='tests'>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='text'>
- <ref name='IS_XSLT_REAL_NODE'/>
- <ref name='XSLT_IS_TEXT_NODE'/>
- <ref name='_xsltStyleItemText'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltStylesheet'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltSaveResultToString'/>
- <ref name='xsltText'/>
- </word>
- <word name='than'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='that'>
- <ref name='IS_XSLT_ELEM'/>
- <ref name='IS_XSLT_REAL_NODE'/>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='XSLT_STRANGE'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='them'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='themselve'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='then'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltApplyAttributeSet'/>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltSetCtxtSortFunc'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='there'>
- <ref name='XSLT_LOCALE_NONE'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltAllocateExtraCtxt'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetXIncludeDefault'/>
- </word>
- <word name='they'>
- <ref name='xsltEvalAttrValueTemplate'/>
- </word>
- <word name='those'>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- <word name='time'>
- <ref name='_xsltTemplate'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltCompileAttr'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtInitFunction'/>
- <ref name='xsltExtShutdownFunction'/>
- <ref name='xsltParseGlobalVariable'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetParam'/>
- <ref name='xsltParseStylesheetVariable'/>
- <ref name='xsltStyleExtInitFunction'/>
- <ref name='xsltStyleExtShutdownFunction'/>
- </word>
- <word name='time='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='top-level'>
- <ref name='xsltExtModuleTopLevelLookup'/>
- <ref name='xsltRegisterExtModuleTopLevel'/>
- <ref name='xsltUnregisterExtModuleTopLevel'/>
- </word>
- <word name='topmost'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xslDropCall'/>
- </word>
- <word name='tracing'>
- <ref name='xsltDebugGetDefaultTrace'/>
- <ref name='xsltDebugSetDefaultTrace'/>
- </word>
- <word name='track'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='transfer'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='transform'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNewElemPreComp'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='transformation-time'>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='transformations'>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='transformed'>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='transmit'>
- <ref name='xsltTransformError'/>
- </word>
- <word name='transromation'>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='treated'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='trees'>
- <ref name='xsltFreeRVTs'/>
- </word>
- <word name='tries'>
- <ref name='xsltLoadStylesheetPI'/>
- </word>
- <word name='trigger'>
- <ref name='_xsltCompilerNodeInfo'/>
- </word>
- <word name='true'>
- <ref name='xsltEvalXPathPredicate'/>
- </word>
- <word name='try'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='tuples'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='turned'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='two'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='type'>
- <ref name='XSLT_TRACE'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltElemPreComp'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltNewLocale'/>
- </word>
- </letter>
- <letter name='u'>
- <word name='ultimately'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='undeclare'>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='undefined'>
- <ref name='UNDEFINED_DEFAULT_NS'/>
- </word>
- <word name='unfortunately'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='unimplemented'>
- <ref name='XSLT_TODO'/>
- </word>
- <word name='unless'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='unparsed-entity-uri'>
- <ref name='xsltUnparsedEntityURIFunction'/>
- </word>
- <word name='unstructured'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='unsupported'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- </word>
- <word name='unused'>
- <ref name='xsltDocumentComp'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- </word>
- <word name='unwanted'>
- <ref name='xsltApplyStripSpaces'/>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='update'>
- <ref name='xsltGetSecurityPrefs'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='usage'>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='use'>
- <ref name='XSLT_LOCALE_POSIX'/>
- <ref name='XSLT_LOCALE_WINAPI'/>
- <ref name='xsltAddKey'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltRegisterExtras'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSecurityAllow'/>
- <ref name='xsltSecurityForbid'/>
- <ref name='xsltSetCtxtSecurityPrefs'/>
- <ref name='xsltSetDefaultSecurityPrefs'/>
- <ref name='xsltSetSecurityPrefs'/>
- <ref name='xsltSortFunc'/>
- <ref name='xsltTemplateProcess'/>
- <ref name='xsltTransformError'/>
- </word>
- <word name='use:'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='useful'>
- <ref name='xsltXPathGetTransformContext'/>
- </word>
- <word name='usefull'>
- <ref name='xsltInitElemPreComp'/>
- </word>
- <word name='user'>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetSecurityPrefs'/>
- </word>
- <word name='user-code'>
- <ref name='xsltFreeRVTs'/>
- </word>
- <word name='user-provided'>
- <ref name='xsltParseStylesheetUser'/>
- </word>
- <word name='users!'>
- <ref name='xsltLocalVariablePush'/>
- </word>
- <word name='uses'>
- <ref name='xsltFormatNumberConversion'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='using'>
- <ref name='xsltDoSortFunction'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltEvalXPathString'/>
- <ref name='xsltEvalXPathStringNs'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk11'>
- <letter name='v'>
- <word name='validates'>
- <ref name='xsltParseAnyXSLTElem'/>
- </word>
- <word name='validating'>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- </word>
- <word name='value-of'>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemSort'/>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltValueOf'/>
- </word>
- <word name='value-returning'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='values'>
- <ref name='_xsltStylePreComp'/>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltApplyStylesheetUser'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltInitCtxtKey'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltProfileStylesheet'/>
- <ref name='xsltQuoteUserParams'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='variables'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltCleanupGlobals'/>
- <ref name='xsltEvalGlobalVariables'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltFreeGlobalVariables'/>
- <ref name='xsltInitGlobals'/>
- <ref name='xsltLocalVariablePop'/>
- </word>
- <word name='varibale'>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='varibales'>
- <ref name='xsltInitCtxtKeys'/>
- </word>
- <word name='vendor'>
- <ref name='XSLT_DEFAULT_URL'/>
- <ref name='XSLT_DEFAULT_VENDOR'/>
- </word>
- <word name='version'>
- <ref name='XSLT_DEFAULT_VERSION'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='version='>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='via'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='violated'>
- <ref name='XML_CAST_FPTR'/>
- </word>
- <word name='visible'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='void'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- </letter>
- <letter name='w'>
- <word name='want'>
- <ref name='xsltEvalUserParams'/>
- </word>
- <word name='warning'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='warnings'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='was'>
- <ref name='XSLT_STRANGE'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltEvalXPathPredicate'/>
- <ref name='xsltFlagRVTs'/>
- <ref name='xsltNewLocale'/>
- <ref name='xsltNextImport'/>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='way'>
- <ref name='xsltFindTemplate'/>
- </word>
- <word name='well'>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='went'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='were'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='when'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltGetQNameURI2'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltRegisterPersistRVT'/>
- <ref name='xsltRegisterTmpRVT'/>
- <ref name='xsltSetCtxtParseOptions'/>
- <ref name='xsltXPathFunctionLookup'/>
- <ref name='xsltXPathGetTransformContext'/>
- <ref name='xsltXPathVariableLookup'/>
- </word>
- <word name='where'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- <ref name='xsltCopyTextString'/>
- <ref name='xsltGetQNameURI'/>
- </word>
- <word name='wherever'>
- <ref name='_xsltStylesheet'/>
- </word>
- <word name='whether'>
- <ref name='IS_XSLT_ELEM_FAST'/>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='_xsltCompilerNodeInfo'/>
- <ref name='_xsltFormatNumberInfo'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltNeedElemSpaceHandling'/>
- <ref name='xsltSetXIncludeDefault'/>
- <ref name='xsltTestCompMatchList'/>
- </word>
- <word name='which'>
- <ref name='XSLTCALL'/>
- <ref name='XSLTPUBFUN'/>
- <ref name='XSLTPUBLIC'/>
- <ref name='XSLTPUBVAR'/>
- <ref name='XSLT_ITEM_COMPATIBILITY_FIELDS'/>
- <ref name='_xsltStackElem'/>
- <ref name='_xsltTransformContext'/>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltRegisterExtElement'/>
- <ref name='xsltRegisterExtFunction'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='while'>
- <ref name='xsltAllocateExtra'/>
- <ref name='xsltSetGenericDebugFunc'/>
- <ref name='xsltSetGenericErrorFunc'/>
- <ref name='xsltSetTransformErrorFunc'/>
- </word>
- <word name='white-space'>
- <ref name='xsltNeedElemSpaceHandling'/>
- </word>
- <word name='whitespace-stripping'>
- <ref name='_xsltCompilerCtxt'/>
- </word>
- <word name='wildcards'>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='wise'>
- <ref name='xsltApplyStylesheet'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='with'>
- <ref name='CHECK_STOPPED0'/>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- <ref name='xsltEvalAttrValueTemplate'/>
- <ref name='xsltEvalStaticAttrValueTemplate'/>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNamespace'/>
- <ref name='xsltGetNsProp'/>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltGetQNameURI'/>
- <ref name='xsltGetSpecialNamespace'/>
- <ref name='xsltGetUTF8Char'/>
- <ref name='xsltInitCtxtExts'/>
- <ref name='xsltLocaleStrcmp'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='with-params'>
- <ref name='_xsltStyleItemApplyTemplates'/>
- <ref name='_xsltStyleItemCallTemplate'/>
- </word>
- <word name='within'>
- <ref name='xsltExtensionInstructionResultFinalize'/>
- <ref name='xsltFindDocument'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- <ref name='xsltLoadStylesheetPI'/>
- <ref name='xsltParseStylesheetDoc'/>
- </word>
- <word name='without'>
- <ref name='XML_CAST_FPTR'/>
- <ref name='XSLT_PAT_NO_PRIORITY'/>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='won'>
- <ref name='XSLT_RVT_FUNC_RESULT'/>
- <ref name='_xsltTemplate'/>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltFlagRVTs'/>
- </word>
- <word name='work'>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='wrapped'>
- <ref name='xsltFindElemSpaceHandling'/>
- </word>
- <word name='wrapper'>
- <ref name='xsltDoSortFunction'/>
- </word>
- <word name='write'>
- <ref name='xsltCheckWrite'/>
- </word>
- <word name='written'>
- <ref name='xsltCheckWrite'/>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- </word>
- <word name='wrt'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- </letter>
- <letter name='x'>
- <word name='xmlDoc'>
- <ref name='xsltParseStylesheetDoc'/>
- <ref name='xsltParseStylesheetImportedDoc'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltParseStylesheetUser'/>
- <ref name='xsltReleaseRVT'/>
- </word>
- <word name='xmlDocPtr'>
- <ref name='xsltGetProfileInformation'/>
- <ref name='xsltRegisterLocalRVT'/>
- <ref name='xsltSaveResultTo'/>
- <ref name='xsltSaveResultToFd'/>
- <ref name='xsltSaveResultToFile'/>
- <ref name='xsltSaveResultToFilename'/>
- <ref name='xsltSaveResultToString'/>
- </word>
- <word name='xmlFree'>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='xmlFreeDoc'>
- <ref name='xsltGetProfileInformation'/>
- </word>
- <word name='xmlGetNsProp'>
- <ref name='xsltGetCNsProp'/>
- <ref name='xsltGetNsProp'/>
- </word>
- <word name='xmlGetUTF8Char'>
- <ref name='xsltGetUTF8Char'/>
- </word>
- <word name='xmlNodePtr'>
- <ref name='_xsltTransformContext'/>
- </word>
- <word name='xmlNs'>
- <ref name='_xsltNsMap'/>
- </word>
- <word name='xmlNsPtr'>
- <ref name='xsltCopyNamespace'/>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='xmlParserOption'>
- <ref name='xsltDocLoaderFunc'/>
- <ref name='xsltSetCtxtParseOptions'/>
- </word>
- <word name='xmlReadxxx'>
- <ref name='XSLT_PARSE_OPTIONS'/>
- </word>
- <word name='xmlXPathCompExprPtr'>
- <ref name='xsltXPathCompile'/>
- <ref name='xsltXPathCompileFlags'/>
- </word>
- <word name='xmlXPathCompiledEvalToBoolean'>
- <ref name='XSLT_FAST_IF'/>
- </word>
- <word name='xmlns='>
- <ref name='xsltGetSpecialNamespace'/>
- </word>
- <word name='xsl'>
- <ref name='XSLT_TRACE'/>
- </word>
- <word name='xsl:'>
- <ref name='_xsltPrincipalStylesheetData'/>
- </word>
- <word name='xsl:apply-templates'>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='xsl:attribute'>
- <ref name='xsltAttribute'/>
- </word>
- <word name='xsl:choose'>
- <ref name='xsltChoose'/>
- </word>
- <word name='xsl:comment'>
- <ref name='xsltEvalTemplateString'/>
- </word>
- <word name='xsl:for-each'>
- <ref name='xsltForEach'/>
- </word>
- <word name='xsl:if'>
- <ref name='XSLT_FAST_IF'/>
- <ref name='xsltIf'/>
- <ref name='xsltTransformFunction'/>
- </word>
- <word name='xsl:import'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='xsl:include'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='xsl:key'>
- <ref name='XSLT_REFACTORED_KEYCOMP'/>
- </word>
- <word name='xsl:message'>
- <ref name='xsltMessage'/>
- </word>
- <word name='xsl:namespace-alias'>
- <ref name='_xsltCompilerCtxt'/>
- <ref name='xsltNamespaceAlias'/>
- </word>
- <word name='xsl:param'>
- <ref name='_xsltTemplate'/>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='xsl:processing-instruction'>
- <ref name='xsltEvalTemplateString'/>
- </word>
- <word name='xsl:sort'>
- <ref name='XSLT_MAX_SORT'/>
- <ref name='xsltSort'/>
- </word>
- <word name='xsl:template'>
- <ref name='xsltApplyOneTemplate'/>
- <ref name='xsltLocalVariablePop'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='xsl:text'>
- <ref name='xsltParseSequenceConstructor'/>
- </word>
- <word name='xsl:use-attribute-set'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltAttrTemplateProcess'/>
- </word>
- <word name='xsl:use-attribute-sets'>
- <ref name='xsltApplyAttributeSet'/>
- </word>
- <word name='xsl:variable'>
- <ref name='xsltParseStylesheetVariable'/>
- </word>
- <word name='xsl:with-param'>
- <ref name='_xsltStackElem'/>
- <ref name='xsltParseStylesheetCallerParam'/>
- <ref name='xsltProcessOneNode'/>
- </word>
- <word name='xslDebugBreak'>
- <ref name='xslHandleDebugger'/>
- </word>
- <word name='xslDebugStatus'>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltGetDebuggerStatus'/>
- <ref name='xsltSetDebuggerStatus'/>
- </word>
- <word name='xslt'>
- <ref name='IS_XSLT_ATTR_FAST'/>
- <ref name='IS_XSLT_ELEM_FAST'/>
- <ref name='xslHandleDebugger'/>
- <ref name='xsltAttribute'/>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- <ref name='xsltComment'/>
- <ref name='xsltElement'/>
- <ref name='xsltForEach'/>
- <ref name='xsltNumber'/>
- <ref name='xsltParseStylesheetProcess'/>
- <ref name='xsltProcessingInstruction'/>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltSort'/>
- <ref name='xsltText'/>
- <ref name='xsltValueOf'/>
- </word>
- <word name='xslt:text'>
- <ref name='xsltParseTemplateContent'/>
- </word>
- <word name='xsltAddTemplate'>
- <ref name='xsltFreeTemplateHashes'/>
- </word>
- <word name='xsltApplySequenceConstructor'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='xsltAttrTemplateValueProcess'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- <word name='xsltCopyPropList'>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='xsltCopyTreeInternal'>
- <ref name='xsltCopyNamespaceList'/>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='xsltCreateRVT'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- </word>
- <word name='xsltDecimalFormatPtr'>
- <ref name='xsltDecimalFormatGetByName'/>
- <ref name='xsltDecimalFormatGetByQName'/>
- </word>
- <word name='xsltDocLoaderFunc'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='xsltDocument'>
- <ref name='xsltFreeStyleDocuments'/>
- </word>
- <word name='xsltDocumentComp'>
- <ref name='_xsltStyleItemDocument'/>
- </word>
- <word name='xsltDocumentPtr'>
- <ref name='xsltFindDocument'/>
- <ref name='xsltLoadDocument'/>
- <ref name='xsltLoadStyleDocument'/>
- </word>
- <word name='xsltElemPreComp'>
- <ref name='xsltElemPreCompDeallocator'/>
- <ref name='xsltInitElemPreComp'/>
- <ref name='xsltNewElemPreComp'/>
- </word>
- <word name='xsltElement'>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='xsltEvalAttrValueTemplate'>
- <ref name='xsltAttrTemplateValueProcessNode'/>
- </word>
- <word name='xsltEvalUserParams'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltQuoteUserParams'/>
- </word>
- <word name='xsltEvalVariable'>
- <ref name='xsltApplyOneTemplate'/>
- </word>
- <word name='xsltExtElementPreCompTest'>
- <ref name='xsltStyleGetExtData'/>
- </word>
- <word name='xsltExtInitTest'>
- <ref name='xsltStyleGetExtData'/>
- </word>
- <word name='xsltGetInheritedNsList'>
- <ref name='xsltCheckExtPrefix'/>
- </word>
- <word name='xsltGetNamespace'>
- <ref name='xsltGetPlainNamespace'/>
- </word>
- <word name='xsltGetQNameURI'>
- <ref name='xsltGetQNameURI2'/>
- </word>
- <word name='xsltGetTemplate'>
- <ref name='xsltFreeTemplateHashes'/>
- </word>
- <word name='xsltLoadType'>
- <ref name='xsltDocLoaderFunc'/>
- </word>
- <word name='xsltLocaleStrcmp'>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='xsltNewLocale'>
- <ref name='xsltFreeLocale'/>
- <ref name='xsltStrxfrm'/>
- </word>
- <word name='xsltParseExtElemPrefixes'>
- <ref name='xsltRegisterExtPrefix'/>
- </word>
- <word name='xsltParseStylesheetImportedDoc'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='xsltParseStylesheetInclude'>
- <ref name='xsltParseStylesheetProcess'/>
- </word>
- <word name='xsltParseTemplateContent'>
- <ref name='xsltCheckExtPrefix'/>
- <ref name='xsltCheckExtURI'/>
- </word>
- <word name='xsltPointerList'>
- <ref name='xsltPointerListCreate'/>
- <ref name='xsltPointerListFree'/>
- </word>
- <word name='xsltPrecomputeStylesheet'>
- <ref name='xsltCheckExtURI'/>
- </word>
- <word name='xsltProcessOneUserParamInternal'>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='xsltQuoteOneUserParam'>
- <ref name='xsltEvalOneUserParam'/>
- </word>
- <word name='xsltQuoteUserParams'>
- <ref name='xsltEvalOneUserParam'/>
- <ref name='xsltEvalUserParams'/>
- <ref name='xsltQuoteOneUserParam'/>
- </word>
- <word name='xsltRegisterAllExtras'>
- <ref name='xsltRegisterExtras'/>
- </word>
- <word name='xsltRegisterExtPrefix'>
- <ref name='xsltRegisterExtPrefix'/>
- <ref name='xsltStyleGetExtData'/>
- </word>
- <word name='xsltRegisterLocalRVT'>
- <ref name='xsltExtensionInstructionResultRegister'/>
- <ref name='xsltRegisterTmpRVT'/>
- </word>
- <word name='xsltSecurityPrefsPtr'>
- <ref name='xsltGetDefaultSecurityPrefs'/>
- </word>
- <word name='xsltSetCtxtSortFunc'>
- <ref name='xsltDoSortFunction'/>
- </word>
- <word name='xsltSetSortFunc'>
- <ref name='xsltDoSortFunction'/>
- </word>
- <word name='xsltShallowCopyElem'>
- <ref name='xsltCopyNamespaceList'/>
- </word>
- <word name='xsltShallowCopyElement'>
- <ref name='xsltGetNamespace'/>
- </word>
- <word name='xsltStackElemPtr'>
- <ref name='xsltParseStylesheetCallerParam'/>
- </word>
- <word name='xsltStrxfrm'>
- <ref name='xsltLocaleStrcmp'/>
- </word>
- <word name='xsltStylesheet'>
- <ref name='_xsltElemPreComp'/>
- </word>
- <word name='xsltStylesheetPtr'>
- <ref name='xsltNewStylesheet'/>
- </word>
- <word name='xsltTemplatePtr'>
- <ref name='xsltFindTemplate'/>
- <ref name='xsltGetTemplate'/>
- </word>
- <word name='xsltTimestamp'>
- <ref name='xsltCalibrateAdjust'/>
- </word>
- <word name='xsltTransformContextPtr'>
- <ref name='xsltNewTransformContext'/>
- </word>
- </letter>
- </chunk>
- <chunk name='chunk12'>
- <letter name='y'>
- <word name='yes'>
- <ref name='_xsltStylesheet'/>
- <ref name='xsltCompileAttr'/>
- </word>
- <word name='yet'>
- <ref name='xsltRunStylesheet'/>
- <ref name='xsltRunStylesheetUser'/>
- </word>
- <word name='you'>
- <ref name='xsltAttrListTemplateProcess'/>
- <ref name='xsltEvalUserParams'/>
- </word>
- <word name='your'>
- <ref name='xsltEvalUserParams'/>
- </word>
- </letter>
- <letter name='z'>
- <word name='zero'>
- <ref name='xsltFormatNumberConversion'/>
- </word>
- </letter>
- </chunk>
- <chunks>
- <chunk name='chunk0' start='A' end='I'/>
- <chunk name='chunk1' start='J' end='R'/>
- <chunk name='chunk2' start='S' end='a'/>
- <chunk name='chunk3' start='b' end='c'/>
- <chunk name='chunk4' start='d' end='e'/>
- <chunk name='chunk5' start='f' end='g'/>
- <chunk name='chunk6' start='h' end='k'/>
- <chunk name='chunk7' start='l' end='n'/>
- <chunk name='chunk8' start='o' end='p'/>
- <chunk name='chunk9' start='q' end='s'/>
- <chunk name='chunk10' start='t' end='u'/>
- <chunk name='chunk11' start='v' end='x'/>
- <chunk name='chunk12' start='y' end='z'/>
- </chunks>
- </index>
-</apirefs>
diff --git a/doc/symbols.xml b/doc/symbols.xml
deleted file mode 100644
index 860b2bbd..00000000
--- a/doc/symbols.xml
+++ /dev/null
@@ -1,326 +0,0 @@
-<!-- This file describes all the exported entry points from libxslt
- library, grouped by release with the first release being 1.0.11
- Add new exported entry points at the end, this will be used to
- generate libxslt.syms the definition of exported symbols from
- shared libraries
--->
-<symbols>
- <release version="1.0.11">
- <symbol file="attributes">xsltApplyAttributeSet</symbol>
- <symbol file="attributes">xsltFreeAttributeSetsHashes</symbol>
- <symbol file="attributes">xsltParseStylesheetAttributeSet</symbol>
- <symbol file="documents">xsltFindDocument</symbol>
- <symbol file="documents">xsltFreeDocuments</symbol>
- <symbol file="documents">xsltFreeStyleDocuments</symbol>
- <symbol file="documents">xsltLoadDocument</symbol>
- <symbol file="documents">xsltLoadStyleDocument</symbol>
- <symbol file="documents">xsltNewDocument</symbol>
- <symbol file="documents">xsltNewStyleDocument</symbol>
- <symbol file="extensions">xsltCheckExtPrefix</symbol>
- <symbol file="extensions">xsltExtElementLookup</symbol>
- <symbol file="extensions">xsltExtModuleElementLookup</symbol>
- <symbol file="extensions">xsltExtModuleFunctionLookup</symbol>
- <symbol file="extensions">xsltExtModuleTopLevelLookup</symbol>
- <symbol file="extensions">xsltFreeCtxtExts</symbol>
- <symbol file="extensions">xsltFreeExts</symbol>
- <symbol file="extensions">xsltGetExtData</symbol>
- <symbol file="extensions">xsltInitCtxtExts</symbol>
- <symbol file="extensions">xsltInitElemPreComp</symbol>
- <symbol file="extensions">xsltNewElemPreComp</symbol>
- <symbol file="extensions">xsltPreComputeExtModuleElement</symbol>
- <symbol file="extensions">xsltRegisterExtElement</symbol>
- <symbol file="extensions">xsltRegisterExtFunction</symbol>
- <symbol file="extensions">xsltRegisterExtModuleElement</symbol>
- <symbol file="extensions">xsltRegisterExtModuleFull</symbol>
- <symbol file="extensions">xsltRegisterExtModuleFunction</symbol>
- <symbol file="extensions">xsltRegisterExtModule</symbol>
- <symbol file="extensions">xsltRegisterExtModuleTopLevel</symbol>
- <symbol file="extensions">xsltRegisterExtPrefix</symbol>
- <symbol file="extensions">xsltRegisterTestModule</symbol>
- <symbol file="extensions">xsltShutdownCtxtExts</symbol>
- <symbol file="extensions">xsltShutdownExts</symbol>
- <symbol file="extensions">xsltStyleGetExtData</symbol>
- <symbol file="extensions">xsltUnregisterExtModuleElement</symbol>
- <symbol file="extensions">xsltUnregisterExtModuleFunction</symbol>
- <symbol file="extensions">xsltUnregisterExtModule</symbol>
- <symbol file="extensions">xsltUnregisterExtModuleTopLevel</symbol>
- <symbol file="extra">xsltDebug</symbol>
- <symbol file="extra">xsltFunctionNodeSet</symbol>
- <symbol file="extra">xsltRegisterAllExtras</symbol>
- <symbol file="extra">xsltRegisterExtras</symbol>
- <symbol file="functions">xsltDocumentFunction</symbol>
- <symbol file="functions">xsltElementAvailableFunction</symbol>
- <symbol file="functions">xsltFormatNumberFunction</symbol>
- <symbol file="functions">xsltFunctionAvailableFunction</symbol>
- <symbol file="functions">xsltGenerateIdFunction</symbol>
- <symbol file="functions">xsltKeyFunction</symbol>
- <symbol file="functions">xsltRegisterAllFunctions</symbol>
- <symbol file="functions">xsltSystemPropertyFunction</symbol>
- <symbol file="functions">xsltUnparsedEntityURIFunction</symbol>
- <symbol file="functions">xsltXPathFunctionLookup</symbol>
- <symbol file="imports">xsltFindElemSpaceHandling</symbol>
- <symbol file="imports">xsltFindTemplate</symbol>
- <symbol file="imports">xsltNeedElemSpaceHandling</symbol>
- <symbol file="imports">xsltNextImport</symbol>
- <symbol file="imports">xsltParseStylesheetImport</symbol>
- <symbol file="imports">xsltParseStylesheetInclude</symbol>
- <symbol file="keys">xsltAddKey</symbol>
- <symbol file="keys">xsltFreeDocumentKeys</symbol>
- <symbol file="keys">xsltFreeKeys</symbol>
- <symbol file="keys">xsltGetKey</symbol>
- <symbol file="keys">xsltInitCtxtKeys</symbol>
- <symbol file="namespaces">xsltCopyNamespaceList</symbol>
- <symbol file="namespaces">xsltCopyNamespace</symbol>
- <symbol file="namespaces">xsltFreeNamespaceAliasHashes</symbol>
- <symbol file="namespaces">xsltGetNamespace</symbol>
- <symbol file="namespaces">xsltGetSpecialNamespace</symbol>
- <symbol file="namespaces">xsltNamespaceAlias</symbol>
- <symbol file="pattern">xsltAddTemplate</symbol>
- <symbol file="pattern">xsltCleanupTemplates</symbol>
- <symbol file="pattern">xsltCompilePattern</symbol>
- <symbol file="pattern">xsltFreeCompMatchList</symbol>
- <symbol file="pattern">xsltFreeTemplateHashes</symbol>
- <symbol file="pattern">xsltGetTemplate</symbol>
- <symbol removed="1.0.12" file="pattern">xsltMatchPattern</symbol>
- <symbol file="pattern">xsltTestCompMatchList</symbol>
- <symbol file="preproc">xsltDocumentComp</symbol>
- <symbol file="preproc">xsltFreeStylePreComps</symbol>
- <symbol file="preproc">xsltStylePreCompute</symbol>
- <symbol file="templates">xsltAttrListTemplateProcess</symbol>
- <symbol file="templates">xsltAttrTemplateProcess</symbol>
- <symbol file="templates">xsltAttrTemplateValueProcess</symbol>
- <symbol file="templates">xsltEvalAttrValueTemplate</symbol>
- <symbol file="templates">xsltEvalStaticAttrValueTemplate</symbol>
- <symbol file="templates">xsltEvalTemplateString</symbol>
- <symbol file="templates">xsltEvalXPathPredicate</symbol>
- <symbol file="templates">xsltEvalXPathString</symbol>
- <symbol file="templates">xsltTemplateProcess</symbol>
- <symbol file="transform">xslHandleDebugger</symbol>
- <symbol file="transform">xsltApplyImports</symbol>
- <symbol file="transform">xsltApplyOneTemplate</symbol>
- <symbol file="transform">xsltApplyStripSpaces</symbol>
- <symbol file="transform">xsltApplyStylesheet</symbol>
- <symbol file="transform">xsltApplyStylesheetUser</symbol>
- <symbol file="transform">xsltApplyTemplates</symbol>
- <symbol file="transform">xsltAttribute</symbol>
- <symbol file="transform">xsltCallTemplate</symbol>
- <symbol file="transform">xsltChoose</symbol>
- <symbol file="transform">xsltComment</symbol>
- <symbol file="transform">xsltCopyOf</symbol>
- <symbol file="transform">xsltCopy</symbol>
- <symbol file="transform">xsltDocumentElem</symbol>
- <symbol file="transform">xsltElement</symbol>
- <symbol file="transform">xsltForEach</symbol>
- <symbol file="transform">xsltFreeTransformContext</symbol>
- <symbol file="transform">xsltGetXIncludeDefault</symbol>
- <symbol file="transform">xsltIf</symbol>
- <symbol file="transform">xsltNewTransformContext</symbol>
- <symbol file="transform">xsltNumber</symbol>
- <symbol file="transform">xsltProcessingInstruction</symbol>
- <symbol file="transform">xsltProfileStylesheet</symbol>
- <symbol file="transform">xsltRegisterAllElement</symbol>
- <symbol file="transform">xsltRunStylesheet</symbol>
- <symbol file="transform">xsltSetXIncludeDefault</symbol>
- <symbol file="transform">xsltSort</symbol>
- <symbol file="transform">xsltText</symbol>
- <symbol file="transform">xsltValueOf</symbol>
- <symbol file="variables">xsltAddStackElemList</symbol>
- <symbol file="variables">xsltEvalGlobalVariables</symbol>
- <symbol file="variables">xsltEvalOneUserParam</symbol>
- <symbol file="variables">xsltEvalUserParams</symbol>
- <symbol file="variables">xsltFreeGlobalVariables</symbol>
- <symbol file="variables">xsltParseGlobalParam</symbol>
- <symbol file="variables">xsltParseGlobalVariable</symbol>
- <symbol file="variables">xsltParseStylesheetCallerParam</symbol>
- <symbol file="variables">xsltParseStylesheetParam</symbol>
- <symbol file="variables">xsltParseStylesheetVariable</symbol>
- <symbol file="variables">xsltQuoteOneUserParam</symbol>
- <symbol file="variables">xsltQuoteUserParams</symbol>
- <symbol file="variables">xsltVariableLookup</symbol>
- <symbol file="variables">xsltXPathVariableLookup</symbol>
- <symbol file="xsltInternals">xsltDecimalFormatGetByName</symbol>
- <symbol file="xsltInternals">xsltFormatNumberConversion</symbol>
- <symbol file="xsltInternals">xsltFreeStackElemList</symbol>
- <symbol file="xsltInternals">xsltFreeStylesheet</symbol>
- <symbol file="xsltInternals">xsltIsBlank</symbol>
- <symbol file="xsltInternals">xsltLoadStylesheetPI</symbol>
- <symbol file="xsltInternals">xsltNewStylesheet</symbol>
- <symbol file="xsltInternals">xsltNumberFormat</symbol>
- <symbol file="xsltInternals">xsltParseStylesheetDoc</symbol>
- <symbol file="xsltInternals">xsltParseStylesheetFile</symbol>
- <symbol file="xsltInternals">xsltParseStylesheetOutput</symbol>
- <symbol file="xsltInternals">xsltParseStylesheetProcess</symbol>
- <symbol file="xsltInternals">xsltParseTemplateContent</symbol>
- <symbol file="xsltutils">xslAddCall</symbol>
- <symbol file="xsltutils">xslDropCall</symbol>
- <symbol file="xsltutils">xsltCalibrateAdjust</symbol>
- <symbol file="xsltutils">xsltDocumentSortFunction</symbol>
- <symbol file="xsltutils">xsltDoSortFunction</symbol>
- <symbol file="xsltutils">xsltGetNsProp</symbol>
- <symbol file="xsltutils">xsltGetQNameURI</symbol>
- <symbol file="xsltutils">xsltMessage</symbol>
- <symbol file="xsltutils">xsltPrintErrorContext</symbol>
- <symbol file="xsltutils">xsltSaveProfiling</symbol>
- <symbol file="xsltutils">xsltSaveResultToFd</symbol>
- <symbol file="xsltutils">xsltSaveResultToFilename</symbol>
- <symbol file="xsltutils">xsltSaveResultToFile</symbol>
- <symbol file="xsltutils">xsltSaveResultTo</symbol>
- <symbol file="xsltutils">xsltSetDebuggerCallbacks</symbol>
- <symbol file="xsltutils">xsltSetGenericDebugFunc</symbol>
- <symbol file="xsltutils">xsltSetGenericErrorFunc</symbol>
- <symbol file="xsltutils">xsltTimestamp</symbol>
- <symbol file="xslt">xsltCleanupGlobals</symbol>
- </release>
- <release version="1.0.12">
- <symbol file="xsltInternals">xsltAllocateExtraCtxt</symbol>
- <symbol file="xsltInternals">xsltAllocateExtra</symbol>
- </release>
- <release version="1.0.13">
- <symbol file="extensions">xsltExtModuleElementPreComputeLookup</symbol>
- <symbol file="extensions">xsltXPathGetTransformContext</symbol>
- </release>
- <release version="1.0.16">
- <symbol file="attributes">xsltResolveStylesheetAttributeSet</symbol>
- </release>
- <release version="1.0.17">
- <symbol file="transform">xsltRunStylesheetUser</symbol>
- </release>
- <release version="1.0.18">
- <symbol file="extensions">xsltDebugDumpExtensions</symbol>
- <symbol file="xsltutils">xsltSaveResultToString</symbol>
- </release>
- <release version="1.0.22">
- <symbol file="templates">xsltAttrTemplateValueProcessNode</symbol>
- <symbol file="security">xsltCheckRead</symbol>
- <symbol file="security">xsltCheckWrite</symbol>
- <symbol file="templates">xsltEvalXPathStringNs</symbol>
- <symbol file="security">xsltFreeSecurityPrefs</symbol>
- <symbol file="security">xsltGetDefaultSecurityPrefs</symbol>
- <symbol file="security">xsltGetSecurityPrefs</symbol>
- <symbol file="security">xsltNewSecurityPrefs</symbol>
- <symbol file="security">xsltSecurityAllow</symbol>
- <symbol file="security">xsltSecurityForbid</symbol>
- <symbol file="security">xsltSetCtxtSecurityPrefs</symbol>
- <symbol file="security">xsltSetDefaultSecurityPrefs</symbol>
- <symbol file="security">xsltSetSecurityPrefs</symbol>
- <symbol file="xsltutils">xsltSetTransformErrorFunc</symbol>
- <symbol file="xsltutils">xsltTransformError</symbol>
- </release>
- <release version="1.0.24">
- <symbol file="xsltutils">xslDebugStatus</symbol>
- <symbol file="xsltutils">xsltComputeSortResult</symbol>
- <symbol file="xsltutils">xsltDefaultSortFunction</symbol>
- <symbol file="xslt">xsltEngineVersion</symbol>
- <symbol file="preproc">xsltExtMarker</symbol>
- <symbol file="xsltutils">xsltGenericDebugContext</symbol>
- <symbol file="xsltutils">xsltGenericDebug</symbol>
- <symbol file="xsltutils">xsltGenericErrorContext</symbol>
- <symbol file="xsltutils">xsltGenericError</symbol>
- <symbol file="xsltutils">xsltGetProfileInformation</symbol>
- <symbol file="xsltutils">xsltGetUTF8Char</symbol>
- <symbol file="xslt">xsltLibxmlVersion</symbol>
- <symbol file="xslt">xsltLibxsltVersion</symbol>
- <symbol file="xslt">xsltMaxDepth</symbol>
- <!-- xsltMaxVars was added in 1.1.27 with a wrong version. -->
- <symbol file="xslt">xsltMaxVars</symbol>
- <symbol file="xsltInternals">xsltParseStylesheetImportedDoc</symbol>
- <symbol file="xsltutils">xsltSetCtxtSortFunc</symbol>
- <symbol file="xsltutils">xsltSetSortFunc</symbol>
- </release>
- <release version="1.0.30">
- <symbol file="xsltInternals">xsltCreateRVT</symbol>
- <symbol file="xsltInternals">xsltFreeRVTs</symbol>
- <symbol file="xsltInternals">xsltRegisterPersistRVT</symbol>
- <symbol file="xsltInternals">xsltRegisterTmpRVT</symbol>
- </release>
- <release version="1.0.32">
- <symbol file="transform">xsltCopyTextString</symbol>
- <symbol file="extensions">xsltGetExtInfo</symbol>
- </release>
- <release version="1.0.33">
- <symbol file="pattern">xsltNormalizeCompSteps</symbol>
- </release>
- <release version="1.1.0">
- <symbol file="xsltutils">xsltGetDebuggerStatus</symbol>
- <symbol file="xsltutils">xsltSetDebuggerStatus</symbol>
- </release>
- <release version="1.1.1">
- <symbol file="xsltutils">xsltDebugGetDefaultTrace</symbol>
- <symbol file="xsltutils">xsltDebugSetDefaultTrace</symbol>
- </release>
- <release version="1.1.2">
- <symbol file="xsltutils">xsltSetCtxtParseOptions</symbol>
- </release>
- <release version="1.1.3">
- <symbol file="xsltInternals">xsltCompileAttr</symbol>
- <symbol file="xsltInternals">xsltEvalAVT</symbol>
- <symbol file="xsltInternals">xsltFreeAVTList</symbol>
- <symbol file="xsltutils">xsltGetCNsProp</symbol>
- <symbol file="xsltutils">xsltSplitQName</symbol>
- <symbol file="xsltutils">xsltXPathCompile</symbol>
- </release>
- <release version="1.1.5">
- <symbol file="xsltutils">xsltGetQNameURI2</symbol>
- </release>
- <release version="1.1.7">
- <symbol file="namespaces">xsltGetPlainNamespace</symbol>
- </release>
- <release version="1.1.9">
- <symbol file="documents">xsltDocDefaultLoader</symbol>
- <symbol file="documents">xsltSetLoaderFunc</symbol>
- </release>
- <release version="1.1.18">
- <symbol switch="REFACTORED" file="xsltInternals">xsltConstNamespaceNameXSLT</symbol>
- <symbol file="xsltInternals">xsltExtensionInstructionResultFinalize</symbol>
- <symbol file="xsltInternals">xsltExtensionInstructionResultRegister</symbol>
- <symbol file="xsltInternals">xsltInitCtxtKey</symbol>
- <symbol file="xslt">xsltInit</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltParseAnyXSLTElem</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltParseSequenceConstructor</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListAddSize</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListClear</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListCreate</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltPointerListFree</symbol>
- <symbol file="xsltInternals">xsltRegisterLocalRVT</symbol>
- <symbol file="xsltInternals">xsltReleaseRVT</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltRestoreDocumentNamespaces</symbol>
- <symbol switch="REFACTORED" file="extensions">xsltStyleStylesheetLevelGetExtData</symbol>
- <symbol removed="1.1.28" file="xsltInternals">xsltTransStorageAdd</symbol>
- <symbol removed="1.1.28" file="xsltInternals">xsltTransStorageRemove</symbol>
- <symbol file="xsltInternals">xsltUninit</symbol>
- <symbol switch="REFACTORED" file="xsltInternals">xsltXSLTAttrMarker</symbol>
- </release>
- <release version="1.1.20">
- <symbol file="transform">xsltLocalVariablePop</symbol>
- <symbol file="transform">xsltLocalVariablePush</symbol>
- </release>
- <release version="1.1.23">
- <symbol file="xsltInternals">xsltInitAllDocKeys</symbol>
- </release>
- <release version="1.1.24">
- <symbol file="extensions">xsltCheckExtURI</symbol>
- </release>
- <release version="1.1.25">
- <symbol file="xsltlocale">xsltFreeLocale</symbol>
- <symbol file="xsltlocale">xsltLocaleStrcmp</symbol>
- <symbol file="xsltlocale">xsltNewLocale</symbol>
- <symbol file="xsltlocale">xsltStrxfrm</symbol>
- <symbol file="extensions">xsltInitGlobals</symbol>
- </release>
- <release version="1.1.26">
- <!-- lxml was using it even if not pusblished -->
- <symbol file="transform">xsltProcessOneNode</symbol>
- </release>
- <release version="1.1.27">
- <symbol file="xsltlocale">xsltFreeLocales</symbol>
- <symbol file="xsltutils">xsltXPathCompileFlags</symbol>
- </release>
- <release version="1.1.30">
- <symbol file="xsltInternals">xsltFlagRVTs</symbol>
- <symbol file="xsltInternals">xsltDecimalFormatGetByQName</symbol>
- </release>
- <release version="1.1.34">
- <symbol file="xsltInternals">xsltParseStylesheetUser</symbol>
- <symbol file="pattern">xsltCompMatchClearCache</symbol>
- </release>
-</symbols>
diff --git a/doc/syms.xsl b/doc/syms.xsl
deleted file mode 100644
index b46913e6..00000000
--- a/doc/syms.xsl
+++ /dev/null
@@ -1,114 +0,0 @@
-<?xml version="1.0"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- version="1.0">
- <xsl:output method="text" encoding="UTF-8"/>
-
- <xsl:variable name="api" select="document('libxslt-api.xml')"/>
-
- <xsl:template match="/">
- <xsl:text>#
-# Officially exported symbols, for which header
-# file definitions are installed in /usr/include/libxslt
-#
-# Automatically generated from symbols.xml and syms.xsl
-#
-# Versions here are *fixed* to match the libxslt version
-# at which the symbol was introduced. This ensures that
-# a new client app requiring symbol foo() can't accidentally
-# run with old libxslt.so not providing foo() - the global
-# soname version info can't enforce this since we never
-# change the soname
-#
-
-</xsl:text>
- <xsl:apply-templates select="/symbols/release"/>
- </xsl:template>
-
- <xsl:template match="release">
- <xsl:variable name="prev"
- select="preceding-sibling::release[position()=1]"/>
- <xsl:text>LIBXML2_</xsl:text>
- <xsl:value-of select="string(@version)"/>
- <xsl:text> {
- global:
-</xsl:text>
- <xsl:for-each select="symbol">
- <xsl:if test="string(preceding-sibling::symbol[position()=1]/@file) != string(@file)">
- <xsl:text>
-# </xsl:text>
- <xsl:value-of select="@file"/>
- <xsl:text>
-</xsl:text>
- </xsl:if>
-
- <xsl:apply-templates select="."/>
- </xsl:for-each>
-
- <xsl:if test="not($prev)">
- <xsl:text>
- local:
- *;
-</xsl:text>
- </xsl:if>
-
- <xsl:text>} </xsl:text>
- <xsl:if test="$prev">
- <xsl:text>LIBXML2_</xsl:text>
- <xsl:value-of select="$prev/@version"/>
- </xsl:if>
- <xsl:text>;
-
-</xsl:text>
- </xsl:template>
-
- <xsl:template match="symbol">
- <xsl:variable name="name" select="string(.)"/>
- <xsl:variable name="file" select="string(@file)"/>
- <xsl:choose>
- <xsl:when test="@removed">
- <xsl:text># </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>; removed in </xsl:text>
- <xsl:value-of select="@removed"/>
- <xsl:text>
-</xsl:text>
- </xsl:when>
- <xsl:when test="@switch">
- <xsl:text># </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>; requires switch </xsl:text>
- <xsl:value-of select="@switch"/>
- <xsl:text>
-</xsl:text>
- </xsl:when>
- <xsl:otherwise>
- <!-- make sure we can find that symbol exported from the API list -->
- <xsl:variable name="def"
- select="$api/api/files/file[@name = $file]/exports[@symbol = $name]"/>
- <xsl:if test="string($def/@symbol) != $name">
- <xsl:message terminate="yes">
- <xsl:text>Failed to find definition in libxslt-api.xml:</xsl:text>
- <xsl:value-of select="$name"/>
- </xsl:message>
- </xsl:if>
-
- <xsl:text> </xsl:text>
- <xsl:value-of select="$name"/>
- <xsl:text>;</xsl:text>
- <xsl:if test="$def/@type = 'variable'">
- <xsl:text> # variable</xsl:text>
- </xsl:if>
- <xsl:if test="@comment">
- <xsl:text># </xsl:text>
- <xsl:value-of select="@comment"/>
- <xsl:text>
-</xsl:text>
- </xsl:if>
- <xsl:text>
-</xsl:text>
- </xsl:otherwise>
- </xsl:choose>
- </xsl:template>
-
-</xsl:stylesheet>
-
diff --git a/examples/xsltICUSort.c b/examples/xsltICUSort.c
index 6f761214..76db4510 100644
--- a/examples/xsltICUSort.c
+++ b/examples/xsltICUSort.c
@@ -1,304 +1,146 @@
/**
- * xsltICUSort.c: module provided by Richard Jinks to provide a
- * sort function replacement using ICU, it is not
- * included in standard due to the size of the ICU
+ * xsltICUSort.c: module to provide a sort function replacement using ICU,
+ * it is not included in standard due to the size of the ICU
* library
*
- * See http://mail.gnome.org/archives/xslt/2002-November/msg00093.html
- * http://oss.software.ibm.com/icu/index.html
- *
- * Copyright Richard Jinks
+ * Requires libxslt 1.1.38
*/
-#define IN_LIBXSLT
-#include "libxslt.h"
-
-#include <libxml/parserInternals.h>
-
-#include "xslt.h"
-#include "xsltInternals.h"
-#include "xsltutils.h"
-#include "transform.h"
-#include "templates.h"
+#include <libxslt/transform.h>
+#include <libxslt/xsltutils.h>
#include <unicode/ucnv.h>
-#include <unicode/ustring.h>
-#include <unicode/utypes.h>
-#include <unicode/uloc.h>
#include <unicode/ucol.h>
/**
- * xsltICUSortFunction:
- * @ctxt: a XSLT process context
- * @sorts: array of sort nodes
- * @nbsorts: the number of sorts in the array
+ * xsltICUNewLocale:
+ * @lang: lang
*
- * reorder the current node list accordingly to the set of sorting
- * requirement provided by the arry of nodes.
- * uses the ICU library
+ * Create a new ICU collator.
*/
-void
-xsltICUSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
- int nbsorts) {
- xmlXPathObjectPtr *resultsTab[XSLT_MAX_SORT];
- xmlXPathObjectPtr *results = NULL, *res;
- xmlNodeSetPtr list = NULL;
- int descending, number, desc, numb;
- int len = 0;
- int i, j, incr;
- int tst;
- int depth;
- xmlNodePtr node;
- xmlXPathObjectPtr tmp;
- xsltStylePreCompPtr comp;
- int tempstype[XSLT_MAX_SORT], temporder[XSLT_MAX_SORT];
-
- /* Start ICU change */
- UCollator *coll = 0;
- UConverter *conv;
- UErrorCode status;
- UChar *target,*target2;
- int targetlen, target2len;
- /* End ICU change */
-
- if ((ctxt == NULL) || (sorts == NULL) || (nbsorts <= 0) ||
- (nbsorts >= XSLT_MAX_SORT))
- return;
- if (sorts[0] == NULL)
- return;
- comp = sorts[0]->_private;
- if (comp == NULL)
- return;
-
- list = ctxt->nodeList;
- if ((list == NULL) || (list->nodeNr <= 1))
- return; /* nothing to do */
-
- for (j = 0; j < nbsorts; j++) {
- comp = sorts[j]->_private;
- tempstype[j] = 0;
- if ((comp->stype == NULL) && (comp->has_stype != 0)) {
- comp->stype =
- xsltEvalAttrValueTemplate(ctxt, sorts[j],
- (const xmlChar *) "data-type",
- XSLT_NAMESPACE);
- if (comp->stype != NULL) {
- tempstype[j] = 1;
- if (xmlStrEqual(comp->stype, (const xmlChar *) "text"))
- comp->number = 0;
- else if (xmlStrEqual(comp->stype, (const xmlChar *) "number"))
- comp->number = 1;
- else {
- xsltTransformError(ctxt, NULL, sorts[j],
- "xsltDoSortFunction: no support for data-type = %s\n",
- comp->stype);
- comp->number = 0; /* use default */
- }
- }
- }
- temporder[j] = 0;
- if ((comp->order == NULL) && (comp->has_order != 0)) {
- comp->order = xsltEvalAttrValueTemplate(ctxt, sorts[j],
- (const xmlChar *) "order",
- XSLT_NAMESPACE);
- if (comp->order != NULL) {
- temporder[j] = 1;
- if (xmlStrEqual(comp->order, (const xmlChar *) "ascending"))
- comp->descending = 0;
- else if (xmlStrEqual(comp->order,
- (const xmlChar *) "descending"))
- comp->descending = 1;
- else {
- xsltTransformError(ctxt, NULL, sorts[j],
- "xsltDoSortFunction: invalid value %s for order\n",
- comp->order);
- comp->descending = 0; /* use default */
- }
- }
- }
- }
-
- len = list->nodeNr;
-
- resultsTab[0] = xsltComputeSortResult(ctxt, sorts[0]);
- for (i = 1;i < XSLT_MAX_SORT;i++)
- resultsTab[i] = NULL;
-
- results = resultsTab[0];
-
- comp = sorts[0]->_private;
- descending = comp->descending;
- number = comp->number;
- if (results == NULL)
- return;
+void *
+xsltICUNewLocale(const xmlChar *lang, int lowerFirst) {
+ UCollator *coll;
+ UErrorCode status = U_ZERO_ERROR;
- /* Start ICU change */
- status = U_ZERO_ERROR;
- conv = ucnv_open("UTF8", &status);
- if(U_FAILURE(status)) {
- xsltTransformError(ctxt, NULL, NULL, "xsltICUSortFunction: Error opening converter\n");
- }
- if(comp->has_lang)
- coll = ucol_open(comp->lang, &status);
- if(U_FAILURE(status) || !comp->has_lang) {
+ coll = ucol_open((const char *) lang, &status);
+ if (U_FAILURE(status)) {
status = U_ZERO_ERROR;
coll = ucol_open("en", &status);
+ if (U_FAILURE(status)) {
+ return NULL;
+ }
}
- if(U_FAILURE(status)) {
- xsltTransformError(ctxt, NULL, NULL, "xsltICUSortFunction: Error opening collator\n");
- }
- if(comp->lower_first)
- ucol_setAttribute(coll,UCOL_CASE_FIRST,UCOL_LOWER_FIRST,&status);
+
+ if (lowerFirst)
+ ucol_setAttribute(coll, UCOL_CASE_FIRST, UCOL_LOWER_FIRST, &status);
else
- ucol_setAttribute(coll,UCOL_CASE_FIRST,UCOL_UPPER_FIRST,&status);
- if(U_FAILURE(status)) {
- xsltTransformError(ctxt, NULL, NULL, "xsltICUSortFunction: Error setting collator attribute\n");
- }
- /* End ICU change */
+ ucol_setAttribute(coll, UCOL_CASE_FIRST, UCOL_UPPER_FIRST, &status);
- /* Shell's sort of node-set */
- for (incr = len / 2; incr > 0; incr /= 2) {
- for (i = incr; i < len; i++) {
- j = i - incr;
- if (results[i] == NULL)
- continue;
+ return (void *) coll;
+}
- while (j >= 0) {
- if (results[j] == NULL)
- tst = 1;
- else {
- if (number) {
- if (results[j]->floatval == results[j + incr]->floatval)
- tst = 0;
- else if (results[j]->floatval >
- results[j + incr]->floatval)
- tst = 1;
- else tst = -1;
- } else {
-/* tst = xmlStrcmp(results[j]->stringval,
- results[j + incr]->stringval); */
- /* Start ICU change */
- targetlen = xmlStrlen(results[j]->stringval) * 2;
- target2len = xmlStrlen(results[j + incr]->stringval) * 2;
- target = xmlMalloc(targetlen * sizeof(UChar));
- target2 = xmlMalloc(target2len * sizeof(UChar));
- targetlen = ucnv_toUChars(conv, target, targetlen, results[j]->stringval, -1, &status);
- target2len = ucnv_toUChars(conv, target2, target2len, results[j+incr]->stringval, -1, &status);
- tst = ucol_strcoll(coll, target, u_strlen(target), target2, u_strlen(target2));
- /* End ICU change */
- }
- if (descending)
- tst = -tst;
- }
- if (tst == 0) {
- /*
- * Okay we need to use multi level sorts
- */
- depth = 1;
- while (depth < nbsorts) {
- if (sorts[depth] == NULL)
- break;
- comp = sorts[depth]->_private;
- if (comp == NULL)
- break;
- desc = comp->descending;
- numb = comp->number;
+/**
+ * xsltICUNewLocale:
+ * @locale: ICU collator
+ *
+ * Free the ICU collator.
+ */
+void
+xsltICUFreeLocale(void *coll) {
+ ucol_close((UCollator *) coll);
+}
- /*
- * Compute the result of the next level for the
- * full set, this might be optimized ... or not
- */
- if (resultsTab[depth] == NULL)
- resultsTab[depth] = xsltComputeSortResult(ctxt,
- sorts[depth]);
- res = resultsTab[depth];
- if (res == NULL)
- break;
- if (res[j] == NULL)
- tst = 1;
- else {
- if (numb) {
- if (res[j]->floatval == res[j + incr]->floatval)
- tst = 0;
- else if (res[j]->floatval >
- res[j + incr]->floatval)
- tst = 1;
- else tst = -1;
- } else {
-/* tst = xmlStrcmp(res[j]->stringval,
- res[j + incr]->stringval); */
- /* Start ICU change */
- targetlen = xmlStrlen(res[j]->stringval) * 2;
- target2len = xmlStrlen(res[j + incr]->stringval) * 2;
- target = xmlMalloc(targetlen * sizeof(UChar));
- target2 = xmlMalloc(target2len * sizeof(UChar));
- targetlen = ucnv_toUChars(conv, target, targetlen, res[j]->stringval, -1, &status);
- target2len = ucnv_toUChars(conv, target2, target2len, res[j+incr]->stringval, -1, &status);
- tst = ucol_strcoll(coll, target, u_strlen(target), target2, u_strlen(target2));
- /* End ICU change */
- }
- if (desc)
- tst = -tst;
- }
- /*
- * if we still can't differenciate at this level
- * try one level deeper.
- */
- if (tst != 0)
- break;
- depth++;
- }
- }
- if (tst == 0) {
- tst = results[j]->index > results[j + incr]->index;
- }
- if (tst > 0) {
- tmp = results[j];
- results[j] = results[j + incr];
- results[j + incr] = tmp;
- node = list->nodeTab[j];
- list->nodeTab[j] = list->nodeTab[j + incr];
- list->nodeTab[j + incr] = node;
- depth = 1;
- while (depth < nbsorts) {
- if (sorts[depth] == NULL)
- break;
- if (resultsTab[depth] == NULL)
- break;
- res = resultsTab[depth];
- tmp = res[j];
- res[j] = res[j + incr];
- res[j + incr] = tmp;
- depth++;
- }
- j -= incr;
- } else
- break;
- }
- }
- }
+/**
+ * xsltICUGenSortKey:
+ * @locale: ICU collator
+ * @str: source string
+ *
+ * Generate a localized sort key.
+ */
+xmlChar *
+xsltICUGenSortKey(void *coll, const xmlChar *str) {
+ UConverter *conv;
+ UChar *ustr = NULL;
+ xmlChar *result = NULL;
+ UErrorCode status = U_ZERO_ERROR;
+ int32_t ustrLen, resultLen;
- /* Start ICU change */
- ucol_close(coll);
- ucnv_close(conv);
- /* End ICU change */
+ conv = ucnv_open("UTF8", &status);
+ if (U_FAILURE(status))
+ goto error;
- for (j = 0; j < nbsorts; j++) {
- comp = sorts[j]->_private;
- if (tempstype[j] == 1) {
- /* The data-type needs to be recomputed each time */
- xmlFree(comp->stype);
- comp->stype = NULL;
- }
- if (temporder[j] == 1) {
- /* The order needs to be recomputed each time */
- xmlFree(comp->order);
- comp->order = NULL;
- }
- if (resultsTab[j] != NULL) {
- for (i = 0;i < len;i++)
- xmlXPathFreeObject(resultsTab[j][i]);
- xmlFree(resultsTab[j]);
- }
+ ustrLen = ucnv_toUChars(conv, NULL, 0, (const char *) str, -1, &status);
+ if (U_FAILURE(status) && status != U_BUFFER_OVERFLOW_ERROR)
+ goto error;
+ status = U_ZERO_ERROR;
+ ustr = (UChar *) xmlMalloc((ustrLen + 1) * sizeof(UChar));
+ if (ustr == NULL)
+ goto error;
+ ustrLen = ucnv_toUChars(conv, ustr, ustrLen, (const char *) str, -1,
+ &status);
+ if (U_FAILURE(status))
+ goto error;
+
+ resultLen = ucol_getSortKey((UCollator *) coll, ustr, ustrLen, NULL, 0);
+ if (resultLen == 0)
+ goto error;
+ result = (xmlChar *) xmlMalloc(resultLen);
+ if (result == NULL)
+ goto error;
+ resultLen = ucol_getSortKey((UCollator *) coll, ustr, ustrLen, result,
+ resultLen);
+ if (resultLen == 0) {
+ xmlFree(result);
+ result = NULL;
+ goto error;
}
+
+error:
+ xmlFree(ustr);
+ return result;
}
+int main(void) {
+ xmlDocPtr sourceDoc = xmlReadDoc(
+ BAD_CAST
+ "<d>\n"
+ " <e>Berta</e>\n"
+ " <e>Ƅrger</e>\n"
+ "</d>\n",
+ NULL, NULL, 0
+ );
+ xmlDocPtr styleDoc = xmlReadDoc(
+ BAD_CAST
+ "<xsl:stylesheet"
+ " version='1.0'"
+ " xmlns:xsl='http://www.w3.org/1999/XSL/Transform'>\n"
+ " <xsl:template match='d'>\n"
+ " <xsl:for-each select='*'>\n"
+ " <xsl:sort lang='de'/>\n"
+ " <xsl:copy-of select='.'/>\n"
+ " </xsl:for-each>\n"
+ " </xsl:template>\n"
+ "</xsl:stylesheet>\n",
+ NULL, NULL, 0
+ );
+ xsltStylesheetPtr style = xsltParseStylesheetDoc(styleDoc);
+ if (style == NULL)
+ xmlFreeDoc(styleDoc);
+
+ xsltTransformContextPtr tctxt = xsltNewTransformContext(style, sourceDoc);
+ xsltSetCtxtLocaleHandlers(tctxt, xsltICUNewLocale, xsltICUFreeLocale,
+ xsltICUGenSortKey);
+
+ xmlDocPtr resultDoc = xsltApplyStylesheetUser(style, sourceDoc, NULL, NULL,
+ NULL, tctxt);
+
+ xsltFreeTransformContext(tctxt);
+
+ xsltSaveResultToFile(stdout, resultDoc, style);
+
+ xmlFreeDoc(resultDoc);
+ xsltFreeStylesheet(style);
+ xmlFreeDoc(sourceDoc);
+
+ return 0;
+}
diff --git a/libexslt.pc.in b/libexslt.pc.in
index 1d605639..f448bb83 100644
--- a/libexslt.pc.in
+++ b/libexslt.pc.in
@@ -8,6 +8,6 @@ Name: libexslt
Version: @LIBEXSLT_VERSION@
Description: EXSLT Extension library
Requires: libxml-2.0, libxslt
-Cflags: @EXSLT_INCLUDEDIR@
+Cflags: @EXSLT_INCLUDEDIR@ @LIBEXSLT_CFLAGS@
Libs: @EXSLT_LIBDIR@ -lexslt
Libs.private: @EXSLT_PRIVATE_LIBS@
diff --git a/libexslt/Makefile.am b/libexslt/Makefile.am
index c2dc6364..39c8e205 100644
--- a/libexslt/Makefile.am
+++ b/libexslt/Makefile.am
@@ -2,8 +2,6 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libxslt -I$(top_srcdir)/libexslt \
-I$(top_builddir) -I$(top_builddir)/libxslt \
-I$(top_builddir)/libexslt
-AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
-
lib_LTLIBRARIES = libexslt.la
exsltincdir = $(includedir)/libexslt
@@ -27,8 +25,10 @@ libexslt_la_SOURCES = \
libexslt.h \
dynamic.c
+libexslt_la_CFLAGS = $(AM_CFLAGS) $(LIBGCRYPT_CFLAGS)
libexslt_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(LIBXML_LIBS) $(EXTRA_LIBS) $(LIBGCRYPT_LIBS) $(LIBM)
-libexslt_la_LDFLAGS = -version-info $(LIBEXSLT_VERSION_INFO)
+libexslt_la_LDFLAGS = $(AM_LDFLAGS) -no-undefined \
+ -version-info $(LIBEXSLT_VERSION_INFO)
man_MANS = libexslt.3
diff --git a/libexslt/crypto.c b/libexslt/crypto.c
index 8845a132..e2f2d5d2 100644
--- a/libexslt/crypto.c
+++ b/libexslt/crypto.c
@@ -7,6 +7,7 @@
#include <libxml/parser.h>
#include <libxml/encoding.h>
#include <libxml/uri.h>
+#include <libxml/threads.h>
#include <libxslt/xsltutils.h>
#include <libxslt/xsltInternals.h>
@@ -94,7 +95,7 @@ exsltCryptoHex2Bin (const unsigned char *hex, int hexlen,
else if (tmp >= 'a' && tmp <= 'f')
lo = 10 + (tmp - 'a');
- result = (unsigned char) (hi << 4);
+ result = hi << 4;
result += lo;
bin[j++] = result;
}
diff --git a/libexslt/date.c b/libexslt/date.c
index 60d353d5..bb4a8ec7 100644
--- a/libexslt/date.c
+++ b/libexslt/date.c
@@ -38,6 +38,7 @@
#include "exslt.h"
+#include <stdlib.h>
#include <string.h>
#include <limits.h>
#include <errno.h>
@@ -52,6 +53,12 @@
#include <time.h>
+#if defined(_MSC_VER) && _MSC_VER >= 1400 || \
+ defined(_WIN32) && \
+ defined(__MINGW64_VERSION_MAJOR) && __MINGW64_VERSION_MAJOR >= 4
+ #define HAVE_MSVCRT
+#endif
+
/*
* types of date and/or time (from schema datatypes)
* somewhat ordered from least specific to most specific (i.e.
@@ -227,37 +234,41 @@ _exsltDateParseGYear (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_GYEAR:
+ * exsltFormatGYear:
+ * @cur: a pointer to a pointer to an allocated buffer
+ * @end: a pointer to the end of @cur buffer
* @yr: the year to format
- * @cur: a pointer to an allocated buffer
*
* Formats @yr in xsl:gYear format. Result is appended to @cur and
* @cur is updated to point after the xsl:gYear.
*/
-#define FORMAT_GYEAR(yr, cur) \
- if (yr <= 0) { \
- *cur = '-'; \
- cur++; \
- } \
- { \
- long year = (yr <= 0) ? -yr + 1 : yr; \
- xmlChar tmp_buf[100], *tmp = tmp_buf; \
- /* result is in reverse-order */ \
- while (year > 0) { \
- *tmp = '0' + (xmlChar)(year % 10); \
- year /= 10; \
- tmp++; \
- } \
- /* virtually adds leading zeros */ \
- while ((tmp - tmp_buf) < 4) \
- *tmp++ = '0'; \
- /* restore the correct order */ \
- while (tmp > tmp_buf) { \
- tmp--; \
- *cur = *tmp; \
- cur++; \
- } \
- }
+static void
+exsltFormatGYear(xmlChar **cur, xmlChar *end, long yr)
+{
+ long year;
+ xmlChar tmp_buf[100], *tmp = tmp_buf, *tmp_end = tmp_buf + 99;
+
+ if (yr <= 0 && *cur < end) {
+ *(*cur)++ = '-';
+ }
+
+ year = (yr <= 0) ? -yr + 1 : yr;
+ /* result is in reverse-order */
+ while (year > 0 && tmp < tmp_end) {
+ *tmp++ = '0' + (xmlChar)(year % 10);
+ year /= 10;
+ }
+
+ /* virtually adds leading zeros */
+ while ((tmp - tmp_buf) < 4)
+ *tmp++ = '0';
+
+ /* restore the correct order */
+ while (tmp > tmp_buf && *cur < end) {
+ tmp--;
+ *(*cur)++ = *tmp;
+ }
+}
/**
* PARSE_2_DIGITS:
@@ -286,18 +297,22 @@ _exsltDateParseGYear (exsltDateValPtr dt, const xmlChar **str)
cur += 2;
/**
- * FORMAT_2_DIGITS:
- * @num: the integer to format
- * @cur: a pointer to an allocated buffer
+ * exsltFormat2Digits:
+ * @cur: a pointer to a pointer to an allocated buffer
+ * @end: a pointer to the end of @cur buffer
+ * @num: the integer to format
*
* Formats a 2-digits integer. Result is appended to @cur and
* @cur is updated to point after the integer.
*/
-#define FORMAT_2_DIGITS(num, cur) \
- *cur = '0' + ((num / 10) % 10); \
- cur++; \
- *cur = '0' + (num % 10); \
- cur++;
+static void
+exsltFormat2Digits(xmlChar **cur, xmlChar *end, unsigned int num)
+{
+ if (*cur < end)
+ *(*cur)++ = '0' + ((num / 10) % 10);
+ if (*cur < end)
+ *(*cur)++ = '0' + (num % 10);
+}
/**
* PARSE_FLOAT:
@@ -326,29 +341,6 @@ _exsltDateParseGYear (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_FLOAT:
- * @num: the double to format
- * @cur: a pointer to an allocated buffer
- * @pad: a flag for padding to 2 integer digits
- *
- * Formats a float. Result is appended to @cur and @cur is updated to
- * point after the integer. If the @pad flag is non-zero, then the
- * float representation has a minimum 2-digits integer part. The
- * fractional part is formatted if @num has a fractional value.
- */
-#define FORMAT_FLOAT(num, cur, pad) \
- { \
- xmlChar *sav, *str; \
- if ((pad) && (num < 10.0)) \
- *cur++ = '0'; \
- str = xmlXPathCastNumberToString(num); \
- sav = str; \
- while (*str != 0) \
- *cur++ = *str++; \
- xmlFree(sav); \
- }
-
-/**
* _exsltDateParseGMonth:
* @dt: pointer to a date structure
* @str: pointer to the string to analyze
@@ -380,17 +372,6 @@ _exsltDateParseGMonth (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_GMONTH:
- * @mon: the month to format
- * @cur: a pointer to an allocated buffer
- *
- * Formats @mon in xsl:gMonth format. Result is appended to @cur and
- * @cur is updated to point after the xsl:gMonth.
- */
-#define FORMAT_GMONTH(mon, cur) \
- FORMAT_2_DIGITS(mon, cur)
-
-/**
* _exsltDateParseGDay:
* @dt: pointer to a date structure
* @str: pointer to the string to analyze
@@ -422,32 +403,25 @@ _exsltDateParseGDay (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_GDAY:
- * @dt: the #exsltDateVal to format
- * @cur: a pointer to an allocated buffer
- *
- * Formats @dt in xsl:gDay format. Result is appended to @cur and
- * @cur is updated to point after the xsl:gDay.
- */
-#define FORMAT_GDAY(dt, cur) \
- FORMAT_2_DIGITS(dt->day, cur)
-
-/**
- * FORMAT_DATE:
+ * exsltFormatYearMonthDay:
+ * @cur: a pointer to a pointer to an allocated buffer
+ * @end: a pointer to the end of @cur buffer
* @dt: the #exsltDateVal to format
- * @cur: a pointer to an allocated buffer
*
* Formats @dt in xsl:date format. Result is appended to @cur and
* @cur is updated to point after the xsl:date.
*/
-#define FORMAT_DATE(dt, cur) \
- FORMAT_GYEAR(dt->year, cur); \
- *cur = '-'; \
- cur++; \
- FORMAT_GMONTH(dt->mon, cur); \
- *cur = '-'; \
- cur++; \
- FORMAT_GDAY(dt, cur);
+static void
+exsltFormatYearMonthDay(xmlChar **cur, xmlChar *end, const exsltDateValPtr dt)
+{
+ exsltFormatGYear(cur, end, dt->year);
+ if (*cur < end)
+ *(*cur)++ = '-';
+ exsltFormat2Digits(cur, end, dt->mon);
+ if (*cur < end)
+ *(*cur)++ = '-';
+ exsltFormat2Digits(cur, end, dt->day);
+}
/**
* _exsltDateParseTime:
@@ -506,23 +480,6 @@ _exsltDateParseTime (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_TIME:
- * @dt: the #exsltDateVal to format
- * @cur: a pointer to an allocated buffer
- *
- * Formats @dt in xsl:time format. Result is appended to @cur and
- * @cur is updated to point after the xsl:time.
- */
-#define FORMAT_TIME(dt, cur) \
- FORMAT_2_DIGITS(dt->hour, cur); \
- *cur = ':'; \
- cur++; \
- FORMAT_2_DIGITS(dt->min, cur); \
- *cur = ':'; \
- cur++; \
- FORMAT_FLOAT(dt->sec, cur, 1);
-
-/**
* _exsltDateParseTimeZone:
* @dt: pointer to a date structure
* @str: pointer to the string to analyze
@@ -600,27 +557,31 @@ _exsltDateParseTimeZone (exsltDateValPtr dt, const xmlChar **str)
}
/**
- * FORMAT_TZ:
- * @tzo: the timezone offset to format
- * @cur: a pointer to an allocated buffer
+ * exsltFormatTimeZone:
+ * @cur: a pointer to a pointer to an allocated buffer
+ * @end: a pointer to the end of @cur buffer
+ * @tzo: the timezone offset to format
*
* Formats @tzo timezone. Result is appended to @cur and
* @cur is updated to point after the timezone.
*/
-#define FORMAT_TZ(tzo, cur) \
- if (tzo == 0) { \
- *cur = 'Z'; \
- cur++; \
- } else { \
- int aTzo = (tzo < 0) ? - tzo : tzo; \
- int tzHh = aTzo / 60, tzMm = aTzo % 60; \
- *cur = (tzo < 0) ? '-' : '+' ; \
- cur++; \
- FORMAT_2_DIGITS(tzHh, cur); \
- *cur = ':'; \
- cur++; \
- FORMAT_2_DIGITS(tzMm, cur); \
- }
+static void
+exsltFormatTimeZone(xmlChar **cur, xmlChar *end, int tzo)
+{
+ if (tzo == 0) {
+ if (*cur < end)
+ *(*cur)++ = 'Z';
+ } else {
+ unsigned int aTzo = (tzo < 0) ? -tzo : tzo;
+ unsigned int tzHh = aTzo / 60, tzMm = aTzo % 60;
+ if (*cur < end)
+ *(*cur)++ = (tzo < 0) ? '-' : '+';
+ exsltFormat2Digits(cur, end, tzHh);
+ if (*cur < end)
+ *(*cur)++ = ':';
+ exsltFormat2Digits(cur, end, tzMm);
+ }
+}
/****************************************************************
* *
@@ -718,7 +679,7 @@ static exsltDateValPtr
exsltDateCurrent (void)
{
struct tm localTm, gmTm;
-#ifndef HAVE_GMTIME_R
+#if !defined(HAVE_GMTIME_R) && !defined(HAVE_MSVCRT)
struct tm *tb = NULL;
#endif
time_t secs;
@@ -740,7 +701,11 @@ exsltDateCurrent (void)
errno = 0;
secs = (time_t) strtol (source_date_epoch, NULL, 10);
if (errno == 0) {
-#if HAVE_GMTIME_R
+#ifdef HAVE_MSVCRT
+ struct tm *gm = gmtime_s(&localTm, &secs) ? NULL : &localTm;
+ if (gm != NULL)
+ override = 1;
+#elif HAVE_GMTIME_R
if (gmtime_r(&secs, &localTm) != NULL)
override = 1;
#else
@@ -757,7 +722,9 @@ exsltDateCurrent (void)
/* get current time */
secs = time(NULL);
-#if HAVE_LOCALTIME_R
+#ifdef HAVE_MSVCRT
+ localtime_s(&localTm, &secs);
+#elif HAVE_LOCALTIME_R
localtime_r(&secs, &localTm);
#else
localTm = *localtime(&secs);
@@ -776,7 +743,9 @@ exsltDateCurrent (void)
ret->sec = (double) localTm.tm_sec;
/* determine the time zone offset from local to gm time */
-#if HAVE_GMTIME_R
+#ifdef HAVE_MSVCRT
+ gmtime_s(&gmTm, &secs);
+#elif HAVE_GMTIME_R
gmtime_r(&secs, &gmTm);
#else
tb = gmtime(&secs);
@@ -1138,21 +1107,41 @@ error:
return NULL;
}
-/**
- * FORMAT_ITEM:
- * @num: number to format
- * @cur: current location to convert number
- * @limit: max value
- * @item: char designator
- *
- */
-#define FORMAT_ITEM(num, cur, limit, item) \
- if (num >= limit) { \
- double comp = floor(num / limit); \
- FORMAT_FLOAT(comp, cur, 0); \
- *cur++ = item; \
- num -= comp * limit; \
+static void
+exsltFormatLong(xmlChar **cur, xmlChar *end, long num) {
+ xmlChar buf[20];
+ int i = 0;
+
+ while (i < 20) {
+ buf[i++] = '0' + num % 10;
+ num /= 10;
+ if (num == 0)
+ break;
+ }
+
+ while (i > 0) {
+ if (*cur < end)
+ *(*cur)++ = buf[--i];
+ }
+}
+
+static void
+exsltFormatNanoseconds(xmlChar **cur, xmlChar *end, long nsecs) {
+ long p10, digit;
+
+ if (nsecs > 0) {
+ if (*cur < end)
+ *(*cur)++ = '.';
+ p10 = 100000000;
+ while (nsecs > 0) {
+ digit = nsecs / p10;
+ if (*cur < end)
+ *(*cur)++ = '0' + digit;
+ nsecs -= digit * p10;
+ p10 /= 10;
}
+ }
+}
/**
* exsltDateFormatDuration:
@@ -1165,9 +1154,9 @@ error:
static xmlChar *
exsltDateFormatDuration (const exsltDateDurValPtr dur)
{
- xmlChar buf[100], *cur = buf;
- double secs, days;
- double years, months;
+ xmlChar buf[100], *cur = buf, *end = buf + 99;
+ double secs, tmp;
+ long days, months, intSecs, nsecs;
if (dur == NULL)
return NULL;
@@ -1177,9 +1166,8 @@ exsltDateFormatDuration (const exsltDateDurValPtr dur)
return xmlStrdup((xmlChar*)"P0D");
secs = dur->sec;
- days = (double)dur->day;
- years = (double)(dur->mon / 12);
- months = (double)(dur->mon % 12);
+ days = dur->day;
+ months = dur->mon;
*cur = '\0';
if (days < 0) {
@@ -1190,10 +1178,6 @@ exsltDateFormatDuration (const exsltDateDurValPtr dur)
days = -days;
*cur = '-';
}
- if (years < 0) {
- years = -years;
- *cur = '-';
- }
if (months < 0) {
months = -months;
*cur = '-';
@@ -1203,23 +1187,64 @@ exsltDateFormatDuration (const exsltDateDurValPtr dur)
*cur++ = 'P';
- if (years != 0.0) {
- FORMAT_ITEM(years, cur, 1, 'Y');
+ if (months >= 12) {
+ long years = months / 12;
+
+ months -= years * 12;
+ exsltFormatLong(&cur, end, years);
+ if (cur < end)
+ *cur++ = 'Y';
}
- if (months != 0.0) {
- FORMAT_ITEM(months, cur, 1, 'M');
+ if (months != 0) {
+ exsltFormatLong(&cur, end, months);
+ if (cur < end)
+ *cur++ = 'M';
}
- FORMAT_ITEM(days, cur, 1, 'D');
- if (secs > 0.0) {
- *cur++ = 'T';
+ if (days != 0) {
+ exsltFormatLong(&cur, end, days);
+ if (cur < end)
+ *cur++ = 'D';
}
- FORMAT_ITEM(secs, cur, SECS_PER_HOUR, 'H');
- FORMAT_ITEM(secs, cur, SECS_PER_MIN, 'M');
- if (secs > 0.0) {
- FORMAT_FLOAT(secs, cur, 0);
- *cur++ = 'S';
+
+ tmp = floor(secs);
+ intSecs = (long) tmp;
+ /* Round to nearest to avoid issues with floating point precision */
+ nsecs = (long) floor((secs - tmp) * 1000000000 + 0.5);
+ if (nsecs >= 1000000000) {
+ nsecs -= 1000000000;
+ intSecs += 1;
+ }
+
+ if ((intSecs > 0) || (nsecs > 0)) {
+ if (cur < end)
+ *cur++ = 'T';
+
+ if (intSecs >= SECS_PER_HOUR) {
+ long hours = intSecs / SECS_PER_HOUR;
+
+ intSecs -= hours * SECS_PER_HOUR;
+ exsltFormatLong(&cur, end, hours);
+ if (cur < end)
+ *cur++ = 'H';
+ }
+
+ if (intSecs >= SECS_PER_MIN) {
+ long mins = intSecs / SECS_PER_MIN;
+
+ intSecs -= mins * SECS_PER_MIN;
+ exsltFormatLong(&cur, end, mins);
+ if (cur < end)
+ *cur++ = 'M';
+ }
+
+ if ((intSecs > 0) || (nsecs > 0)) {
+ exsltFormatLong(&cur, end, intSecs);
+ exsltFormatNanoseconds(&cur, end, nsecs);
+ if (cur < end)
+ *cur++ = 'S';
+ }
}
*cur = 0;
@@ -1227,6 +1252,42 @@ exsltDateFormatDuration (const exsltDateDurValPtr dur)
return xmlStrdup(buf);
}
+static void
+exsltFormatTwoDigits(xmlChar **cur, xmlChar *end, int num) {
+ if (num < 0 || num >= 100)
+ return;
+ if (*cur < end)
+ *(*cur)++ = '0' + num / 10;
+ if (*cur < end)
+ *(*cur)++ = '0' + num % 10;
+}
+
+static void
+exsltFormatTime(xmlChar **cur, xmlChar *end, exsltDateValPtr dt) {
+ double tmp;
+ long intSecs, nsecs;
+
+ exsltFormatTwoDigits(cur, end, dt->hour);
+ if (*cur < end)
+ *(*cur)++ = ':';
+
+ exsltFormatTwoDigits(cur, end, dt->min);
+ if (*cur < end)
+ *(*cur)++ = ':';
+
+ tmp = floor(dt->sec);
+ intSecs = (long) tmp;
+ /*
+ * Round to nearest to avoid issues with floating point precision,
+ * but don't carry over so seconds stay below 60.
+ */
+ nsecs = (long) floor((dt->sec - tmp) * 1000000000 + 0.5);
+ if (nsecs > 999999999)
+ nsecs = 999999999;
+ exsltFormatTwoDigits(cur, end, intSecs);
+ exsltFormatNanoseconds(cur, end, nsecs);
+}
+
/**
* exsltDateFormatDateTime:
* @dt: an #exsltDateValPtr
@@ -1238,16 +1299,16 @@ exsltDateFormatDuration (const exsltDateDurValPtr dur)
static xmlChar *
exsltDateFormatDateTime (const exsltDateValPtr dt)
{
- xmlChar buf[100], *cur = buf;
+ xmlChar buf[100], *cur = buf, *end = buf + 99;
if ((dt == NULL) || !VALID_DATETIME(dt))
return NULL;
- FORMAT_DATE(dt, cur);
- *cur = 'T';
- cur++;
- FORMAT_TIME(dt, cur);
- FORMAT_TZ(dt->tzo, cur);
+ exsltFormatYearMonthDay(&cur, end, dt);
+ if (cur < end)
+ *cur++ = 'T';
+ exsltFormatTime(&cur, end, dt);
+ exsltFormatTimeZone(&cur, end, dt->tzo);
*cur = 0;
return xmlStrdup(buf);
@@ -1264,14 +1325,14 @@ exsltDateFormatDateTime (const exsltDateValPtr dt)
static xmlChar *
exsltDateFormatDate (const exsltDateValPtr dt)
{
- xmlChar buf[100], *cur = buf;
+ xmlChar buf[100], *cur = buf, *end = buf + 99;
if ((dt == NULL) || !VALID_DATETIME(dt))
return NULL;
- FORMAT_DATE(dt, cur);
+ exsltFormatYearMonthDay(&cur, end, dt);
if (dt->tz_flag || (dt->tzo != 0)) {
- FORMAT_TZ(dt->tzo, cur);
+ exsltFormatTimeZone(&cur, end, dt->tzo);
}
*cur = 0;
@@ -1289,14 +1350,14 @@ exsltDateFormatDate (const exsltDateValPtr dt)
static xmlChar *
exsltDateFormatTime (const exsltDateValPtr dt)
{
- xmlChar buf[100], *cur = buf;
+ xmlChar buf[100], *cur = buf, *end = buf + 99;
if ((dt == NULL) || !VALID_TIME(dt))
return NULL;
- FORMAT_TIME(dt, cur);
+ exsltFormatTime(&cur, end, dt);
if (dt->tz_flag || (dt->tzo != 0)) {
- FORMAT_TZ(dt->tzo, cur);
+ exsltFormatTimeZone(&cur, end, dt->tzo);
}
*cur = 0;
@@ -1316,7 +1377,6 @@ exsltDateFormatTime (const exsltDateValPtr dt)
static xmlChar *
exsltDateFormat (const exsltDateValPtr dt)
{
-
if (dt == NULL)
return NULL;
@@ -1332,17 +1392,17 @@ exsltDateFormat (const exsltDateValPtr dt)
}
if (dt->type & XS_GYEAR) {
- xmlChar buf[100], *cur = buf;
+ xmlChar buf[100], *cur = buf, *end = buf + 99;
- FORMAT_GYEAR(dt->year, cur);
+ exsltFormatGYear(&cur, end, dt->year);
if (dt->type == XS_GYEARMONTH) {
- *cur = '-';
- cur++;
- FORMAT_GMONTH(dt->mon, cur);
+ if (cur < end)
+ *cur++ = '-';
+ exsltFormat2Digits(&cur, end, dt->mon);
}
if (dt->tz_flag || (dt->tzo != 0)) {
- FORMAT_TZ(dt->tzo, cur);
+ exsltFormatTimeZone(&cur, end, dt->tzo);
}
*cur = 0;
return xmlStrdup(buf);
@@ -1689,16 +1749,16 @@ _exsltDateAddDurCalc (exsltDateDurValPtr ret, exsltDateDurValPtr x,
exsltDateDurValPtr y)
{
/* months */
- if ((x->mon > 0 && y->mon > LONG_MAX - x->mon) ||
- (x->mon < 0 && y->mon < LONG_MIN - x->mon)) {
+ if ((x->mon > 0 && y->mon > LONG_MAX - x->mon) ||
+ (x->mon < 0 && y->mon <= LONG_MIN - x->mon)) {
/* Overflow */
return 0;
}
ret->mon = x->mon + y->mon;
/* days */
- if ((x->day > 0 && y->day > LONG_MAX - x->day) ||
- (x->day < 0 && y->day < LONG_MIN - x->day)) {
+ if ((x->day > 0 && y->day > LONG_MAX - x->day) ||
+ (x->day < 0 && y->day <= LONG_MIN - x->day)) {
/* Overflow */
return 0;
}
diff --git a/libexslt/functions.c b/libexslt/functions.c
index 958bf60e..9497d7e0 100644
--- a/libexslt/functions.c
+++ b/libexslt/functions.c
@@ -114,6 +114,7 @@ exsltFuncRegisterImportFunc (void *payload, void *vctxt,
xsltGenericError(xsltGenericErrorContext,
"Failed to register function {%s}%s\n",
URI, name);
+ xmlFree(func);
} else { /* Do the registration */
xsltGenericDebug(xsltGenericDebugContext,
"exsltFuncRegisterImportFunc: register {%s}%s\n",
@@ -185,9 +186,11 @@ exsltFuncShutdown (xsltTransformContextPtr ctxt ATTRIBUTE_UNUSED,
void *vdata) {
exsltFuncData *data = (exsltFuncData *) vdata;
- if (data->result != NULL)
- xmlXPathFreeObject(data->result);
- xmlFree(data);
+ if (data != NULL) {
+ if (data->result != NULL)
+ xmlXPathFreeObject(data->result);
+ xmlFree(data);
+ }
}
/**
@@ -286,16 +289,12 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
exsltFuncData *data;
exsltFuncFunctionData *func;
xmlNodePtr paramNode, oldInsert, oldXPNode, fake;
- int oldBase;
+ int oldBase, newBase;
void *oldCtxtVar;
xsltStackElemPtr params = NULL, param;
xsltTransformContextPtr tctxt = xsltXPathGetTransformContext(ctxt);
- int i, notSet;
- struct objChain {
- struct objChain *next;
- xmlXPathObjectPtr obj;
- };
- struct objChain *savedObjChain = NULL, *savedObj;
+ int i;
+ xmlXPathObjectPtr *args = NULL;
/*
* retrieve func:function template
@@ -357,6 +356,10 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
/* Evaluating templates can change the XPath context node. */
oldXPNode = tctxt->xpathCtxt->node;
+ fake = xmlNewDocNode(tctxt->output, NULL,
+ (const xmlChar *)"fake", NULL);
+ if (fake == NULL)
+ goto error;
/*
* We have a problem with the evaluation of function parameters.
* The original library code did not evaluate XPath expressions until
@@ -379,16 +382,15 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
* In order to give the function params and variables a new 'scope'
* we change varsBase in the context.
*/
- oldBase = tctxt->varsBase;
- tctxt->varsBase = tctxt->varsNr;
+ newBase = tctxt->varsNr;
/* If there are any parameters */
if (paramNode != NULL) {
+ args = (xmlXPathObjectPtr *) xmlMalloc(sizeof(*args) * nargs);
+ if (args == NULL)
+ goto error;
/* Fetch the stored argument values from the caller */
- for (i = 0; i < nargs; i++) {
- savedObj = xmlMalloc(sizeof(struct objChain));
- savedObj->next = savedObjChain;
- savedObj->obj = valuePop(ctxt);
- savedObjChain = savedObj;
+ for (i = nargs - 1; i >= 0; i--) {
+ args[i] = valuePop(ctxt);
}
/*
@@ -405,17 +407,20 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
* as arguments from the caller
* Calculate the number of un-set parameters
*/
- notSet = func->nargs - nargs;
- for (; i > 0; i--) {
+ for (i = 0; i < func->nargs; i++) {
param = xsltParseStylesheetCallerParam (tctxt, paramNode);
- if (i > notSet) { /* if parameter value set */
+ if (param == NULL) {
+ xsltLocalVariablePop(tctxt, newBase, -2);
+ xsltFreeStackElemList(params);
+ for (; i < nargs; i++)
+ xmlXPathFreeObject(args[i]);
+ goto error;
+ }
+ if (i < nargs) { /* if parameter value set */
param->computed = 1;
if (param->value != NULL)
xmlXPathFreeObject(param->value);
- savedObj = savedObjChain; /* get next val from chain */
- param->value = savedObj->obj;
- savedObjChain = savedObjChain->next;
- xmlFree(savedObj);
+ param->value = args[i];
}
xsltLocalVariablePush(tctxt, param, -1);
param->next = params;
@@ -427,11 +432,11 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
* Actual processing. The context variable is cleared and restored
* when func:result is evaluated.
*/
- fake = xmlNewDocNode(tctxt->output, NULL,
- (const xmlChar *)"fake", NULL);
+ oldBase = tctxt->varsBase;
oldInsert = tctxt->insert;
oldCtxtVar = data->ctxtVar;
data->ctxtVar = tctxt->contextVariable;
+ tctxt->varsBase = newBase;
tctxt->insert = fake;
tctxt->contextVariable = NULL;
xsltApplyOneTemplate (tctxt, tctxt->node,
@@ -466,21 +471,18 @@ exsltFuncFunctionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
* the generation of result nodes.
*/
if (fake->children != NULL) {
-#ifdef LIBXML_DEBUG_ENABLED
- xmlDebugDumpNode (stderr, fake, 1);
-#endif
xsltGenericError(xsltGenericErrorContext,
"{%s}%s: cannot write to result tree while "
"executing a function\n",
ctxt->context->functionURI, ctxt->context->function);
- xmlFreeNode(fake);
xmlXPathFreeObject(ret);
goto error;
}
- xmlFreeNode(fake);
valuePush(ctxt, ret);
error:
+ xmlFree(args);
+ xmlFreeNode(fake);
tctxt->depth--;
}
@@ -775,7 +777,7 @@ exsltFuncResultElem (xsltTransformContextPtr ctxt,
}
/* Mark as function result. */
xsltRegisterLocalRVT(ctxt, container);
- container->psvi = XSLT_RVT_FUNC_RESULT;
+ container->compression = XSLT_RVT_FUNC_RESULT;
oldInsert = ctxt->insert;
ctxt->insert = (xmlNodePtr) container;
diff --git a/libexslt/saxon.c b/libexslt/saxon.c
index 8512c6de..6166b15f 100644
--- a/libexslt/saxon.c
+++ b/libexslt/saxon.c
@@ -98,13 +98,18 @@ exsltSaxonExpressionFunction (xmlXPathParserContextPtr ctxt, int nargs) {
ret = xmlHashLookup(hash, arg);
if (ret == NULL) {
- ret = xmlXPathCtxtCompile(tctxt->xpathCtxt, arg);
- if (ret == NULL) {
- xmlFree(arg);
- xmlXPathSetError(ctxt, XPATH_EXPR_ERROR);
- return;
- }
- xmlHashAddEntry(hash, arg, (void *) ret);
+ ret = xmlXPathCtxtCompile(tctxt->xpathCtxt, arg);
+ if (ret == NULL) {
+ xmlFree(arg);
+ xmlXPathSetError(ctxt, XPATH_EXPR_ERROR);
+ return;
+ }
+ if (xmlHashAddEntry(hash, arg, (void *) ret) < 0) {
+ xmlXPathFreeCompExpr(ret);
+ xmlFree(arg);
+ xmlXPathSetError(ctxt, XPATH_MEMORY_ERROR);
+ return;
+ }
}
xmlFree(arg);
diff --git a/libexslt/sets.c b/libexslt/sets.c
index a4b55460..357fe2c0 100644
--- a/libexslt/sets.c
+++ b/libexslt/sets.c
@@ -112,13 +112,15 @@ exsltSetsDistinctFunction (xmlXPathParserContextPtr ctxt, int nargs) {
/* !!! must be sorted !!! */
ret = xmlXPathDistinctSorted(ns);
- if (ret != ns)
- xmlXPathFreeNodeSet(ns);
+ if (ret != ns)
+ xmlXPathFreeNodeSet(ns);
obj = xmlXPathWrapNodeSet(ret);
- obj->user = user;
- obj->boolval = boolval;
- valuePush((ctxt), obj);
+ if (obj != NULL) {
+ obj->user = user;
+ obj->boolval = boolval;
+ }
+ valuePush(ctxt, obj);
}
/**
diff --git a/libxslt-config.cmake.cmake.in b/libxslt-config.cmake.cmake.in
index e9ce15be..7095d422 100644
--- a/libxslt-config.cmake.cmake.in
+++ b/libxslt-config.cmake.cmake.in
@@ -23,6 +23,7 @@ macro(select_library_location target basename)
foreach(property IN ITEMS IMPORTED_LOCATION IMPORTED_IMPLIB)
get_target_property(${basename}_${property}_DEBUG ${target} ${property}_DEBUG)
get_target_property(${basename}_${property}_MINSIZEREL ${target} ${property}_MINSIZEREL)
+ get_target_property(${basename}_${property}_NOCONFIG ${target} ${property}_NOCONFIG)
get_target_property(${basename}_${property}_RELEASE ${target} ${property}_RELEASE)
get_target_property(${basename}_${property}_RELWITHDEBINFO ${target} ${property}_RELWITHDEBINFO)
@@ -40,6 +41,8 @@ macro(select_library_location target basename)
set(${basename}_LIBRARY ${${basename}_${property}_MINSIZEREL})
elseif(${basename}_${property}_DEBUG)
set(${basename}_LIBRARY ${${basename}_${property}_DEBUG})
+ elseif(${basename}_${property}_NOCONFIG)
+ set(${basename}_LIBRARY ${${basename}_${property}_NOCONFIG})
endif()
endforeach()
endif()
@@ -49,6 +52,7 @@ macro(select_executable_location target basename)
if(TARGET ${target})
get_target_property(${basename}_IMPORTED_LOCATION_DEBUG ${target} IMPORTED_LOCATION_DEBUG)
get_target_property(${basename}_IMPORTED_LOCATION_MINSIZEREL ${target} IMPORTED_LOCATION_MINSIZEREL)
+ get_target_property(${basename}_IMPORTED_LOCATION_NOCONFIG ${target} IMPORTED_LOCATION_NOCONFIG)
get_target_property(${basename}_IMPORTED_LOCATION_RELEASE ${target} IMPORTED_LOCATION_RELEASE)
get_target_property(${basename}_IMPORTED_LOCATION_RELWITHDEBINFO ${target} IMPORTED_LOCATION_RELWITHDEBINFO)
@@ -60,6 +64,8 @@ macro(select_executable_location target basename)
set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_MINSIZEREL})
elseif(${basename}_IMPORTED_LOCATION_DEBUG)
set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_DEBUG})
+ elseif(${basename}_IMPORTED_LOCATION_NOCONFIG)
+ set(${basename}_EXECUTABLE ${${basename}_IMPORTED_LOCATION_NOCONFIG})
endif()
endif()
endmacro()
diff --git a/libxslt.pc.in b/libxslt.pc.in
index 5a73c516..0772ecb4 100644
--- a/libxslt.pc.in
+++ b/libxslt.pc.in
@@ -8,6 +8,6 @@ Name: libxslt
Version: @VERSION@
Description: XSLT library version 2.
Requires: libxml-2.0
-Cflags: @XSLT_INCLUDEDIR@
+Cflags: @XSLT_INCLUDEDIR@ @LIBXSLT_CFLAGS@
Libs: @XSLT_LIBDIR@ -lxslt
Libs.private: @XSLT_PRIVATE_LIBS@
diff --git a/libxslt.spec.in b/libxslt.spec.in
index ad34e3cb..682094cb 100644
--- a/libxslt.spec.in
+++ b/libxslt.spec.in
@@ -69,7 +69,7 @@ rm -f $RPM_BUILD_ROOT%{_libdir}/*.la
rm -rf $RPM_BUILD_ROOT%{_datadir}/doc/%{name}{,-python}-%{version}
%check
-make tests
+make check
%clean
rm -fr %{buildroot}
@@ -96,9 +96,7 @@ rm -fr %{buildroot}
%doc AUTHORS NEWS README Copyright TODO FEATURES
%doc doc/libxslt-api.xml
-%doc doc/libxslt-refs.xml
%doc doc/EXSLT/libexslt-api.xml
-%doc doc/EXSLT/libexslt-refs.xml
%doc %{_mandir}/man3/libxslt.3*
%doc %{_mandir}/man3/libexslt.3*
%doc doc/*.html doc/html doc/*.gif doc/*.png
diff --git a/libxslt/Makefile.am b/libxslt/Makefile.am
index 9560dc3b..d2af7ded 100644
--- a/libxslt/Makefile.am
+++ b/libxslt/Makefile.am
@@ -1,7 +1,5 @@
AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libxslt
-AM_CFLAGS = $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
-
lib_LTLIBRARIES = libxslt.la
xsltincdir = $(includedir)/libxslt
@@ -61,6 +59,7 @@ endif
libxslt_la_LIBADD = $(LIBXML_LIBS) $(EXTRA_LIBS) $(LIBM)
libxslt_la_LDFLAGS = \
+ $(AM_LDFLAGS) -no-undefined \
$(LIBXSLT_VERSION_SCRIPT) \
-version-info $(LIBXSLT_VERSION_INFO)
diff --git a/libxslt/attributes.c b/libxslt/attributes.c
index 8a64f3e7..4cc49d0d 100644
--- a/libxslt/attributes.c
+++ b/libxslt/attributes.c
@@ -87,6 +87,7 @@ typedef xsltAttrSetContext *xsltAttrSetContextPtr;
struct _xsltAttrSetContext {
xsltStylesheetPtr topStyle;
xsltStylesheetPtr style;
+ int error;
};
static void
@@ -274,7 +275,7 @@ xsltAddUseAttrSetList(xsltUseAttrSetPtr list, const xmlChar *ncname,
* Returns the newly allocated xsltAttrSetPtr or NULL in case of error.
*/
static xsltAttrSetPtr
-xsltNewAttrSet() {
+xsltNewAttrSet(void) {
xsltAttrSetPtr cur;
cur = (xsltAttrSetPtr) xmlMalloc(sizeof(xsltAttrSet));
@@ -421,9 +422,12 @@ xsltParseStylesheetAttributeSet(xsltStylesheetPtr style, xmlNodePtr cur) {
set = xmlHashLookup2(style->attributeSets, ncname, nsUri);
if (set == NULL) {
set = xsltNewAttrSet();
- if (set == NULL)
+ if ((set == NULL) ||
+ (xmlHashAddEntry2(style->attributeSets, ncname, nsUri, set) < 0)) {
+ xsltGenericError(xsltGenericErrorContext, "memory error\n");
+ xsltFreeAttrSet(set);
return;
- xmlHashAddEntry2(style->attributeSets, ncname, nsUri, set);
+ }
}
/*
@@ -663,6 +667,12 @@ xsltResolveSASCallback(void *payload, void *data,
xsltStylesheetPtr topStyle = asctx->topStyle;
xsltStylesheetPtr style = asctx->style;
+ if (asctx->error) {
+ if (style != topStyle)
+ xsltFreeAttrSet(set);
+ return;
+ }
+
xsltResolveAttrSet(set, topStyle, style, name, ns, 1);
/* Move attribute sets to top stylesheet. */
@@ -675,6 +685,8 @@ xsltResolveSASCallback(void *payload, void *data,
xsltGenericError(xsltGenericErrorContext,
"xsl:attribute-set : internal error, can't move imported "
" attribute set %s\n", name);
+ asctx->error = 1;
+ xsltFreeAttrSet(set);
}
}
}
@@ -695,6 +707,7 @@ xsltResolveStylesheetAttributeSet(xsltStylesheetPtr style) {
"Resolving attribute sets references\n");
#endif
asctx.topStyle = style;
+ asctx.error = 0;
cur = style;
while (cur != NULL) {
if (cur->attributeSets != NULL) {
diff --git a/libxslt/attributes.h b/libxslt/attributes.h
index 05b8a6e9..d9b99a74 100644
--- a/libxslt/attributes.h
+++ b/libxslt/attributes.h
@@ -13,6 +13,7 @@
#include <libxml/tree.h>
#include "xsltexports.h"
+#include "xsltInternals.h"
#ifdef __cplusplus
extern "C" {
diff --git a/libxslt/attrvt.c b/libxslt/attrvt.c
index a885526e..9d74a81b 100644
--- a/libxslt/attrvt.c
+++ b/libxslt/attrvt.c
@@ -154,12 +154,9 @@ xsltSetAttrVTsegment(xsltAttrVTPtr avt, void *val) {
if (avt->nb_seg >= avt->max_seg) {
size_t size = sizeof(xsltAttrVT) +
(avt->max_seg + MAX_AVT_SEG) * sizeof(void *);
- xsltAttrVTPtr tmp = (xsltAttrVTPtr) xmlRealloc(avt, size);
- if (tmp == NULL) {
- xsltFreeAttrVT(avt);
+ avt = (xsltAttrVTPtr) xmlRealloc(avt, size);
+ if (avt == NULL)
return NULL;
- }
- avt = tmp;
memset(&avt->segments[avt->nb_seg], 0, MAX_AVT_SEG*sizeof(void *));
avt->max_seg += MAX_AVT_SEG;
}
@@ -182,7 +179,8 @@ xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
const xmlChar *cur;
xmlChar *ret = NULL;
xmlChar *expr = NULL;
- xsltAttrVTPtr avt;
+ xmlXPathCompExprPtr comp = NULL;
+ xsltAttrVTPtr avt, tmp;
int i = 0, lastavt = 0;
if ((style == NULL) || (attr == NULL) || (attr->children == NULL))
@@ -246,8 +244,9 @@ xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
str = cur;
if (avt->nb_seg == 0)
avt->strstart = 1;
- if ((avt = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
+ if ((tmp = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
goto error;
+ avt = tmp;
ret = NULL;
lastavt = 0;
}
@@ -280,8 +279,6 @@ xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
XSLT_TODO
goto error;
} else {
- xmlXPathCompExprPtr comp;
-
comp = xsltXPathCompile(style, expr);
if (comp == NULL) {
xsltTransformError(NULL, style, attr->parent,
@@ -293,14 +290,23 @@ xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
if (avt->nb_seg == 0)
avt->strstart = 0;
if (lastavt == 1) {
- if ((avt = xsltSetAttrVTsegment(avt, NULL)) == NULL)
+ if ((tmp = xsltSetAttrVTsegment(avt, NULL)) == NULL) {
+ xsltTransformError(NULL, style, attr->parent,
+ "out of memory\n");
goto error;
+ }
+ avt = tmp;
}
- if ((avt = xsltSetAttrVTsegment(avt, (void *) comp)) == NULL)
+ if ((tmp = xsltSetAttrVTsegment(avt, (void *) comp)) == NULL) {
+ xsltTransformError(NULL, style, attr->parent,
+ "out of memory\n");
goto error;
+ }
+ avt = tmp;
lastavt = 1;
xmlFree(expr);
expr = NULL;
+ comp = NULL;
}
cur++;
str = cur;
@@ -325,8 +331,9 @@ xsltCompileAttr(xsltStylesheetPtr style, xmlAttrPtr attr) {
str = cur;
if (avt->nb_seg == 0)
avt->strstart = 1;
- if ((avt = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
+ if ((tmp = xsltSetAttrVTsegment(avt, (void *) ret)) == NULL)
goto error;
+ avt = tmp;
ret = NULL;
}
@@ -350,6 +357,8 @@ error:
xmlFree(ret);
if (expr != NULL)
xmlFree(expr);
+ if (comp != NULL)
+ xmlXPathFreeCompExpr(comp);
}
diff --git a/libxslt/documents.c b/libxslt/documents.c
index 4aad11bb..51865b85 100644
--- a/libxslt/documents.c
+++ b/libxslt/documents.c
@@ -399,6 +399,8 @@ xsltLoadStyleDocument(xsltStylesheetPtr style, const xmlChar *URI) {
return(NULL);
ret = xsltNewStyleDocument(style, doc);
+ if (ret == NULL)
+ xmlFreeDoc(doc);
return(ret);
}
diff --git a/libxslt/extensions.c b/libxslt/extensions.c
index ea5e8353..91df1d44 100644
--- a/libxslt/extensions.c
+++ b/libxslt/extensions.c
@@ -12,6 +12,7 @@
#define IN_LIBXSLT
#include "libxslt.h"
+#include <stdlib.h>
#include <string.h>
#include <limits.h>
@@ -26,8 +27,10 @@
#endif
#include <libxml/list.h>
#include <libxml/xmlIO.h>
+#include <libxml/threads.h>
#include "xslt.h"
#include "xsltInternals.h"
+#include "xsltlocale.h"
#include "xsltutils.h"
#include "imports.h"
#include "extensions.h"
@@ -738,8 +741,11 @@ xsltStyleInitializeStylesheetModule(xsltStylesheetPtr style,
* Store the user-data in the context of the given stylesheet.
*/
dataContainer = xsltNewExtData(module, userData);
- if (dataContainer == NULL)
+ if (dataContainer == NULL) {
+ if (module->styleShutdownFunc)
+ module->styleShutdownFunc(style, URI, userData);
return (NULL);
+ }
if (xmlHashAddEntry(style->extInfos, URI,
(void *) dataContainer) < 0)
@@ -805,17 +811,13 @@ xsltStyleGetExtData(xsltStylesheetPtr style, const xmlChar * URI)
* Old behaviour.
*/
tmpStyle = style;
- while (tmpStyle != NULL) {
- if (tmpStyle->extInfos != NULL) {
- dataContainer =
- (xsltExtDataPtr) xmlHashLookup(tmpStyle->extInfos, URI);
- if (dataContainer != NULL) {
- return(dataContainer->extData);
- }
- }
- tmpStyle = xsltNextImport(tmpStyle);
+ if (tmpStyle->extInfos != NULL) {
+ dataContainer =
+ (xsltExtDataPtr) xmlHashLookup(tmpStyle->extInfos, URI);
+ if (dataContainer != NULL) {
+ return(dataContainer->extData);
+ }
}
- tmpStyle = style;
#endif
dataContainer =
@@ -920,9 +922,8 @@ xsltGetExtData(xsltTransformContextPtr ctxt, const xmlChar * URI)
return (NULL);
data = xsltNewExtData(module, extData);
- if (data == NULL)
- return (NULL);
- if (xmlHashAddEntry(ctxt->extInfos, URI, (void *) data) < 0) {
+ if ((data == NULL) ||
+ (xmlHashAddEntry(ctxt->extInfos, URI, (void *) data) < 0)) {
xsltTransformError(ctxt, NULL, NULL,
"Failed to register module data: %s\n",
URI);
@@ -994,6 +995,8 @@ xsltInitCtxtExt(void *payload, void *data, const xmlChar * URI)
}
ctxtData = xsltNewExtData(module, extData);
if (ctxtData == NULL) {
+ if (module->shutdownFunc)
+ module->shutdownFunc(ctxt->ctxt, URI, extData);
ctxt->ret = -1;
return;
}
@@ -1001,6 +1004,9 @@ xsltInitCtxtExt(void *payload, void *data, const xmlChar * URI)
if (ctxt->ctxt->extInfos == NULL)
ctxt->ctxt->extInfos = xmlHashCreate(10);
if (ctxt->ctxt->extInfos == NULL) {
+ if (module->shutdownFunc)
+ module->shutdownFunc(ctxt->ctxt, URI, extData);
+ xsltFreeExtData(ctxtData);
ctxt->ret = -1;
return;
}
@@ -2343,32 +2349,34 @@ xsltDebugDumpExtensions(FILE * output)
output = stdout;
fprintf(output,
"Registered XSLT Extensions\n--------------------------\n");
- if (!xsltFunctionsHash)
+ xmlMutexLock(xsltExtMutex);
+ if (!xsltFunctionsHash) {
fprintf(output, "No registered extension functions\n");
- else {
- fprintf(output, "Registered Extension Functions:\n");
- xmlMutexLock(xsltExtMutex);
+ } else {
+ fprintf(output, "Registered extension functions:\n");
xmlHashScanFull(xsltFunctionsHash, xsltDebugDumpExtensionsCallback,
output);
- xmlMutexUnlock(xsltExtMutex);
}
- if (!xsltElementsHash)
- fprintf(output, "\nNo registered extension elements\n");
- else {
- fprintf(output, "\nRegistered Extension Elements:\n");
- xmlMutexLock(xsltExtMutex);
+ if (!xsltTopLevelsHash) {
+ fprintf(output, "\nNo registered top-level extension elements\n");
+ } else {
+ fprintf(output, "\nRegistered top-level extension elements:\n");
+ xmlHashScanFull(xsltTopLevelsHash, xsltDebugDumpExtensionsCallback,
+ output);
+ }
+ if (!xsltElementsHash) {
+ fprintf(output, "\nNo registered instruction extension elements\n");
+ } else {
+ fprintf(output, "\nRegistered instruction extension elements:\n");
xmlHashScanFull(xsltElementsHash, xsltDebugDumpExtensionsCallback,
output);
- xmlMutexUnlock(xsltExtMutex);
}
- if (!xsltExtensionsHash)
+ if (!xsltExtensionsHash) {
fprintf(output, "\nNo registered extension modules\n");
- else {
- fprintf(output, "\nRegistered Extension Modules:\n");
- xmlMutexLock(xsltExtMutex);
+ } else {
+ fprintf(output, "\nRegistered extension modules:\n");
xmlHashScanFull(xsltExtensionsHash, xsltDebugDumpExtModulesCallback,
output);
- xmlMutexUnlock(xsltExtMutex);
}
-
+ xmlMutexUnlock(xsltExtMutex);
}
diff --git a/libxslt/functions.c b/libxslt/functions.c
index ed2b0023..283ff24b 100644
--- a/libxslt/functions.c
+++ b/libxslt/functions.c
@@ -242,14 +242,14 @@ xsltDocumentFunction(xmlXPathParserContextPtr ctxt, int nargs)
obj2 = valuePop(ctxt);
}
- if (ctxt->value->type == XPATH_NODESET) {
+ if ((ctxt->value != NULL) && (ctxt->value->type == XPATH_NODESET)) {
int i;
xmlXPathObjectPtr newobj, ret;
obj = valuePop(ctxt);
ret = xmlXPathNewNodeSet(NULL);
- if ((obj != NULL) && obj->nodesetval) {
+ if ((obj != NULL) && (obj->nodesetval != NULL) && (ret != NULL)) {
for (i = 0; i < obj->nodesetval->nodeNr; i++) {
valuePush(ctxt,
xmlXPathNewNodeSet(obj->nodesetval->nodeTab[i]));
@@ -261,11 +261,15 @@ xsltDocumentFunction(xmlXPathParserContextPtr ctxt, int nargs)
xmlXPathNewNodeSet(obj->nodesetval->
nodeTab[i]));
}
+ if (ctxt->error)
+ break;
xsltDocumentFunction(ctxt, 2);
newobj = valuePop(ctxt);
- ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
- newobj->nodesetval);
- xmlXPathFreeObject(newobj);
+ if (newobj != NULL) {
+ ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
+ newobj->nodesetval);
+ xmlXPathFreeObject(newobj);
+ }
}
}
@@ -280,7 +284,7 @@ xsltDocumentFunction(xmlXPathParserContextPtr ctxt, int nargs)
* Make sure it's converted to a string
*/
xmlXPathStringFunction(ctxt, 1);
- if (ctxt->value->type != XPATH_STRING) {
+ if ((ctxt->value == NULL) || (ctxt->value->type != XPATH_STRING)) {
xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
"document() : invalid arg expecting a string\n");
ctxt->error = XPATH_INVALID_TYPE;
@@ -379,6 +383,12 @@ xsltKeyFunction(xmlXPathParserContextPtr ctxt, int nargs){
xmlXPathObjectPtr newobj, ret;
ret = xmlXPathNewNodeSet(NULL);
+ if (ret == NULL) {
+ ctxt->error = XPATH_MEMORY_ERROR;
+ xmlXPathFreeObject(obj1);
+ xmlXPathFreeObject(obj2);
+ return;
+ }
if (obj2->nodesetval != NULL) {
for (i = 0; i < obj2->nodesetval->nodeNr; i++) {
@@ -388,8 +398,9 @@ xsltKeyFunction(xmlXPathParserContextPtr ctxt, int nargs){
xmlXPathStringFunction(ctxt, 1);
xsltKeyFunction(ctxt, 2);
newobj = valuePop(ctxt);
- ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
- newobj->nodesetval);
+ if (newobj != NULL)
+ ret->nodesetval = xmlXPathNodeSetMerge(ret->nodesetval,
+ newobj->nodesetval);
xmlXPathFreeObject(newobj);
}
}
@@ -446,13 +457,13 @@ xsltKeyFunction(xmlXPathParserContextPtr ctxt, int nargs){
*/
valuePush(ctxt, obj2);
xmlXPathStringFunction(ctxt, 1);
- if ((ctxt->value == NULL) || (ctxt->value->type != XPATH_STRING)) {
+ obj2 = valuePop(ctxt);
+ if ((obj2 == NULL) || (obj2->type != XPATH_STRING)) {
xsltTransformError(tctxt, NULL, tctxt->inst,
"key() : invalid arg expecting a string\n");
ctxt->error = XPATH_INVALID_TYPE;
goto error;
}
- obj2 = valuePop(ctxt);
value = obj2->stringval;
/*
@@ -555,6 +566,10 @@ xsltUnparsedEntityURIFunction(xmlXPathParserContextPtr ctxt, int nargs){
obj = valuePop(ctxt);
if (obj->type != XPATH_STRING) {
obj = xmlXPathConvertString(obj);
+ if (obj == NULL) {
+ xmlXPathErr(ctxt, XPATH_MEMORY_ERROR);
+ return;
+ }
}
str = obj->stringval;
@@ -647,7 +662,8 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs)
return;
}
- if (formatValues != NULL) {
+ if ((ctxt->error == 0) &&
+ (formatValues != NULL) && (formatObj != NULL) && (numberObj != NULL)) {
if (xsltFormatNumberConversion(formatValues,
formatObj->stringval,
numberObj->floatval,
@@ -672,11 +688,16 @@ xsltFormatNumberFunction(xmlXPathParserContextPtr ctxt, int nargs)
*/
void
xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){
- static char base_address;
+ xsltTransformContextPtr tctxt;
xmlNodePtr cur = NULL;
xmlXPathObjectPtr obj = NULL;
- long val;
- xmlChar str[30];
+ char *str;
+ const xmlChar *nsPrefix = NULL;
+ void **psviPtr;
+ unsigned long id;
+ size_t size, nsPrefixSize;
+
+ tctxt = xsltXPathGetTransformContext(ctxt);
if (nargs == 0) {
cur = ctxt->context->node;
@@ -686,16 +707,15 @@ xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){
if ((ctxt->value == NULL) || (ctxt->value->type != XPATH_NODESET)) {
ctxt->error = XPATH_INVALID_TYPE;
- xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
+ xsltTransformError(tctxt, NULL, NULL,
"generate-id() : invalid arg expecting a node-set\n");
- return;
+ goto out;
}
obj = valuePop(ctxt);
nodelist = obj->nodesetval;
if ((nodelist == NULL) || (nodelist->nodeNr <= 0)) {
- xmlXPathFreeObject(obj);
valuePush(ctxt, xmlXPathNewCString(""));
- return;
+ goto out;
}
cur = nodelist->nodeTab[0];
for (i = 1;i < nodelist->nodeNr;i++) {
@@ -704,22 +724,93 @@ xsltGenerateIdFunction(xmlXPathParserContextPtr ctxt, int nargs){
cur = nodelist->nodeTab[i];
}
} else {
- xsltTransformError(xsltXPathGetTransformContext(ctxt), NULL, NULL,
+ xsltTransformError(tctxt, NULL, NULL,
"generate-id() : invalid number of args %d\n", nargs);
ctxt->error = XPATH_INVALID_ARITY;
- return;
+ goto out;
}
- if (obj)
- xmlXPathFreeObject(obj);
+ size = 30; /* for "id%lu" */
+
+ if (cur->type == XML_NAMESPACE_DECL) {
+ xmlNsPtr ns = (xmlNsPtr) cur;
- val = (long)((char *)cur - (char *)&base_address);
- if (val >= 0) {
- snprintf((char *)str, sizeof(str), "idp%ld", val);
+ nsPrefix = ns->prefix;
+ if (nsPrefix == NULL)
+ nsPrefix = BAD_CAST "";
+ nsPrefixSize = xmlStrlen(nsPrefix);
+ /* For "ns" and hex-encoded string */
+ size += nsPrefixSize * 2 + 2;
+
+ /* Parent is stored in 'next'. */
+ cur = (xmlNodePtr) ns->next;
+ }
+
+ psviPtr = xsltGetPSVIPtr(cur);
+ if (psviPtr == NULL) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "generate-id(): invalid node type %d\n", cur->type);
+ ctxt->error = XPATH_INVALID_TYPE;
+ goto out;
+ }
+
+ if (xsltGetSourceNodeFlags(cur) & XSLT_SOURCE_NODE_HAS_ID) {
+ id = (unsigned long) (size_t) *psviPtr;
} else {
- snprintf((char *)str, sizeof(str), "idm%ld", -val);
+ if (cur->type == XML_TEXT_NODE && cur->line == USHRT_MAX) {
+ /* Text nodes store big line numbers in psvi. */
+ cur->line = 0;
+ } else if (*psviPtr != NULL) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "generate-id(): psvi already set\n");
+ ctxt->error = XPATH_MEMORY_ERROR;
+ goto out;
+ }
+
+ if (tctxt->currentId == ULONG_MAX) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "generate-id(): id overflow\n");
+ ctxt->error = XPATH_MEMORY_ERROR;
+ goto out;
+ }
+
+ id = ++tctxt->currentId;
+ *psviPtr = (void *) (size_t) id;
+ xsltSetSourceNodeFlags(tctxt, cur, XSLT_SOURCE_NODE_HAS_ID);
}
- valuePush(ctxt, xmlXPathNewString(str));
+
+ str = xmlMalloc(size);
+ if (str == NULL) {
+ xsltTransformError(tctxt, NULL, NULL,
+ "generate-id(): out of memory\n");
+ ctxt->error = XPATH_MEMORY_ERROR;
+ goto out;
+ }
+ if (nsPrefix == NULL) {
+ snprintf(str, size, "id%lu", id);
+ } else {
+ size_t i, j;
+
+ snprintf(str, size, "id%luns", id);
+
+ /*
+ * Only ASCII alphanumerics are allowed, so we hex-encode the prefix.
+ */
+ j = strlen(str);
+ for (i = 0; i < nsPrefixSize; i++) {
+ int v;
+
+ v = nsPrefix[i] >> 4;
+ str[j++] = v < 10 ? '0' + v : 'A' + (v - 10);
+ v = nsPrefix[i] & 15;
+ str[j++] = v < 10 ? '0' + v : 'A' + (v - 10);
+ }
+ str[j] = '\0';
+ }
+ valuePush(ctxt, xmlXPathWrapString(BAD_CAST str));
+
+out:
+ xmlXPathFreeObject(obj);
}
/**
diff --git a/libxslt/imports.c b/libxslt/imports.c
index 4f5de03f..132c5bcc 100644
--- a/libxslt/imports.c
+++ b/libxslt/imports.c
@@ -15,7 +15,7 @@
#include <string.h>
#include <libxml/xmlmemory.h>
-#include <libxml/tree.h>
+#include <libxml/parser.h>
#include <libxml/hash.h>
#include <libxml/xmlerror.h>
#include <libxml/uri.h>
@@ -53,6 +53,55 @@ static void xsltFixImportedCompSteps(xsltStylesheetPtr master,
}
}
+#define XSLT_MAX_NESTING 40
+
+static int
+xsltCheckCycle(xsltStylesheetPtr style, xmlNodePtr cur, const xmlChar *URI) {
+ xsltStylesheetPtr ancestor;
+ xsltDocumentPtr docptr;
+ int depth;
+
+ /*
+ * Check imported stylesheets.
+ */
+ depth = 0;
+ ancestor = style;
+ while (ancestor != NULL) {
+ if (++depth >= XSLT_MAX_NESTING) {
+ xsltTransformError(NULL, style, cur,
+ "maximum nesting depth exceeded: %s\n", URI);
+ return(-1);
+ }
+ if (xmlStrEqual(ancestor->doc->URL, URI)) {
+ xsltTransformError(NULL, style, cur,
+ "recursion detected on imported URL %s\n", URI);
+ return(-1);
+ }
+
+ /*
+ * Check included stylesheets.
+ */
+ docptr = ancestor->includes;
+ while (docptr != NULL) {
+ if (++depth >= XSLT_MAX_NESTING) {
+ xsltTransformError(NULL, style, cur,
+ "maximum nesting depth exceeded: %s\n", URI);
+ return(-1);
+ }
+ if (xmlStrEqual(docptr->doc->URL, URI)) {
+ xsltTransformError(NULL, style, cur,
+ "recursion detected on included URL %s\n", URI);
+ return(-1);
+ }
+ docptr = docptr->includes;
+ }
+
+ ancestor = ancestor->parent;
+ }
+
+ return(0);
+}
+
/**
* xsltParseStylesheetImport:
* @style: the XSLT stylesheet
@@ -91,17 +140,8 @@ xsltParseStylesheetImport(xsltStylesheetPtr style, xmlNodePtr cur) {
goto error;
}
- res = style;
- while (res != NULL) {
- if (res->doc == NULL)
- break;
- if (xmlStrEqual(res->doc->URL, URI)) {
- xsltTransformError(NULL, style, cur,
- "xsl:import : recursion detected on imported URL %s\n", URI);
- goto error;
- }
- res = res->parent;
- }
+ if (xsltCheckCycle(style, cur, URI) < 0)
+ goto error;
/*
* Security framework check
@@ -170,7 +210,6 @@ xsltParseStylesheetInclude(xsltStylesheetPtr style, xmlNodePtr cur) {
xmlChar *URI = NULL;
xsltStylesheetPtr result;
xsltDocumentPtr include;
- xsltDocumentPtr docptr;
int oldNopreproc;
if ((cur == NULL) || (style == NULL))
@@ -191,19 +230,8 @@ xsltParseStylesheetInclude(xsltStylesheetPtr style, xmlNodePtr cur) {
goto error;
}
- /*
- * in order to detect recursion, we check all previously included
- * stylesheets.
- */
- docptr = style->includes;
- while (docptr != NULL) {
- if (xmlStrEqual(docptr->doc->URL, URI)) {
- xsltTransformError(NULL, style, cur,
- "xsl:include : recursion detected on included URL %s\n", URI);
- goto error;
- }
- docptr = docptr->includes;
- }
+ if (xsltCheckCycle(style, cur, URI) < 0)
+ goto error;
include = xsltLoadStyleDocument(style, URI);
if (include == NULL) {
diff --git a/libxslt/keys.c b/libxslt/keys.c
index ca0779c5..f23cc4e9 100644
--- a/libxslt/keys.c
+++ b/libxslt/keys.c
@@ -294,6 +294,8 @@ xsltAddKey(xsltStylesheetPtr style, const xmlChar *name,
#endif
key = xsltNewKeyDef(name, nameURI);
+ if (key == NULL)
+ return(-1);
key->match = xmlStrdup(match);
key->use = xmlStrdup(use);
key->inst = inst;
@@ -827,31 +829,17 @@ fprintf(stderr, "xsltInitCtxtKey %s : %d\n", keyDef->name, ctxt->keyInitLevel);
keylist = xmlXPathNodeSetCreate(cur);
if (keylist == NULL)
goto error;
- xmlHashAddEntry(table->keys, str, keylist);
+ if (xmlHashAddEntry(table->keys, str, keylist) < 0) {
+ xmlXPathFreeNodeSet(keylist);
+ goto error;
+ }
} else {
/*
* TODO: How do we know if this function failed?
*/
xmlXPathNodeSetAdd(keylist, cur);
}
- switch (cur->type) {
- case XML_ELEMENT_NODE:
- case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
- case XML_PI_NODE:
- case XML_COMMENT_NODE:
- cur->psvi = keyDef;
- break;
- case XML_ATTRIBUTE_NODE:
- ((xmlAttrPtr) cur)->psvi = keyDef;
- break;
- case XML_DOCUMENT_NODE:
- case XML_HTML_DOCUMENT_NODE:
- ((xmlDocPtr) cur)->psvi = keyDef;
- break;
- default:
- break;
- }
+ xsltSetSourceNodeFlags(ctxt, cur, XSLT_SOURCE_NODE_HAS_KEY);
xmlFree(str);
str = NULL;
diff --git a/libxslt/libxslt.syms b/libxslt/libxslt.syms
index 94b1d8aa..8112ad29 100644
--- a/libxslt/libxslt.syms
+++ b/libxslt/libxslt.syms
@@ -1,15 +1,5 @@
#
-# Officially exported symbols, for which header
-# file definitions are installed in /usr/include/libxslt
-#
-# Automatically generated from symbols.xml and syms.xsl
-#
-# Versions here are *fixed* to match the libxslt version
-# at which the symbol was introduced. This ensures that
-# a new client app requiring symbol foo() can't accidentally
-# run with old libxslt.so not providing foo() - the global
-# soname version info can't enforce this since we never
-# change the soname
+# Retained for backward compatibility. Don't add new symbols.
#
LIBXML2_1.0.11 {
diff --git a/libxslt/numbers.c b/libxslt/numbers.c
index 9c74f0d4..3cd881e3 100644
--- a/libxslt/numbers.c
+++ b/libxslt/numbers.c
@@ -116,7 +116,7 @@ xsltIsLetterDigit(int val) {
#define IS_DIGIT_ONE(x) xsltIsDigitZero((x)-1)
static int
-xsltIsDigitZero(unsigned int ch)
+xsltIsDigitZero(int ch)
{
/*
* Reference: ftp://ftp.unicode.org/Public/UNIDATA/UnicodeData.txt
@@ -183,7 +183,7 @@ xsltNumberFormatDecimal(xmlBufferPtr buffer,
i = -1;
break;
}
- *(--pointer) = (xmlChar)val;
+ *(--pointer) = val;
}
else {
/*
@@ -353,8 +353,7 @@ xsltNumberFormatTokenize(const xmlChar *format,
* Insert initial non-alphanumeric token.
* There is always such a token in the list, even if NULL
*/
- while (!xsltIsLetterDigit(val = xmlStringCurrentChar(NULL, format+ix,
- &len))) {
+ while (!xsltIsLetterDigit(val = xsltGetUTF8CharZ(format+ix, &len))) {
if (format[ix] == 0) /* if end of format string */
break; /* while */
ix += len;
@@ -377,19 +376,19 @@ xsltNumberFormatTokenize(const xmlChar *format,
tokens->end = NULL;
}
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
if (IS_DIGIT_ONE(val) ||
IS_DIGIT_ZERO(val)) {
tokens->tokens[tokens->nTokens].width = 1;
while (IS_DIGIT_ZERO(val)) {
tokens->tokens[tokens->nTokens].width++;
ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
}
if (IS_DIGIT_ONE(val)) {
tokens->tokens[tokens->nTokens].token = val - 1;
ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
} else {
tokens->tokens[tokens->nTokens].token = '0';
tokens->tokens[tokens->nTokens].width = 1;
@@ -400,7 +399,7 @@ xsltNumberFormatTokenize(const xmlChar *format,
(val == 'i') ) {
tokens->tokens[tokens->nTokens].token = val;
ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
} else {
/* XSLT section 7.7
* "Any other format token indicates a numbering sequence
@@ -422,7 +421,7 @@ xsltNumberFormatTokenize(const xmlChar *format,
*/
while (xsltIsLetterDigit(val)) {
ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
}
/*
@@ -433,7 +432,7 @@ xsltNumberFormatTokenize(const xmlChar *format,
if (val == 0)
break; /* while */
ix += len;
- val = xmlStringCurrentChar(NULL, format+ix, &len);
+ val = xsltGetUTF8CharZ(format+ix, &len);
}
if (ix > j)
tokens->end = xmlStrndup(&format[j], ix - j);
@@ -965,6 +964,7 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
xmlChar *the_format, *prefix = NULL, *suffix = NULL;
xmlChar *nprefix, *nsuffix = NULL;
int prefix_length, suffix_length = 0, nprefix_length, nsuffix_length;
+ int exp10;
double scale;
int j, len = 0;
int self_grouping_len;
@@ -985,32 +985,12 @@ xsltFormatNumberConversion(xsltDecimalFormatPtr self,
"Invalid format (0-length)\n");
}
*result = NULL;
- switch (xmlXPathIsInf(number)) {
- case -1:
- if (self->minusSign == NULL)
- *result = xmlStrdup(BAD_CAST "-");
- else
- *result = xmlStrdup(self->minusSign);
- /* Intentional fall-through */
- case 1:
- if ((self == NULL) || (self->infinity == NULL))
- *result = xmlStrcat(*result, BAD_CAST "Infinity");
- else
- *result = xmlStrcat(*result, self->infinity);
- return(status);
- default:
- if (xmlXPathIsNaN(number)) {
- if ((self == NULL) || (self->noNumber == NULL))
- *result = xmlStrdup(BAD_CAST "NaN");
- else
- *result = xmlStrdup(self->noNumber);
- return(status);
- }
- }
-
- buffer = xmlBufferCreate();
- if (buffer == NULL) {
- return XPATH_MEMORY_ERROR;
+ if (xmlXPathIsNaN(number)) {
+ if ((self == NULL) || (self->noNumber == NULL))
+ *result = xmlStrdup(BAD_CAST "NaN");
+ else
+ *result = xmlStrdup(self->noNumber);
+ return(status);
}
format_info.integer_hash = 0;
@@ -1283,6 +1263,30 @@ OUTPUT_NUMBER:
format_info.add_decimal = TRUE;
}
+ /* Apply multiplier */
+ number *= (double)format_info.multiplier;
+ switch (xmlXPathIsInf(number)) {
+ case -1:
+ if (self->minusSign == NULL)
+ *result = xmlStrdup(BAD_CAST "-");
+ else
+ *result = xmlStrdup(self->minusSign);
+ /* Intentional fall-through */
+ case 1:
+ if ((self == NULL) || (self->infinity == NULL))
+ *result = xmlStrcat(*result, BAD_CAST "Infinity");
+ else
+ *result = xmlStrcat(*result, self->infinity);
+ return(status);
+ default:
+ break;
+ }
+
+ buffer = xmlBufferCreate();
+ if (buffer == NULL) {
+ return XPATH_MEMORY_ERROR;
+ }
+
/* Ready to output our number. First see if "default sign" is required */
if (default_sign != 0)
xmlBufferAdd(buffer, self->minusSign, xmlUTF8Strsize(self->minusSign, 1));
@@ -1297,10 +1301,24 @@ OUTPUT_NUMBER:
j += len;
}
+ /* Round to n digits */
+ number = fabs(number);
+ exp10 = format_info.frac_digits + format_info.frac_hash;
+ /* DBL_MAX_10_EXP should be 308 on IEEE platforms. */
+ if (exp10 > DBL_MAX_10_EXP) {
+ if (format_info.frac_digits > DBL_MAX_10_EXP) {
+ format_info.frac_digits = DBL_MAX_10_EXP;
+ format_info.frac_hash = 0;
+ } else {
+ format_info.frac_hash = DBL_MAX_10_EXP - format_info.frac_digits;
+ }
+ exp10 = DBL_MAX_10_EXP;
+ }
+ scale = pow(10.0, (double) exp10);
+ number += .5 / scale;
+ number -= fmod(number, 1 / scale);
+
/* Next do the integer part of the number */
- number = fabs(number) * (double)format_info.multiplier;
- scale = pow(10.0, (double)(format_info.frac_digits + format_info.frac_hash));
- number = floor((scale * number + 0.5)) / scale;
if ((self->grouping != NULL) &&
(self->grouping[0] != 0)) {
int gchar;
diff --git a/libxslt/pattern.c b/libxslt/pattern.c
index da3444f2..581f1791 100644
--- a/libxslt/pattern.c
+++ b/libxslt/pattern.c
@@ -311,10 +311,6 @@ xsltCompMatchAdd(xsltParserContextPtr ctxt, xsltCompMatchPtr comp,
"xsltCompMatchAdd: memory re-allocation failure.\n");
if (ctxt->style != NULL)
ctxt->style->errors++;
- if (value)
- xmlFree(value);
- if (value2)
- xmlFree(value2);
return (-1);
}
comp->maxStep *= 2;
@@ -483,16 +479,12 @@ xsltReverseCompMatch(xsltParserContextPtr ctxt, xsltCompMatchPtr comp) {
static int
xsltPatPushState(xsltTransformContextPtr ctxt, xsltStepStates *states,
int step, xmlNodePtr node) {
- if ((states->states == NULL) || (states->maxstates <= 0)) {
- states->maxstates = 4;
- states->nbstates = 0;
- states->states = xmlMalloc(4 * sizeof(xsltStepState));
- }
- else if (states->maxstates <= states->nbstates) {
+ if (states->maxstates <= states->nbstates) {
xsltStepState *tmp;
+ int newMax = states->maxstates == 0 ? 4 : 2 * states->maxstates;
tmp = (xsltStepStatePtr) xmlRealloc(states->states,
- 2 * states->maxstates * sizeof(xsltStepState));
+ newMax * sizeof(xsltStepState));
if (tmp == NULL) {
xsltGenericError(xsltGenericErrorContext,
"xsltPatPushState: memory re-allocation failure.\n");
@@ -500,7 +492,7 @@ xsltPatPushState(xsltTransformContextPtr ctxt, xsltStepStates *states,
return(-1);
}
states->states = tmp;
- states->maxstates *= 2;
+ states->maxstates = newMax;
}
states->states[states->nbstates].step = step;
states->states[states->nbstates++].node = node;
@@ -1234,10 +1226,10 @@ xsltScanLiteral(xsltParserContextPtr ctxt) {
if (CUR == '"') {
NEXT;
cur = q = CUR_PTR;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
while ((xmlIsCharQ(val)) && (val != '"')) {
cur += len;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
}
if (!xmlIsCharQ(val)) {
ctxt->error = 1;
@@ -1250,10 +1242,10 @@ xsltScanLiteral(xsltParserContextPtr ctxt) {
} else if (CUR == '\'') {
NEXT;
cur = q = CUR_PTR;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
while ((xmlIsCharQ(val)) && (val != '\'')) {
cur += len;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
}
if (!xmlIsCharQ(val)) {
ctxt->error = 1;
@@ -1288,7 +1280,7 @@ xsltScanNCName(xsltParserContextPtr ctxt) {
SKIP_BLANKS;
cur = q = CUR_PTR;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
if (!xmlIsBaseCharQ(val) && !xmlIsIdeographicQ(val) && (val != '_'))
return(NULL);
@@ -1299,7 +1291,7 @@ xsltScanNCName(xsltParserContextPtr ctxt) {
xmlIsCombiningQ(val) ||
xmlIsExtenderQ(val)) {
cur += len;
- val = xmlStringCurrentChar(NULL, cur, &len);
+ val = xsltGetUTF8CharZ(cur, &len);
}
ret = xmlStrndup(q, cur - q);
CUR_PTR = cur;
@@ -1512,6 +1504,7 @@ xsltCompileStepPattern(xsltParserContextPtr ctxt, xmlChar *token, int novar) {
xmlChar *name = NULL;
const xmlChar *URI = NULL;
xmlChar *URL = NULL;
+ xmlChar *ret = NULL;
int level;
xsltAxis axis = 0;
@@ -1588,7 +1581,6 @@ parse_node_test:
xsltTransformError(NULL, NULL, NULL,
"xsltCompileStepPattern : Name expected\n");
ctxt->error = 1;
- xmlFree(URL);
goto error;
}
} else {
@@ -1651,7 +1643,6 @@ parse_predicate:
level = 0;
while (CUR == '[') {
const xmlChar *q;
- xmlChar *ret = NULL;
level++;
NEXT;
@@ -1695,6 +1686,10 @@ error:
xmlFree(token);
if (name != NULL)
xmlFree(name);
+ if (URL != NULL)
+ xmlFree(URL);
+ if (ret != NULL)
+ xmlFree(ret);
}
/**
@@ -2087,6 +2082,8 @@ xsltAddTemplate(xsltStylesheetPtr style, xsltTemplatePtr cur,
if (pat == NULL)
return(-1);
while (pat) {
+ int success = 0;
+
next = pat->next;
pat->next = NULL;
name = NULL;
@@ -2158,17 +2155,15 @@ xsltAddTemplate(xsltStylesheetPtr style, xsltTemplatePtr cur,
if (name != NULL) {
if (style->templatesHash == NULL) {
style->templatesHash = xmlHashCreate(1024);
- if (style->templatesHash == NULL) {
- xsltFreeCompMatch(pat);
- return(-1);
- }
- xmlHashAddEntry3(style->templatesHash, name, mode, modeURI, pat);
+ success = (style->templatesHash != NULL) &&
+ (xmlHashAddEntry3(style->templatesHash, name, mode,
+ modeURI, pat) >= 0);
} else {
list = (xsltCompMatchPtr) xmlHashLookup3(style->templatesHash,
name, mode, modeURI);
if (list == NULL) {
- xmlHashAddEntry3(style->templatesHash, name,
- mode, modeURI, pat);
+ success = (xmlHashAddEntry3(style->templatesHash, name,
+ mode, modeURI, pat) >= 0);
} else {
/*
* Note '<=' since one must choose among the matching
@@ -2188,6 +2183,7 @@ xsltAddTemplate(xsltStylesheetPtr style, xsltTemplatePtr cur,
pat->next = list->next;
list->next = pat;
}
+ success = 1;
}
}
} else if (top != NULL) {
@@ -2207,10 +2203,13 @@ xsltAddTemplate(xsltStylesheetPtr style, xsltTemplatePtr cur,
pat->next = list->next;
list->next = pat;
}
- } else {
+ success = 1;
+ }
+ if (success == 0) {
xsltTransformError(NULL, style, NULL,
"xsltAddTemplate: invalid compiled pattern\n");
xsltFreeCompMatch(pat);
+ xsltFreeCompMatchList(next);
return(-1);
}
#ifdef WITH_XSLT_DEBUG_PATTERN
@@ -2283,7 +2282,6 @@ xsltGetTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
const xmlChar *name = NULL;
xsltCompMatchPtr list = NULL;
float priority;
- int keyed = 0;
if ((ctxt == NULL) || (node == NULL))
return(NULL);
@@ -2361,37 +2359,25 @@ xsltGetTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
list = curstyle->rootMatch;
else
list = curstyle->elemMatch;
- if (node->psvi != NULL) keyed = 1;
break;
case XML_ATTRIBUTE_NODE: {
- xmlAttrPtr attr;
-
list = curstyle->attrMatch;
- attr = (xmlAttrPtr) node;
- if (attr->psvi != NULL) keyed = 1;
break;
}
case XML_PI_NODE:
list = curstyle->piMatch;
- if (node->psvi != NULL) keyed = 1;
break;
case XML_DOCUMENT_NODE:
case XML_HTML_DOCUMENT_NODE: {
- xmlDocPtr doc;
-
list = curstyle->rootMatch;
- doc = (xmlDocPtr) node;
- if (doc->psvi != NULL) keyed = 1;
break;
}
case XML_TEXT_NODE:
case XML_CDATA_SECTION_NODE:
list = curstyle->textMatch;
- if (node->psvi != NULL) keyed = 1;
break;
case XML_COMMENT_NODE:
list = curstyle->commentMatch;
- if (node->psvi != NULL) keyed = 1;
break;
case XML_ENTITY_REF_NODE:
case XML_ENTITY_NODE:
@@ -2461,7 +2447,7 @@ xsltGetTemplate(xsltTransformContextPtr ctxt, xmlNodePtr node,
}
keyed_match:
- if (keyed) {
+ if (xsltGetSourceNodeFlags(node) & XSLT_SOURCE_NODE_HAS_KEY) {
list = curstyle->keyMatch;
while ((list != NULL) &&
((ret == NULL) ||
@@ -2489,27 +2475,7 @@ keyed_match:
if (xsltComputeAllKeys(ctxt, node) == -1)
goto error;
- switch (node->type) {
- case XML_ELEMENT_NODE:
- if (node->psvi != NULL) keyed = 1;
- break;
- case XML_ATTRIBUTE_NODE:
- if (((xmlAttrPtr) node)->psvi != NULL) keyed = 1;
- break;
- case XML_TEXT_NODE:
- case XML_CDATA_SECTION_NODE:
- case XML_COMMENT_NODE:
- case XML_PI_NODE:
- if (node->psvi != NULL) keyed = 1;
- break;
- case XML_DOCUMENT_NODE:
- case XML_HTML_DOCUMENT_NODE:
- if (((xmlDocPtr) node)->psvi != NULL) keyed = 1;
- break;
- default:
- break;
- }
- if (keyed)
+ if (xsltGetSourceNodeFlags(node) & XSLT_SOURCE_NODE_HAS_KEY)
goto keyed_match;
}
if (ret != NULL)
diff --git a/libxslt/preproc.c b/libxslt/preproc.c
index 7d2fa221..fae69a09 100644
--- a/libxslt/preproc.c
+++ b/libxslt/preproc.c
@@ -392,8 +392,6 @@ xsltFreeStylePreComp(xsltStylePreCompPtr comp) {
break;
case XSLT_FUNC_SORT: {
xsltStyleItemSortPtr item = (xsltStyleItemSortPtr) comp;
- if (item->locale != (xsltLocale)0)
- xsltFreeLocale(item->locale);
if (item->comp != NULL)
xmlXPathFreeCompExpr(item->comp);
}
@@ -496,8 +494,6 @@ xsltFreeStylePreComp(xsltStylePreCompPtr comp) {
break;
}
#else
- if (comp->locale != (xsltLocale)0)
- xsltFreeLocale(comp->locale);
if (comp->comp != NULL)
xmlXPathFreeCompExpr(comp->comp);
if (comp->numdata.countPat != NULL)
@@ -743,12 +739,6 @@ xsltSortComp(xsltStylesheetPtr style, xmlNodePtr inst) {
comp->lang = xsltEvalStaticAttrValueTemplate(style, inst,
(const xmlChar *)"lang",
NULL, &comp->has_lang);
- if (comp->lang != NULL) {
- comp->locale = xsltNewLocale(comp->lang);
- }
- else {
- comp->locale = (xsltLocale)0;
- }
comp->select = xsltGetCNsProp(style, inst,(const xmlChar *)"select", XSLT_NAMESPACE);
if (comp->select == NULL) {
diff --git a/libxslt/security.c b/libxslt/security.c
index 1f7187c7..001ee6e4 100644
--- a/libxslt/security.c
+++ b/libxslt/security.c
@@ -37,7 +37,7 @@
#endif
#include <libxml/xmlmemory.h>
-#include <libxml/tree.h>
+#include <libxml/parser.h>
#include <libxml/uri.h>
#include "xslt.h"
#include "xsltInternals.h"
diff --git a/libxslt/templates.c b/libxslt/templates.c
index 4108ed26..f08b9bda 100644
--- a/libxslt/templates.c
+++ b/libxslt/templates.c
@@ -151,7 +151,7 @@ xsltEvalXPathStringNs(xsltTransformContextPtr ctxt, xmlXPathCompExprPtr comp,
if (res != NULL) {
if (res->type != XPATH_STRING)
res = xmlXPathConvertString(res);
- if (res->type == XPATH_STRING) {
+ if ((res != NULL) && (res->type == XPATH_STRING)) {
ret = res->stringval;
res->stringval = NULL;
} else {
@@ -229,7 +229,7 @@ xsltEvalTemplateString(xsltTransformContextPtr ctxt,
insert = xmlNewDocNode(ctxt->output, NULL,
(const xmlChar *)"fake", NULL);
if (insert == NULL) {
- xsltTransformError(ctxt, NULL, contextNode,
+ xsltTransformError(ctxt, NULL, inst,
"Failed to create temporary node\n");
return(NULL);
}
diff --git a/libxslt/transform.c b/libxslt/transform.c
index cb43bb47..54ef821b 100644
--- a/libxslt/transform.c
+++ b/libxslt/transform.c
@@ -40,6 +40,7 @@
#include "xslt.h"
#include "xsltInternals.h"
#include "xsltutils.h"
+#include "xsltlocale.h"
#include "pattern.h"
#include "transform.h"
#include "variables.h"
@@ -119,26 +120,18 @@ xsltApplyXSLTTemplate(xsltTransformContextPtr ctxt,
static int
templPush(xsltTransformContextPtr ctxt, xsltTemplatePtr value)
{
- if (ctxt->templMax == 0) {
- ctxt->templMax = 4;
- ctxt->templTab =
- (xsltTemplatePtr *) xmlMalloc(ctxt->templMax *
- sizeof(ctxt->templTab[0]));
- if (ctxt->templTab == NULL) {
- xmlGenericError(xmlGenericErrorContext, "malloc failed !\n");
- return (0);
- }
- }
- else if (ctxt->templNr >= ctxt->templMax) {
- ctxt->templMax *= 2;
- ctxt->templTab =
- (xsltTemplatePtr *) xmlRealloc(ctxt->templTab,
- ctxt->templMax *
- sizeof(ctxt->templTab[0]));
- if (ctxt->templTab == NULL) {
+ if (ctxt->templNr >= ctxt->templMax) {
+ xsltTemplatePtr *tmp;
+ int newMax = ctxt->templMax == 0 ? 4 : ctxt->templMax * 2;
+
+ tmp = (xsltTemplatePtr *) xmlRealloc(ctxt->templTab,
+ newMax * sizeof(*tmp));
+ if (tmp == NULL) {
xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
return (0);
}
+ ctxt->templTab = tmp;
+ ctxt->templMax = newMax;
}
ctxt->templTab[ctxt->templNr] = value;
ctxt->templ = value;
@@ -492,7 +485,7 @@ void xsltDebugSetDefaultTrace(xsltDebugTraceCodes val) {
*
* Returns the current default debug tracing level mask
*/
-xsltDebugTraceCodes xsltDebugGetDefaultTrace() {
+xsltDebugTraceCodes xsltDebugGetDefaultTrace(void) {
return xsltDefaultTrace;
}
@@ -706,6 +699,10 @@ xsltNewTransformContext(xsltStylesheetPtr style, xmlDocPtr doc) {
cur->xinclude = xsltGetXIncludeDefault();
cur->keyInitLevel = 0;
+ cur->newLocale = xsltNewLocale;
+ cur->freeLocale = xsltFreeLocale;
+ cur->genSortKey = xsltStrxfrm;
+
return(cur);
internal_err:
@@ -716,7 +713,7 @@ internal_err:
/**
* xsltFreeTransformContext:
- * @ctxt: an XSLT parser context
+ * @ctxt: an XSLT transform context
*
* Free up the memory allocated by @ctxt
*/
@@ -1090,8 +1087,10 @@ xsltCopyText(xsltTransformContextPtr ctxt, xmlNodePtr target,
if (xmlDictOwns(ctxt->dict, cur->content))
copy->content = cur->content;
else {
- if ((copy->content = xmlStrdup(cur->content)) == NULL)
+ if ((copy->content = xmlStrdup(cur->content)) == NULL) {
+ xmlFreeNode(copy);
return NULL;
+ }
}
ctxt->lasttext = NULL;
@@ -1993,7 +1992,21 @@ xsltDefaultProcessOneNode(xsltTransformContextPtr ctxt, xmlNodePtr node,
case XML_ELEMENT_NODE:
ctxt->xpathCtxt->contextSize = nbchild;
ctxt->xpathCtxt->proximityPosition = childno;
+
+ if (ctxt->depth >= ctxt->maxTemplateDepth) {
+ xsltTransformError(ctxt, NULL, cur,
+ "xsltDefaultProcessOneNode: Maximum template depth "
+ "exceeded.\n"
+ "You can adjust xsltMaxDepth (--maxdepth) in order to "
+ "raise the maximum number of nested template calls and "
+ "variables/params (currently set to %d).\n",
+ ctxt->maxTemplateDepth);
+ ctxt->state = XSLT_STATE_STOPPED;
+ return;
+ }
+ ctxt->depth++;
xsltProcessOneNode(ctxt, cur, params);
+ ctxt->depth--;
break;
case XML_CDATA_SECTION_NODE:
template = xsltGetTemplate(ctxt, cur, NULL);
@@ -2224,26 +2237,18 @@ xsltLocalVariablePush(xsltTransformContextPtr ctxt,
xsltStackElemPtr variable,
int level)
{
- if (ctxt->varsMax == 0) {
- ctxt->varsMax = 10;
- ctxt->varsTab =
- (xsltStackElemPtr *) xmlMalloc(ctxt->varsMax *
- sizeof(ctxt->varsTab[0]));
- if (ctxt->varsTab == NULL) {
- xmlGenericError(xmlGenericErrorContext, "malloc failed !\n");
- return (-1);
- }
- }
if (ctxt->varsNr >= ctxt->varsMax) {
- ctxt->varsMax *= 2;
- ctxt->varsTab =
- (xsltStackElemPtr *) xmlRealloc(ctxt->varsTab,
- ctxt->varsMax *
- sizeof(ctxt->varsTab[0]));
- if (ctxt->varsTab == NULL) {
+ xsltStackElemPtr *tmp;
+ int newMax = ctxt->varsMax == 0 ? 10 : 2 * ctxt->varsMax;
+
+ tmp = (xsltStackElemPtr *) xmlRealloc(ctxt->varsTab,
+ newMax * sizeof(*tmp));
+ if (tmp == NULL) {
xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
return (-1);
}
+ ctxt->varsTab = tmp;
+ ctxt->varsMax = newMax;
}
ctxt->varsTab[ctxt->varsNr++] = variable;
ctxt->vars = variable;
@@ -2275,17 +2280,17 @@ xsltReleaseLocalRVTs(xsltTransformContextPtr ctxt, xmlDocPtr base)
do {
tmp = cur;
cur = (xmlDocPtr) cur->next;
- if (tmp->psvi == XSLT_RVT_LOCAL) {
+ if (tmp->compression == XSLT_RVT_LOCAL) {
xsltReleaseRVT(ctxt, tmp);
- } else if (tmp->psvi == XSLT_RVT_GLOBAL) {
+ } else if (tmp->compression == XSLT_RVT_GLOBAL) {
xsltRegisterPersistRVT(ctxt, tmp);
- } else if (tmp->psvi == XSLT_RVT_FUNC_RESULT) {
+ } else if (tmp->compression == XSLT_RVT_FUNC_RESULT) {
/*
* This will either register the RVT again or move it to the
* context variable.
*/
xsltRegisterLocalRVT(ctxt, tmp);
- tmp->psvi = XSLT_RVT_FUNC_RESULT;
+ tmp->compression = XSLT_RVT_FUNC_RESULT;
} else {
xmlGenericError(xmlGenericErrorContext,
"xsltReleaseLocalRVTs: Unexpected RVT flag %p\n",
@@ -5747,6 +5752,49 @@ xsltCountKeys(xsltTransformContextPtr ctxt)
}
/**
+ * xsltCleanupSourceDoc:
+ * @doc: Document
+ *
+ * Resets source node flags and ids stored in 'psvi' member.
+ */
+static void
+xsltCleanupSourceDoc(xmlDocPtr doc) {
+ xmlNodePtr cur = (xmlNodePtr) doc;
+ void **psviPtr;
+
+ while (1) {
+ xsltClearSourceNodeFlags(cur, XSLT_SOURCE_NODE_MASK);
+ psviPtr = xsltGetPSVIPtr(cur);
+ if (psviPtr)
+ *psviPtr = NULL;
+
+ if (cur->type == XML_ELEMENT_NODE) {
+ xmlAttrPtr prop = cur->properties;
+
+ while (prop) {
+ prop->atype &= ~(XSLT_SOURCE_NODE_MASK << 27);
+ prop->psvi = NULL;
+ prop = prop->next;
+ }
+ }
+
+ if (cur->children != NULL && cur->type != XML_ENTITY_REF_NODE) {
+ cur = cur->children;
+ } else {
+ if (cur == (xmlNodePtr) doc)
+ return;
+ while (cur->next == NULL) {
+ cur = cur->parent;
+ if (cur == (xmlNodePtr) doc)
+ return;
+ }
+
+ cur = cur->next;
+ }
+ }
+}
+
+/**
* xsltApplyStylesheetInternal:
* @style: a parsed XSLT stylesheet
* @doc: a parsed XML document
@@ -6144,6 +6192,9 @@ xsltApplyStylesheetInternal(xsltStylesheetPtr style, xmlDocPtr doc,
printf("# Reused variables : %d\n", ctxt->cache->dbgReusedVars);
#endif
+ if (ctxt->sourceDocDirty)
+ xsltCleanupSourceDoc(doc);
+
if ((ctxt != NULL) && (userCtxt == NULL))
xsltFreeTransformContext(ctxt);
diff --git a/libxslt/variables.c b/libxslt/variables.c
index 60341d55..c0055c21 100644
--- a/libxslt/variables.c
+++ b/libxslt/variables.c
@@ -123,7 +123,7 @@ xsltRegisterTmpRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
return(-1);
RVT->prev = NULL;
- RVT->psvi = XSLT_RVT_LOCAL;
+ RVT->compression = XSLT_RVT_LOCAL;
/*
* We'll restrict the lifetime of user-created fragments
@@ -163,7 +163,7 @@ xsltRegisterLocalRVT(xsltTransformContextPtr ctxt,
return(-1);
RVT->prev = NULL;
- RVT->psvi = XSLT_RVT_LOCAL;
+ RVT->compression = XSLT_RVT_LOCAL;
/*
* When evaluating "select" expressions of xsl:variable
@@ -255,7 +255,7 @@ xsltExtensionInstructionResultRegister(
* Returns 0 in case of success and -1 in case of error.
*/
int
-xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, void *val) {
+xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, int val) {
int i;
xmlNodePtr cur;
xmlDocPtr doc;
@@ -302,34 +302,36 @@ xsltFlagRVTs(xsltTransformContextPtr ctxt, xmlXPathObjectPtr obj, void *val) {
return(-1);
}
if (doc->name && (doc->name[0] == ' ') &&
- doc->psvi != XSLT_RVT_GLOBAL) {
+ doc->compression != XSLT_RVT_GLOBAL) {
/*
* This is a result tree fragment.
- * We store ownership information in the @psvi field.
+ * We store ownership information in the @compression field.
* TODO: How do we know if this is a doc acquired via the
* document() function?
*/
#ifdef WITH_XSLT_DEBUG_VARIABLE
- XSLT_TRACE(ctxt,XSLT_TRACE_VARIABLES,xsltGenericDebug(xsltGenericDebugContext,
- "Flagging RVT %p: %p -> %p\n", doc, doc->psvi, val));
+ XSLT_TRACE(ctxt, XSLT_TRACE_VARIABLES,
+ xsltGenericDebug(xsltGenericDebugContext,
+ "Flagging RVT %p: %d -> %d\n",
+ (void *) doc, doc->compression, val));
#endif
if (val == XSLT_RVT_LOCAL) {
- if (doc->psvi == XSLT_RVT_FUNC_RESULT)
- doc->psvi = XSLT_RVT_LOCAL;
+ if (doc->compression == XSLT_RVT_FUNC_RESULT)
+ doc->compression = XSLT_RVT_LOCAL;
} else if (val == XSLT_RVT_GLOBAL) {
- if (doc->psvi != XSLT_RVT_LOCAL) {
+ if (doc->compression != XSLT_RVT_LOCAL) {
xmlGenericError(xmlGenericErrorContext,
- "xsltFlagRVTs: Invalid transition %p => GLOBAL\n",
- doc->psvi);
- doc->psvi = XSLT_RVT_GLOBAL;
+ "xsltFlagRVTs: Invalid transition %d => GLOBAL\n",
+ doc->compression);
+ doc->compression = XSLT_RVT_GLOBAL;
return(-1);
}
/* Will be registered as persistant in xsltReleaseLocalRVTs. */
- doc->psvi = XSLT_RVT_GLOBAL;
+ doc->compression = XSLT_RVT_GLOBAL;
} else if (val == XSLT_RVT_FUNC_RESULT) {
- doc->psvi = val;
+ doc->compression = val;
}
}
}
@@ -377,7 +379,7 @@ xsltReleaseRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
/*
* Reset the ownership information.
*/
- RVT->psvi = NULL;
+ RVT->compression = 0;
RVT->next = (xmlNodePtr) ctxt->cache->RVT;
ctxt->cache->RVT = RVT;
@@ -416,7 +418,7 @@ xsltRegisterPersistRVT(xsltTransformContextPtr ctxt, xmlDocPtr RVT)
{
if ((ctxt == NULL) || (RVT == NULL)) return(-1);
- RVT->psvi = XSLT_RVT_GLOBAL;
+ RVT->compression = XSLT_RVT_GLOBAL;
RVT->prev = NULL;
RVT->next = (xmlNodePtr) ctxt->persistRVT;
if (ctxt->persistRVT != NULL)
@@ -575,15 +577,15 @@ xsltFreeStackElem(xsltStackElemPtr elem) {
cur = elem->fragment;
elem->fragment = (xmlDocPtr) cur->next;
- if (cur->psvi == XSLT_RVT_LOCAL) {
+ if (cur->compression == XSLT_RVT_LOCAL) {
xsltReleaseRVT(elem->context, cur);
- } else if (cur->psvi == XSLT_RVT_FUNC_RESULT) {
+ } else if (cur->compression == XSLT_RVT_FUNC_RESULT) {
xsltRegisterLocalRVT(elem->context, cur);
- cur->psvi = XSLT_RVT_FUNC_RESULT;
+ cur->compression = XSLT_RVT_FUNC_RESULT;
} else {
xmlGenericError(xmlGenericErrorContext,
- "xsltFreeStackElem: Unexpected RVT flag %p\n",
- cur->psvi);
+ "xsltFreeStackElem: Unexpected RVT flag %d\n",
+ cur->compression);
}
}
}
@@ -755,26 +757,18 @@ xsltAddStackElem(xsltTransformContextPtr ctxt, xsltStackElemPtr elem)
return(-1);
do {
- if (ctxt->varsMax == 0) {
- ctxt->varsMax = 10;
- ctxt->varsTab =
- (xsltStackElemPtr *) xmlMalloc(ctxt->varsMax *
- sizeof(ctxt->varsTab[0]));
- if (ctxt->varsTab == NULL) {
- xmlGenericError(xmlGenericErrorContext, "malloc failed !\n");
- return (-1);
- }
- }
if (ctxt->varsNr >= ctxt->varsMax) {
- ctxt->varsMax *= 2;
- ctxt->varsTab =
- (xsltStackElemPtr *) xmlRealloc(ctxt->varsTab,
- ctxt->varsMax *
- sizeof(ctxt->varsTab[0]));
- if (ctxt->varsTab == NULL) {
- xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
- return (-1);
- }
+ xsltStackElemPtr *tmp;
+ int newMax = ctxt->varsMax == 0 ? 10 : 2 * ctxt->varsMax;
+
+ tmp = (xsltStackElemPtr *) xmlRealloc(ctxt->varsTab,
+ newMax * sizeof(*tmp));
+ if (tmp == NULL) {
+ xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
+ return (-1);
+ }
+ ctxt->varsTab = tmp;
+ ctxt->varsMax = newMax;
}
ctxt->varsTab[ctxt->varsNr++] = elem;
ctxt->vars = elem;
@@ -986,7 +980,7 @@ xsltEvalVariable(xsltTransformContextPtr ctxt, xsltStackElemPtr variable,
* the Result Tree Fragment.
*/
variable->fragment = container;
- container->psvi = XSLT_RVT_LOCAL;
+ container->compression = XSLT_RVT_LOCAL;
oldOutput = ctxt->output;
oldInsert = ctxt->insert;
@@ -1316,8 +1310,13 @@ xsltEvalGlobalVariables(xsltTransformContextPtr ctxt) {
if (def == NULL) {
def = xsltCopyStackElem(elem);
- xmlHashAddEntry2(ctxt->globalVars,
- elem->name, elem->nameURI, def);
+ if (xmlHashAddEntry2(ctxt->globalVars,
+ elem->name, elem->nameURI, def) < 0) {
+ xmlGenericError(xmlGenericErrorContext,
+ "hash update failed\n");
+ xsltFreeStackElem(def);
+ return(-1);
+ }
} else if ((elem->comp != NULL) &&
(elem->comp->type == XSLT_FUNC_VARIABLE)) {
/*
@@ -1681,7 +1680,7 @@ xsltProcessUserParamInternal(xsltTransformContextPtr ctxt,
int
xsltEvalUserParams(xsltTransformContextPtr ctxt, const char **params) {
- int indx = 0;
+ size_t indx = 0;
const xmlChar *name;
const xmlChar *value;
@@ -1711,7 +1710,7 @@ xsltEvalUserParams(xsltTransformContextPtr ctxt, const char **params) {
int
xsltQuoteUserParams(xsltTransformContextPtr ctxt, const char **params) {
- int indx = 0;
+ size_t indx = 0;
const xmlChar *name;
const xmlChar *value;
@@ -1875,7 +1874,10 @@ xsltRegisterVariable(xsltTransformContextPtr ctxt,
#endif /* else of XSLT_REFACTORED */
variable = xsltBuildVariable(ctxt, (xsltStylePreCompPtr) comp, tree);
- xsltAddStackElem(ctxt, variable);
+ if (xsltAddStackElem(ctxt, variable) < 0) {
+ xsltFreeStackElem(variable);
+ return(-1);
+ }
return(0);
}
diff --git a/libxslt/variables.h b/libxslt/variables.h
index 039288fb..e2adee0f 100644
--- a/libxslt/variables.h
+++ b/libxslt/variables.h
@@ -43,7 +43,7 @@ extern "C" {
*
* RVT is destroyed after the current instructions ends.
*/
-#define XSLT_RVT_LOCAL ((void *)1)
+#define XSLT_RVT_LOCAL 1
/**
* XSLT_RVT_FUNC_RESULT:
@@ -52,14 +52,14 @@ extern "C" {
* destroyed after exiting a template and will be reset to XSLT_RVT_LOCAL or
* XSLT_RVT_VARIABLE in the template that receives the return value.
*/
-#define XSLT_RVT_FUNC_RESULT ((void *)2)
+#define XSLT_RVT_FUNC_RESULT 2
/**
* XSLT_RVT_GLOBAL:
*
* RVT is part of a global variable.
*/
-#define XSLT_RVT_GLOBAL ((void *)3)
+#define XSLT_RVT_GLOBAL 3
/*
* Interfaces for the variable module.
diff --git a/libxslt/xslt.c b/libxslt/xslt.c
index 69116f2b..39a700b0 100644
--- a/libxslt/xslt.c
+++ b/libxslt/xslt.c
@@ -91,13 +91,7 @@ const xmlChar *xsltXSLTAttrMarker = (const xmlChar *) "LRE XSLT Attr";
#ifdef XSLT_LOCALE_WINAPI
extern xmlRMutexPtr xsltLocaleMutex;
#endif
-/*
- * Harmless but avoiding a problem when compiling against a
- * libxml <= 2.3.11 without LIBXML_DEBUG_ENABLED
- */
-#ifndef LIBXML_DEBUG_ENABLED
-double xmlXPathStringEvalNumber(const xmlChar *str);
-#endif
+
/*
* Useful macros
*/
@@ -157,31 +151,23 @@ exclPrefixPush(xsltStylesheetPtr style, xmlChar * value)
{
int i;
- if (style->exclPrefixMax == 0) {
- style->exclPrefixMax = 4;
- style->exclPrefixTab =
- (xmlChar * *)xmlMalloc(style->exclPrefixMax *
- sizeof(style->exclPrefixTab[0]));
- if (style->exclPrefixTab == NULL) {
- xmlGenericError(xmlGenericErrorContext, "malloc failed !\n");
- return (-1);
- }
- }
/* do not push duplicates */
for (i = 0;i < style->exclPrefixNr;i++) {
if (xmlStrEqual(style->exclPrefixTab[i], value))
return(-1);
}
if (style->exclPrefixNr >= style->exclPrefixMax) {
- style->exclPrefixMax *= 2;
- style->exclPrefixTab =
- (xmlChar * *)xmlRealloc(style->exclPrefixTab,
- style->exclPrefixMax *
- sizeof(style->exclPrefixTab[0]));
- if (style->exclPrefixTab == NULL) {
+ xmlChar **tmp;
+ size_t max = style->exclPrefixMax ? style->exclPrefixMax * 2 : 4;
+
+ tmp = xmlRealloc(style->exclPrefixTab,
+ max * sizeof(style->exclPrefixTab[0]));
+ if (tmp == NULL) {
xmlGenericError(xmlGenericErrorContext, "realloc failed !\n");
return (-1);
}
+ style->exclPrefixTab = tmp;
+ style->exclPrefixMax = max;
}
style->exclPrefixTab[style->exclPrefixNr] = value;
style->exclPrefix = value;
@@ -1117,9 +1103,9 @@ xsltGetInheritedNsList(xsltStylesheetPtr style,
xmlNodePtr node)
{
xmlNsPtr cur;
- xmlNsPtr *ret = NULL;
+ xmlNsPtr *ret = NULL, *tmp;
int nbns = 0;
- int maxns = 10;
+ int maxns = 0;
int i;
if ((style == NULL) || (template == NULL) || (node == NULL) ||
@@ -1144,17 +1130,6 @@ xsltGetInheritedNsList(xsltStylesheetPtr style,
if (xmlStrEqual(cur->href, style->exclPrefixTab[i]))
goto skip_ns;
}
- if (ret == NULL) {
- ret =
- (xmlNsPtr *) xmlMalloc((maxns + 1) *
- sizeof(xmlNsPtr));
- if (ret == NULL) {
- xmlGenericError(xmlGenericErrorContext,
- "xsltGetInheritedNsList : out of memory!\n");
- return(0);
- }
- ret[nbns] = NULL;
- }
/*
* Skip shadowed namespace bindings.
*/
@@ -1165,16 +1140,16 @@ xsltGetInheritedNsList(xsltStylesheetPtr style,
}
if (i >= nbns) {
if (nbns >= maxns) {
- maxns *= 2;
- ret = (xmlNsPtr *) xmlRealloc(ret,
- (maxns +
- 1) *
- sizeof(xmlNsPtr));
- if (ret == NULL) {
+ maxns = (maxns == 0) ? 10 : 2 * maxns;
+ tmp = (xmlNsPtr *) xmlRealloc(ret,
+ (maxns + 1) * sizeof(xmlNsPtr));
+ if (tmp == NULL) {
xmlGenericError(xmlGenericErrorContext,
"xsltGetInheritedNsList : realloc failed!\n");
+ xmlFree(ret);
return(0);
}
+ ret = tmp;
}
ret[nbns++] = cur;
ret[nbns] = NULL;
@@ -1330,8 +1305,10 @@ xsltParseStylesheetOutput(xsltStylesheetPtr style, xmlNodePtr cur)
if (elements != NULL) {
if (style->cdataSection == NULL)
style->cdataSection = xmlHashCreate(10);
- if (style->cdataSection == NULL)
+ if (style->cdataSection == NULL) {
+ xmlFree(elements);
return;
+ }
element = elements;
while (*element != 0) {
@@ -1569,8 +1546,10 @@ xsltParseStylesheetPreserveSpace(xsltStylesheetPtr style, xmlNodePtr cur) {
if (style->stripSpaces == NULL)
style->stripSpaces = xmlHashCreate(10);
- if (style->stripSpaces == NULL)
+ if (style->stripSpaces == NULL) {
+ xmlFree(elements);
return;
+ }
element = elements;
while (*element != 0) {
@@ -1698,6 +1677,11 @@ xsltParseStylesheetStripSpace(xsltStylesheetPtr style, xmlNodePtr cur) {
if ((cur == NULL) || (style == NULL) || (cur->type != XML_ELEMENT_NODE))
return;
+ if (style->stripSpaces == NULL)
+ style->stripSpaces = xmlHashCreate(10);
+ if (style->stripSpaces == NULL)
+ return;
+
elements = xmlGetNsProp(cur, (const xmlChar *)"elements", NULL);
if (elements == NULL) {
xsltTransformError(NULL, style, cur,
@@ -1706,11 +1690,6 @@ xsltParseStylesheetStripSpace(xsltStylesheetPtr style, xmlNodePtr cur) {
return;
}
- if (style->stripSpaces == NULL)
- style->stripSpaces = xmlHashCreate(10);
- if (style->stripSpaces == NULL)
- return;
-
element = elements;
while (*element != 0) {
while (IS_BLANK(*element)) element++;
@@ -5526,9 +5505,6 @@ xsltCompileXSLTIncludeElem(xsltCompilerCtxtPtr cctxt, xmlNodePtr node) {
return(item);
}
-/**
- * xsltParseFindTopLevelElem:
- */
static int
xsltParseFindTopLevelElem(xsltCompilerCtxtPtr cctxt,
xmlNodePtr cur,
@@ -6687,6 +6663,9 @@ xsltParseStylesheetUser(xsltStylesheetPtr style, xmlDocPtr doc) {
}
#endif /* else of XSLT_REFACTORED */
+ if (style->parent == NULL)
+ xsltResolveStylesheetAttributeSet(style);
+
if (style->errors != 0) {
/*
* Detach the doc from the stylesheet; otherwise the doc
@@ -6701,15 +6680,12 @@ xsltParseStylesheetUser(xsltStylesheetPtr style, xmlDocPtr doc) {
return(-1);
}
- if (style->parent == NULL)
- xsltResolveStylesheetAttributeSet(style);
-
return(0);
}
/**
* xsltParseStylesheetDoc:
- * @doc: and xmlDoc parsed XML
+ * @doc: an xmlDoc parsed XML
*
* parse an XSLT stylesheet, building the associated structures. doc
* is kept as a reference within the returned stylesheet, so changes
@@ -6844,7 +6820,8 @@ xsltParseStylesheetPI(const xmlChar *value) {
if (val == NULL)
return(NULL);
if ((xmlStrcasecmp(val, BAD_CAST "text/xml")) &&
- (xmlStrcasecmp(val, BAD_CAST "text/xsl"))) {
+ (xmlStrcasecmp(val, BAD_CAST "text/xsl")) &&
+ (xmlStrcasecmp(val, BAD_CAST "application/xslt+xml"))) {
xmlFree(val);
break;
}
diff --git a/libxslt/xsltInternals.h b/libxslt/xsltInternals.h
index 14343d27..7de638e1 100644
--- a/libxslt/xsltInternals.h
+++ b/libxslt/xsltInternals.h
@@ -21,7 +21,6 @@
#include <libxml/xmlstring.h>
#include <libxslt/xslt.h>
#include "xsltexports.h"
-#include "xsltlocale.h"
#include "numbersInternals.h"
#ifdef __cplusplus
@@ -1047,7 +1046,6 @@ struct _xsltStyleItemSort {
int descending; /* sort */
const xmlChar *lang; /* sort */
int has_lang; /* sort */
- xsltLocale locale; /* sort */
const xmlChar *case_order; /* sort */
int lower_first; /* sort */
@@ -1377,7 +1375,6 @@ struct _xsltStylePreComp {
int descending; /* sort */
const xmlChar *lang; /* sort */
int has_lang; /* sort */
- xsltLocale locale; /* sort */
const xmlChar *case_order; /* sort */
int lower_first; /* sort */
@@ -1663,6 +1660,13 @@ typedef enum {
XSLT_OUTPUT_TEXT
} xsltOutputType;
+typedef void *
+(*xsltNewLocaleFunc)(const xmlChar *lang, int lowerFirst);
+typedef void
+(*xsltFreeLocaleFunc)(void *locale);
+typedef xmlChar *
+(*xsltGenSortKeyFunc)(void *locale, const xmlChar *lang);
+
typedef enum {
XSLT_STATE_OK = 0,
XSLT_STATE_ERROR,
@@ -1786,6 +1790,12 @@ struct _xsltTransformContext {
int maxTemplateVars;
unsigned long opLimit;
unsigned long opCount;
+ int sourceDocDirty;
+ unsigned long currentId; /* For generate-id() */
+
+ xsltNewLocaleFunc newLocale;
+ xsltFreeLocaleFunc freeLocale;
+ xsltGenSortKeyFunc genSortKey;
};
/**
@@ -1915,7 +1925,7 @@ XSLTPUBFUN int XSLTCALL
xsltFlagRVTs(
xsltTransformContextPtr ctxt,
xmlXPathObjectPtr obj,
- void *val);
+ int val);
XSLTPUBFUN void XSLTCALL
xsltFreeRVTs (xsltTransformContextPtr ctxt);
XSLTPUBFUN void XSLTCALL
diff --git a/libxslt/xsltlocale.c b/libxslt/xsltlocale.c
index 39980f8d..aa38ccf7 100644
--- a/libxslt/xsltlocale.c
+++ b/libxslt/xsltlocale.c
@@ -15,10 +15,35 @@
#include <string.h>
#include <libxml/xmlmemory.h>
+#include <libxml/threads.h>
#include "xsltlocale.h"
#include "xsltutils.h"
+#ifdef HAVE_STRXFRM_L
+
+ #define XSLT_LOCALE_POSIX
+
+ #ifdef HAVE_LOCALE_H
+ #include <locale.h>
+ #endif
+ #ifdef HAVE_XLOCALE_H
+ #include <xlocale.h>
+ #endif
+
+#elif defined(_WIN32)
+
+ #define XSLT_LOCALE_WINAPI
+
+ #include <windows.h>
+ #include <winnls.h>
+
+#else
+
+ #define XSLT_LOCALE_NONE
+
+#endif
+
#define TOUPPER(c) (c & ~0x20)
#define TOLOWER(c) (c | 0x20)
#define ISALPHA(c) ((unsigned)(TOUPPER(c) - 'A') < 26)
@@ -37,8 +62,7 @@ xmlRMutexPtr xsltLocaleMutex = NULL;
struct xsltRFC1766Info_s {
/*note typedef unsigned char xmlChar !*/
xmlChar tag[XSLTMAX_LANGTAGLEN+1];
- /*note typedef LCID xsltLocale !*/
- xsltLocale lcid;
+ LCID lcid;
};
typedef struct xsltRFC1766Info_s xsltRFC1766Info;
@@ -46,14 +70,15 @@ static int xsltLocaleListSize = 0;
static xsltRFC1766Info *xsltLocaleList = NULL;
-static xsltLocale
+static void *
xslt_locale_WINAPI(const xmlChar *languageTag) {
int k;
xsltRFC1766Info *p = xsltLocaleList;
for (k=0; k<xsltLocaleListSize; k++, p++)
- if (xmlStrcmp(p->tag, languageTag) == 0) return p->lcid;
- return((xsltLocale)0);
+ if (xmlStrcmp(p->tag, languageTag) == 0)
+ return(&p->lcid);
+ return(NULL);
}
static void xsltEnumSupportedLocales(void);
@@ -83,17 +108,17 @@ xsltFreeLocales(void) {
*
* Returns the locale or NULL on error or if no matching locale was found
*/
-xsltLocale
-xsltNewLocale(const xmlChar *languageTag) {
+void *
+xsltNewLocale(const xmlChar *languageTag, int lowerFirst ATTRIBUTE_UNUSED) {
#ifdef XSLT_LOCALE_POSIX
- xsltLocale locale;
- char localeName[XSLTMAX_LANGTAGLEN+6]; /* 6 chars for ".utf8\0" */
+ locale_t locale;
+ char localeName[XSLTMAX_LANGTAGLEN+7]; /* 7 chars for ".UTF-8\0" */
const xmlChar *p = languageTag;
const char *region = NULL;
char *q = localeName;
int i, llen;
- /* Convert something like "pt-br" to "pt_BR.utf8" */
+ /* Convert something like "pt-br" to "pt_BR.UTF-8" */
if (languageTag == NULL)
return(NULL);
@@ -117,7 +142,7 @@ xsltNewLocale(const xmlChar *languageTag) {
if (i == 0 || *p)
return(NULL);
- memcpy(q, ".utf8", 6);
+ memcpy(q, ".UTF-8", 7);
locale = newlocale(LC_COLLATE_MASK, localeName, NULL);
if (locale != NULL)
return(locale);
@@ -129,7 +154,7 @@ xsltNewLocale(const xmlChar *languageTag) {
/* Try locale without territory, e.g. for Esperanto (eo) */
- memcpy(q, ".utf8", 6);
+ memcpy(q, ".UTF-8", 7);
locale = newlocale(LC_COLLATE_MASK, localeName, NULL);
if (locale != NULL)
return(locale);
@@ -147,7 +172,7 @@ xsltNewLocale(const xmlChar *languageTag) {
*q++ = '_';
*q++ = region[0];
*q++ = region[1];
- memcpy(q, ".utf8", 6);
+ memcpy(q, ".UTF-8", 7);
locale = newlocale(LC_COLLATE_MASK, localeName, NULL);
return(locale);
@@ -155,7 +180,7 @@ xsltNewLocale(const xmlChar *languageTag) {
#ifdef XSLT_LOCALE_WINAPI
{
- xsltLocale locale = (xsltLocale)0;
+ void *locale = NULL;
xmlChar localeName[XSLTMAX_LANGTAGLEN+1];
xmlChar *q = localeName;
const xmlChar *p = languageTag;
@@ -344,10 +369,12 @@ xsltDefaultRegion(const xmlChar *localeName) {
* Frees a locale created with xsltNewLocale
*/
void
-xsltFreeLocale(xsltLocale locale) {
+xsltFreeLocale(void *locale) {
#ifdef XSLT_LOCALE_POSIX
if (locale != NULL)
freelocale(locale);
+#else
+ (void) locale;
#endif
}
@@ -356,57 +383,82 @@ xsltFreeLocale(xsltLocale locale) {
* @locale: locale created with xsltNewLocale
* @string: UTF-8 string to transform
*
- * Transforms a string according to locale. The transformed string must then be
- * compared with xsltLocaleStrcmp and freed with xmlFree.
+ * Transforms a string according to locale. The transformed string must be
+ * freed with xmlFree.
*
* Returns the transformed string or NULL on error
*/
-xsltLocaleChar *
-xsltStrxfrm(xsltLocale locale, const xmlChar *string)
+xmlChar *
+xsltStrxfrm(void *vlocale, const xmlChar *string)
{
#ifdef XSLT_LOCALE_NONE
return(NULL);
#else
- size_t xstrlen, r;
- xsltLocaleChar *xstr;
+ xmlChar *xstr;
#ifdef XSLT_LOCALE_POSIX
- xstrlen = strxfrm_l(NULL, (const char *)string, 0, locale) + 1;
- xstr = (xsltLocaleChar *) xmlMalloc(xstrlen);
+ size_t xstrlen, r;
+
+ xstrlen = strxfrm_l(NULL, (const char *)string, 0, vlocale) + 1;
+ xstr = (xmlChar *) xmlMalloc(xstrlen);
if (xstr == NULL) {
xsltTransformError(NULL, NULL, NULL,
"xsltStrxfrm : out of memory error\n");
return(NULL);
}
- r = strxfrm_l((char *)xstr, (const char *)string, xstrlen, locale);
+ r = strxfrm_l((char *)xstr, (const char *)string, xstrlen, vlocale);
+
+ if (r >= xstrlen) {
+ xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : strxfrm failed\n");
+ xmlFree(xstr);
+ return(NULL);
+ }
#endif
#ifdef XSLT_LOCALE_WINAPI
- xstrlen = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, NULL, 0);
- if (xstrlen == 0) {
+ int wstrlen, xstrlen, r;
+ wchar_t *wstr;
+ LCID *lcid = vlocale;
+
+ wstrlen = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, NULL, 0);
+ if (wstrlen == 0) {
xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : MultiByteToWideChar check failed\n");
return(NULL);
}
- xstr = (xsltLocaleChar*) xmlMalloc(xstrlen * sizeof(xsltLocaleChar));
- if (xstr == NULL) {
+ wstr = (wchar_t *) xmlMalloc(wstrlen * sizeof(wchar_t));
+ if (wstr == NULL) {
xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : out of memory\n");
return(NULL);
}
- r = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, xstr, xstrlen);
+ r = MultiByteToWideChar(CP_UTF8, 0, (char *) string, -1, wstr, wstrlen);
if (r == 0) {
xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : MultiByteToWideChar failed\n");
- xmlFree(xstr);
+ xmlFree(wstr);
return(NULL);
}
- return(xstr);
-#endif /* XSLT_LOCALE_WINAPI */
-
- if (r >= xstrlen) {
- xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : strxfrm failed\n");
+ /* This returns the size in bytes. */
+ xstrlen = LCMapStringW(*lcid, LCMAP_SORTKEY, wstr, wstrlen, NULL, 0);
+ if (xstrlen == 0) {
+ xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : LCMapStringW failed\n");
+ xmlFree(wstr);
+ return(NULL);
+ }
+ xstr = (xmlChar*) xmlMalloc(xstrlen);
+ if (xstr == NULL) {
+ xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : out of memory\n");
+ xmlFree(wstr);
+ return(NULL);
+ }
+ r = LCMapStringW(*lcid, LCMAP_SORTKEY, wstr, wstrlen, (wchar_t *) xstr,
+ xstrlen);
+ xmlFree(wstr);
+ if (r == 0) {
+ xsltTransformError(NULL, NULL, NULL, "xsltStrxfrm : LCMapStringW failed\n");
xmlFree(xstr);
return(NULL);
}
+#endif /* XSLT_LOCALE_WINAPI */
return(xstr);
#endif /* XSLT_LOCALE_NONE */
@@ -414,35 +466,22 @@ xsltStrxfrm(xsltLocale locale, const xmlChar *string)
/**
* xsltLocaleStrcmp:
- * @locale: a locale identifier
+ * @locale: unused
* @str1: a string transformed with xsltStrxfrm
* @str2: a string transformed with xsltStrxfrm
*
- * Compares two strings transformed with xsltStrxfrm
+ * DEPRECATED: Same as xmlStrcmp.
+ *
+ * Compares two strings transformed with xsltStrxfrm.
*
* Returns a value < 0 if str1 sorts before str2,
* a value > 0 if str1 sorts after str2,
* 0 if str1 and str2 are equal wrt sorting
*/
int
-xsltLocaleStrcmp(xsltLocale locale, const xsltLocaleChar *str1, const xsltLocaleChar *str2) {
+xsltLocaleStrcmp(void *locale, const xmlChar *str1, const xmlChar *str2) {
(void)locale;
-#ifdef XSLT_LOCALE_WINAPI
-{
- int ret;
- if (str1 == str2) return(0);
- if (str1 == NULL) return(-1);
- if (str2 == NULL) return(1);
- ret = CompareStringW(locale, 0, str1, -1, str2, -1);
- if (ret == 0) {
- xsltTransformError(NULL, NULL, NULL, "xsltLocaleStrcmp : CompareStringW fail\n");
- return(0);
- }
- return(ret - 2);
-}
-#else
return(xmlStrcmp(str1, str2));
-#endif
}
#ifdef XSLT_LOCALE_WINAPI
@@ -454,7 +493,7 @@ xsltLocaleStrcmp(xsltLocale locale, const xsltLocaleChar *str1, const xsltLocale
*
* Returns TRUE
*/
-BOOL CALLBACK
+static BOOL CALLBACK
xsltCountSupportedLocales(LPSTR lcid) {
(void) lcid;
++xsltLocaleListSize;
@@ -469,7 +508,7 @@ xsltCountSupportedLocales(LPSTR lcid) {
*
* Returns TRUE if not at the end of the array
*/
-BOOL CALLBACK
+static BOOL CALLBACK
xsltIterateSupportedLocales(LPSTR lcid) {
static int count = 0;
xmlChar iso639lang [XSLTMAX_ISO639LANGLEN +1];
@@ -477,7 +516,7 @@ xsltIterateSupportedLocales(LPSTR lcid) {
int k, l;
xsltRFC1766Info *p = xsltLocaleList + count;
- k = sscanf(lcid, "%lx", (long*)&p->lcid);
+ k = sscanf(lcid, "%lx", (unsigned long*)&p->lcid);
if (k < 1) goto end;
/*don't count terminating null character*/
k = GetLocaleInfoA(p->lcid, LOCALE_SISO639LANGNAME,
diff --git a/libxslt/xsltlocale.h b/libxslt/xsltlocale.h
index dc503895..c8be58d3 100644
--- a/libxslt/xsltlocale.h
+++ b/libxslt/xsltlocale.h
@@ -14,63 +14,31 @@
#include <libxml/xmlstring.h>
#include "xsltexports.h"
-#ifdef HAVE_STRXFRM_L
-
-/*
- * XSLT_LOCALE_POSIX:
- * Macro indicating to use POSIX locale extensions
- */
-#define XSLT_LOCALE_POSIX
-
-#ifdef HAVE_LOCALE_H
-#include <locale.h>
+#ifdef __cplusplus
+extern "C" {
#endif
-#ifdef HAVE_XLOCALE_H
-#include <xlocale.h>
-#endif
-
-typedef locale_t xsltLocale;
-typedef xmlChar xsltLocaleChar;
-
-#elif defined(_WIN32)
-
-/*
- * XSLT_LOCALE_WINAPI:
- * Macro indicating to use WinAPI for extended locale support
- */
-#define XSLT_LOCALE_WINAPI
-
-#include <windows.h>
-#include <winnls.h>
-
-typedef LCID xsltLocale;
-typedef wchar_t xsltLocaleChar;
-
-#else
-/*
- * XSLT_LOCALE_NONE:
- * Macro indicating that there's no extended locale support
- */
-#define XSLT_LOCALE_NONE
+XSLTPUBFUN void * XSLTCALL
+ xsltNewLocale (const xmlChar *langName,
+ int lowerFirst);
+XSLTPUBFUN void XSLTCALL
+ xsltFreeLocale (void *locale);
+XSLTPUBFUN xmlChar * XSLTCALL
+ xsltStrxfrm (void *locale,
+ const xmlChar *string);
+XSLTPUBFUN void XSLTCALL
+ xsltFreeLocales (void);
+/* Backward compatibility */
typedef void *xsltLocale;
typedef xmlChar xsltLocaleChar;
+XSLTPUBFUN int XSLTCALL
+ xsltLocaleStrcmp (void *locale,
+ const xmlChar *str1,
+ const xmlChar *str2);
+#ifdef __cplusplus
+}
#endif
-XSLTPUBFUN xsltLocale XSLTCALL
- xsltNewLocale (const xmlChar *langName);
-XSLTPUBFUN void XSLTCALL
- xsltFreeLocale (xsltLocale locale);
-XSLTPUBFUN xsltLocaleChar * XSLTCALL
- xsltStrxfrm (xsltLocale locale,
- const xmlChar *string);
-XSLTPUBFUN int XSLTCALL
- xsltLocaleStrcmp (xsltLocale locale,
- const xsltLocaleChar *str1,
- const xsltLocaleChar *str2);
-XSLTPUBFUN void XSLTCALL
- xsltFreeLocales (void);
-
#endif /* __XML_XSLTLOCALE_H__ */
diff --git a/libxslt/xsltutils.c b/libxslt/xsltutils.c
index f352ca1b..3705d28f 100644
--- a/libxslt/xsltutils.c
+++ b/libxslt/xsltutils.c
@@ -42,6 +42,7 @@
#include "transform.h"
#if defined(_WIN32)
+#include <windows.h>
#define XSLT_WIN32_PERFORMANCE_COUNTER
#endif
@@ -304,6 +305,66 @@ error:
return(-1);
}
+/**
+ * xsltGetUTF8CharZ:
+ * @utf: a sequence of UTF-8 encoded bytes
+ * @len: a pointer to @bytes len
+ *
+ * Read one UTF8 Char from a null-terminated string.
+ *
+ * Returns the char value or -1 in case of error and update @len with the
+ * number of bytes used
+ */
+int
+xsltGetUTF8CharZ(const unsigned char *utf, int *len) {
+ unsigned int c;
+
+ if (utf == NULL)
+ goto error;
+ if (len == NULL)
+ goto error;
+
+ c = utf[0];
+ if (c & 0x80) {
+ if ((utf[1] & 0xc0) != 0x80)
+ goto error;
+ if ((c & 0xe0) == 0xe0) {
+ if ((utf[2] & 0xc0) != 0x80)
+ goto error;
+ if ((c & 0xf0) == 0xf0) {
+ if ((c & 0xf8) != 0xf0 || (utf[3] & 0xc0) != 0x80)
+ goto error;
+ *len = 4;
+ /* 4-byte code */
+ c = (utf[0] & 0x7) << 18;
+ c |= (utf[1] & 0x3f) << 12;
+ c |= (utf[2] & 0x3f) << 6;
+ c |= utf[3] & 0x3f;
+ } else {
+ /* 3-byte code */
+ *len = 3;
+ c = (utf[0] & 0xf) << 12;
+ c |= (utf[1] & 0x3f) << 6;
+ c |= utf[2] & 0x3f;
+ }
+ } else {
+ /* 2-byte code */
+ *len = 2;
+ c = (utf[0] & 0x1f) << 6;
+ c |= utf[1] & 0x3f;
+ }
+ } else {
+ /* 1-byte code */
+ *len = 1;
+ }
+ return(c);
+
+error:
+ if (len != NULL)
+ *len = 0;
+ return(-1);
+}
+
#ifdef XSLT_REFACTORED
/**
@@ -947,10 +1008,11 @@ xsltDocumentSortFunction(xmlNodeSetPtr list) {
}
/**
- * xsltComputeSortResultiInternal:
+ * xsltComputeSortResultInternal:
* @ctxt: a XSLT process context
- * @sort: node list
- * @xfrm: Transform strings according to locale
+ * @sort: xsl:sort node
+ * @number: data-type is number
+ * @locale: transform strings according to locale
*
* reorder the current node list accordingly to the set of sorting
* requirement provided by the array of nodes.
@@ -959,11 +1021,11 @@ xsltDocumentSortFunction(xmlNodeSetPtr list) {
*/
static xmlXPathObjectPtr *
xsltComputeSortResultInternal(xsltTransformContextPtr ctxt, xmlNodePtr sort,
- int xfrm) {
+ int number, void *locale) {
#ifdef XSLT_REFACTORED
xsltStyleItemSortPtr comp;
#else
- xsltStylePreCompPtr comp;
+ const xsltStylePreComp *comp;
#endif
xmlXPathObjectPtr *results = NULL;
xmlNodeSetPtr list = NULL;
@@ -1031,10 +1093,12 @@ xsltComputeSortResultInternal(xsltTransformContextPtr ctxt, xmlNodePtr sort,
if (res != NULL) {
if (res->type != XPATH_STRING)
res = xmlXPathConvertString(res);
- if (comp->number)
+ if (number)
res = xmlXPathConvertNumber(res);
+ }
+ if (res != NULL) {
res->index = i; /* Save original pos for dupl resolv */
- if (comp->number) {
+ if (number) {
if (res->type == XPATH_NUMBER) {
results[i] = res;
} else {
@@ -1046,10 +1110,17 @@ xsltComputeSortResultInternal(xsltTransformContextPtr ctxt, xmlNodePtr sort,
}
} else {
if (res->type == XPATH_STRING) {
- if ((xfrm) && (comp->locale != (xsltLocale)0)) {
+ if (locale != NULL) {
xmlChar *str = res->stringval;
- res->stringval = (xmlChar *) xsltStrxfrm(comp->locale, str);
- xmlFree(str);
+ xmlChar *sortKey = ctxt->genSortKey(locale, str);
+
+ if (sortKey == NULL) {
+ xsltTransformError(ctxt, NULL, sort,
+ "xsltComputeSortResult: sort key is null\n");
+ } else {
+ res->stringval = sortKey;
+ xmlFree(str);
+ }
}
results[i] = res;
@@ -1088,7 +1159,13 @@ xsltComputeSortResultInternal(xsltTransformContextPtr ctxt, xmlNodePtr sort,
*/
xmlXPathObjectPtr *
xsltComputeSortResult(xsltTransformContextPtr ctxt, xmlNodePtr sort) {
- return xsltComputeSortResultInternal(ctxt, sort, /* xfrm */ 0);
+ const xsltStylePreComp *comp = sort->psvi;
+ int number = 0;
+
+ if (comp != NULL)
+ number = comp->number;
+ return xsltComputeSortResultInternal(ctxt, sort, number,
+ /* locale */ NULL);
}
/**
@@ -1106,20 +1183,19 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
#ifdef XSLT_REFACTORED
xsltStyleItemSortPtr comp;
#else
- xsltStylePreCompPtr comp;
+ const xsltStylePreComp *comp;
#endif
xmlXPathObjectPtr *resultsTab[XSLT_MAX_SORT];
xmlXPathObjectPtr *results = NULL, *res;
xmlNodeSetPtr list = NULL;
- int descending, number, desc, numb;
int len = 0;
int i, j, incr;
int tst;
int depth;
xmlNodePtr node;
xmlXPathObjectPtr tmp;
- int tempstype[XSLT_MAX_SORT], temporder[XSLT_MAX_SORT],
- templang[XSLT_MAX_SORT];
+ int number[XSLT_MAX_SORT], desc[XSLT_MAX_SORT];
+ void *locale[XSLT_MAX_SORT];
if ((ctxt == NULL) || (sorts == NULL) || (nbsorts <= 0) ||
(nbsorts >= XSLT_MAX_SORT))
@@ -1135,72 +1211,74 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
return; /* nothing to do */
for (j = 0; j < nbsorts; j++) {
+ xmlChar *lang;
+
comp = sorts[j]->psvi;
- tempstype[j] = 0;
if ((comp->stype == NULL) && (comp->has_stype != 0)) {
- comp->stype =
+ xmlChar *stype =
xsltEvalAttrValueTemplate(ctxt, sorts[j],
- (const xmlChar *) "data-type",
- NULL);
- if (comp->stype != NULL) {
- tempstype[j] = 1;
- if (xmlStrEqual(comp->stype, (const xmlChar *) "text"))
- comp->number = 0;
- else if (xmlStrEqual(comp->stype, (const xmlChar *) "number"))
- comp->number = 1;
+ BAD_CAST "data-type", NULL);
+ number[j] = 0;
+ if (stype != NULL) {
+ if (xmlStrEqual(stype, (const xmlChar *) "text"))
+ ;
+ else if (xmlStrEqual(stype, (const xmlChar *) "number"))
+ number[j] = 1;
else {
xsltTransformError(ctxt, NULL, sorts[j],
"xsltDoSortFunction: no support for data-type = %s\n",
- comp->stype);
- comp->number = 0; /* use default */
+ stype);
}
+ xmlFree(stype);
}
- }
- temporder[j] = 0;
+ } else {
+ number[j] = comp->number;
+ }
if ((comp->order == NULL) && (comp->has_order != 0)) {
- comp->order = xsltEvalAttrValueTemplate(ctxt, sorts[j],
- (const xmlChar *) "order",
- NULL);
- if (comp->order != NULL) {
- temporder[j] = 1;
- if (xmlStrEqual(comp->order, (const xmlChar *) "ascending"))
- comp->descending = 0;
- else if (xmlStrEqual(comp->order,
- (const xmlChar *) "descending"))
- comp->descending = 1;
+ xmlChar *order = xsltEvalAttrValueTemplate(ctxt, sorts[j],
+ BAD_CAST "order", NULL);
+ desc[j] = 0;
+ if (order != NULL) {
+ if (xmlStrEqual(order, (const xmlChar *) "ascending"))
+ ;
+ else if (xmlStrEqual(order, (const xmlChar *) "descending"))
+ desc[j] = 1;
else {
xsltTransformError(ctxt, NULL, sorts[j],
"xsltDoSortFunction: invalid value %s for order\n",
- comp->order);
- comp->descending = 0; /* use default */
+ order);
}
+ xmlFree(order);
}
+ } else {
+ desc[j] = comp->descending;
}
- templang[j] = 0;
if ((comp->lang == NULL) && (comp->has_lang != 0)) {
- xmlChar *lang = xsltEvalAttrValueTemplate(ctxt, sorts[j],
+ lang = xsltEvalAttrValueTemplate(ctxt, sorts[j],
(xmlChar *) "lang",
NULL);
- if (lang != NULL) {
- templang[j] = 1;
- comp->locale = xsltNewLocale(lang);
+ } else {
+ lang = (xmlChar *) comp->lang;
+ }
+ if (lang != NULL) {
+ locale[j] = ctxt->newLocale(lang, comp->lower_first);
+ if (lang != comp->lang)
xmlFree(lang);
- }
- }
+ } else {
+ locale[j] = NULL;
+ }
}
len = list->nodeNr;
- resultsTab[0] = xsltComputeSortResultInternal(ctxt, sorts[0],
- /* xfrm */ 1);
+ resultsTab[0] = xsltComputeSortResultInternal(ctxt, sorts[0], number[0],
+ locale[0]);
for (i = 1;i < XSLT_MAX_SORT;i++)
resultsTab[i] = NULL;
results = resultsTab[0];
comp = sorts[0]->psvi;
- descending = comp->descending;
- number = comp->number;
if (results == NULL)
goto cleanup;
@@ -1215,7 +1293,7 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
if (results[j] == NULL)
tst = 1;
else {
- if (number) {
+ if (number[0]) {
/* We make NaN smaller than number in accordance
with XSLT spec */
if (xmlXPathIsNaN(results[j]->floatval)) {
@@ -1232,16 +1310,11 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
results[j + incr]->floatval)
tst = 1;
else tst = -1;
- } else if(comp->locale != (xsltLocale)0) {
- tst = xsltLocaleStrcmp(
- comp->locale,
- (xsltLocaleChar *) results[j]->stringval,
- (xsltLocaleChar *) results[j + incr]->stringval);
} else {
tst = xmlStrcmp(results[j]->stringval,
results[j + incr]->stringval);
}
- if (descending)
+ if (desc[0])
tst = -tst;
}
if (tst == 0) {
@@ -1255,8 +1328,6 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
comp = sorts[depth]->psvi;
if (comp == NULL)
break;
- desc = comp->descending;
- numb = comp->number;
/*
* Compute the result of the next level for the
@@ -1266,7 +1337,8 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
resultsTab[depth] =
xsltComputeSortResultInternal(ctxt,
sorts[depth],
- /* xfrm */ 1);
+ number[depth],
+ locale[depth]);
res = resultsTab[depth];
if (res == NULL)
break;
@@ -1276,7 +1348,7 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
} else if (res[j+incr] == NULL) {
tst = -1;
} else {
- if (numb) {
+ if (number[depth]) {
/* We make NaN smaller than number in
accordance with XSLT spec */
if (xmlXPathIsNaN(res[j]->floatval)) {
@@ -1295,16 +1367,11 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
res[j + incr]->floatval)
tst = 1;
else tst = -1;
- } else if(comp->locale != (xsltLocale)0) {
- tst = xsltLocaleStrcmp(
- comp->locale,
- (xsltLocaleChar *) res[j]->stringval,
- (xsltLocaleChar *) res[j + incr]->stringval);
} else {
tst = xmlStrcmp(res[j]->stringval,
res[j + incr]->stringval);
}
- if (desc)
+ if (desc[depth])
tst = -tst;
}
@@ -1348,21 +1415,9 @@ xsltDefaultSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr *sorts,
cleanup:
for (j = 0; j < nbsorts; j++) {
- comp = sorts[j]->psvi;
- if (tempstype[j] == 1) {
- /* The data-type needs to be recomputed each time */
- xmlFree((void *)(comp->stype));
- comp->stype = NULL;
- }
- if (temporder[j] == 1) {
- /* The order needs to be recomputed each time */
- xmlFree((void *)(comp->order));
- comp->order = NULL;
- }
- if (templang[j] == 1) {
- xsltFreeLocale(comp->locale);
- comp->locale = (xsltLocale)0;
- }
+ if (locale[j] != NULL) {
+ ctxt->freeLocale(locale[j]);
+ }
if (resultsTab[j] != NULL) {
for (i = 0;i < len;i++)
xmlXPathFreeObject(resultsTab[j][i]);
@@ -1402,6 +1457,8 @@ xsltDoSortFunction(xsltTransformContextPtr ctxt, xmlNodePtr * sorts,
* xsltSetSortFunc:
* @handler: the new handler function
*
+ * DEPRECATED: Use xsltSetCtxtLocaleHandlers.
+ *
* Function to reset the global handler for XSLT sorting.
* If the handler is NULL, the default sort function will be used.
*/
@@ -1418,6 +1475,8 @@ xsltSetSortFunc(xsltSortFunc handler) {
* @ctxt: a XSLT process context
* @handler: the new handler function
*
+ * DEPRECATED: Use xsltSetCtxtLocaleHandlers.
+ *
* Function to set the handler for XSLT sorting
* for the specified context.
* If the handler is NULL, then the global
@@ -1428,6 +1487,28 @@ xsltSetCtxtSortFunc(xsltTransformContextPtr ctxt, xsltSortFunc handler) {
ctxt->sortfunc = handler;
}
+/**
+ * xsltSetCtxtLocaleHandlers:
+ * @ctxt: an XSLT transform context
+ * @newLocale: locale constructor
+ * @freeLocale: locale destructor
+ * @genSortKey: sort key generator
+ *
+ * Set the locale handlers.
+ */
+void
+xsltSetCtxtLocaleHandlers(xsltTransformContextPtr ctxt,
+ xsltNewLocaleFunc newLocale,
+ xsltFreeLocaleFunc freeLocale,
+ xsltGenSortKeyFunc genSortKey) {
+ if (ctxt == NULL)
+ return;
+
+ ctxt->newLocale = newLocale;
+ ctxt->freeLocale = freeLocale;
+ ctxt->genSortKey = genSortKey;
+}
+
/************************************************************************
* *
* Parsing options *
@@ -1807,6 +1888,8 @@ xsltSaveResultToString(xmlChar **doc_txt_ptr, int * doc_txt_len,
(const xmlChar *) "UTF-8")))
encoder = NULL;
buf = xmlAllocOutputBuffer(encoder);
+ if (buf == NULL)
+ xmlCharEncCloseFunc(encoder);
} else {
buf = xmlAllocOutputBuffer(NULL);
}
@@ -1834,6 +1917,141 @@ xsltSaveResultToString(xmlChar **doc_txt_ptr, int * doc_txt_len,
return 0;
}
+/**
+ * xsltGetSourceNodeFlags:
+ * @node: Node from source document
+ *
+ * Returns the flags for a source node.
+ */
+int
+xsltGetSourceNodeFlags(xmlNodePtr node) {
+ /*
+ * Squeeze the bit flags into the upper bits of
+ *
+ * - 'int properties' member in struct _xmlDoc
+ * - 'xmlAttributeType atype' member in struct _xmlAttr
+ * - 'unsigned short extra' member in struct _xmlNode
+ */
+ switch (node->type) {
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ return ((xmlDocPtr) node)->properties >> 27;
+
+ case XML_ATTRIBUTE_NODE:
+ return ((xmlAttrPtr) node)->atype >> 27;
+
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ return node->extra >> 12;
+
+ default:
+ return 0;
+ }
+}
+
+/**
+ * xsltSetSourceNodeFlags:
+ * @node: Node from source document
+ * @flags: Flags
+ *
+ * Sets the specified flags to 1.
+ *
+ * Returns 0 on success, -1 on error.
+ */
+int
+xsltSetSourceNodeFlags(xsltTransformContextPtr ctxt, xmlNodePtr node,
+ int flags) {
+ if (node->doc == ctxt->initialContextDoc)
+ ctxt->sourceDocDirty = 1;
+
+ switch (node->type) {
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ ((xmlDocPtr) node)->properties |= flags << 27;
+ return 0;
+
+ case XML_ATTRIBUTE_NODE:
+ ((xmlAttrPtr) node)->atype |= flags << 27;
+ return 0;
+
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ node->extra |= flags << 12;
+ return 0;
+
+ default:
+ return -1;
+ }
+}
+
+/**
+ * xsltClearSourceNodeFlags:
+ * @node: Node from source document
+ * @flags: Flags
+ *
+ * Sets the specified flags to 0.
+ *
+ * Returns 0 on success, -1 on error.
+ */
+int
+xsltClearSourceNodeFlags(xmlNodePtr node, int flags) {
+ switch (node->type) {
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ ((xmlDocPtr) node)->properties &= ~(flags << 27);
+ return 0;
+
+ case XML_ATTRIBUTE_NODE:
+ ((xmlAttrPtr) node)->atype &= ~(flags << 27);
+ return 0;
+
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ node->extra &= ~(flags << 12);
+ return 0;
+
+ default:
+ return -1;
+ }
+}
+
+/**
+ * xsltGetPSVIPtr:
+ * @cur: Node
+ *
+ * Returns a pointer to the psvi member of a node or NULL on error.
+ */
+void **
+xsltGetPSVIPtr(xmlNodePtr cur) {
+ switch (cur->type) {
+ case XML_DOCUMENT_NODE:
+ case XML_HTML_DOCUMENT_NODE:
+ return &((xmlDocPtr) cur)->psvi;
+
+ case XML_ATTRIBUTE_NODE:
+ return &((xmlAttrPtr) cur)->psvi;
+
+ case XML_ELEMENT_NODE:
+ case XML_TEXT_NODE:
+ case XML_CDATA_SECTION_NODE:
+ case XML_PI_NODE:
+ case XML_COMMENT_NODE:
+ return &cur->psvi;
+
+ default:
+ return NULL;
+ }
+}
+
#ifdef WITH_PROFILER
/************************************************************************
diff --git a/libxslt/xsltutils.h b/libxslt/xsltutils.h
index 12e4c75f..2514774b 100644
--- a/libxslt/xsltutils.h
+++ b/libxslt/xsltutils.h
@@ -91,6 +91,13 @@ XSLTPUBFUN const xmlChar * XSLTCALL
XSLTPUBFUN int XSLTCALL
xsltGetUTF8Char (const unsigned char *utf,
int *len);
+#ifdef IN_LIBXSLT
+/** DOC_DISABLE */
+XSLTPUBFUN int XSLTCALL
+ xsltGetUTF8CharZ (const unsigned char *utf,
+ int *len);
+/** DOC_ENABLE */
+#endif
/*
* XSLT Debug Tracing Tracing Types
@@ -179,6 +186,11 @@ XSLTPUBFUN void XSLTCALL
xsltSetCtxtSortFunc (xsltTransformContextPtr ctxt,
xsltSortFunc handler);
XSLTPUBFUN void XSLTCALL
+ xsltSetCtxtLocaleHandlers (xsltTransformContextPtr ctxt,
+ xsltNewLocaleFunc newLocale,
+ xsltFreeLocaleFunc freeLocale,
+ xsltGenSortKeyFunc genSortKey);
+XSLTPUBFUN void XSLTCALL
xsltDefaultSortFunction (xsltTransformContextPtr ctxt,
xmlNodePtr *sorts,
int nbsorts);
@@ -244,6 +256,24 @@ XSLTPUBFUN xmlXPathCompExprPtr XSLTCALL
const xmlChar *str,
int flags);
+#ifdef IN_LIBXSLT
+/** DOC_DISABLE */
+#define XSLT_SOURCE_NODE_MASK 15u
+#define XSLT_SOURCE_NODE_HAS_KEY 1u
+#define XSLT_SOURCE_NODE_HAS_ID 2u
+int
+xsltGetSourceNodeFlags(xmlNodePtr node);
+int
+xsltSetSourceNodeFlags(xsltTransformContextPtr ctxt, xmlNodePtr node,
+ int flags);
+int
+xsltClearSourceNodeFlags(xmlNodePtr node, int flags);
+void **
+xsltGetPSVIPtr(xmlNodePtr cur);
+/** DOC_ENABLE */
+#endif
+
+#ifdef WITH_PROFILER
/*
* Profiling.
*/
@@ -257,6 +287,7 @@ XSLTPUBFUN long XSLTCALL
xsltTimestamp (void);
XSLTPUBFUN void XSLTCALL
xsltCalibrateAdjust (long delta);
+#endif
/**
* XSLT_TIMESTAMP_TICS_PER_SEC:
@@ -289,10 +320,11 @@ typedef void (*xsltHandleDebuggerCallback) (xmlNodePtr cur, xmlNodePtr node,
typedef int (*xsltAddCallCallback) (xsltTemplatePtr templ, xmlNodePtr source);
typedef void (*xsltDropCallCallback) (void);
-XSLTPUBFUN void XSLTCALL
- xsltSetDebuggerStatus (int value);
XSLTPUBFUN int XSLTCALL
xsltGetDebuggerStatus (void);
+#ifdef WITH_DEBUGGER
+XSLTPUBFUN void XSLTCALL
+ xsltSetDebuggerStatus (int value);
XSLTPUBFUN int XSLTCALL
xsltSetDebuggerCallbacks (int no, void *block);
XSLTPUBFUN int XSLTCALL
@@ -300,6 +332,7 @@ XSLTPUBFUN int XSLTCALL
xmlNodePtr source);
XSLTPUBFUN void XSLTCALL
xslDropCall (void);
+#endif
#ifdef __cplusplus
}
diff --git a/m4/ax_append_flag.m4 b/m4/ax_append_flag.m4
new file mode 100644
index 00000000..dd6d8b61
--- /dev/null
+++ b/m4/ax_append_flag.m4
@@ -0,0 +1,50 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_append_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_FLAG(FLAG, [FLAGS-VARIABLE])
+#
+# DESCRIPTION
+#
+# FLAG is appended to the FLAGS-VARIABLE shell variable, with a space
+# added in between.
+#
+# If FLAGS-VARIABLE is not specified, the current language's flags (e.g.
+# CFLAGS) is used. FLAGS-VARIABLE is not changed if it already contains
+# FLAG. If FLAGS-VARIABLE is unset in the shell, it is set to exactly
+# FLAG.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 8
+
+AC_DEFUN([AX_APPEND_FLAG],
+[dnl
+AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_SET_IF
+AS_VAR_PUSHDEF([FLAGS], [m4_default($2,_AC_LANG_PREFIX[FLAGS])])
+AS_VAR_SET_IF(FLAGS,[
+ AS_CASE([" AS_VAR_GET(FLAGS) "],
+ [*" $1 "*], [AC_RUN_LOG([: FLAGS already contains $1])],
+ [
+ AS_VAR_APPEND(FLAGS,[" $1"])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+ ],
+ [
+ AS_VAR_SET(FLAGS,[$1])
+ AC_RUN_LOG([: FLAGS="$FLAGS"])
+ ])
+AS_VAR_POPDEF([FLAGS])dnl
+])dnl AX_APPEND_FLAG
diff --git a/m4/ax_append_link_flags.m4 b/m4/ax_append_link_flags.m4
new file mode 100644
index 00000000..99b9fa5b
--- /dev/null
+++ b/m4/ax_append_link_flags.m4
@@ -0,0 +1,44 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_append_link_flags.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_APPEND_LINK_FLAGS([FLAG1 FLAG2 ...], [FLAGS-VARIABLE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# For every FLAG1, FLAG2 it is checked whether the linker works with the
+# flag. If it does, the flag is added FLAGS-VARIABLE
+#
+# If FLAGS-VARIABLE is not specified, the linker's flags (LDFLAGS) is
+# used. During the check the flag is always added to the linker's flags.
+#
+# If EXTRA-FLAGS is defined, it is added to the linker's default flags
+# when the check is done. The check is thus made with the flags: "LDFLAGS
+# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
+# issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_COMPILE_IFELSE.
+#
+# NOTE: This macro depends on the AX_APPEND_FLAG and AX_CHECK_LINK_FLAG.
+# Please keep this macro in sync with AX_APPEND_COMPILE_FLAGS.
+#
+# LICENSE
+#
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 7
+
+AC_DEFUN([AX_APPEND_LINK_FLAGS],
+[AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+AX_REQUIRE_DEFINED([AX_APPEND_FLAG])
+for flag in $1; do
+ AX_CHECK_LINK_FLAG([$flag], [AX_APPEND_FLAG([$flag], [m4_default([$2], [LDFLAGS])])], [], [$3], [$4])
+done
+])dnl AX_APPEND_LINK_FLAGS
diff --git a/m4/ax_check_link_flag.m4 b/m4/ax_check_link_flag.m4
new file mode 100644
index 00000000..03a30ce4
--- /dev/null
+++ b/m4/ax_check_link_flag.m4
@@ -0,0 +1,53 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_check_link_flag.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_CHECK_LINK_FLAG(FLAG, [ACTION-SUCCESS], [ACTION-FAILURE], [EXTRA-FLAGS], [INPUT])
+#
+# DESCRIPTION
+#
+# Check whether the given FLAG works with the linker or gives an error.
+# (Warnings, however, are ignored)
+#
+# ACTION-SUCCESS/ACTION-FAILURE are shell commands to execute on
+# success/failure.
+#
+# If EXTRA-FLAGS is defined, it is added to the linker's default flags
+# when the check is done. The check is thus made with the flags: "LDFLAGS
+# EXTRA-FLAGS FLAG". This can for example be used to force the linker to
+# issue an error when a bad flag is given.
+#
+# INPUT gives an alternative input source to AC_LINK_IFELSE.
+#
+# NOTE: Implementation based on AX_CFLAGS_GCC_OPTION. Please keep this
+# macro in sync with AX_CHECK_{PREPROC,COMPILE}_FLAG.
+#
+# LICENSE
+#
+# Copyright (c) 2008 Guido U. Draheim <guidod@gmx.de>
+# Copyright (c) 2011 Maarten Bosmans <mkbosmans@gmail.com>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 6
+
+AC_DEFUN([AX_CHECK_LINK_FLAG],
+[AC_PREREQ(2.64)dnl for _AC_LANG_PREFIX and AS_VAR_IF
+AS_VAR_PUSHDEF([CACHEVAR],[ax_cv_check_ldflags_$4_$1])dnl
+AC_CACHE_CHECK([whether the linker accepts $1], CACHEVAR, [
+ ax_check_save_flags=$LDFLAGS
+ LDFLAGS="$LDFLAGS $4 $1"
+ AC_LINK_IFELSE([m4_default([$5],[AC_LANG_PROGRAM()])],
+ [AS_VAR_SET(CACHEVAR,[yes])],
+ [AS_VAR_SET(CACHEVAR,[no])])
+ LDFLAGS=$ax_check_save_flags])
+AS_VAR_IF(CACHEVAR,yes,
+ [m4_default([$2], :)],
+ [m4_default([$3], :)])
+AS_VAR_POPDEF([CACHEVAR])dnl
+])dnl AX_CHECK_LINK_FLAGS
diff --git a/m4/ax_require_defined.m4 b/m4/ax_require_defined.m4
new file mode 100644
index 00000000..17c3eab7
--- /dev/null
+++ b/m4/ax_require_defined.m4
@@ -0,0 +1,37 @@
+# ===========================================================================
+# https://www.gnu.org/software/autoconf-archive/ax_require_defined.html
+# ===========================================================================
+#
+# SYNOPSIS
+#
+# AX_REQUIRE_DEFINED(MACRO)
+#
+# DESCRIPTION
+#
+# AX_REQUIRE_DEFINED is a simple helper for making sure other macros have
+# been defined and thus are available for use. This avoids random issues
+# where a macro isn't expanded. Instead the configure script emits a
+# non-fatal:
+#
+# ./configure: line 1673: AX_CFLAGS_WARN_ALL: command not found
+#
+# It's like AC_REQUIRE except it doesn't expand the required macro.
+#
+# Here's an example:
+#
+# AX_REQUIRE_DEFINED([AX_CHECK_LINK_FLAG])
+#
+# LICENSE
+#
+# Copyright (c) 2014 Mike Frysinger <vapier@gentoo.org>
+#
+# Copying and distribution of this file, with or without modification, are
+# permitted in any medium without royalty provided the copyright notice
+# and this notice are preserved. This file is offered as-is, without any
+# warranty.
+
+#serial 2
+
+AC_DEFUN([AX_REQUIRE_DEFINED], [dnl
+ m4_ifndef([$1], [m4_fatal([macro ]$1[ is not defined; is a m4 file missing?])])
+])dnl AX_REQUIRE_DEFINED
diff --git a/python/Makefile.am b/python/Makefile.am
index fa7ed00b..6f2b4af7 100644
--- a/python/Makefile.am
+++ b/python/Makefile.am
@@ -1,4 +1,8 @@
-# Makefile for libxml2 python library
+# Makefile for libxslt python library
+
+# We use a rule with multiple output files which creates problems with
+# parallel builds.
+.NOTPARALLEL:
SUBDIRS = . tests
@@ -9,7 +13,9 @@ EXTRA_DIST = \
libxml_wrap.h \
libxslt_wrap.h \
libxsl.py \
- libxslt-python-api.xml
+ libxslt-python-api.xml \
+ pyproject.toml \
+ setup.py.in
if WITH_PYTHON
@@ -18,15 +24,15 @@ pyexec_LTLIBRARIES = libxsltmod.la
libxsltmod_la_CPPFLAGS = \
-I$(top_srcdir)/libxslt \
-I$(top_srcdir) \
- -I../libexslt \
- $(PYTHON_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
+ -I../libexslt
+libxsltmod_la_CFLAGS = $(AM_CFLAGS) $(PYTHON_CFLAGS)
libxsltmod_la_SOURCES = libxslt.c types.c
nodist_libxsltmod_la_SOURCES = libxslt-py.c
libxsltmod_la_LIBADD = \
$(top_builddir)/libxslt/libxslt.la \
$(top_builddir)/libexslt/libexslt.la \
$(PYTHON_LIBS) $(LIBXML_LIBS)
-libxsltmod_la_LDFLAGS = -module -avoid-version
+libxsltmod_la_LDFLAGS = $(AM_LDFLAGS) $(PYTHON_LDFLAGS) -module -avoid-version
libxslt.py: $(srcdir)/libxsl.py libxsltclass.py
cat $(srcdir)/libxsl.py libxsltclass.py > $@
diff --git a/python/generator.py b/python/generator.py
index 025e58a1..4557e6d9 100755
--- a/python/generator.py
+++ b/python/generator.py
@@ -136,13 +136,6 @@ def enum(type, name, value):
#######################################################################
skipped_modules = {
- 'xmlmemory': None,
- 'DOCBparser': None,
- 'SAX': None,
- 'hash': None,
- 'list': None,
- 'threads': None,
- 'xpointer': None,
'transform': None,
}
skipped_types = {
@@ -156,6 +149,15 @@ skipped_types = {
'xmlBufferPtr': "internal representation not suitable for python",
'FILE *': None,
}
+skipped_functions = {
+ 'xsltMatchPattern': True,
+ # Debugger
+ 'xslAddCall': True,
+ 'xslDropCall': True,
+ 'xslHandleDebugger': True,
+ 'xsltSetDebuggerCallbacks': True,
+ 'xsltSetDebuggerStatus': True,
+}
#######################################################################
#
@@ -247,12 +249,8 @@ unknown_types = {}
#######################################################################
def skip_function(name):
- if name[0:12] == "xmlXPathWrap":
- return 1
- if name == "xsltMatchPattern":
+ if name in skipped_functions:
return 1
-# if name[0:11] == "xmlXPathNew":
-# return 1
return 0
def print_function_wrapper(name, output, export, include):
@@ -453,12 +451,12 @@ def buildStubs():
export.close()
wrapper.close()
- print("Generated %d wrapper functions, %d failed, %d skipped\n" % (nb_wrap,
+ print("Generated %d wrapper functions, %d failed, %d skipped" % (nb_wrap,
failed, skipped))
- print("Missing type converters:")
- for type in list(unknown_types.keys()):
- print("%s:%d " % (type, len(unknown_types[type])))
- print()
+# print("Missing type converters:")
+# for type in list(unknown_types.keys()):
+# print("%s:%d " % (type, len(unknown_types[type])))
+# print()
#######################################################################
#
diff --git a/python/libxslt-python-api.xml b/python/libxslt-python-api.xml
index 49491f39..fbf6ecec 100644
--- a/python/libxslt-python-api.xml
+++ b/python/libxslt-python-api.xml
@@ -18,7 +18,7 @@
</function>
<function name='xsltGetLoaderFunc' file='python'>
<info>Get the function for controlling document loading</info>
- <return type='pythonObject *' info='the function'/>
+ <return type='pythonObject' info='the function'/>
</function>
<function name='xsltNewTransformContext' file='python'>
<info>Create a new XSLT TransformContext</info>
diff --git a/python/libxslt.c b/python/libxslt.c
index 0758d606..c11dc57e 100644
--- a/python/libxslt.c
+++ b/python/libxslt.c
@@ -58,7 +58,11 @@ __inline int c99_vsnprintf(char *outBuf, size_t size, const char *format, va_lis
/* #define DEBUG_EXTENSIONS */
/* #define DEBUG_EXTENSIONS */
+#if PY_MAJOR_VERSION >= 3
+PyObject* PyInit_libxsltmod(void);
+#else
void initlibxsltmod(void);
+#endif
/************************************************************************
* *
@@ -299,7 +303,7 @@ libxslt_xsltElementPreCompCallback(xsltStylesheetPtr style, xmlNodePtr inst,
pyobj_element_f);
Py_INCREF(pyobj_precomp_f); /* Protect refcount against reentrant manipulation of callback hash */
- result = PyEval_CallObject(pyobj_precomp_f, args);
+ result = PyObject_CallObject(pyobj_precomp_f, args);
Py_DECREF(pyobj_precomp_f);
Py_DECREF(args);
@@ -357,7 +361,7 @@ libxslt_xsltElementTransformCallback(xsltTransformContextPtr ctxt,
libxslt_xsltElemPreCompPtrWrap(comp));
Py_INCREF(func); /* Protect refcount against reentrant manipulation of callback hash */
- result = PyEval_CallObject(func, args);
+ result = PyObject_CallObject(func, args);
Py_DECREF(func);
Py_DECREF(args);
@@ -468,7 +472,7 @@ libxslt_xmlXPathFuncCallback(xmlXPathParserContextPtr ctxt, int nargs) {
}
Py_INCREF(current_function);
- result = PyEval_CallObject(current_function, list);
+ result = PyObject_CallObject(current_function, list);
Py_DECREF(current_function);
Py_DECREF(list);
@@ -623,7 +627,8 @@ libxslt_xsltSetLoaderFunc(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
}
PyObject *
-libxslt_xsltGetLoaderFunc(void) {
+libxslt_xsltGetLoaderFunc(PyObject *self ATTRIBUTE_UNUSED,
+ PyObject *args ATTRIBUTE_UNUSED) {
PyObject *py_retval;
py_retval = pythonDocLoaderObject;
@@ -687,7 +692,7 @@ libxslt_xsltApplyStylesheetUser(PyObject *self ATTRIBUTE_UNUSED, PyObject *args)
PyObject *pyobj_transformCtxt;
const char **params = NULL;
int len = 0, i, j;
- ssize_t ppos = 0;
+ Py_ssize_t ppos = 0;
PyObject *name;
PyObject *value;
@@ -775,7 +780,7 @@ libxslt_xsltApplyStylesheet(PyObject *self ATTRIBUTE_UNUSED, PyObject *args) {
PyObject *pyobj_params;
const char **params = NULL;
int len = 0, i, j, params_size;
- ssize_t ppos = 0;
+ Py_ssize_t ppos = 0;
PyObject *name;
PyObject *value;
@@ -961,7 +966,7 @@ libxslt_xsltErrorFuncHandler(void *ctx ATTRIBUTE_UNUSED, const char *msg,
Py_XINCREF(libxslt_xsltPythonErrorFuncCtxt);
message = libxml_charPtrWrap(str);
PyTuple_SetItem(list, 1, message);
- result = PyEval_CallObject(libxslt_xsltPythonErrorFuncHandler, list);
+ result = PyObject_CallObject(libxslt_xsltPythonErrorFuncHandler, list);
Py_XDECREF(list);
Py_XDECREF(result);
}
@@ -1229,9 +1234,9 @@ static PyMethodDef libxsltMethods[] = {
#ifdef MERGED_MODULES
#if PY_MAJOR_VERSION >= 3
-extern PyObject* PyInit_libxml2mod(void);
+PyObject* PyInit_libxml2mod(void);
#else
-extern void initlibxml2mod(void);
+void initlibxml2mod(void);
#endif
#endif
@@ -1279,7 +1284,6 @@ void initlibxsltmod(void) {
* Specific XSLT initializations
*/
libxslt_xsltErrorInitialize();
- xmlLoadExtDtdDefaultValue = XML_DETECT_IDS | XML_COMPLETE_ATTRS;
/*
* Register the EXSLT extensions and the test module
*/
diff --git a/python/libxslt_wrap.h b/python/libxslt_wrap.h
index d1c79077..04b6c3c3 100644
--- a/python/libxslt_wrap.h
+++ b/python/libxslt_wrap.h
@@ -1,6 +1,7 @@
#include "libxml_wrap.h"
#include <libxslt/xslt.h>
#include <libxslt/xsltInternals.h>
+#include <libxslt/xsltlocale.h>
#include <libxslt/xsltutils.h>
#include <libxslt/attributes.h>
#include <libxslt/documents.h>
diff --git a/python/pyproject.toml b/python/pyproject.toml
new file mode 100644
index 00000000..fed528d4
--- /dev/null
+++ b/python/pyproject.toml
@@ -0,0 +1,3 @@
+[build-system]
+requires = ["setuptools"]
+build-backend = "setuptools.build_meta"
diff --git a/python/setup.py.in b/python/setup.py.in
new file mode 100644
index 00000000..43e9dd4b
--- /dev/null
+++ b/python/setup.py.in
@@ -0,0 +1,207 @@
+#!/usr/bin/python -u
+#
+# Setup script for libxml2 and libxslt if found
+#
+import sys, os, subprocess
+
+try:
+ from setuptools import setup, Extension
+except ImportError:
+ try:
+ # Using distutils, for python < 3.12
+ from distutils.core import setup, Extension
+ except ImportError:
+ # distutils is not present in python 3.12 and greater
+ print("setuptools is required for python >= 3.12")
+ sys.exit(1)
+
+# Below ROOT, we expect to find include, include/libxml2, lib and bin.
+# On *nix, it is not needed (but should not harm),
+# on Windows, it is set by configure.js.
+ROOT = r'@prefix@'
+
+# If this flag is set (windows only),
+# a private copy of the dlls are included in the package.
+# If this flag is not set, the libxml2 and libxslt
+# dlls must be found somewhere in the PATH at runtime.
+WITHDLLS = 1 and sys.platform.startswith('win')
+
+def missing(file):
+ if os.access(file, os.R_OK) == 0:
+ return 1
+ return 0
+
+try:
+ HOME = os.environ['HOME']
+except:
+ HOME="C:"
+
+if sys.platform.startswith('win'):
+ libraryPrefix = 'lib'
+ platformLibs = []
+else:
+ libraryPrefix = ''
+ platformLibs = ["m","z"]
+
+# those are examined to find
+# - libxslt/xsltconfig.h
+includes_dir = [
+"/usr/include",
+"/usr/local/include",
+"/opt/include",
+os.path.join(ROOT,'include'),
+HOME
+];
+
+# those are added in the linker search path for libraries
+libdirs = [
+os.path.join(ROOT,'lib'),
+]
+
+xslt_files = ["libxslt-api.xml", "libxslt-python-api.xml",
+ "libxslt.c", "libxsl.py", "libxslt_wrap.h",
+ "generator.py"]
+
+if WITHDLLS:
+ def altImport(s):
+ s = s.replace("import libxml2mod","from libxmlmods import libxml2mod")
+ s = s.replace("import libxsltmod","from libxsltmods import libxsltmod")
+ return s
+
+if missing("libxslt-py.c") or missing("libxslt.py"):
+ if missing("generator.py") or missing(os.path.join("..", "doc", "libxslt-api.xml")):
+ print("libxslt stub generator not found, libxslt not built")
+ else:
+ try:
+ if hasattr(subprocess, 'run'):
+ subprocess.run([sys.executable,
+ 'generator.py',
+ os.path.join('..', 'doc', 'libxslt-api.xml'),
+ 'libxslt-python-api.xml'
+ ], check=True)
+ else:
+ subprocess.check_output([sys.executable,
+ 'generator.py',
+ os.path.join('..', 'doc', 'libxslt-api.xml'),
+ 'libxslt-python-api.xml'])
+ except:
+ print("failed to generate stubs for libxslt, aborting ...")
+ print(sys.exc_info()[0], sys.exc_info()[1])
+ else:
+ head = open("libxsl.py", "r")
+ generated = open("libxsltclass.py", "r")
+ result = open("libxslt.py", "w")
+ for line in head.readlines():
+ if WITHDLLS:
+ result.write(altImport(line))
+ else:
+ result.write(line)
+ for line in generated.readlines():
+ result.write(line)
+ head.close()
+ generated.close()
+ result.close()
+
+xml_includes=""
+for dir in includes_dir:
+ if not missing(dir + "/libxml2/libxml/tree.h"):
+ xml_includes=dir + "/libxml2"
+ break;
+
+if xml_includes == "":
+ print("failed to find headers for libxml2: update includes_dir")
+ sys.exit(1)
+
+xslt_includes=""
+for dir in includes_dir:
+ if not missing(dir + "/libxslt/xsltconfig.h"):
+ xslt_includes=dir + "/libxslt"
+ break;
+
+if xslt_includes == "":
+ print("failed to find headers for libxslt: update includes_dir")
+
+if WITHDLLS:
+ # libxslt dlls (expected in ROOT/bin)
+ dlls = ['libxslt.dll','libexslt.dll']
+
+ packaged_dlls = [os.path.join(ROOT,'bin',dll) for dll in dlls]
+
+ # create __init__.py for the libxsltmods package
+ if not os.path.exists("libxsltmods"):
+ os.mkdir("libxsltmods")
+ open("libxsltmods/__init__.py","w").close()
+
+ packaged_dlls = [os.path.join(ROOT,'bin',dll) for dll in dlls]
+
+descr = "libxslt package"
+modules = [ 'libxslt']
+if WITHDLLS:
+ modules.append('libxsltmods.__init__')
+c_files = []
+includes= [xslt_includes, xml_includes]
+libs = platformLibs
+macros = []
+
+descr = "libxslt package"
+if not sys.platform.startswith('win'):
+ #
+ # We are gonna build 2 identical shared libs with merge initializing
+ # both libxml2mod and libxsltmod
+ #
+ c_files = c_files + ['libxslt-py.c', 'libxslt.c']
+ xslt_c_files = c_files
+else:
+ #
+ # On windows the MERGED_MODULE option is not needed
+ # (and does not work)
+ #
+ xslt_c_files = ['libxslt-py.c', 'libxslt.c', 'types.c']
+libs.insert(0, libraryPrefix + 'exslt')
+libs.insert(0, libraryPrefix + 'xslt')
+libs.insert(0, libraryPrefix + 'xml2')
+includes.append(xslt_includes)
+modules.append('libxslt')
+
+
+extens=[Extension('libxsltmod', xslt_c_files, include_dirs=includes,
+ library_dirs=libdirs,
+ libraries=libs, define_macros=macros)]
+
+if missing("MANIFEST"):
+
+ manifest = open("MANIFEST", "w")
+ manifest.write("setup.py\n")
+ for file in xslt_files:
+ manifest.write(file + "\n")
+ manifest.close()
+
+if WITHDLLS:
+ ext_package = "libxsltmods"
+ if sys.version >= "2.2":
+ base = "lib/site-packages/"
+ else:
+ base = ""
+ data_files = [(base+ext_package,packaged_dlls)]
+else:
+ ext_package = None
+ data_files = []
+
+setup (name = "libxslt-python",
+ # On *nix, the version number is created from setup.py.in
+ # On windows, it is set by configure.js
+ version = "@VERSION@",
+ description = descr,
+ author = "Daniel Veillard",
+ author_email = "veillard@redhat.com",
+ url = "https://gitlab.gnome.org/GNOME/libxslt",
+ licence="MIT Licence",
+ py_modules=modules,
+ ext_modules=extens,
+ ext_package=ext_package,
+ data_files=data_files,
+ install_requires=['libxml2_python>=@LIBXML_REQUIRED_VERSION@'],
+ )
+
+sys.exit(0)
+
diff --git a/python/tests/Makefile.am b/python/tests/Makefile.am
index c633ce66..88ababc4 100644
--- a/python/tests/Makefile.am
+++ b/python/tests/Makefile.am
@@ -6,20 +6,23 @@ TESTSPY = \
extfunc.py
exampledir = $(docdir)/python/examples
-dist_example_DATA = test.xml test.xsl pyxsltproc.py $(TESTSPY)
+dist_example_DATA = test.xml test.xsl pyxsltproc.py setup_test.py $(TESTSPY)
-tests: $(TESTSPY)
- @(PYTHONPATH="`pwd`/..:`pwd`/../.libs:$(srcdir)/.."; \
+check-local: $(TESTSPY)
+ @(export PYTHONPATH="..:../.libs:$(srcdir)/..:$$PYTHONPATH"; \
+ export LD_LIBRARY_PATH="$(top_builddir)/libxslt/.libs:$(top_builddir)/libexslt/.libs:$$LD_LIBRARY_PATH"; \
+ export DYLD_LIBRARY_PATH="$(top_builddir)/libxslt/.libs:$(top_builddir)/libexslt/.libs:$$DYLD_LIBRARY_PATH"; \
+ export PATH="$(top_builddir)/libxslt/.libs:$(top_builddir)/libexslt/.libs:$$PATH" ; \
if test "x$(LIBXML_SRC)" != "x" ; then \
- PYTHONPATH="$$PYTHONPATH:$(LIBXML_SRC)/python:$(LIBXML_SRC)/python/.libs"; \
+ PYTHONPATH="$(LIBXML_SRC)/python:$(LIBXML_SRC)/python/.libs:$$PYTHONPATH"; \
+ LD_LIBRARY_PATH="$(LIBXML_SRC)/.libs:$$LD_LIBRARY_PATH"; \
+ DYLD_LIBRARY_PATH="$(LIBXML_SRC)/.libs:$$DYLD_LIBRARY_PATH"; \
+ PATH="$(LIBXML_SRC)/.libs:$$PATH" ; \
fi; \
- export PYTHONPATH; \
for test in $(TESTSPY) ; do \
echo "-- $$test" ; \
- (cd $(srcdir) && $(PYTHON) $$test ) || exit 1; \
+ LIBXML_SRC="$(LIBXML_SRC)" $(PYTHON) $(srcdir)/$$test; \
done)
-else
-tests:
endif
CLEANFILES = *.pyc core
diff --git a/python/tests/basic.py b/python/tests/basic.py
index 46355de7..b7cd115d 100755
--- a/python/tests/basic.py
+++ b/python/tests/basic.py
@@ -1,17 +1,20 @@
#!/usr/bin/env python
+import os
import sys
+import setup_test
import libxml2
# Memory debug specific
libxml2.debugMemory(1)
import libxslt
+basedir = os.path.dirname(os.path.realpath(__file__))
-
-styledoc = libxml2.parseFile("test.xsl")
+styledoc = libxml2.parseFile("%s/test.xsl" % basedir)
style = libxslt.parseStylesheetDoc(styledoc)
-doc = libxml2.parseFile("test.xml")
+doc = libxml2.parseFile("%s/test.xml" % basedir)
result = style.applyStylesheet(doc, None)
style.saveResultToFilename("foo", result, 0)
+os.remove("foo")
stringval = style.saveResultToString(result)
if (len(stringval) != 68):
print("Error in saveResultToString")
diff --git a/python/tests/exslt.py b/python/tests/exslt.py
index b859d187..b94fe268 100755
--- a/python/tests/exslt.py
+++ b/python/tests/exslt.py
@@ -1,5 +1,6 @@
#!/usr/bin/env python
import sys
+import setup_test
import libxml2
# Memory debug specific
libxml2.debugMemory(1)
diff --git a/python/tests/extelem.py b/python/tests/extelem.py
index 2528a399..af6d735a 100644..100755
--- a/python/tests/extelem.py
+++ b/python/tests/extelem.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import sys
import string
+import setup_test
import libxml2
# Memory debug specific
libxml2.debugMemory(1)
diff --git a/python/tests/extfunc.py b/python/tests/extfunc.py
index 0853a55e..2c0b0aa1 100755
--- a/python/tests/extfunc.py
+++ b/python/tests/extfunc.py
@@ -1,6 +1,7 @@
#!/usr/bin/env python
import sys
import string
+import setup_test
import libxml2
# Memory debug specific
libxml2.debugMemory(1)
diff --git a/python/tests/setup_test.py b/python/tests/setup_test.py
new file mode 100644
index 00000000..8574ff3e
--- /dev/null
+++ b/python/tests/setup_test.py
@@ -0,0 +1,8 @@
+import os
+
+if hasattr(os, 'add_dll_directory'):
+ os.add_dll_directory(os.path.join(os.getcwd(), '..', '..', 'libxslt', '.libs'))
+ os.add_dll_directory(os.path.join(os.getcwd(), '..', '..', 'libexslt', '.libs'))
+ libxml_src = os.getenv('LIBXML_SRC')
+ if libxml_src is not None and libxml_src != '':
+ os.add_dll_directory(os.path.join(libxml_src, '.libs'))
diff --git a/python/types.c b/python/types.c
index 1617cb96..53094250 100644
--- a/python/types.c
+++ b/python/types.c
@@ -25,42 +25,189 @@ xmlParserInputPtr xmlNoNetExternalEntityLoader(const char *URL,
#if PY_MAJOR_VERSION >= 3
#include <stdio.h>
+#include <stdint.h>
+
+#ifdef _WIN32
+
+#ifndef XML_IGNORE_FPTR_CAST_WARNINGS
+#define XML_IGNORE_FPTR_CAST_WARNINGS
+#endif
+#ifndef XML_POP_WARNINGS
+#define XML_POP_WARNINGS
+#endif
+
+#include <windows.h>
+#include <crtdbg.h>
+
+/* Taken from info on MSDN site, as we may not have the Windows WDK/DDK headers */
+typedef struct _IO_STATUS_BLOCK {
+ union {
+ NTSTATUS Status;
+ PVOID Pointer;
+ } DUMMYUNIONNAME;
+ ULONG_PTR Information;
+} IO_STATUS_BLOCK;
+
+typedef struct _FILE_ACCESS_INFORMATION {
+ ACCESS_MASK AccessFlags;
+} FILE_ACCESS_INFORMATION;
+
+typedef NTSTATUS (*t_NtQueryInformationFile) (HANDLE FileHandle,
+ IO_STATUS_BLOCK *IoStatusBlock,
+ PVOID FileInformation,
+ ULONG Length,
+ int FileInformationClass); /* this is an Enum */
+
+#if (defined (_MSC_VER) && _MSC_VER >= 1400)
+/*
+ * This is the (empty) invalid parameter handler
+ * that is used for Visual C++ 2005 (and later) builds
+ * so that we can use this instead of the system automatically
+ * aborting the process.
+ *
+ * This is necessary as we use _get_oshandle() to check the validity
+ * of the file descriptors as we close them, so when an invalid file
+ * descriptor is passed into that function as we check on it, we get
+ * -1 as the result, instead of the gspawn helper program aborting.
+ *
+ * Please see http://msdn.microsoft.com/zh-tw/library/ks2530z6%28v=vs.80%29.aspx
+ * for an explanation on this.
+ */
+void
+myInvalidParameterHandler(const wchar_t *expression,
+ const wchar_t *function,
+ const wchar_t *file,
+ unsigned int line,
+ uintptr_t pReserved)
+{
+}
+#endif
+#else
#include <unistd.h>
#include <fcntl.h>
+#endif
FILE *
libxml_PyFileGet(PyObject *f) {
- int fd, flags;
FILE *res;
const char *mode;
+ int fd = PyObject_AsFileDescriptor(f);
+
+#ifdef _WIN32
+ intptr_t w_fh = -1;
+ HMODULE hntdll = NULL;
+ IO_STATUS_BLOCK status_block;
+ FILE_ACCESS_INFORMATION ai;
+ t_NtQueryInformationFile NtQueryInformationFile;
+ BOOL is_read = FALSE;
+ BOOL is_write = FALSE;
+ BOOL is_append = FALSE;
+
+#if (defined (_MSC_VER) && _MSC_VER >= 1400)
+ /* set up our empty invalid parameter handler */
+ _invalid_parameter_handler oldHandler, newHandler;
+ newHandler = myInvalidParameterHandler;
+ oldHandler = _set_invalid_parameter_handler(newHandler);
+
+ /* Disable the message box for assertions. */
+ _CrtSetReportMode(_CRT_ASSERT, 0);
+#endif
+
+ w_fh = _get_osfhandle(fd);
+
+ if (w_fh == -1)
+ return(NULL);
+
+ hntdll = GetModuleHandleW(L"ntdll.dll");
+
+ if (hntdll == NULL)
+ return(NULL);
+XML_IGNORE_FPTR_CAST_WARNINGS
+ NtQueryInformationFile = (t_NtQueryInformationFile)GetProcAddress(hntdll, "NtQueryInformationFile");
+XML_POP_WARNINGS
+
+ if (NtQueryInformationFile != NULL &&
+ (NtQueryInformationFile((HANDLE)w_fh,
+ &status_block,
+ &ai,
+ sizeof(FILE_ACCESS_INFORMATION),
+ 8) == 0)) /* 8 means "FileAccessInformation" */
+ {
+ if (ai.AccessFlags & FILE_READ_DATA)
+ is_read = TRUE;
+ if (ai.AccessFlags & FILE_WRITE_DATA)
+ is_write = TRUE;
+ if (ai.AccessFlags & FILE_APPEND_DATA)
+ is_append = TRUE;
+
+ if (is_write) {
+ if (is_read) {
+ if (is_append)
+ mode = "a+";
+ else
+ mode = "rw";
+ } else {
+ if (is_append)
+ mode = "a";
+ else
+ mode = "w";
+ }
+ } else {
+ if (is_append)
+ mode = "r+";
+ else
+ mode = "r";
+ }
+ }
+
+ FreeLibrary(hntdll);
+
+ if (!is_write && !is_read) /* also happens if we did not load or run NtQueryInformationFile() successfully */
+ return(NULL);
+#else
+ int flags;
- fd = PyObject_AsFileDescriptor(f);
/*
- * Get the flags on the fd to understand how it was opened
+ * macOS returns O_RDWR for standard streams, but fails to write to
+ * stdout or stderr when opened with fdopen(dup_fd, "rw").
*/
- flags = fcntl(fd, F_GETFL, 0);
- switch (flags & O_ACCMODE) {
- case O_RDWR:
- if (flags & O_APPEND)
- mode = "a+";
- else
- mode = "rw";
- break;
- case O_RDONLY:
- if (flags & O_APPEND)
- mode = "r+";
- else
- mode = "r";
- break;
- case O_WRONLY:
- if (flags & O_APPEND)
- mode = "a";
- else
- mode = "w";
- break;
- default:
- return(NULL);
+ switch (fd) {
+ case STDIN_FILENO:
+ mode = "r";
+ break;
+ case STDOUT_FILENO:
+ case STDERR_FILENO:
+ mode = "w";
+ break;
+ default:
+ /*
+ * Get the flags on the fd to understand how it was opened
+ */
+ flags = fcntl(fd, F_GETFL, 0);
+ switch (flags & O_ACCMODE) {
+ case O_RDWR:
+ if (flags & O_APPEND)
+ mode = "a+";
+ else
+ mode = "rw";
+ break;
+ case O_RDONLY:
+ if (flags & O_APPEND)
+ mode = "r+";
+ else
+ mode = "r";
+ break;
+ case O_WRONLY:
+ if (flags & O_APPEND)
+ mode = "a";
+ else
+ mode = "w";
+ break;
+ default:
+ return(NULL);
+ }
}
+#endif
/*
* the FILE struct gets a new fd, so that it can be closed
diff --git a/tests/Makefile.am b/tests/Makefile.am
index 5645bb01..cadc5cc9 100644
--- a/tests/Makefile.am
+++ b/tests/Makefile.am
@@ -1,26 +1,56 @@
## Process this file with automake to produce Makefile.in
-SUBDIRS=docs REC1 REC2 REC general namespaces keys numbers documents \
- extensions reports xmlspec multiple xinclude XSLTMark docbook \
- exslt plugins fuzz
+AM_CPPFLAGS = -I$(top_srcdir) -I$(top_builddir)
-all:
+SUBDIRS = xmlspec multiple xinclude XSLTMark docbook fuzz
+
+DEPENDENCIES = $(top_builddir)/libxslt/libxslt.la \
+ $(top_builddir)/libexslt/libexslt.la
+
+LDADD = $(top_builddir)/libxslt/libxslt.la \
+ $(top_builddir)/libexslt/libexslt.la \
+ $(LIBXML_LIBS)
+
+check_PROGRAMS = runtest
+
+runtest_SOURCES = runtest.c
+
+if WITH_MODULES
-# Each subdirectory has it's own Makefile to cater for the unique
-# requirements of that subdirectory. In general, xsltproc will be
-# run on the *.xsl / *.xml file combinations, and the output of that
-# run will be compared with the "expected" output contained in *.out
-# and (if errors are expected) in *.err
-test tests:
- @(cur=`pwd` ; for dir in $(SUBDIRS) ; do cd $$dir ; $(MAKE) CHECKER='$(CHECKER)' tests ; cd $$cur ; done)
+check_LTLIBRARIES = xmlsoft_org_xslt_testplugin.la
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- @echo '## Go get a cup of coffee it is gonna take a while ...'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
+# our rpath is a rather unorthodox location as we
+# don't want to pollute $(DESTDIR) with the test plugin
+
+plugindir = $(abs_builddir)/.libs
+
+xmlsoft_org_xslt_testplugin_la_CFLAGS = $(AM_CFLAGS) -DMODULE_COMPILE
+xmlsoft_org_xslt_testplugin_la_SOURCES = testplugin.c
+xmlsoft_org_xslt_testplugin_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS)
+xmlsoft_org_xslt_testplugin_la_LDFLAGS = \
+ $(AM_LDFLAGS) -no-undefined \
+ -module -avoid-version -rpath $(plugindir)
+
+endif
+
+all:
-full: tests docbook_tests
+check-local:
+ cd $(srcdir) && LIBXSLT_PLUGINS_PATH=$(plugindir) $(abs_builddir)/runtest
docbook_tests:
@(cd docbook ; $(MAKE) full)
+dist-hook:
+ cp -a $(srcdir)/REC $(distdir)
+ cp -a $(srcdir)/REC2 $(distdir)
+ cp -a $(srcdir)/documents $(distdir)
+ cp -a $(srcdir)/encoding $(distdir)
+ cp -a $(srcdir)/exslt $(distdir)
+ cp -a $(srcdir)/extensions $(distdir)
+ cp -a $(srcdir)/general $(distdir)
+ cp -a $(srcdir)/keys $(distdir)
+ cp -a $(srcdir)/namespaces $(distdir)
+ cp -a $(srcdir)/numbers $(distdir)
+ cp -a $(srcdir)/plugins $(distdir)
+ cp -a $(srcdir)/reports $(distdir)
diff --git a/tests/REC/Makefile.am b/tests/REC/Makefile.am
deleted file mode 100644
index b0d943f2..00000000
--- a/tests/REC/Makefile.am
+++ /dev/null
@@ -1,219 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- article.xsl bigfont.xsl \
- test-10-1.out test-10-1.xml test-10-1.xsl \
- test-10-2.out test-10-2.xml test-10-2.xsl \
- test-11.2-1.out test-11.2-1.xml test-11.2-1.xsl \
- test-11.2-2.out test-11.2-2.xml test-11.2-2.xsl \
- test-11.2-3.out test-11.2-3.xml test-11.2-3.xsl \
- test-11.2-4.out test-11.2-4.xml test-11.2-4.xsl \
- test-11.2-5.out test-11.2-5.xml test-11.2-5.xsl \
- test-11.2-6.out test-11.2-6.xml test-11.2-6.xsl \
- test-12.2-1.out test-12.2-1.xml test-12.2-1.xsl \
- test-12.2-2.out test-12.2-2.xml test-12.2-2.xsl \
- test-15-1.out test-15-1.xml test-15-1.xsl \
- test-16.1-1.out test-16.1-1.xml test-16.1-1.xsl \
- test-16.1-2.out test-16.1-2.xml test-16.1-2.xsl \
- test-2.3-1.out test-2.3-1.xml test-2.3-1.xsl \
- test-2.3-2.out test-2.3-2.xml test-2.3-2.xsl \
- test-3.4-1.out test-3.4-1.xml test-3.4-1.xsl \
- test-3.4-2.out test-3.4-2.xml test-3.4-2.xsl \
- test-3.4-3.out test-3.4-3.xml test-3.4-3.xsl \
- test-2.5-1.out test-2.5-1.xml test-2.5-1.xsl test-2.5-1.err \
- test-2.6.2-1.out test-2.6.2-1.xml test-2.6.2-1.xsl \
- test-5.2-1.out test-5.2-1.xml test-5.2-1.xsl \
- test-5.2-2.out test-5.2-2.xml test-5.2-2.xsl \
- test-5.2-3.out test-5.2-3.xml test-5.2-3.xsl \
- test-5.2-4.out test-5.2-4.xml test-5.2-4.xsl \
- test-5.2-5.out test-5.2-5.xml test-5.2-5.xsl \
- test-5.2-6.out test-5.2-6.xml test-5.2-6.xsl \
- test-5.2-7.out test-5.2-7.xml test-5.2-7.xsl \
- test-5.2-8.out test-5.2-8.xml test-5.2-8.xsl \
- test-5.2-9.out test-5.2-9.xml test-5.2-9.xsl \
- test-5.2-10.out test-5.2-10.xml test-5.2-10.xsl \
- test-5.2-11.out test-5.2-11.xml test-5.2-11.xsl \
- test-5.2-12.out test-5.2-12.xml test-5.2-12.xsl \
- test-5.2-13.out test-5.2-13.xml test-5.2-13.xsl \
- test-5.2-14.out test-5.2-14.xml test-5.2-14.xsl \
- test-5.2-15.out test-5.2-15.xml test-5.2-15.xsl \
- test-5.2-16.out test-5.2-16.xml test-5.2-16.xsl \
- test-5.2-17.out test-5.2-17.xml test-5.2-17.xsl \
- test-5.2-18.out test-5.2-18.xml test-5.2-18.xsl \
- test-5.2-19.out test-5.2-19.xml test-5.2-19.xsl \
- test-5.2-20.out test-5.2-20.xml test-5.2-20.xsl \
- test-5.2-21.out test-5.2-21.xml test-5.2-21.xsl \
- test-5.2-22.out test-5.2-22.xml test-5.2-22.xsl \
- test-5.3.out test-5.3.xml test-5.3.xsl \
- test-5.4-1.out test-5.4-1.xml test-5.4-1.xsl \
- test-5.4-2.out test-5.4-2.xml test-5.4-2.xsl \
- test-5.4-3.out test-5.4-3.xml test-5.4-3.xsl \
- test-5.4-4.out test-5.4-4.xml test-5.4-4.xsl \
- test-5.4-5.out test-5.4-5.xml test-5.4-5.xsl \
- test-5.8.out test-5.8.xml test-5.8.xsl \
- test-6.out test-6.xml test-6.xsl \
- test-6.1.out test-6.1.xml test-6.1.xsl test-6.1.err \
- test-7.1.1.out test-7.1.1.xml test-7.1.1.xsl \
- test-7.1.1-2.out test-7.1.1-2.xml test-7.1.1-2.xsl \
- test-7.1.1-3.out test-7.1.1-3.xml test-7.1.1-3.xsl \
- test-7.1.3.out test-7.1.3.xml test-7.1.3.xsl \
- test-7.1.4.out test-7.1.4.xml test-7.1.4.xsl \
- test-7.3.out test-7.3.xml test-7.3.xsl \
- test-7.4.out test-7.4.xml test-7.4.xsl \
- test-7.5-1.out test-7.5-1.xml test-7.5-1.xsl \
- test-7.6.1-1.out test-7.6.1-1.xml test-7.6.1-1.xsl \
- test-7.6.1-2.out test-7.6.1-2.xml test-7.6.1-2.xsl \
- test-7.6.1-3.out test-7.6.1-3.xml test-7.6.1-3.xsl \
- test-7.6.2-1.out test-7.6.2-1.xml test-7.6.2-1.xsl \
- test-7.6.2-2.out test-7.6.2-2.xml test-7.6.2-2.xsl \
- test-7.7-1.out test-7.7-1.xml test-7.7-1.xsl \
- test-7.7-2.out test-7.7-2.xml test-7.7-2.xsl \
- test-7.7-3.out test-7.7-3.xml test-7.7-3.xsl \
- test-7.7-4.out test-7.7-4.xml test-7.7-4.xsl \
- test-7.7-5.out test-7.7-5.xml test-7.7-5.xsl \
- test-7.7-6.out test-7.7-6.xml test-7.7-6.xsl \
- test-8-1.out test-8-1.xml test-8-1.xsl \
- test-9.1-1.out test-9.1-1.xml test-9.1-1.xsl \
- test-9.1-2.out test-9.1-2.xml test-9.1-2.xsl \
- test-9.2-1.xsl \
- stand-2.7-1.dtd stand-2.7-1.stand.out stand-2.7-1.xsl \
- stand-2.7-1.out stand-2.7-1.xml \
- stand-2.7-2.stand.out stand-2.7-2.xml stand-2.7-3.xml \
- stand-2.7-3.stand.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @(echo > .memdump)
- @echo '## Running REC tests'
- -@(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then \
- continue ; \
- fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml \
- > $$name.res 2>$$name.bad ; \
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- cp $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -f $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad ; \
- else \
- diff /dev/null $$name.bad ; \
- fi ; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | \
- grep -v "MEMORY ALLOCATED : 0" || true` ; \
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
- @(for i in $(srcdir)/stand*.xml ; do \
- name=`basename $$i .xml` ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xml > $$name.res 2>$$name.bad ;\
- if [ ! -f $(srcdir)/$$name.stand.out ] ; then \
- cp $$name.res $(srcdir)/$$name.stand.out ; \
- if [ -s $$name.bad ] ; then \
- cp $$name.bad $(srcdir)/$$name.stand.err ; \
- fi ; \
- else \
- if [ ! -f $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.stand.out $$name.res ; \
- if [ -s $(srcdir)/$$name.stand.err ] ; then \
- diff $(srcdir)/$$name.stand.err $$name.bad ; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true` ; \
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
- @echo '## Running REC tests without dictionaries'
- -@(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then \
- continue ; \
- fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml \
- > $$name.res 2>$$name.bad ; \
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- cp $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -f $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad ; \
- else \
- diff /dev/null $$name.bad ; \
- fi ; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | \
- grep -v "MEMORY ALLOCATED : 0" || true` ; \
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
- @(for i in $(srcdir)/stand*.xml ; do \
- name=`basename $$i .xml` ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict \
- $(srcdir)/$$name.xml > $$name.res 2>$$name.bad ;\
- if [ ! -f $(srcdir)/$$name.stand.out ] ; then \
- cp $$name.res $(srcdir)/$$name.stand.out ; \
- if [ -s $$name.bad ] ; then \
- cp $$name.bad $(srcdir)/$$name.stand.err ; \
- fi ; \
- else \
- if [ ! -f $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.stand.out $$name.res ; \
- if [ -s $(srcdir)/$$name.stand.err ] ; then \
- diff $(srcdir)/$$name.stand.err $$name.bad ; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true` ; \
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
-
diff --git a/tests/REC/test-10-3.out b/tests/REC/test-10-3.out
new file mode 100644
index 00000000..7d67c1c6
--- /dev/null
+++ b/tests/REC/test-10-3.out
@@ -0,0 +1,2 @@
+<?xml version="1.0"?>
+<ul><li>Peter MƤrtens</li><li>Peter Mƶller</li><li>Peter Mueller</li></ul>
diff --git a/tests/REC/test-10-3.xml b/tests/REC/test-10-3.xml
new file mode 100644
index 00000000..b2056221
--- /dev/null
+++ b/tests/REC/test-10-3.xml
@@ -0,0 +1,20 @@
+<employees>
+ <employee>
+ <name>
+ <given>Peter</given>
+ <family>Mueller</family>
+ </name>
+ </employee>
+ <employee>
+ <name>
+ <given>Peter</given>
+ <family>Mƶller</family>
+ </name>
+ </employee>
+ <employee>
+ <name>
+ <given>Peter</given>
+ <family>MƤrtens</family>
+ </name>
+ </employee>
+</employees>
diff --git a/tests/REC/test-10-3.xsl b/tests/REC/test-10-3.xsl
new file mode 100644
index 00000000..35ef67f7
--- /dev/null
+++ b/tests/REC/test-10-3.xsl
@@ -0,0 +1,19 @@
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
+<xsl:template match="employees">
+ <ul>
+ <xsl:apply-templates select="employee">
+ <xsl:sort select="name/family" lang="de"/>
+ <xsl:sort select="name/given" lang="de"/>
+ </xsl:apply-templates>
+ </ul>
+</xsl:template>
+
+<xsl:template match="employee">
+ <li>
+ <xsl:value-of select="name/given"/>
+ <xsl:text> </xsl:text>
+ <xsl:value-of select="name/family"/>
+ </li>
+</xsl:template>
+</xsl:stylesheet>
diff --git a/tests/REC/test-12.4-1.out b/tests/REC/test-12.4-1.out
new file mode 100644
index 00000000..237a9f27
--- /dev/null
+++ b/tests/REC/test-12.4-1.out
@@ -0,0 +1,11 @@
+<?xml version="1.0"?>
+<result>
+ <document>id1</document>
+ <element>id2</element>
+ <attribute>id3</attribute>
+ <namespace>id2ns</namespace>
+ <namespace>id2nsC3A4C3B6C3BC</namespace>
+ <text>id4</text>
+ <comment>id5</comment>
+ <processing-instruction>id6</processing-instruction>
+</result>
diff --git a/tests/REC/test-12.4-1.xml b/tests/REC/test-12.4-1.xml
new file mode 100644
index 00000000..84484f66
--- /dev/null
+++ b/tests/REC/test-12.4-1.xml
@@ -0,0 +1,6 @@
+<doc xmlns="s:def">
+ <elem attr="value" xmlns:Ć¤Ć¶Ć¼="uri"/>
+ <text>text</text>
+ <!-- comment -->
+ <?pi content?>
+</doc>
diff --git a/tests/REC/test-12.4-1.xsl b/tests/REC/test-12.4-1.xsl
new file mode 100644
index 00000000..5cf5dd33
--- /dev/null
+++ b/tests/REC/test-12.4-1.xsl
@@ -0,0 +1,38 @@
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:d="s:def"
+ exclude-result-prefixes="d">
+
+<xsl:output indent="yes"/>
+
+<xsl:template match="/">
+ <result>
+ <document>
+ <xsl:value-of select="generate-id(/)"/>
+ </document>
+ <element>
+ <xsl:value-of select="generate-id(/d:doc/d:elem)"/>
+ </element>
+ <attribute>
+ <xsl:value-of select="generate-id(d:doc/d:elem/@attr)"/>
+ </attribute>
+ <namespace>
+ <xsl:value-of select="generate-id(d:doc/d:elem/namespace::*[local-name()=''])"/>
+ </namespace>
+ <namespace>
+ <xsl:value-of select="generate-id(d:doc/d:elem/namespace::Ć¤Ć¶Ć¼)"/>
+ </namespace>
+ <text>
+ <xsl:value-of select="generate-id(d:doc/d:text/text())"/>
+ </text>
+ <comment>
+ <xsl:value-of select="generate-id(d:doc/comment())"/>
+ </comment>
+ <processing-instruction>
+ <xsl:value-of select="generate-id(d:doc/processing-instruction())"/>
+ </processing-instruction>
+ </result>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/REC/test-6.1.out b/tests/REC/test-6.1.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/REC/test-6.1.out
+++ /dev/null
diff --git a/tests/REC1/Makefile.am b/tests/REC1/Makefile.am
deleted file mode 100644
index cd34f296..00000000
--- a/tests/REC1/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = doc.xsl doc.xml doc.dtd result.xml
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-# No special stuff here, just a single test that either works or doesn't!
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running REC1 tests'
- @(echo > .memdump)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/doc.xsl $(srcdir)/doc.xml > doc.res ; \
- diff $(srcdir)/result.xml doc.res ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true; \
- rm -f doc.res)
-
diff --git a/tests/REC2/Makefile.am b/tests/REC2/Makefile.am
deleted file mode 100644
index a075b90d..00000000
--- a/tests/REC2/Makefile.am
+++ /dev/null
@@ -1,30 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = data.xml vrml.xsl vrml.xml svg.xsl svg.xml html.xsl html.xml
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-# Just 3 specific files tested, they either work or don't!
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running REC2 tests'
- @(echo > .memdump)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/vrml.xsl $(srcdir)/data.xml > vrml.res ; \
- diff $(srcdir)/vrml.xml vrml.res ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f vrml.res)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/svg.xsl $(srcdir)/data.xml > svg.res ; \
- diff $(srcdir)/svg.xml svg.res ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f svg.res)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/html.xsl $(srcdir)/data.xml > html.res ; \
- diff $(srcdir)/html.xml html.res ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f html.res)
-
diff --git a/tests/REC2/data.xml b/tests/REC2/data.xml
deleted file mode 100644
index a5437417..00000000
--- a/tests/REC2/data.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<sales>
-
- <division id="North">
- <revenue>10</revenue>
- <growth>9</growth>
- <bonus>7</bonus>
- </division>
-
- <division id="South">
- <revenue>4</revenue>
- <growth>3</growth>
- <bonus>4</bonus>
- </division>
-
- <division id="West">
- <revenue>6</revenue>
- <growth>-1.5</growth>
- <bonus>2</bonus>
- </division>
-
-</sales>
diff --git a/tests/REC2/html.out b/tests/REC2/html.out
new file mode 100644
index 00000000..94ed6c59
--- /dev/null
+++ b/tests/REC2/html.out
@@ -0,0 +1,32 @@
+<html lang="en">
+<head>
+<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
+<title>Sales Results By Division</title>
+</head>
+<body><table border="1">
+<tr>
+<th>Division</th>
+<th>Revenue</th>
+<th>Growth</th>
+<th>Bonus</th>
+</tr>
+<tr>
+<td><em>North</em></td>
+<td>10</td>
+<td>9</td>
+<td>7</td>
+</tr>
+<tr>
+<td><em>West</em></td>
+<td>6</td>
+<td style="color:red">-1.5</td>
+<td>2</td>
+</tr>
+<tr>
+<td><em>South</em></td>
+<td>4</td>
+<td>3</td>
+<td>4</td>
+</tr>
+</table></body>
+</html>
diff --git a/tests/REC2/html.xml b/tests/REC2/html.xml
index 94ed6c59..a5437417 100644
--- a/tests/REC2/html.xml
+++ b/tests/REC2/html.xml
@@ -1,32 +1,21 @@
-<html lang="en">
-<head>
-<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
-<title>Sales Results By Division</title>
-</head>
-<body><table border="1">
-<tr>
-<th>Division</th>
-<th>Revenue</th>
-<th>Growth</th>
-<th>Bonus</th>
-</tr>
-<tr>
-<td><em>North</em></td>
-<td>10</td>
-<td>9</td>
-<td>7</td>
-</tr>
-<tr>
-<td><em>West</em></td>
-<td>6</td>
-<td style="color:red">-1.5</td>
-<td>2</td>
-</tr>
-<tr>
-<td><em>South</em></td>
-<td>4</td>
-<td>3</td>
-<td>4</td>
-</tr>
-</table></body>
-</html>
+<sales>
+
+ <division id="North">
+ <revenue>10</revenue>
+ <growth>9</growth>
+ <bonus>7</bonus>
+ </division>
+
+ <division id="South">
+ <revenue>4</revenue>
+ <growth>3</growth>
+ <bonus>4</bonus>
+ </division>
+
+ <division id="West">
+ <revenue>6</revenue>
+ <growth>-1.5</growth>
+ <bonus>2</bonus>
+ </division>
+
+</sales>
diff --git a/tests/REC2/svg.out b/tests/REC2/svg.out
new file mode 100644
index 00000000..fdaca227
--- /dev/null
+++ b/tests/REC2/svg.out
@@ -0,0 +1,18 @@
+<?xml version="1.0"?>
+<svg xmlns="http://www.w3.org/Graphics/SVG/SVG-19990812.dtd" width="3in" height="3in">
+ <g style="stroke: #000000">
+ <line x1="0" x2="150" y1="150" y2="150"/>
+ <line x1="0" x2="0" y1="0" y2="150"/>
+ <text x="0" y="10">Revenue</text>
+ <text x="150" y="165">Division</text>
+ <rect x="10" y="50" width="20" height="100"/>
+ <text x="10" y="165">North</text>
+ <text x="10" y="45">10</text>
+ <rect x="50" y="110" width="20" height="40"/>
+ <text x="50" y="165">South</text>
+ <text x="50" y="105">4</text>
+ <rect x="90" y="90" width="20" height="60"/>
+ <text x="90" y="165">West</text>
+ <text x="90" y="85">6</text>
+ </g>
+</svg>
diff --git a/tests/REC2/svg.xml b/tests/REC2/svg.xml
index fdaca227..a5437417 100644
--- a/tests/REC2/svg.xml
+++ b/tests/REC2/svg.xml
@@ -1,18 +1,21 @@
-<?xml version="1.0"?>
-<svg xmlns="http://www.w3.org/Graphics/SVG/SVG-19990812.dtd" width="3in" height="3in">
- <g style="stroke: #000000">
- <line x1="0" x2="150" y1="150" y2="150"/>
- <line x1="0" x2="0" y1="0" y2="150"/>
- <text x="0" y="10">Revenue</text>
- <text x="150" y="165">Division</text>
- <rect x="10" y="50" width="20" height="100"/>
- <text x="10" y="165">North</text>
- <text x="10" y="45">10</text>
- <rect x="50" y="110" width="20" height="40"/>
- <text x="50" y="165">South</text>
- <text x="50" y="105">4</text>
- <rect x="90" y="90" width="20" height="60"/>
- <text x="90" y="165">West</text>
- <text x="90" y="85">6</text>
- </g>
-</svg>
+<sales>
+
+ <division id="North">
+ <revenue>10</revenue>
+ <growth>9</growth>
+ <bonus>7</bonus>
+ </division>
+
+ <division id="South">
+ <revenue>4</revenue>
+ <growth>3</growth>
+ <bonus>4</bonus>
+ </division>
+
+ <division id="West">
+ <revenue>6</revenue>
+ <growth>-1.5</growth>
+ <bonus>2</bonus>
+ </division>
+
+</sales>
diff --git a/tests/REC2/vrml.out b/tests/REC2/vrml.out
new file mode 100644
index 00000000..c9ba69f5
--- /dev/null
+++ b/tests/REC2/vrml.out
@@ -0,0 +1,38 @@
+#VRML V2.0 utf8
+
+# externproto definition of a single bar element
+EXTERNPROTO bar [
+ field SFInt32 x
+ field SFInt32 y
+ field SFInt32 z
+ field SFString name
+ ]
+ "http://www.vrml.org/WorkingGroups/dbwork/barProto.wrl"
+
+# inline containing the graph axes
+Inline {
+ url "http://www.vrml.org/WorkingGroups/dbwork/barAxes.wrl"
+ }
+
+
+bar {
+ x 10
+ y 9
+ z 7
+ name "North"
+ }
+
+bar {
+ x 4
+ y 3
+ z 4
+ name "South"
+ }
+
+bar {
+ x 6
+ y -1.5
+ z 2
+ name "West"
+ }
+ \ No newline at end of file
diff --git a/tests/REC2/vrml.xml b/tests/REC2/vrml.xml
index c9ba69f5..a5437417 100644
--- a/tests/REC2/vrml.xml
+++ b/tests/REC2/vrml.xml
@@ -1,38 +1,21 @@
-#VRML V2.0 utf8
-
-# externproto definition of a single bar element
-EXTERNPROTO bar [
- field SFInt32 x
- field SFInt32 y
- field SFInt32 z
- field SFString name
- ]
- "http://www.vrml.org/WorkingGroups/dbwork/barProto.wrl"
-
-# inline containing the graph axes
-Inline {
- url "http://www.vrml.org/WorkingGroups/dbwork/barAxes.wrl"
- }
-
-
-bar {
- x 10
- y 9
- z 7
- name "North"
- }
-
-bar {
- x 4
- y 3
- z 4
- name "South"
- }
-
-bar {
- x 6
- y -1.5
- z 2
- name "West"
- }
- \ No newline at end of file
+<sales>
+
+ <division id="North">
+ <revenue>10</revenue>
+ <growth>9</growth>
+ <bonus>7</bonus>
+ </division>
+
+ <division id="South">
+ <revenue>4</revenue>
+ <growth>3</growth>
+ <bonus>4</bonus>
+ </division>
+
+ <division id="West">
+ <revenue>6</revenue>
+ <growth>-1.5</growth>
+ <bonus>2</bonus>
+ </division>
+
+</sales>
diff --git a/tests/XSLTMark/Makefile.am b/tests/XSLTMark/Makefile.am
index 6932fef6..5ed2d73f 100644
--- a/tests/XSLTMark/Makefile.am
+++ b/tests/XSLTMark/Makefile.am
@@ -61,14 +61,10 @@ xsltproc = $(top_builddir)/xsltproc/xsltproc
$(xsltproc):
cd ../../xsltproc && $(MAKE) xsltproc
-test tests:
+check-local:
@echo '## Running XSLTMark tests'
@$(MAKE) $(ALL_TESTS)
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
CLEANFILES = *.tmp *~ .memdump core db100.xml db1000.xml db10000.xml
@@ -740,4 +736,4 @@ depth: $(xsltproc)
fi
@rm -f $@.tmp
-.PHONY: test tests valgrind $(ALL_TESTS)
+.PHONY: $(ALL_TESTS)
diff --git a/tests/docbook/Makefile.am b/tests/docbook/Makefile.am
index 83b1be3c..71ba0644 100644
--- a/tests/docbook/Makefile.am
+++ b/tests/docbook/Makefile.am
@@ -1,13 +1,9 @@
## Process this file with automake to produce Makefile.in
-tests:
+check-local:
@$(MAKE) single
@$(MAKE) xtchunk
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
$(top_builddir)/xsltproc/xsltproc:
@(cd ../../xsltproc ; $(MAKE) xsltproc)
diff --git a/tests/docs/Makefile.am b/tests/docs/Makefile.am
deleted file mode 100644
index e45acfd6..00000000
--- a/tests/docs/Makefile.am
+++ /dev/null
@@ -1,228 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-#
-# Contains only test documents
-#
-
-EXTRA_DIST = \
- bug-1-.xml \
- bug-2-.xml \
- bug-3-.xml \
- bug-4-.xml \
- bug-5-.xml \
- bug-6-.xml \
- bug-7-.xml \
- bug-8-.xml \
- bug-9-.xml \
- bug-10-.xml \
- bug-11-.xml \
- bug-12-.xml \
- bug-13-.xml \
- bug-14-.xml \
- bug-15-.xml \
- bug-16-.xml \
- bug-17-.xml \
- bug-18-.xml \
- bug-19-.xml \
- bug-20-.xml \
- bug-21-.xml \
- bug-22-.xml \
- bug-23-.xml \
- bug-24-.xml \
- bug-25-.xml \
- bug-26-.xml \
- bug-27-.xml \
- bug-28-.xml \
- bug-29-.xml bug-29-.ent \
- bug-30-.xml \
- bug-31-.xml \
- bug-32-.xml \
- bug-33-.xml \
- bug-35-.xml \
- bug-36-.xml \
- bug-37-.xml \
- bug-38-.xml \
- bug-39-.xml \
- bug-40-.xml \
- bug-41-.xml \
- bug-42-.xml \
- bug-43-.xml \
- bug-44-.xml \
- bug-45-.xml \
- bug-46-.xml \
- bug-47-.xml \
- bug-48-.xml \
- bug-49-.xml \
- bug-50-.xml \
- bug-52.xml \
- bug-53.xml \
- bug-54.xml \
- bug-55.xml \
- bug-56.xml \
- bug-57.xml \
- bug-59.xml \
- bug-60.xml \
- bug-61.xml \
- bug-62.xml \
- bug-63.xml \
- bug-64.xml \
- bug-65.xml \
- bug-66.xml \
- bug-68.xml \
- bug-69.xml \
- bug-70.xml \
- bug-71.xml \
- bug-72.xml \
- bug-73.xml \
- bug-74.xml \
- bug-75.xml \
- bug-76.xml \
- bug-77.xml \
- bug-78.xml \
- bug-79.xml \
- bug-80.xml \
- bug-81.xml \
- bug-82.xml \
- bug-83.xml \
- bug-84.xml \
- bug-86.xml \
- bug-87.xml \
- bug-88.xml \
- bug-89.xml \
- bug-90.xml \
- bug-91.xml \
- bug-92.xml \
- bug-93.xml \
- bug-94.xml \
- bug-95.xml \
- bug-96.xml \
- bug-97.xml \
- bug-98.xml \
- bug-99.xml \
- bug-100.xml \
- bug-101.xml \
- bug-102.xml \
- bug-103.xml \
- bug-104.xml \
- bug-105.xml \
- bug-106.xml \
- bug-107.xml \
- bug-108.xml \
- bug-109.xml \
- bug-110.xml bug-110.ent \
- bug-111.xml \
- bug-112.xml \
- bug-113.xml \
- bug-114.xml \
- bug-115.xml \
- bug-116.xml \
- bug-117.xml \
- bug-118.xml \
- bug-119.xml \
- bug-120.xml \
- bug-121.xml \
- bug-122.xml \
- bug-123.xml \
- bug-124.xml \
- bug-125.xml \
- bug-126.xml \
- bug-127.xml \
- bug-128.xml \
- bug-129.xml \
- bug-130.xml bug-130.doc \
- bug-131.xml \
- bug-132.xml \
- bug-133.xml \
- bug-134.xml \
- bug-135.xml \
- bug-136.xml \
- bug-137.xml \
- bug-138.xml \
- bug-139.xml \
- bug-140.xml \
- bug-141.xml \
- bug-142.xml \
- bug-143.xml \
- bug-144.xml \
- bug-145.xml \
- bug-146.xml \
- bug-147.xml \
- bug-148.xml \
- bug-149.xml \
- bug-150.xml \
- bug-151.xml \
- bug-152.xml \
- bug-153.xml bug-153.doc \
- bug-154.xml \
- bug-155.xml \
- bug-156.xml \
- bug-157.xml \
- bug-158.xml bug-158.doc \
- bug-159.xml \
- bug-160.xml \
- bug-161.xml \
- bug-163.xml \
- bug-164.xml \
- bug-165.xml \
- bug-166.xml \
- bug-167.xml \
- bug-168.xml \
- bug-169.xml \
- bug-170.xml \
- bug-171.xml \
- bug-172.xml \
- bug-173.xml \
- bug-174.xml \
- bug-175.xml \
- bug-176.xml \
- bug-177.xml \
- bug-178.xml \
- bug-179.xml \
- bug-180.xml \
- bug-181.xml \
- bug-182.xml \
- bug-183.xml \
- bug-184.xml \
- bug-186.xml \
- bug-187.xml \
- bug-188.xml \
- bug-189.xml \
- bug-190.xml \
- bug-191.xml \
- bug-192.xml \
- bug-193.xml \
- bug-194.xml \
- bug-195.xml \
- bug-196.xml \
- bug-197.xml \
- bug-198.xml \
- bug-199.xml \
- bug-200.xml \
- bug-201.xml \
- bug-202.xml \
- bug-203.xml \
- bug-204.xml \
- bug-205.xml \
- bug-206.xml \
- bug-207.xml \
- bug-208.xml \
- bug-209.xml \
- bug-210.xml \
- bug-211.xml \
- bug-212.xml \
- bug-213.xml \
- bug-214.xml \
- bug-215.xml \
- bug-216.xml \
- bug-217.xml \
- bug-218.xml \
- bug-219.xml \
- bug-220.xml \
- bug-221.xml \
- bug-222.xml \
- character.xml \
- date_add.xml \
- array.xml \
- items.xml
-
-tests:
diff --git a/tests/documents/Makefile.am b/tests/documents/Makefile.am
deleted file mode 100644
index 97c9fd8d..00000000
--- a/tests/documents/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- bredfort.css bredfort.xsl doc_file.xml docfile.xml \
- fragment2.xml fragment.result fragment.xml fragment.xsl \
- index.xml menu.xml message.result message.xml message.xsl \
- result.xhtml system.xml test_bad.err test_bad.result \
- test_bad.xml test.result test.xml test.xsl worklog.xml
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @(echo > .memdump)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/bredfort.xsl $(srcdir)/index.xml > result ; \
- diff $(srcdir)/result.xhtml result; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f result)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/test.xsl $(srcdir)/test.xml > result ; \
- diff $(srcdir)/test.result result; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f result)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/test.xsl $(srcdir)/test_bad.xml > result 2>err ; \
- diff $(srcdir)/test_bad.result result; \
- diff $(srcdir)/test_bad.err err; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f result err)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/message.xsl $(srcdir)/message.xml > result 2>&1 ; \
- diff $(srcdir)/message.result result; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f result)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/fragment.xsl $(srcdir)/fragment.xml > result 2>&1 ; \
- diff $(srcdir)/fragment.result result; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f result)
-
diff --git a/tests/documents/result.xhtml b/tests/documents/bredfort.out
index f02fbb88..f02fbb88 100644
--- a/tests/documents/result.xhtml
+++ b/tests/documents/bredfort.out
diff --git a/tests/documents/index.xml b/tests/documents/bredfort.xml
index 3ca2af32..3ca2af32 100644
--- a/tests/documents/index.xml
+++ b/tests/documents/bredfort.xml
diff --git a/tests/documents/fragment.result b/tests/documents/fragment.out
index 2c4565b4..2c4565b4 100644
--- a/tests/documents/fragment.result
+++ b/tests/documents/fragment.out
diff --git a/tests/documents/message.result b/tests/documents/message.err
index 965a84b4..965a84b4 100644
--- a/tests/documents/message.result
+++ b/tests/documents/message.err
diff --git a/tests/documents/test.result b/tests/documents/test.out
index faa008cc..faa008cc 100644
--- a/tests/documents/test.result
+++ b/tests/documents/test.out
diff --git a/tests/documents/test_bad.err b/tests/documents/test_bad.err
index 52e8b02c..e2ec793e 100644
--- a/tests/documents/test_bad.err
+++ b/tests/documents/test_bad.err
@@ -1,2 +1,2 @@
-warning: failed to load external entity "foofile.xml"
-warning: failed to load external entity "foo_file.xml"
+I/O warning : failed to load external entity "foofile.xml"
+I/O warning : failed to load external entity "foo_file.xml"
diff --git a/tests/documents/test_bad.result b/tests/documents/test_bad.out
index 2b636bfb..2b636bfb 100644
--- a/tests/documents/test_bad.result
+++ b/tests/documents/test_bad.out
diff --git a/tests/documents/test_bad.xsl b/tests/documents/test_bad.xsl
new file mode 100644
index 00000000..5c5aab09
--- /dev/null
+++ b/tests/documents/test_bad.xsl
@@ -0,0 +1,16 @@
+<?xml version="1.0" encoding="ISO-8859-1"?>
+<xsl:stylesheet
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ version="1.0">
+<xsl:output method="text" encoding="iso-8859-1"/>
+
+<xsl:template match="/files/file">
+ <xsl:variable name="file" select="document(@name)"/>
+ <xsl:if test="not($file)">
+ <xsl:text>Can't Open File: </xsl:text>
+ <xsl:value-of select="@name"/>
+ </xsl:if>
+ <xsl:value-of select="$file/tag1"/>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/general/bug-146.out b/tests/encoding/bug-146.out
index d88e13a6..d88e13a6 100644
--- a/tests/general/bug-146.out
+++ b/tests/encoding/bug-146.out
diff --git a/tests/docs/bug-146.xml b/tests/encoding/bug-146.xml
index f879acdf..f879acdf 100644
--- a/tests/docs/bug-146.xml
+++ b/tests/encoding/bug-146.xml
diff --git a/tests/general/bug-146.xsl b/tests/encoding/bug-146.xsl
index c8f81492..c8f81492 100644
--- a/tests/general/bug-146.xsl
+++ b/tests/encoding/bug-146.xsl
diff --git a/tests/exslt/Makefile.am b/tests/exslt/Makefile.am
deleted file mode 100644
index 9f20a725..00000000
--- a/tests/exslt/Makefile.am
+++ /dev/null
@@ -1,12 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-SUBDIRS=common functions math saxon sets strings dynamic date $(CRYPTO_TESTDIR)
-DIST_SUBDIRS = common functions math saxon sets strings dynamic date crypto
-
-test tests:
- @(cur=`pwd` ; for dir in $(SUBDIRS) ; do cd $$dir ; $(MAKE) CHECKER='$(CHECKER)' tests ; cd $$cur ; done)
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
diff --git a/tests/exslt/common/Makefile.am b/tests/exslt/common/Makefile.am
deleted file mode 100644
index 5b5895cb..00000000
--- a/tests/exslt/common/Makefile.am
+++ /dev/null
@@ -1,56 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- node-set.1.xml node-set.1.xsl node-set.1.out \
- node-set.2.xml node-set.2.xsl node-set.2.out \
- node-set.3.xml node-set.3.xsl node-set.3.out \
- node-set.4.xml node-set.4.xsl node-set.4.out \
- node-set.5.xml node-set.5.xsl node-set.5.out \
- node-set.6.xml node-set.6.xsl node-set.6.out \
- node-set.7.xml node-set.7.xsl node-set.7.out \
- node-set.8.xml node-set.8.xsl node-set.8.out \
- object-type.1.xml object-type.1.xsl object-type.1.out \
- import-test1a.imp import-test1b.imp import-test1.out \
- import-test1.xml import-test1.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt common tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad; \
- done)
diff --git a/tests/exslt/common/dynamic-id.out b/tests/exslt/common/dynamic-id.out
new file mode 100644
index 00000000..1b7b7bad
--- /dev/null
+++ b/tests/exslt/common/dynamic-id.out
@@ -0,0 +1,13 @@
+<?xml version="1.0"?>
+<result xmlns:exsl="http://exslt.org/common">
+ <id>id1</id>
+ <id>id2</id>
+ <id>id3</id>
+ <id>id4</id>
+ <id>id5</id>
+ <id>id6</id>
+ <id>id7</id>
+ <id>id8</id>
+ <id>id9</id>
+ <id>id10</id>
+</result>
diff --git a/tests/docs/bug-100.xml b/tests/exslt/common/dynamic-id.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-100.xml
+++ b/tests/exslt/common/dynamic-id.xml
diff --git a/tests/exslt/common/dynamic-id.xsl b/tests/exslt/common/dynamic-id.xsl
new file mode 100644
index 00000000..8478f6af
--- /dev/null
+++ b/tests/exslt/common/dynamic-id.xsl
@@ -0,0 +1,29 @@
+<xsl:stylesheet
+ version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:exsl="http://exslt.org/common">
+
+<xsl:output indent="yes"/>
+
+<xsl:template name="dynamic-id">
+ <id>
+ <xsl:value-of select="generate-id(exsl:node-set('string'))"/>
+ </id>
+</xsl:template>
+
+<xsl:template match="/">
+ <result>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ <xsl:call-template name="dynamic-id"/>
+ </result>
+</xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/exslt/crypto/Makefile.am b/tests/exslt/crypto/Makefile.am
deleted file mode 100644
index 0edb15bf..00000000
--- a/tests/exslt/crypto/Makefile.am
+++ /dev/null
@@ -1,47 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- crypt.1.out crypt.1.xml crypt.1.xsl \
- hash.1.out hash.1.xml hash.1.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt crypto tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/date/Makefile.am b/tests/exslt/date/Makefile.am
deleted file mode 100644
index fae16ab7..00000000
--- a/tests/exslt/date/Makefile.am
+++ /dev/null
@@ -1,86 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- current.xsl \
- date.1.out date.1.xml date.1.xsl \
- date.2.out date.2.xml date.2.xsl \
- datetime.1.out datetime.1.xml datetime.1.xsl \
- datetime.2.out datetime.2.xml datetime.2.xsl \
- gday.1.out gday.1.xml gday.1.xsl \
- gday.2.out gday.2.xml gday.2.xsl \
- gmonth.1.out gmonth.1.xml gmonth.1.xsl \
- gmonth.2.out gmonth.2.xml gmonth.2.xsl \
- gmonthday.1.out gmonthday.1.xml gmonthday.1.xsl \
- gmonthday.2.out gmonthday.2.xml gmonthday.2.xsl \
- gyear.1.out gyear.1.xml gyear.1.xsl \
- gyear.2.out gyear.2.xml gyear.2.xsl \
- gyearmonth.1.out gyearmonth.1.xml gyearmonth.1.xsl \
- gyearmonth.2.out gyearmonth.2.xml gyearmonth.2.xsl \
- time.1.out time.1.xml time.1.xsl \
- time.2.out time.2.xml time.2.xsl \
- add.1.out add.1.xml add.1.xsl \
- add.2.out add.2.xml add.2.xsl \
- add-duration.1.out add-duration.1.xml add-duration.1.xsl \
- add-duration.2.out add-duration.2.xml add-duration.2.xsl \
- sum.1.out sum.1.xml sum.1.xsl \
- sum.2.out sum.2.xml sum.2.xsl sum.2.err \
- difference.1.out difference.1.xml difference.1.xsl \
- difference.2.out difference.2.xml difference.2.xsl \
- duration.1.out duration.1.xml duration.1.xsl \
- duration.2.out duration.2.xml duration.2.xsl \
- seconds.1.out seconds.1.xml seconds.1.xsl \
- seconds.2.out seconds.2.xml seconds.2.xsl
-
-CLEANFILES = .memdump
-
-test-current:
- @(echo > .memdump)
- @(if [ -z "$$CI" ]; then \
- echo \<doc/\> >current.xml ; \
- echo "#" ; \
- echo "# Inspect the following for correctness" ; \
- echo "#" ; \
- for i in $(srcdir)/current.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- $(top_builddir)/xsltproc/xsltproc $(srcdir)/$$name.xsl $(srcdir)/$$name.xml;\
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- done ; \
- rm -f current.xml ; \
- fi)
-
-test tests: $(top_builddir)/xsltproc/xsltproc test-current
- @echo '## Running exslt date tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad; \
- done)
diff --git a/tests/exslt/date/duration.1.out b/tests/exslt/date/duration.1.out
index 2424c96d..e656b527 100644
--- a/tests/exslt/date/duration.1.out
+++ b/tests/exslt/date/duration.1.out
@@ -26,4 +26,6 @@ result : -PT1M
duration : 9999999999999
result : P115740740DT17H46M39S
duration : -2999999999
-result : -P34722DT5H19M59S \ No newline at end of file
+result : -P34722DT5H19M59S
+duration : 3599.99999999999
+result : PT1H \ No newline at end of file
diff --git a/tests/exslt/date/duration.1.xml b/tests/exslt/date/duration.1.xml
index dd358454..5157dd1e 100644
--- a/tests/exslt/date/duration.1.xml
+++ b/tests/exslt/date/duration.1.xml
@@ -14,5 +14,6 @@
<date seconds="-60"/>
<date seconds="9999999999999"/>
<date seconds="-2999999999"/>
+ <date seconds="3599.99999999999"/>
</page>
diff --git a/tests/exslt/date/sum.2.err b/tests/exslt/date/sum.2.err
deleted file mode 100644
index e69de29b..00000000
--- a/tests/exslt/date/sum.2.err
+++ /dev/null
diff --git a/tests/exslt/date/time.1.out b/tests/exslt/date/time.1.out
index 8151b0ae..d3db76ed 100644
--- a/tests/exslt/date/time.1.out
+++ b/tests/exslt/date/time.1.out
@@ -126,3 +126,21 @@
hour-in-day : 15
minute-in-hour : 55
second-in-minute : 55
+
+ Test Date : 15:55:59.99999999999
+ year : NaN
+ leap-year : NaN
+ month-in-year : NaN
+ month-name :
+ month-abbreviation :
+ week-in-year : NaN
+ day-in-year : NaN
+ day-in-month : NaN
+ day-of-week-in-month : NaN
+ day-in-week : NaN
+ day-name :
+ day-abbreviation :
+ time : 15:55:59.999999999
+ hour-in-day : 15
+ minute-in-hour : 55
+ second-in-minute : 59.99999999999
diff --git a/tests/exslt/date/time.1.xml b/tests/exslt/date/time.1.xml
index 27767602..f26d187b 100644
--- a/tests/exslt/date/time.1.xml
+++ b/tests/exslt/date/time.1.xml
@@ -8,5 +8,6 @@
<date date="23:33:33"/>
<date date="14:44:44"/>
<date date="15:55:55"/>
+ <date date="15:55:59.99999999999"/>
</page>
diff --git a/tests/exslt/dynamic/Makefile.am b/tests/exslt/dynamic/Makefile.am
deleted file mode 100644
index 0100dc9f..00000000
--- a/tests/exslt/dynamic/Makefile.am
+++ /dev/null
@@ -1,52 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- dynmap.out \
- dynmap.xml \
- dynmap.xsl \
- recursion.err \
- recursion.out \
- recursion.xml \
- recursion.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt dynamic tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/functions/Makefile.am b/tests/exslt/functions/Makefile.am
deleted file mode 100644
index 3241284e..00000000
--- a/tests/exslt/functions/Makefile.am
+++ /dev/null
@@ -1,56 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- function.1.out function.1.xml function.1.xsl \
- function.2.out function.2.xml function.2.xsl \
- function.3.out function.3.xml function.3.xsl \
- function.4.out function.4.xml function.4.xsl \
- function.5.out function.5.xml function.5.xsl \
- function.6.out function.6.xml function.6.xsl \
- function.7.out function.7.xml function.7.xsl \
- function.8.out function.8.xml function.8.xsl \
- function.9.out function.9.xml function.9.xsl \
- function.10.out function.10.xml function.10.xsl \
- function.11.out function.11.xml function.11.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt function tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/math/Makefile.am b/tests/exslt/math/Makefile.am
deleted file mode 100644
index 68bea6a1..00000000
--- a/tests/exslt/math/Makefile.am
+++ /dev/null
@@ -1,57 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- highest.1.out highest.1.xml highest.1.xsl \
- highest.2.out highest.2.xml highest.2.xsl \
- highest.5.out highest.5.xml highest.5.xsl \
- lowest.1.out lowest.1.xml lowest.1.xsl \
- lowest.2.out lowest.2.xml lowest.2.xsl \
- max.1.out max.1.xml max.1.xsl \
- max.2.out max.2.xml max.2.xsl \
- max.3.out max.3.xml max.3.xsl \
- max.5.out max.5.xml max.5.xsl \
- power.1.out power.1.xml power.1.xsl \
- min.1.out min.1.xml min.1.xsl \
- min.2.out min.2.xml min.2.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt math tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/saxon/Makefile.am b/tests/exslt/saxon/Makefile.am
deleted file mode 100644
index 3ef3a2ca..00000000
--- a/tests/exslt/saxon/Makefile.am
+++ /dev/null
@@ -1,45 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- eval.1.out eval.1.xml eval.1.xsl \
- eval.2.out eval.2.xml eval.2.xsl eval.2.err \
- eval.3.out eval.3.xml eval.3.xsl eval.3.err \
- lineno.1.out lineno.1.xml lineno.1.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt saxon tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/saxon/eval.2.out b/tests/exslt/saxon/eval.2.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/exslt/saxon/eval.2.out
+++ /dev/null
diff --git a/tests/exslt/saxon/eval.3.out b/tests/exslt/saxon/eval.3.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/exslt/saxon/eval.3.out
+++ /dev/null
diff --git a/tests/exslt/sets/Makefile.am b/tests/exslt/sets/Makefile.am
deleted file mode 100644
index 2f77c2dc..00000000
--- a/tests/exslt/sets/Makefile.am
+++ /dev/null
@@ -1,50 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- difference.1.out difference.1.xml difference.1.xsl \
- distinct.1.out distinct.1.xml distinct.1.xsl \
- has-same-node.1.out has-same-node.1.xml has-same-node.1.xsl \
- leading.1.out leading.1.xml leading.1.xsl \
- trailing.1.out trailing.1.xml trailing.1.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt sets tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/exslt/strings/Makefile.am b/tests/exslt/strings/Makefile.am
deleted file mode 100644
index 0fa3aeb6..00000000
--- a/tests/exslt/strings/Makefile.am
+++ /dev/null
@@ -1,53 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- align.1.xml align.1.xsl align.1.out \
- padding.1.xml padding.1.xsl padding.1.out \
- replace.1.xml replace.1.xsl replace.1.out \
- split.1.xml split.1.xsl split.1.out \
- tokenize.1.xml tokenize.1.xsl tokenize.1.out \
- tokenize.2.xml tokenize.2.xsl tokenize.2.out \
- tokenize.3.xml tokenize.3.xsl tokenize.3.out \
- uri.xml uri.xsl uri.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running exslt string tests'
- @(echo > .memdump)
- @(for i in $(srcdir)/*.xsl ; do \
- name=`basename $$i .xsl` ; \
- if [ ! -f $(srcdir)/$$name.xml ] ; then continue ; fi ; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- $(srcdir)/$$name.xsl $(srcdir)/$$name.xml > $$name.res 2>$$name.bad;\
- if [ ! -f $(srcdir)/$$name.out ] ; then \
- cp $$name.res $(srcdir)/$$name.out ; \
- if [ -s $$name.bad ] ; then \
- mv $$name.bad $(srcdir)/$$name.err ; \
- fi ; \
- else \
- if [ ! -s $$name.res ] ; then \
- echo "Fatal error, no $$name.res\n" ; \
- else \
- diff $(srcdir)/$$name.out $$name.res ; \
- if [ -s $(srcdir)/$$name.err ] ; then \
- diff $(srcdir)/$$name.err $$name.bad; \
- else \
- diff /dev/null $$name.bad; \
- fi ; \
- fi ; \
- fi; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f $$name.res $$name.bad ; \
- done)
diff --git a/tests/extensions/Makefile.am b/tests/extensions/Makefile.am
deleted file mode 100644
index 06ac2368..00000000
--- a/tests/extensions/Makefile.am
+++ /dev/null
@@ -1,51 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- evaluate.xml evaluate.xsl evaluate.out \
- module.xml module.xsl module.out \
- list.xml list.xsl list.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running extensions tests'
- @(echo > .memdump)
- -@(for i in $(srcdir)/*.xml ; do \
- if [ -d $$i ] ; then continue ; fi ; \
- doc=`basename $$i .xml` ; \
- j=$(srcdir)/$$doc*.xsl ; \
- if [ ! -f $$j ] ; then continue ; fi ; \
- if [ -d $$j ] ; then continue ; fi ; \
- name=`basename $$j .xsl`; \
- out=$(srcdir)/"$$name".out; \
- err=$(srcdir)/"$$name".err; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i \
- > result.$$name 2>err.$$name; \
- if [ ! -f $$out ] ; then \
- cp result.$$name $$out ; \
- if [ -s err.$$name ] ; then \
- cp err.$$name $$err ; \
- fi ; \
- else \
- diff $$out result.$$name; \
- if [ -s $$err ] ; then \
- diff $$err err.$$name; \
- else \
- diff /dev/null err.$$name; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f result.$$name err.$$name; \
- done)
-
diff --git a/tests/fuzz/.gitignore b/tests/fuzz/.gitignore
index 7515dea5..c2f774ff 100644
--- a/tests/fuzz/.gitignore
+++ b/tests/fuzz/.gitignore
@@ -1,4 +1,6 @@
/corpus/
+/genSeed
+/seed/
/testTargets
/xpath
/xslt
diff --git a/tests/fuzz/Makefile.am b/tests/fuzz/Makefile.am
index 5f4d90b6..2e33372f 100644
--- a/tests/fuzz/Makefile.am
+++ b/tests/fuzz/Makefile.am
@@ -1,22 +1,15 @@
LIBXSLT_LIBS = $(top_builddir)/libxslt/libxslt.la \
$(top_builddir)/libexslt/libexslt.la
-EXTRA_PROGRAMS = xpath xslt
+EXTRA_PROGRAMS = genSeed xpath xslt
check_PROGRAMS = testTargets
-EXTRA_DIST = xpath.dict xpath.xml xslt.dict xslt.xml seed
+EXTRA_DIST = xpath.dict xslt.dict
CLEANFILES = $(EXTRA_PROGRAMS)
AM_CPPFLAGS = -I$(top_srcdir)
-AM_CFLAGS = $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
DEPENDENCIES = $(LIBXSLT_LIBS)
LDADD = $(LIBXSLT_LIBS) \
$(LIBXML_LIBS) $(EXTRA_LIBS) $(LIBM)
-xpath_SOURCES = xpath.c fuzz.c fuzz.h
-xpath_LDFLAGS = -fsanitize=fuzzer
-
-xslt_SOURCES = xslt.c fuzz.c fuzz.h
-xslt_LDFLAGS = -fsanitize=fuzzer
-
testTargets_SOURCES = testTargets.c fuzz.c fuzz.h
$(top_builddir)/libxslt/libxslt.la:
@@ -25,22 +18,43 @@ $(top_builddir)/libxslt/libxslt.la:
$(top_builddir)/libexslt/libexslt.la: $(top_builddir)/libxslt/libxslt.la
cd $(top_builddir)/libexslt && $(MAKE) libexslt.la
-.PHONY: tests fuzz-xpath fuzz-xslt
-
-tests:
+.PHONY: fuzz-xpath fuzz-xslt
-fuzz: $(check_PROGRAMS)
+check-local: $(check_PROGRAMS)
@echo '## Running fuzz target tests'
- @./testTargets $(srcdir)
+ @./testTargets
+
+# Seed corpus
+
+genSeed_SOURCES = genSeed.c fuzz.c
+
+# XPath fuzzer
-fuzz-xpath: xpath$(EXEEXT)
+seed/xpath.stamp: genSeed$(EXEEXT)
+ @mkdir -p seed/xpath
+ @./genSeed$(EXEEXT) xpath "$(top_srcdir)/tests"
+ @touch seed/xpath.stamp
+
+xpath_SOURCES = xpath.c fuzz.c fuzz.h
+xpath_LDFLAGS = -fsanitize=fuzzer
+
+fuzz-xpath: xpath$(EXEEXT) seed/xpath.stamp
@mkdir -p corpus/xpath
./xpath$(EXEEXT) \
- -max_len=256 \
-dict=$(srcdir)/xpath.dict \
corpus/xpath $(srcdir)/seed/xpath
-fuzz-xslt: xslt$(EXEEXT)
+# XSLT fuzzer
+
+seed/xslt.stamp: genSeed$(EXEEXT)
+ @mkdir -p seed/xslt
+ @./genSeed$(EXEEXT) xslt "$(top_srcdir)/tests"
+ @touch seed/xslt.stamp
+
+xslt_SOURCES = xslt.c fuzz.c fuzz.h
+xslt_LDFLAGS = -fsanitize=fuzzer
+
+fuzz-xslt: xslt$(EXEEXT) seed/xslt.stamp
@mkdir -p corpus/xslt
./xslt$(EXEEXT) \
-dict=$(srcdir)/xslt.dict \
diff --git a/tests/fuzz/fuzz.c b/tests/fuzz/fuzz.c
index cf1e2383..7ba83cbe 100644
--- a/tests/fuzz/fuzz.c
+++ b/tests/fuzz/fuzz.c
@@ -4,14 +4,13 @@
* See Copyright for the status of this software.
*/
-#include <stdlib.h>
#include <stdio.h>
+#include <stdlib.h>
#include <string.h>
-#include "fuzz.h"
-
-#include <libxml/tree.h>
#include <libxml/parser.h>
+#include <libxml/parserInternals.h>
+#include <libxml/tree.h>
#include <libxml/xpath.h>
#include <libxml/xpathInternals.h>
#include <libxslt/extensions.h>
@@ -22,6 +21,7 @@
#include <libxslt/xsltInternals.h>
#include <libxslt/xsltutils.h>
#include <libexslt/exslt.h>
+#include "fuzz.h"
#if defined(_WIN32)
#define DIR_SEP '\\'
@@ -29,10 +29,9 @@
#define DIR_SEP '/'
#endif
-static xmlDocPtr doc;
-static xsltSecurityPrefsPtr sec;
+static xsltSecurityPrefsPtr globalSec;
+static xsltStylesheetPtr globalStyle;
static xsltTransformContextPtr tctxt;
-static xmlHashTablePtr saxonExtHash;
static void
xsltFuzzXmlErrorFunc(void *vctxt, const char *msg ATTRIBUTE_UNUSED, ...) {
@@ -51,6 +50,8 @@ xsltFuzzXsltErrorFunc(void *vctxt ATTRIBUTE_UNUSED,
static void
xsltFuzzInit(void) {
+ xmlFuzzMemSetup();
+
/* Init libxml2, libxslt and libexslt */
xmlInitParser();
xsltInit();
@@ -61,54 +62,17 @@ xsltFuzzInit(void) {
xsltSetGenericErrorFunc(NULL, xsltFuzzXsltErrorFunc);
/* Disallow I/O */
- sec = xsltNewSecurityPrefs();
- xsltSetSecurityPrefs(sec, XSLT_SECPREF_READ_FILE, xsltSecurityForbid);
- xsltSetSecurityPrefs(sec, XSLT_SECPREF_WRITE_FILE, xsltSecurityForbid);
- xsltSetSecurityPrefs(sec, XSLT_SECPREF_CREATE_DIRECTORY, xsltSecurityForbid);
- xsltSetSecurityPrefs(sec, XSLT_SECPREF_READ_NETWORK, xsltSecurityForbid);
- xsltSetSecurityPrefs(sec, XSLT_SECPREF_WRITE_NETWORK, xsltSecurityForbid);
-}
-
-static xmlDocPtr
-xsltFuzzLoadDoc(const char *argv0, const char *dir, const char *filename) {
- char *path;
-
- if (dir != NULL) {
- path = malloc(strlen(dir) + 1 + strlen(filename) + 1);
- sprintf(path, "%s/%s", dir, filename);
- doc = xmlReadFile(path, NULL, 0);
- if (doc == NULL)
- fprintf(stderr, "Error: unable to parse file '%s' in '%s'\n",
- filename, dir);
- } else {
- const char *end;
- size_t dirLen;
-
- end = strrchr(argv0, DIR_SEP);
- dirLen = (end == NULL) ? 0 : end - argv0 + 1;
- path = malloc(dirLen + strlen(filename) + 1);
- memcpy(path, argv0, dirLen);
- path[dirLen] = '\0';
- strcat(path, filename);
- doc = xmlReadFile(path, NULL, 0);
-
- if (doc == NULL && dirLen > 0) {
- /* Binary might be in .libs, try parent directory */
- path[dirLen-1] = 0;
- end = strrchr(path, DIR_SEP);
- dirLen = (end == NULL) ? 0 : end - path + 1;
- path[dirLen] = '\0';
- strcat(path, filename);
- doc = xmlReadFile(path, NULL, 0);
- }
-
- if (doc == NULL)
- fprintf(stderr, "Error: unable to parse file '%s'\n", filename);
- }
-
- free(path);
-
- return doc;
+ globalSec = xsltNewSecurityPrefs();
+ xsltSetSecurityPrefs(globalSec, XSLT_SECPREF_READ_FILE,
+ xsltSecurityForbid);
+ xsltSetSecurityPrefs(globalSec, XSLT_SECPREF_WRITE_FILE,
+ xsltSecurityForbid);
+ xsltSetSecurityPrefs(globalSec, XSLT_SECPREF_CREATE_DIRECTORY,
+ xsltSecurityForbid);
+ xsltSetSecurityPrefs(globalSec, XSLT_SECPREF_READ_NETWORK,
+ xsltSecurityForbid);
+ xsltSetSecurityPrefs(globalSec, XSLT_SECPREF_WRITE_NETWORK,
+ xsltSecurityForbid);
}
/* XPath fuzzer
@@ -147,22 +111,44 @@ xsltFuzzLoadDoc(const char *argv0, const char *dir, const char *filename) {
*/
int
-xsltFuzzXPathInit(int *argc_p ATTRIBUTE_UNUSED, char ***argv_p,
- const char *dir) {
- const char *xmlFilename = "xpath.xml";
- xsltStylesheetPtr style;
- xmlXPathContextPtr xpctxt;
-
+xsltFuzzXPathInit(void) {
xsltFuzzInit();
+ globalStyle = xsltNewStylesheet();
+ return(0);
+}
+
+xmlXPathObjectPtr
+xsltFuzzXPath(const char *data, size_t size) {
+ xmlXPathContextPtr xpctxt = NULL;
+ xmlXPathObjectPtr xpathObj = NULL;
+ xmlDocPtr doc;
+ xmlNodePtr root;
+ const char *xpathExpr, *xml;
+ size_t maxAllocs, xmlSize;
+
+ xmlFuzzDataInit(data, size);
- /* Load XML document */
- doc = xsltFuzzLoadDoc((*argv_p)[0], dir, xmlFilename);
+ maxAllocs = xmlFuzzReadInt(4) % (size + 1);
+ xpathExpr = xmlFuzzReadString(NULL);
+ xml = xmlFuzzReadString(&xmlSize);
+
+ /* Recovery mode allows more input to be fuzzed. */
+ doc = xmlReadMemory(xml, xmlSize, NULL, NULL, XML_PARSE_RECOVER);
if (doc == NULL)
- return -1;
+ goto error;
+ root = xmlDocGetRootElement(doc);
+ if (root != NULL) {
+ xmlNewNs(root, BAD_CAST "a", BAD_CAST "a");
+ xmlNewNs(root, BAD_CAST "b", BAD_CAST "b");
+ xmlNewNs(root, BAD_CAST "c", BAD_CAST "c");
+ }
- style = xsltNewStylesheet();
- tctxt = xsltNewTransformContext(style, doc);
- xsltSetCtxtSecurityPrefs(sec, tctxt);
+ tctxt = xsltNewTransformContext(globalStyle, doc);
+ if (tctxt == NULL) {
+ xmlFreeDoc(doc);
+ goto error;
+ }
+ xsltSetCtxtSecurityPrefs(globalSec, tctxt);
/*
* Some extension functions need the current instruction.
@@ -175,16 +161,13 @@ xsltFuzzXPathInit(int *argc_p ATTRIBUTE_UNUSED, char ***argv_p,
*/
tctxt->inst = xmlDocGetRootElement(doc);
- saxonExtHash = (xmlHashTablePtr)
- xsltStyleGetExtData(style, SAXON_NAMESPACE);
-
/* Set up XPath context */
xpctxt = tctxt->xpathCtxt;
/* Resource limits to avoid timeouts and call stack overflows */
xpctxt->opLimit = 500000;
- /* Test namespaces used in xpath.xml */
+ /* Test namespaces */
xmlXPathRegisterNs(xpctxt, BAD_CAST "a", BAD_CAST "a");
xmlXPathRegisterNs(xpctxt, BAD_CAST "b", BAD_CAST "b");
xmlXPathRegisterNs(xpctxt, BAD_CAST "c", BAD_CAST "c");
@@ -208,53 +191,26 @@ xsltFuzzXPathInit(int *argc_p ATTRIBUTE_UNUSED, char ***argv_p,
xpctxt, BAD_CAST "n",
xmlXPathEval(BAD_CAST "//node() | /*/*/namespace::*", xpctxt));
- return 0;
-}
-
-xmlXPathObjectPtr
-xsltFuzzXPath(const char *data, size_t size) {
- xmlXPathContextPtr xpctxt = tctxt->xpathCtxt;
- xmlChar *xpathExpr;
-
- /* Null-terminate */
- xpathExpr = malloc(size + 1);
- memcpy(xpathExpr, data, size);
- xpathExpr[size] = 0;
-
/* Compile and return early if the expression is invalid */
- xmlXPathCompExprPtr compExpr = xmlXPathCtxtCompile(xpctxt, xpathExpr);
- free(xpathExpr);
+ xmlXPathCompExprPtr compExpr = xmlXPathCtxtCompile(xpctxt,
+ (const xmlChar *) xpathExpr);
if (compExpr == NULL)
- return NULL;
+ goto error;
/* Initialize XPath evaluation context and evaluate */
- xpctxt->node = (xmlNodePtr) doc; /* Maybe test different context nodes? */
+ xmlFuzzMemSetLimit(maxAllocs);
+ /* Maybe test different context nodes? */
+ xpctxt->node = (xmlNodePtr) doc;
xpctxt->contextSize = 1;
xpctxt->proximityPosition = 1;
xpctxt->opCount = 0;
- xmlXPathObjectPtr xpathObj = xmlXPathCompiledEval(compExpr, xpctxt);
+ xpathObj = xmlXPathCompiledEval(compExpr, xpctxt);
xmlXPathFreeCompExpr(compExpr);
- /* Clean object cache */
- xmlXPathContextSetCache(xpctxt, 0, 0, 0);
- xmlXPathContextSetCache(xpctxt, 1, -1, 0);
-
- /* Clean dictionaries */
- if (xmlDictSize(tctxt->dict) > 0) {
- xmlDictFree(tctxt->dict);
- xmlDictFree(tctxt->style->dict);
- tctxt->style->dict = xmlDictCreate();
- tctxt->dict = xmlDictCreateSub(tctxt->style->dict);
- }
-
- /* Clean saxon:expression cache */
- if (xmlHashSize(saxonExtHash) > 0) {
- /* There doesn't seem to be a cheaper way with the public API. */
- xsltShutdownCtxtExts(tctxt);
- xsltInitCtxtExts(tctxt);
- saxonExtHash = (xmlHashTablePtr)
- xsltStyleGetExtData(tctxt->style, SAXON_NAMESPACE);
- }
+error:
+ xmlFuzzMemSetLimit(0);
+ xmlXPathRegisteredNsCleanup(xpctxt);
+ xmlFuzzDataCleanup();
return xpathObj;
}
@@ -263,23 +219,21 @@ void
xsltFuzzXPathFreeObject(xmlXPathObjectPtr obj) {
xmlXPathFreeObject(obj);
- /* Some XSLT extension functions create RVTs. */
- xsltFreeRVTs(tctxt);
+ if (tctxt != NULL) {
+ xmlDocPtr doc = tctxt->document->doc;
+
+ xsltFreeTransformContext(tctxt);
+ tctxt = NULL;
+ xmlFreeDoc(doc);
+ }
}
void
xsltFuzzXPathCleanup(void) {
- xsltStylesheetPtr style = tctxt->style;
-
- xmlXPathRegisteredNsCleanup(tctxt->xpathCtxt);
- xsltFreeSecurityPrefs(sec);
- sec = NULL;
- xsltFreeTransformContext(tctxt);
- tctxt = NULL;
- xsltFreeStylesheet(style);
- style = NULL;
- xmlFreeDoc(doc);
- doc = NULL;
+ xsltFreeSecurityPrefs(globalSec);
+ globalSec = NULL;
+ xsltFreeStylesheet(globalStyle);
+ globalStyle = NULL;
}
/*
@@ -298,59 +252,78 @@ xsltFuzzXPathCleanup(void) {
*/
int
-xsltFuzzXsltInit(int *argc_p ATTRIBUTE_UNUSED, char ***argv_p,
- const char *dir) {
- const char *xmlFilename = "xslt.xml";
-
+xsltFuzzXsltInit(void) {
xsltFuzzInit();
-
- /* Load XML document */
- doc = xsltFuzzLoadDoc((*argv_p)[0], dir, xmlFilename);
- if (doc == NULL)
- return -1;
-
- return 0;
+ xmlSetExternalEntityLoader(xmlFuzzEntityLoader);
+ return(0);
}
xmlChar *
xsltFuzzXslt(const char *data, size_t size) {
- xmlDocPtr xsltDoc;
- xmlDocPtr result;
- xmlNodePtr xsltRoot;
- xsltStylesheetPtr sheet;
- xsltTransformContextPtr ctxt;
+ const char *xsltBuffer, *xsltUrl, *docBuffer, *docUrl;
+ xmlDocPtr xsltDoc = NULL, doc = NULL;
+ xmlDocPtr result = NULL;
+ xmlNodePtr root;
+ xsltStylesheetPtr sheet = NULL;
+ xsltTransformContextPtr ctxt = NULL;
xmlChar *ret = NULL;
+ size_t xsltSize, docSize, maxAllocs;
int retLen;
- xsltDoc = xmlReadMemory(data, size, NULL, NULL, 0);
+ xmlFuzzDataInit(data, size);
+ maxAllocs = xmlFuzzReadInt(4) % (size + 1);
+
+ xmlFuzzReadEntities();
+ xsltBuffer = xmlFuzzMainEntity(&xsltSize);
+ xsltUrl = xmlFuzzMainUrl();
+ docBuffer = xmlFuzzSecondaryEntity(&docSize);
+ docUrl = xmlFuzzSecondaryUrl();
+ if ((xsltBuffer == NULL) || (docBuffer == NULL))
+ goto exit;
+
+ doc = xmlReadMemory(docBuffer, docSize, docUrl, NULL, XSLT_PARSE_OPTIONS);
+ if (doc == NULL)
+ goto exit;
+
+ xsltDoc = xmlReadMemory(xsltBuffer, xsltSize, xsltUrl, NULL,
+ XSLT_PARSE_OPTIONS);
if (xsltDoc == NULL)
- return NULL;
- xsltRoot = xmlDocGetRootElement(xsltDoc);
- xmlNewNs(xsltRoot, EXSLT_COMMON_NAMESPACE, BAD_CAST "exsl");
- xmlNewNs(xsltRoot, EXSLT_COMMON_NAMESPACE, BAD_CAST "exslt");
- xmlNewNs(xsltRoot, EXSLT_CRYPTO_NAMESPACE, BAD_CAST "crypto");
- xmlNewNs(xsltRoot, EXSLT_DATE_NAMESPACE, BAD_CAST "date");
- xmlNewNs(xsltRoot, EXSLT_DYNAMIC_NAMESPACE, BAD_CAST "dyn");
- xmlNewNs(xsltRoot, EXSLT_MATH_NAMESPACE, BAD_CAST "math");
- xmlNewNs(xsltRoot, EXSLT_SETS_NAMESPACE, BAD_CAST "set");
- xmlNewNs(xsltRoot, EXSLT_STRINGS_NAMESPACE, BAD_CAST "str");
- xmlNewNs(xsltRoot, SAXON_NAMESPACE, BAD_CAST "saxon");
+ goto exit;
+ root = xmlDocGetRootElement(xsltDoc);
+ if (root != NULL) {
+ xmlNewNs(root, XSLT_NAMESPACE, BAD_CAST "x");
+ xmlNewNs(root, EXSLT_COMMON_NAMESPACE, BAD_CAST "exsl");
+ xmlNewNs(root, EXSLT_COMMON_NAMESPACE, BAD_CAST "exslt");
+ xmlNewNs(root, EXSLT_CRYPTO_NAMESPACE, BAD_CAST "crypto");
+ xmlNewNs(root, EXSLT_DATE_NAMESPACE, BAD_CAST "date");
+ xmlNewNs(root, EXSLT_DYNAMIC_NAMESPACE, BAD_CAST "dyn");
+ xmlNewNs(root, EXSLT_MATH_NAMESPACE, BAD_CAST "math");
+ xmlNewNs(root, EXSLT_SETS_NAMESPACE, BAD_CAST "set");
+ xmlNewNs(root, EXSLT_STRINGS_NAMESPACE, BAD_CAST "str");
+ xmlNewNs(root, SAXON_NAMESPACE, BAD_CAST "saxon");
+ }
+ xmlFuzzMemSetLimit(maxAllocs);
sheet = xsltNewStylesheet();
- if (sheet == NULL) {
- xmlFreeDoc(xsltDoc);
- return NULL;
- }
+ if (sheet == NULL)
+ goto exit;
sheet->xpathCtxt->opLimit = 100000;
sheet->xpathCtxt->opCount = 0;
- if (xsltParseStylesheetUser(sheet, xsltDoc) != 0) {
- xsltFreeStylesheet(sheet);
- xmlFreeDoc(xsltDoc);
- return NULL;
+ if (xsltParseStylesheetUser(sheet, xsltDoc) != 0)
+ goto exit;
+ xsltDoc = NULL;
+
+ root = xmlDocGetRootElement(doc);
+ if (root != NULL) {
+ xmlNewNs(root, BAD_CAST "a", BAD_CAST "a");
+ xmlNewNs(root, BAD_CAST "b", BAD_CAST "b");
+ xmlNewNs(root, BAD_CAST "c", BAD_CAST "c");
}
ctxt = xsltNewTransformContext(sheet, doc);
- xsltSetCtxtSecurityPrefs(sec, ctxt);
+ if (ctxt == NULL)
+ goto exit;
+ xsltSetCtxtSecurityPrefs(globalSec, ctxt);
ctxt->maxTemplateDepth = 100;
ctxt->opLimit = 20000;
ctxt->xpathCtxt->opLimit = 100000;
@@ -360,17 +333,408 @@ xsltFuzzXslt(const char *data, size_t size) {
if (result != NULL)
xsltSaveResultToString(&ret, &retLen, result, sheet);
+exit:
+ xmlFuzzMemSetLimit(0);
xmlFreeDoc(result);
xsltFreeTransformContext(ctxt);
xsltFreeStylesheet(sheet);
+ xmlFreeDoc(xsltDoc);
+ xmlFreeDoc(doc);
+ xmlFuzzDataCleanup();
return ret;
}
void
xsltFuzzXsltCleanup(void) {
- xsltFreeSecurityPrefs(sec);
- sec = NULL;
- xmlFreeDoc(doc);
- doc = NULL;
+ xsltFreeSecurityPrefs(globalSec);
+ globalSec = NULL;
+}
+
+/*
+ * Utility functions, copied from libxml2
+ */
+
+typedef struct {
+ const char *data;
+ size_t size;
+} xmlFuzzEntityInfo;
+
+/* Single static instance for now */
+static struct {
+ /* Original data */
+ const char *data;
+ size_t size;
+
+ /* Remaining data */
+ const char *ptr;
+ size_t remaining;
+
+ /* Buffer for unescaped strings */
+ char *outBuf;
+ char *outPtr; /* Free space at end of buffer */
+
+ xmlHashTablePtr entities; /* Maps URLs to xmlFuzzEntityInfos */
+
+ /* The first entity is the main entity. */
+ const char *mainUrl;
+ xmlFuzzEntityInfo *mainEntity;
+ const char *secondaryUrl;
+ xmlFuzzEntityInfo *secondaryEntity;
+} fuzzData;
+
+size_t fuzzNumAllocs;
+size_t fuzzMaxAllocs;
+
+/**
+ * xmlFuzzErrorFunc:
+ *
+ * An error function that simply discards all errors.
+ */
+void
+xmlFuzzErrorFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
+ ...) {
+}
+
+/*
+ * Malloc failure injection.
+ *
+ * Quick tip to debug complicated issues: Increase MALLOC_OFFSET until
+ * the crash disappears (or a different issue is triggered). Then set
+ * the offset to the highest value that produces a crash and set
+ * MALLOC_ABORT to 1 to see which failed memory allocation causes the
+ * issue.
+ */
+
+#define XML_FUZZ_MALLOC_OFFSET 0
+#define XML_FUZZ_MALLOC_ABORT 0
+
+static void *
+xmlFuzzMalloc(size_t size) {
+ if (fuzzMaxAllocs > 0) {
+ if (fuzzNumAllocs >= fuzzMaxAllocs - 1)
+#if XML_FUZZ_MALLOC_ABORT
+ abort();
+#else
+ return(NULL);
+#endif
+ fuzzNumAllocs += 1;
+ }
+ return malloc(size);
+}
+
+static void *
+xmlFuzzRealloc(void *ptr, size_t size) {
+ if (fuzzMaxAllocs > 0) {
+ if (fuzzNumAllocs >= fuzzMaxAllocs - 1)
+#if XML_FUZZ_MALLOC_ABORT
+ abort();
+#else
+ return(NULL);
+#endif
+ fuzzNumAllocs += 1;
+ }
+ return realloc(ptr, size);
+}
+
+void
+xmlFuzzMemSetup(void) {
+ xmlMemSetup(free, xmlFuzzMalloc, xmlFuzzRealloc, xmlMemStrdup);
+}
+
+void
+xmlFuzzMemSetLimit(size_t limit) {
+ fuzzNumAllocs = 0;
+ fuzzMaxAllocs = limit ? limit + XML_FUZZ_MALLOC_OFFSET : 0;
+}
+
+/**
+ * xmlFuzzDataInit:
+ *
+ * Initialize fuzz data provider.
+ */
+void
+xmlFuzzDataInit(const char *data, size_t size) {
+ fuzzData.data = data;
+ fuzzData.size = size;
+ fuzzData.ptr = data;
+ fuzzData.remaining = size;
+
+ fuzzData.outBuf = xmlMalloc(size + 1);
+ fuzzData.outPtr = fuzzData.outBuf;
+
+ fuzzData.entities = xmlHashCreate(8);
+ fuzzData.mainUrl = NULL;
+ fuzzData.mainEntity = NULL;
+ fuzzData.secondaryUrl = NULL;
+ fuzzData.secondaryEntity = NULL;
+}
+
+/**
+ * xmlFuzzDataFree:
+ *
+ * Cleanup fuzz data provider.
+ */
+void
+xmlFuzzDataCleanup(void) {
+ xmlFree(fuzzData.outBuf);
+ xmlHashFree(fuzzData.entities, xmlHashDefaultDeallocator);
+}
+
+/**
+ * xmlFuzzWriteInt:
+ * @out: output file
+ * @v: integer to write
+ * @size: size of integer in bytes
+ *
+ * Write an integer to the fuzz data.
+ */
+void
+xmlFuzzWriteInt(FILE *out, size_t v, int size) {
+ int shift;
+
+ while (size > (int) sizeof(size_t)) {
+ putc(0, out);
+ size--;
+ }
+
+ shift = size * 8;
+ while (shift > 0) {
+ shift -= 8;
+ putc((v >> shift) & 255, out);
+ }
+}
+
+/**
+ * xmlFuzzReadInt:
+ * @size: size of integer in bytes
+ *
+ * Read an integer from the fuzz data.
+ */
+size_t
+xmlFuzzReadInt(int size) {
+ size_t ret = 0;
+
+ while ((size > 0) && (fuzzData.remaining > 0)) {
+ unsigned char c = (unsigned char) *fuzzData.ptr++;
+ fuzzData.remaining--;
+ ret = (ret << 8) | c;
+ size--;
+ }
+
+ return ret;
+}
+
+/**
+ * xmlFuzzReadRemaining:
+ * @size: size of string in bytes
+ *
+ * Read remaining bytes from fuzz data.
+ */
+const char *
+xmlFuzzReadRemaining(size_t *size) {
+ const char *ret = fuzzData.ptr;
+
+ *size = fuzzData.remaining;
+ fuzzData.ptr += fuzzData.remaining;
+ fuzzData.remaining = 0;
+
+ return(ret);
+}
+
+/*
+ * xmlFuzzWriteString:
+ * @out: output file
+ * @str: string to write
+ *
+ * Write a random-length string to file in a format similar to
+ * FuzzedDataProvider. Backslash followed by newline marks the end of the
+ * string. Two backslashes are used to escape a backslash.
+ */
+void
+xmlFuzzWriteString(FILE *out, const char *str) {
+ for (; *str; str++) {
+ int c = (unsigned char) *str;
+ putc(c, out);
+ if (c == '\\')
+ putc(c, out);
+ }
+ putc('\\', out);
+ putc('\n', out);
+}
+
+/**
+ * xmlFuzzReadString:
+ * @size: size of string in bytes
+ *
+ * Read a random-length string from the fuzz data.
+ *
+ * The format is similar to libFuzzer's FuzzedDataProvider but treats
+ * backslash followed by newline as end of string. This makes the fuzz data
+ * more readable. A backslash character is escaped with another backslash.
+ *
+ * Returns a zero-terminated string or NULL if the fuzz data is exhausted.
+ */
+const char *
+xmlFuzzReadString(size_t *size) {
+ const char *out = fuzzData.outPtr;
+
+ while (fuzzData.remaining > 0) {
+ int c = *fuzzData.ptr++;
+ fuzzData.remaining--;
+
+ if ((c == '\\') && (fuzzData.remaining > 0)) {
+ int c2 = *fuzzData.ptr;
+
+ if (c2 == '\n') {
+ fuzzData.ptr++;
+ fuzzData.remaining--;
+ if (size != NULL)
+ *size = fuzzData.outPtr - out;
+ *fuzzData.outPtr++ = '\0';
+ return(out);
+ }
+ if (c2 == '\\') {
+ fuzzData.ptr++;
+ fuzzData.remaining--;
+ }
+ }
+
+ *fuzzData.outPtr++ = c;
+ }
+
+ if (fuzzData.outPtr > out) {
+ if (size != NULL)
+ *size = fuzzData.outPtr - out;
+ *fuzzData.outPtr++ = '\0';
+ return(out);
+ }
+
+ if (size != NULL)
+ *size = 0;
+ return(NULL);
+}
+
+/**
+ * xmlFuzzReadEntities:
+ *
+ * Read entities like the main XML file, external DTDs, external parsed
+ * entities from fuzz data.
+ */
+void
+xmlFuzzReadEntities(void) {
+ size_t num = 0;
+
+ while (1) {
+ const char *url, *entity;
+ size_t entitySize;
+ xmlFuzzEntityInfo *entityInfo;
+
+ url = xmlFuzzReadString(NULL);
+ if (url == NULL) break;
+
+ entity = xmlFuzzReadString(&entitySize);
+ if (entity == NULL) break;
+
+ if (xmlHashLookup(fuzzData.entities, (xmlChar *)url) == NULL) {
+ entityInfo = xmlMalloc(sizeof(xmlFuzzEntityInfo));
+ if (entityInfo == NULL)
+ break;
+ entityInfo->data = entity;
+ entityInfo->size = entitySize;
+
+ xmlHashAddEntry(fuzzData.entities, (xmlChar *)url, entityInfo);
+
+ if (num == 0) {
+ fuzzData.mainUrl = url;
+ fuzzData.mainEntity = entityInfo;
+ } else if (num == 1) {
+ fuzzData.secondaryUrl = url;
+ fuzzData.secondaryEntity = entityInfo;
+ }
+
+ num++;
+ }
+ }
+}
+
+/**
+ * xmlFuzzMainUrl:
+ *
+ * Returns the main URL.
+ */
+const char *
+xmlFuzzMainUrl(void) {
+ return(fuzzData.mainUrl);
+}
+
+/**
+ * xmlFuzzMainEntity:
+ * @size: size of the main entity in bytes
+ *
+ * Returns the main entity.
+ */
+const char *
+xmlFuzzMainEntity(size_t *size) {
+ if (fuzzData.mainEntity == NULL)
+ return(NULL);
+ *size = fuzzData.mainEntity->size;
+ return(fuzzData.mainEntity->data);
+}
+
+/**
+ * xmlFuzzSecondaryUrl:
+ *
+ * Returns the secondary URL.
+ */
+const char *
+xmlFuzzSecondaryUrl(void) {
+ return(fuzzData.secondaryUrl);
+}
+
+/**
+ * xmlFuzzSecondaryEntity:
+ * @size: size of the secondary entity in bytes
+ *
+ * Returns the secondary entity.
+ */
+const char *
+xmlFuzzSecondaryEntity(size_t *size) {
+ if (fuzzData.secondaryEntity == NULL)
+ return(NULL);
+ *size = fuzzData.secondaryEntity->size;
+ return(fuzzData.secondaryEntity->data);
+}
+
+/**
+ * xmlFuzzEntityLoader:
+ *
+ * The entity loader for fuzz data.
+ */
+xmlParserInputPtr
+xmlFuzzEntityLoader(const char *URL, const char *ID ATTRIBUTE_UNUSED,
+ xmlParserCtxtPtr ctxt) {
+ xmlParserInputPtr input;
+ xmlFuzzEntityInfo *entity;
+
+ if (URL == NULL)
+ return(NULL);
+ entity = xmlHashLookup(fuzzData.entities, (xmlChar *) URL);
+ if (entity == NULL)
+ return(NULL);
+
+ input = xmlNewInputStream(ctxt);
+ if (input == NULL)
+ return(NULL);
+ input->filename = (char *) xmlCharStrdup(URL);
+ input->buf = xmlParserInputBufferCreateMem(entity->data, entity->size,
+ XML_CHAR_ENCODING_NONE);
+ if (input->buf == NULL) {
+ xmlFreeInputStream(input);
+ return(NULL);
+ }
+ input->base = input->cur = xmlBufContent(input->buf->buffer);
+ input->end = input->base + xmlBufUse(input->buf->buffer);
+
+ return input;
}
diff --git a/tests/fuzz/fuzz.h b/tests/fuzz/fuzz.h
index 7dff3dbe..3ff81ca6 100644
--- a/tests/fuzz/fuzz.h
+++ b/tests/fuzz/fuzz.h
@@ -12,7 +12,13 @@
#include <libxml/xpath.h>
int
-xsltFuzzXPathInit(int *argc_p, char ***argv_p, const char *dir);
+LLVMFuzzerInitialize(int *argc, char ***argv);
+
+int
+LLVMFuzzerTestOneInput(const char *data, size_t size);
+
+int
+xsltFuzzXPathInit(void);
xmlXPathObjectPtr
xsltFuzzXPath(const char *data, size_t size);
@@ -24,7 +30,7 @@ void
xsltFuzzXPathCleanup(void);
int
-xsltFuzzXsltInit(int *argc_p, char ***argv_p, const char *dir);
+xsltFuzzXsltInit(void);
xmlChar *
xsltFuzzXslt(const char *data, size_t size);
@@ -32,4 +38,55 @@ xsltFuzzXslt(const char *data, size_t size);
void
xsltFuzzXsltCleanup(void);
+/* Utility functions */
+
+void
+xmlFuzzErrorFunc(void *ctx ATTRIBUTE_UNUSED, const char *msg ATTRIBUTE_UNUSED,
+ ...);
+
+void
+xmlFuzzMemSetup(void);
+
+void
+xmlFuzzMemSetLimit(size_t limit);
+
+void
+xmlFuzzDataInit(const char *data, size_t size);
+
+void
+xmlFuzzDataCleanup(void);
+
+void
+xmlFuzzWriteInt(FILE *out, size_t v, int size);
+
+size_t
+xmlFuzzReadInt(int size);
+
+const char *
+xmlFuzzReadRemaining(size_t *size);
+
+void
+xmlFuzzWriteString(FILE *out, const char *str);
+
+const char *
+xmlFuzzReadString(size_t *size);
+
+void
+xmlFuzzReadEntities(void);
+
+const char *
+xmlFuzzMainUrl(void);
+
+const char *
+xmlFuzzMainEntity(size_t *size);
+
+const char *
+xmlFuzzSecondaryUrl(void);
+
+const char *
+xmlFuzzSecondaryEntity(size_t *size);
+
+xmlParserInputPtr
+xmlFuzzEntityLoader(const char *URL, const char *ID, xmlParserCtxtPtr ctxt);
+
#endif
diff --git a/tests/fuzz/genSeed.c b/tests/fuzz/genSeed.c
new file mode 100644
index 00000000..235da992
--- /dev/null
+++ b/tests/fuzz/genSeed.c
@@ -0,0 +1,487 @@
+/*
+ * genSeed.c: Generate the seed corpora for fuzzing.
+ *
+ * See Copyright for the status of this software.
+ */
+
+#include <stdio.h>
+#include <string.h>
+#include <glob.h>
+#include <libgen.h>
+#include <sys/stat.h>
+
+#ifdef _WIN32
+#include <direct.h>
+#else
+#include <unistd.h>
+#endif
+
+#include <libxml/parserInternals.h>
+#include <libxslt/transform.h>
+#include <libxslt/xsltInternals.h>
+#include <libxslt/xsltutils.h>
+#include "fuzz.h"
+
+#define PATH_SIZE 500
+#define SEED_BUF_SIZE 16384
+
+typedef int
+(*fileFunc)(const char *base, FILE *out);
+
+typedef int
+(*mainFunc)(const char *testsDir);
+
+static struct {
+ FILE *out;
+ xmlHashTablePtr entities; /* Maps URLs to xmlFuzzEntityInfos */
+ xmlExternalEntityLoader oldLoader;
+ fileFunc processFile;
+ const char *fuzzer;
+ const char *docDir;
+ char cwd[PATH_SIZE];
+} globalData;
+
+/*
+ * A custom entity loader that writes all external DTDs or entities to a
+ * single file in the format expected by xmlFuzzEntityLoader.
+ */
+static xmlParserInputPtr
+fuzzEntityRecorder(const char *URL, const char *ID, xmlParserCtxtPtr ctxt) {
+ xmlParserInputPtr in;
+ xmlChar *data;
+ static const int chunkSize = 16384;
+ int len;
+
+ in = xmlNoNetExternalEntityLoader(URL, ID, ctxt);
+ if (in == NULL)
+ return(NULL);
+
+ if (globalData.entities == NULL) {
+ globalData.entities = xmlHashCreate(4);
+ } else if (xmlHashLookup(globalData.entities,
+ (const xmlChar *) URL) != NULL) {
+ return(in);
+ }
+
+ do {
+ len = xmlParserInputBufferGrow(in->buf, chunkSize);
+ if (len < 0) {
+ fprintf(stderr, "Error reading %s\n", URL);
+ xmlFreeInputStream(in);
+ return(NULL);
+ }
+ } while (len > 0);
+
+ data = xmlStrdup(xmlBufContent(in->buf->buffer));
+ if (data == NULL) {
+ fprintf(stderr, "Error allocating entity data\n");
+ xmlFreeInputStream(in);
+ return(NULL);
+ }
+
+ xmlFreeInputStream(in);
+
+ xmlHashAddEntry(globalData.entities, (const xmlChar *) URL, data);
+
+ return(xmlNoNetExternalEntityLoader(URL, ID, ctxt));
+}
+
+static void
+fuzzRecorderInit(FILE *out) {
+ globalData.out = out;
+ globalData.entities = xmlHashCreate(8);
+ globalData.oldLoader = xmlGetExternalEntityLoader();
+ xmlSetExternalEntityLoader(fuzzEntityRecorder);
+}
+
+static void
+fuzzRecorderWriteAndFree(void *entry, const xmlChar *file) {
+ char *data = entry;
+ xmlFuzzWriteString(globalData.out, (const char *) file);
+ xmlFuzzWriteString(globalData.out, data);
+ xmlFree(data);
+}
+
+static void
+fuzzRecorderWrite(const char *file) {
+ xmlHashRemoveEntry(globalData.entities, (const xmlChar *) file,
+ fuzzRecorderWriteAndFree);
+}
+
+static void
+fuzzRecorderCleanup() {
+ xmlSetExternalEntityLoader(globalData.oldLoader);
+ /* Write remaining entities (in random order). */
+ xmlHashFree(globalData.entities, fuzzRecorderWriteAndFree);
+ globalData.out = NULL;
+ globalData.entities = NULL;
+ globalData.oldLoader = NULL;
+}
+
+static int
+processXslt(const char *sheetFile, FILE *out) {
+ struct stat statbuf;
+ xsltStylesheetPtr sheet;
+ xmlDocPtr doc;
+ char docFile[PATH_SIZE];
+ char base[PATH_SIZE] = "";
+ size_t len, size;
+
+ len = strlen(sheetFile);
+ if ((len < 5) || (len >= PATH_SIZE) ||
+ (strcmp(sheetFile + len - 4, ".xsl") != 0)) {
+ fprintf(stderr, "invalid stylesheet file: %s\n", sheetFile);
+ return(-1);
+ }
+ strncat(base, sheetFile, len - 4);
+
+ if (globalData.docDir == NULL) {
+ size = snprintf(docFile, sizeof(docFile), "%s.xml", base);
+ } else {
+ size = snprintf(docFile, sizeof(docFile), "%s/%s.xml",
+ globalData.docDir, base);
+ }
+ if (size >= sizeof(docFile)) {
+ fprintf(stderr, "creating pattern failed\n");
+ return(-1);
+ }
+
+ /* Document might not exist, for example with imported stylesheets. */
+ if (stat(docFile, &statbuf) != 0)
+ return(-1);
+
+ /* Malloc limit. */
+ xmlFuzzWriteInt(out, 0, 4);
+
+ fuzzRecorderInit(out);
+
+ sheet = xsltParseStylesheetFile(BAD_CAST sheetFile);
+ doc = xmlReadFile(docFile, NULL, XSLT_PARSE_OPTIONS);
+ xmlFreeDoc(xsltApplyStylesheet(sheet, doc, NULL));
+ xmlFreeDoc(doc);
+ xsltFreeStylesheet(sheet);
+
+ fuzzRecorderWrite(sheetFile);
+ fuzzRecorderWrite(docFile);
+ fuzzRecorderCleanup();
+
+ return(0);
+}
+
+static int
+processPattern(const char *pattern) {
+ glob_t globbuf;
+ int ret = 0;
+ int res;
+ size_t i;
+
+ res = glob(pattern, 0, NULL, &globbuf);
+ if (res == GLOB_NOMATCH)
+ return(0);
+ if (res != 0) {
+ fprintf(stderr, "couldn't match pattern %s\n", pattern);
+ return(-1);
+ }
+
+ for (i = 0; i < globbuf.gl_pathc; i++) {
+ struct stat statbuf;
+ char outPath[PATH_SIZE];
+ char *dirBuf = NULL;
+ char *baseBuf = NULL;
+ const char *path, *dir, *base;
+ FILE *out = NULL;
+ int dirChanged = 0;
+ size_t size;
+
+ res = -1;
+ path = globbuf.gl_pathv[i];
+
+ if ((stat(path, &statbuf) != 0) || (!S_ISREG(statbuf.st_mode)))
+ continue;
+
+ dirBuf = (char *) xmlCharStrdup(path);
+ baseBuf = (char *) xmlCharStrdup(path);
+ if ((dirBuf == NULL) || (baseBuf == NULL)) {
+ fprintf(stderr, "memory allocation failed\n");
+ ret = -1;
+ goto error;
+ }
+ dir = dirname(dirBuf);
+ base = basename(baseBuf);
+
+ size = snprintf(outPath, sizeof(outPath), "seed/%s/%s",
+ globalData.fuzzer, base);
+ if (size >= sizeof(outPath)) {
+ fprintf(stderr, "creating path failed\n");
+ ret = -1;
+ goto error;
+ }
+ out = fopen(outPath, "wb");
+ if (out == NULL) {
+ fprintf(stderr, "couldn't open %s for writing\n", outPath);
+ ret = -1;
+ goto error;
+ }
+ if (chdir(dir) != 0) {
+ fprintf(stderr, "couldn't chdir to %s\n", dir);
+ ret = -1;
+ goto error;
+ }
+ dirChanged = 1;
+ res = globalData.processFile(base, out);
+
+error:
+ if ((dirChanged) && (chdir(globalData.cwd) != 0)) {
+ fprintf(stderr, "couldn't chdir to %s\n", globalData.cwd);
+ ret = -1;
+ break;
+ }
+ if (out != NULL) {
+ fclose(out);
+ if (res != 0) {
+ unlink(outPath);
+ ret = -1;
+ }
+ }
+ xmlFree(dirBuf);
+ xmlFree(baseBuf);
+ }
+
+ globfree(&globbuf);
+ return(ret);
+}
+
+static int
+processTestDir(const char *testsDir, const char *subDir, const char *docDir) {
+ char pattern[PATH_SIZE];
+ size_t size;
+
+ size = snprintf(pattern, sizeof(pattern), "%s/%s/*.xsl",
+ testsDir, subDir);
+ if (size >= sizeof(pattern)) {
+ fprintf(stderr, "creating pattern failed\n");
+ return -1;
+ }
+
+ globalData.docDir = docDir;
+ return processPattern(pattern);
+}
+
+static int
+processTests(const char *testsDir) {
+ processTestDir(testsDir, "REC", NULL);
+ processTestDir(testsDir, "general", "../docs");
+ processTestDir(testsDir, "exslt/*", NULL);
+
+ return 0;
+}
+
+static int
+processXPath(const char *testsDir ATTRIBUTE_UNUSED) {
+#define UTF8_Auml "\xC3\x84"
+#define UTF8_szlig "\xC3\x9F"
+#define UTF8_ALPHA "\xCE\xB1"
+#define UTF8_DEJA "d\xC3\xA9j\xC3\xA0"
+ static const char *xml =
+ "<?pi content?>\n"
+ "<a xmlns:a=\"a\">\n"
+ " <b xmlns:b=\"b\" a=\"1\" id=\"b\">\n"
+ " <c b=\"2\">" UTF8_Auml "rger</c>\n"
+ " <b:d b=\"3\">text</b:d>\n"
+ " <!-- comment -->\n"
+ " <a:b b=\"4\">" UTF8_szlig "&#x1f600;</a:b>\n"
+ " <b:c a=\"4\"><![CDATA[text]]></b:c>\n"
+ " </b>\n"
+ " <?pi content?>\n"
+ " <a:e xmlns:c=\"c\" a=\"" UTF8_ALPHA "\">\n"
+ " <c:d b=\"2\"/>\n"
+ " <a:c>99</a:c>\n"
+ " <e a=\"2\">content</e>\n"
+ " </a:e>\n"
+ " <b/>\n"
+ " <a:a/>\n"
+ " <!-- comment -->\n"
+ "</a>\n";
+ static const char *exprs[] = {
+ "crypto:md4('a')",
+ "crypto:md5('a')",
+ "crypto:rc4_decrypt(crypto:rc4_encrypt('key','msg'))",
+ "crypto:sha1('a')",
+ "date:add('2016-01-01T12:00:00','-P1Y2M3DT10H30M45S')",
+ "date:add-duration('-P1Y2M3DT10H30M45S','-P1Y2M3DT10H30M45S')",
+ "date:date('2016-01-01T12:00:00')",
+ "date:date-time()",
+ "date:day-abbreviation('2016-01-01T12:00:00')",
+ "date:day-in-month('2016-01-01T12:00:00')",
+ "date:day-in-week('2016-01-01T12:00:00')",
+ "date:day-in-year('2016-01-01T12:00:00')",
+ "date:day-name('2016-01-01T12:00:00')",
+ "date:day-of-week-in-month('2016-01-01T12:00:00')",
+ "date:difference('1999-06-10T20:03:48','2016-01-01T12:00:00')",
+ "date:duration('1234567890')",
+ "date:format-date('2016-01-01T12:00:00','GyyyyMMwwWWDDddFFEaHHkkKKhhMMssSSSzZ')",
+ "date:hour-in-day('2016-01-01T12:00:00')",
+ "date:leap-year('2016-01-01T12:00:00')",
+ "date:minute-in-hour('2016-01-01T12:00:00')",
+ "date:month-abbreviation('2016-01-01T12:00:00')",
+ "date:month-in-year('2016-01-01T12:00:00')",
+ "date:month-name('2016-01-01T12:00:00')",
+ "date:parse-date('20160101120000','yyyyMMddkkmmss')",
+ "date:second-in-minute('2016-01-01T12:00:00')",
+ "date:seconds('2016-01-01T12:00:00')",
+ "date:sum(str:split('-P1Y2M3DT10H30M45S,-P1Y2M3DT10H30M45S,P999999999S',','))",
+ "date:time('2016-01-01T12:00:00')",
+ "date:week-in-month('2016-01-01T12:00:00')",
+ "date:week-in-year('2016-01-01T12:00:00')",
+ "date:year('2016-01-01T12:00:00')",
+ "dyn:evaluate('1+1')",
+ "dyn:map(//*,'.')",
+ "(1.1+-24.5)*0.8-(25div3.5)mod0.2",
+ "/a/b/c/text()|//e/c:d/@b",
+ "(//*[@*][1])[1]",
+ "exsl:node-set($n)",
+ "exsl:node-set('s')",
+ "exsl:object-type(1)",
+ "boolean(.)",
+ "ceiling(.)",
+ "concat(.,'a')",
+ "contains(.,'e')",
+ "count(.)",
+ "false()",
+ "floor(.)",
+ "id(.)",
+ "lang(.)",
+ "last()",
+ "local-name(.)",
+ "name(.)",
+ "namespace-uri(.)",
+ "normalize-space(.)",
+ "not(.)",
+ "number(.)",
+ "number('1.0')",
+ "position()",
+ "round(.)",
+ "starts-with(.,'t')",
+ "string-length(.)",
+ "string(.)",
+ "string(1.0)",
+ "substring(.,2,3)",
+ "substring-after(.,'e')",
+ "substring-before(.,'e')",
+ "sum(*)",
+ "translate(.,'e','a')",
+ "true()",
+ "math:abs(-1.5)",
+ "math:acos(-0.5)",
+ "math:asin(-0.5)",
+ "math:atan(-0.5)",
+ "math:atan2(-1.5,-1.5)",
+ "math:constant('E',20)",
+ "math:cos(-1.5)",
+ "math:exp(-1.5)",
+ "math:highest(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))",
+ "math:log(2.0)",
+ "math:lowest(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))",
+ "math:max(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))",
+ "math:min(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))",
+ "math:power(2.0,0.5)",
+ "math:random()",
+ "math:sin(-1.5)",
+ "math:sqrt(2.0)",
+ "math:tan(-1.5)",
+ "saxon:eval(saxon:expression('1+1'))",
+ "saxon:evaluate('1+1')",
+ "saxon:line-number()",
+ "saxon:line-number(*)",
+ "saxon:systemId()",
+ "set:difference(//*,//a:*)",
+ "set:distinct(//*)",
+ "set:has-same-node(//*,//a:*)",
+ "set:intersection(//*,//a:*)",
+ "set:leading(//*,/*/*[3])",
+ "set:trailing(//*,/*/*[2])",
+ "str:align('" UTF8_DEJA "','--------','center')",
+ "str:align('" UTF8_DEJA "','--------','left')",
+ "str:align('" UTF8_DEJA "','--------','right')",
+ "str:concat(str:split('ab,cd,ef',','))",
+ "str:decode-uri('%41%00%2d')",
+ "str:encode-uri(';/?:@&=+$,[]',true())",
+ "str:encode-uri('|<>',false())",
+ "str:padding(81,' ')",
+ "str:replace('abcdefgh',str:split('a,c,e,g',','),str:split('w,x,y,z',','))",
+ "str:split('a, sim, lis',', ')",
+ "str:tokenize('2016-01-01T12:00:00','-T:')",
+ "current()",
+ "document('')",
+ "element-available('exsl:document')",
+ "format-number(1.0,'##,##,00.00##')",
+ "format-number(1.0,'#.#;-0.0%')",
+ "function-available('exsl:node-set')",
+ "generate-id(.)",
+ "system-property('xsl:version')",
+ "unparsed-entity-uri('a')"
+ };
+ size_t numExprs = sizeof(exprs) / sizeof(*exprs);
+ size_t i, size;
+ int ret = 0;
+
+ for (i = 0; i < numExprs; i++) {
+ char outPath[PATH_SIZE];
+ FILE *out;
+
+ size = snprintf(outPath, sizeof(outPath), "seed/xpath/%03d", (int) i);
+ if (size >= PATH_SIZE) {
+ ret = -1;
+ continue;
+ }
+ out = fopen(outPath, "wb");
+ if (out == NULL) {
+ ret = -1;
+ continue;
+ }
+ /* Memory limit. */
+ xmlFuzzWriteInt(out, 0, 4);
+ xmlFuzzWriteString(out, exprs[i]);
+ xmlFuzzWriteString(out, xml);
+
+ fclose(out);
+ }
+
+ return(ret);
+}
+
+int
+main(int argc, const char **argv) {
+ mainFunc process = processTests;
+ const char *fuzzer;
+ int ret = 0;
+
+ if (argc < 3) {
+ fprintf(stderr, "usage: genSeed [FUZZER] [PATTERN...]\n");
+ return(1);
+ }
+
+ xmlSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
+ xsltSetGenericErrorFunc(NULL, xmlFuzzErrorFunc);
+
+ fuzzer = argv[1];
+ if (strcmp(fuzzer, "xslt") == 0) {
+ globalData.processFile = processXslt;
+ } else if (strcmp(fuzzer, "xpath") == 0) {
+ process = processXPath;
+ } else {
+ fprintf(stderr, "unknown fuzzer %s\n", fuzzer);
+ return(1);
+ }
+ globalData.fuzzer = fuzzer;
+
+ if (getcwd(globalData.cwd, PATH_SIZE) == NULL) {
+ fprintf(stderr, "couldn't get current directory\n");
+ return(1);
+ }
+
+ process(argv[2]);
+
+ return(ret);
+}
+
diff --git a/tests/fuzz/seed/xpath/crypto_md4 b/tests/fuzz/seed/xpath/crypto_md4
deleted file mode 100644
index af26aed1..00000000
--- a/tests/fuzz/seed/xpath/crypto_md4
+++ /dev/null
@@ -1 +0,0 @@
-crypto:md4('a')
diff --git a/tests/fuzz/seed/xpath/crypto_md5 b/tests/fuzz/seed/xpath/crypto_md5
deleted file mode 100644
index e0af6d39..00000000
--- a/tests/fuzz/seed/xpath/crypto_md5
+++ /dev/null
@@ -1 +0,0 @@
-crypto:md5('a')
diff --git a/tests/fuzz/seed/xpath/crypto_rc4_decrypt b/tests/fuzz/seed/xpath/crypto_rc4_decrypt
deleted file mode 100644
index fe346720..00000000
--- a/tests/fuzz/seed/xpath/crypto_rc4_decrypt
+++ /dev/null
@@ -1 +0,0 @@
-crypto:rc4_decrypt(crypto:rc4_encrypt('key','msg'))
diff --git a/tests/fuzz/seed/xpath/crypto_sha1 b/tests/fuzz/seed/xpath/crypto_sha1
deleted file mode 100644
index a139200d..00000000
--- a/tests/fuzz/seed/xpath/crypto_sha1
+++ /dev/null
@@ -1 +0,0 @@
-crypto:sha1('a')
diff --git a/tests/fuzz/seed/xpath/date_add b/tests/fuzz/seed/xpath/date_add
deleted file mode 100644
index e12bd62c..00000000
--- a/tests/fuzz/seed/xpath/date_add
+++ /dev/null
@@ -1 +0,0 @@
-date:add('2016-01-01T12:00:00','-P1Y2M3DT10H30M45S')
diff --git a/tests/fuzz/seed/xpath/date_add_duration b/tests/fuzz/seed/xpath/date_add_duration
deleted file mode 100644
index 3add82f3..00000000
--- a/tests/fuzz/seed/xpath/date_add_duration
+++ /dev/null
@@ -1 +0,0 @@
-date:add-duration('-P1Y2M3DT10H30M45S','-P1Y2M3DT10H30M45S')
diff --git a/tests/fuzz/seed/xpath/date_date b/tests/fuzz/seed/xpath/date_date
deleted file mode 100644
index db7eb0fb..00000000
--- a/tests/fuzz/seed/xpath/date_date
+++ /dev/null
@@ -1 +0,0 @@
-date:date('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_date_time b/tests/fuzz/seed/xpath/date_date_time
deleted file mode 100644
index 56c80c79..00000000
--- a/tests/fuzz/seed/xpath/date_date_time
+++ /dev/null
@@ -1 +0,0 @@
-date:date-time()
diff --git a/tests/fuzz/seed/xpath/date_day_abbreviation b/tests/fuzz/seed/xpath/date_day_abbreviation
deleted file mode 100644
index ea19a5d4..00000000
--- a/tests/fuzz/seed/xpath/date_day_abbreviation
+++ /dev/null
@@ -1 +0,0 @@
-date:day-abbreviation('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_day_in_month b/tests/fuzz/seed/xpath/date_day_in_month
deleted file mode 100644
index 2b21b611..00000000
--- a/tests/fuzz/seed/xpath/date_day_in_month
+++ /dev/null
@@ -1 +0,0 @@
-date:day-in-month('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_day_in_week b/tests/fuzz/seed/xpath/date_day_in_week
deleted file mode 100644
index 78343b04..00000000
--- a/tests/fuzz/seed/xpath/date_day_in_week
+++ /dev/null
@@ -1 +0,0 @@
-date:day-in-week('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_day_in_year b/tests/fuzz/seed/xpath/date_day_in_year
deleted file mode 100644
index 32e55743..00000000
--- a/tests/fuzz/seed/xpath/date_day_in_year
+++ /dev/null
@@ -1 +0,0 @@
-date:day-in-year('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_day_name b/tests/fuzz/seed/xpath/date_day_name
deleted file mode 100644
index 69d66aee..00000000
--- a/tests/fuzz/seed/xpath/date_day_name
+++ /dev/null
@@ -1 +0,0 @@
-date:day-name('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_day_of_week_in_month b/tests/fuzz/seed/xpath/date_day_of_week_in_month
deleted file mode 100644
index e2525bd7..00000000
--- a/tests/fuzz/seed/xpath/date_day_of_week_in_month
+++ /dev/null
@@ -1 +0,0 @@
-date:day-of-week-in-month('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_difference b/tests/fuzz/seed/xpath/date_difference
deleted file mode 100644
index deb5b9d1..00000000
--- a/tests/fuzz/seed/xpath/date_difference
+++ /dev/null
@@ -1 +0,0 @@
-date:difference('1999-06-10T20:03:48','2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_duration b/tests/fuzz/seed/xpath/date_duration
deleted file mode 100644
index 1c8f4acb..00000000
--- a/tests/fuzz/seed/xpath/date_duration
+++ /dev/null
@@ -1 +0,0 @@
-date:duration('1234567890')
diff --git a/tests/fuzz/seed/xpath/date_format_date b/tests/fuzz/seed/xpath/date_format_date
deleted file mode 100644
index 7025e1d5..00000000
--- a/tests/fuzz/seed/xpath/date_format_date
+++ /dev/null
@@ -1 +0,0 @@
-date:format-date('2016-01-01T12:00:00','GyyyyMMwwWWDDddFFEaHHkkKKhhMMssSSSzZ')
diff --git a/tests/fuzz/seed/xpath/date_hour_in_day b/tests/fuzz/seed/xpath/date_hour_in_day
deleted file mode 100644
index 68ed1f00..00000000
--- a/tests/fuzz/seed/xpath/date_hour_in_day
+++ /dev/null
@@ -1 +0,0 @@
-date:hour-in-day('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_leap_year b/tests/fuzz/seed/xpath/date_leap_year
deleted file mode 100644
index 4f7b98da..00000000
--- a/tests/fuzz/seed/xpath/date_leap_year
+++ /dev/null
@@ -1 +0,0 @@
-date:leap-year('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_minute_in_hour b/tests/fuzz/seed/xpath/date_minute_in_hour
deleted file mode 100644
index 865fbc25..00000000
--- a/tests/fuzz/seed/xpath/date_minute_in_hour
+++ /dev/null
@@ -1 +0,0 @@
-date:minute-in-hour('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_month_abbreviation b/tests/fuzz/seed/xpath/date_month_abbreviation
deleted file mode 100644
index 89a2e2c4..00000000
--- a/tests/fuzz/seed/xpath/date_month_abbreviation
+++ /dev/null
@@ -1 +0,0 @@
-date:month-abbreviation('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_month_in_year b/tests/fuzz/seed/xpath/date_month_in_year
deleted file mode 100644
index 07c0c12d..00000000
--- a/tests/fuzz/seed/xpath/date_month_in_year
+++ /dev/null
@@ -1 +0,0 @@
-date:month-in-year('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_month_name b/tests/fuzz/seed/xpath/date_month_name
deleted file mode 100644
index 7da78e79..00000000
--- a/tests/fuzz/seed/xpath/date_month_name
+++ /dev/null
@@ -1 +0,0 @@
-date:month-name('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_parse_date b/tests/fuzz/seed/xpath/date_parse_date
deleted file mode 100644
index cea782cc..00000000
--- a/tests/fuzz/seed/xpath/date_parse_date
+++ /dev/null
@@ -1 +0,0 @@
-date:parse-date('20160101120000','yyyyMMddkkmmss')
diff --git a/tests/fuzz/seed/xpath/date_second_in_minute b/tests/fuzz/seed/xpath/date_second_in_minute
deleted file mode 100644
index 2574fa74..00000000
--- a/tests/fuzz/seed/xpath/date_second_in_minute
+++ /dev/null
@@ -1 +0,0 @@
-date:second-in-minute('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_seconds b/tests/fuzz/seed/xpath/date_seconds
deleted file mode 100644
index 48ec1c2a..00000000
--- a/tests/fuzz/seed/xpath/date_seconds
+++ /dev/null
@@ -1 +0,0 @@
-date:seconds('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_sum b/tests/fuzz/seed/xpath/date_sum
deleted file mode 100644
index 39500251..00000000
--- a/tests/fuzz/seed/xpath/date_sum
+++ /dev/null
@@ -1 +0,0 @@
-date:sum(str:split('-P1Y2M3DT10H30M45S,-P1Y2M3DT10H30M45S,P999999999S',','))
diff --git a/tests/fuzz/seed/xpath/date_time b/tests/fuzz/seed/xpath/date_time
deleted file mode 100644
index 3333638c..00000000
--- a/tests/fuzz/seed/xpath/date_time
+++ /dev/null
@@ -1 +0,0 @@
-date:time('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_week_in_month b/tests/fuzz/seed/xpath/date_week_in_month
deleted file mode 100644
index 415ed927..00000000
--- a/tests/fuzz/seed/xpath/date_week_in_month
+++ /dev/null
@@ -1 +0,0 @@
-date:week-in-month('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_week_in_year b/tests/fuzz/seed/xpath/date_week_in_year
deleted file mode 100644
index baf0c2cd..00000000
--- a/tests/fuzz/seed/xpath/date_week_in_year
+++ /dev/null
@@ -1 +0,0 @@
-date:week-in-year('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/date_year b/tests/fuzz/seed/xpath/date_year
deleted file mode 100644
index b615fde4..00000000
--- a/tests/fuzz/seed/xpath/date_year
+++ /dev/null
@@ -1 +0,0 @@
-date:year('2016-01-01T12:00:00')
diff --git a/tests/fuzz/seed/xpath/dyn_evaluate b/tests/fuzz/seed/xpath/dyn_evaluate
deleted file mode 100644
index cb0f284b..00000000
--- a/tests/fuzz/seed/xpath/dyn_evaluate
+++ /dev/null
@@ -1 +0,0 @@
-dyn:evaluate('1+1')
diff --git a/tests/fuzz/seed/xpath/dyn_map b/tests/fuzz/seed/xpath/dyn_map
deleted file mode 100644
index 361ddb39..00000000
--- a/tests/fuzz/seed/xpath/dyn_map
+++ /dev/null
@@ -1 +0,0 @@
-dyn:map(//*,'.')
diff --git a/tests/fuzz/seed/xpath/expr_arith b/tests/fuzz/seed/xpath/expr_arith
deleted file mode 100644
index bc4813df..00000000
--- a/tests/fuzz/seed/xpath/expr_arith
+++ /dev/null
@@ -1 +0,0 @@
-(1.1+-24.5)*0.8-(25div3.5)mod0.2
diff --git a/tests/fuzz/seed/xpath/expr_location_path b/tests/fuzz/seed/xpath/expr_location_path
deleted file mode 100644
index 789255c2..00000000
--- a/tests/fuzz/seed/xpath/expr_location_path
+++ /dev/null
@@ -1 +0,0 @@
-/a/b/c/text()|//e/c:d/@b
diff --git a/tests/fuzz/seed/xpath/expr_predicate b/tests/fuzz/seed/xpath/expr_predicate
deleted file mode 100644
index 191b3051..00000000
--- a/tests/fuzz/seed/xpath/expr_predicate
+++ /dev/null
@@ -1 +0,0 @@
-(//*[@*][1])[1]
diff --git a/tests/fuzz/seed/xpath/exsl_node_set_1 b/tests/fuzz/seed/xpath/exsl_node_set_1
deleted file mode 100644
index a27992a5..00000000
--- a/tests/fuzz/seed/xpath/exsl_node_set_1
+++ /dev/null
@@ -1 +0,0 @@
-exsl:node-set($n)
diff --git a/tests/fuzz/seed/xpath/exsl_node_set_2 b/tests/fuzz/seed/xpath/exsl_node_set_2
deleted file mode 100644
index 10b276c5..00000000
--- a/tests/fuzz/seed/xpath/exsl_node_set_2
+++ /dev/null
@@ -1 +0,0 @@
-exsl:node-set('s')
diff --git a/tests/fuzz/seed/xpath/exsl_object_type b/tests/fuzz/seed/xpath/exsl_object_type
deleted file mode 100644
index 2a3784a2..00000000
--- a/tests/fuzz/seed/xpath/exsl_object_type
+++ /dev/null
@@ -1 +0,0 @@
-exsl:object-type(1)
diff --git a/tests/fuzz/seed/xpath/func_boolean b/tests/fuzz/seed/xpath/func_boolean
deleted file mode 100644
index 409bec66..00000000
--- a/tests/fuzz/seed/xpath/func_boolean
+++ /dev/null
@@ -1 +0,0 @@
-boolean(.)
diff --git a/tests/fuzz/seed/xpath/func_ceiling b/tests/fuzz/seed/xpath/func_ceiling
deleted file mode 100644
index f23305db..00000000
--- a/tests/fuzz/seed/xpath/func_ceiling
+++ /dev/null
@@ -1 +0,0 @@
-ceiling(.)
diff --git a/tests/fuzz/seed/xpath/func_concat b/tests/fuzz/seed/xpath/func_concat
deleted file mode 100644
index b6c9a1b1..00000000
--- a/tests/fuzz/seed/xpath/func_concat
+++ /dev/null
@@ -1 +0,0 @@
-concat(.,'a')
diff --git a/tests/fuzz/seed/xpath/func_contains b/tests/fuzz/seed/xpath/func_contains
deleted file mode 100644
index ed18a39c..00000000
--- a/tests/fuzz/seed/xpath/func_contains
+++ /dev/null
@@ -1 +0,0 @@
-contains(.,'e')
diff --git a/tests/fuzz/seed/xpath/func_count b/tests/fuzz/seed/xpath/func_count
deleted file mode 100644
index 3fea95c0..00000000
--- a/tests/fuzz/seed/xpath/func_count
+++ /dev/null
@@ -1 +0,0 @@
-count(.)
diff --git a/tests/fuzz/seed/xpath/func_false b/tests/fuzz/seed/xpath/func_false
deleted file mode 100644
index f9e9b505..00000000
--- a/tests/fuzz/seed/xpath/func_false
+++ /dev/null
@@ -1 +0,0 @@
-false()
diff --git a/tests/fuzz/seed/xpath/func_floor b/tests/fuzz/seed/xpath/func_floor
deleted file mode 100644
index 6c0d2db0..00000000
--- a/tests/fuzz/seed/xpath/func_floor
+++ /dev/null
@@ -1 +0,0 @@
-floor(.)
diff --git a/tests/fuzz/seed/xpath/func_id b/tests/fuzz/seed/xpath/func_id
deleted file mode 100644
index 9c29ea0d..00000000
--- a/tests/fuzz/seed/xpath/func_id
+++ /dev/null
@@ -1 +0,0 @@
-id(.)
diff --git a/tests/fuzz/seed/xpath/func_lang b/tests/fuzz/seed/xpath/func_lang
deleted file mode 100644
index 1ff69fd2..00000000
--- a/tests/fuzz/seed/xpath/func_lang
+++ /dev/null
@@ -1 +0,0 @@
-lang(.)
diff --git a/tests/fuzz/seed/xpath/func_last b/tests/fuzz/seed/xpath/func_last
deleted file mode 100644
index 06e7e03f..00000000
--- a/tests/fuzz/seed/xpath/func_last
+++ /dev/null
@@ -1 +0,0 @@
-last()
diff --git a/tests/fuzz/seed/xpath/func_local_name b/tests/fuzz/seed/xpath/func_local_name
deleted file mode 100644
index 1a0193b3..00000000
--- a/tests/fuzz/seed/xpath/func_local_name
+++ /dev/null
@@ -1 +0,0 @@
-local-name(.)
diff --git a/tests/fuzz/seed/xpath/func_name b/tests/fuzz/seed/xpath/func_name
deleted file mode 100644
index 6bce7bf5..00000000
--- a/tests/fuzz/seed/xpath/func_name
+++ /dev/null
@@ -1 +0,0 @@
-name(.)
diff --git a/tests/fuzz/seed/xpath/func_namespace_uri b/tests/fuzz/seed/xpath/func_namespace_uri
deleted file mode 100644
index 649a382c..00000000
--- a/tests/fuzz/seed/xpath/func_namespace_uri
+++ /dev/null
@@ -1 +0,0 @@
-namespace-uri(.)
diff --git a/tests/fuzz/seed/xpath/func_normalize_space b/tests/fuzz/seed/xpath/func_normalize_space
deleted file mode 100644
index 84f6777f..00000000
--- a/tests/fuzz/seed/xpath/func_normalize_space
+++ /dev/null
@@ -1 +0,0 @@
-normalize-space(.)
diff --git a/tests/fuzz/seed/xpath/func_not b/tests/fuzz/seed/xpath/func_not
deleted file mode 100644
index 44bc806e..00000000
--- a/tests/fuzz/seed/xpath/func_not
+++ /dev/null
@@ -1 +0,0 @@
-not(.)
diff --git a/tests/fuzz/seed/xpath/func_number_node b/tests/fuzz/seed/xpath/func_number_node
deleted file mode 100644
index c1f1c489..00000000
--- a/tests/fuzz/seed/xpath/func_number_node
+++ /dev/null
@@ -1 +0,0 @@
-number(.)
diff --git a/tests/fuzz/seed/xpath/func_number_str b/tests/fuzz/seed/xpath/func_number_str
deleted file mode 100644
index 31a8d993..00000000
--- a/tests/fuzz/seed/xpath/func_number_str
+++ /dev/null
@@ -1 +0,0 @@
-number('1.0')
diff --git a/tests/fuzz/seed/xpath/func_position b/tests/fuzz/seed/xpath/func_position
deleted file mode 100644
index ec993e8b..00000000
--- a/tests/fuzz/seed/xpath/func_position
+++ /dev/null
@@ -1 +0,0 @@
-position()
diff --git a/tests/fuzz/seed/xpath/func_round b/tests/fuzz/seed/xpath/func_round
deleted file mode 100644
index 54315843..00000000
--- a/tests/fuzz/seed/xpath/func_round
+++ /dev/null
@@ -1 +0,0 @@
-round(.)
diff --git a/tests/fuzz/seed/xpath/func_starts_with b/tests/fuzz/seed/xpath/func_starts_with
deleted file mode 100644
index 1a9f1e98..00000000
--- a/tests/fuzz/seed/xpath/func_starts_with
+++ /dev/null
@@ -1 +0,0 @@
-starts-with(.,'t')
diff --git a/tests/fuzz/seed/xpath/func_string_length b/tests/fuzz/seed/xpath/func_string_length
deleted file mode 100644
index 26e107fe..00000000
--- a/tests/fuzz/seed/xpath/func_string_length
+++ /dev/null
@@ -1 +0,0 @@
-string-length(.)
diff --git a/tests/fuzz/seed/xpath/func_string_node b/tests/fuzz/seed/xpath/func_string_node
deleted file mode 100644
index e85c11ca..00000000
--- a/tests/fuzz/seed/xpath/func_string_node
+++ /dev/null
@@ -1 +0,0 @@
-string(.)
diff --git a/tests/fuzz/seed/xpath/func_string_num b/tests/fuzz/seed/xpath/func_string_num
deleted file mode 100644
index 6c9fe040..00000000
--- a/tests/fuzz/seed/xpath/func_string_num
+++ /dev/null
@@ -1 +0,0 @@
-string(1.0)
diff --git a/tests/fuzz/seed/xpath/func_substring b/tests/fuzz/seed/xpath/func_substring
deleted file mode 100644
index f069f81e..00000000
--- a/tests/fuzz/seed/xpath/func_substring
+++ /dev/null
@@ -1 +0,0 @@
-substring(.,2,3)
diff --git a/tests/fuzz/seed/xpath/func_substring_after b/tests/fuzz/seed/xpath/func_substring_after
deleted file mode 100644
index 1bbecc93..00000000
--- a/tests/fuzz/seed/xpath/func_substring_after
+++ /dev/null
@@ -1 +0,0 @@
-substring-after(.,'e')
diff --git a/tests/fuzz/seed/xpath/func_substring_before b/tests/fuzz/seed/xpath/func_substring_before
deleted file mode 100644
index fcb14f14..00000000
--- a/tests/fuzz/seed/xpath/func_substring_before
+++ /dev/null
@@ -1 +0,0 @@
-substring-before(.,'e')
diff --git a/tests/fuzz/seed/xpath/func_sum b/tests/fuzz/seed/xpath/func_sum
deleted file mode 100644
index d110af82..00000000
--- a/tests/fuzz/seed/xpath/func_sum
+++ /dev/null
@@ -1 +0,0 @@
-sum(*)
diff --git a/tests/fuzz/seed/xpath/func_translate b/tests/fuzz/seed/xpath/func_translate
deleted file mode 100644
index 18fe731a..00000000
--- a/tests/fuzz/seed/xpath/func_translate
+++ /dev/null
@@ -1 +0,0 @@
-translate(.,'e','a')
diff --git a/tests/fuzz/seed/xpath/func_true b/tests/fuzz/seed/xpath/func_true
deleted file mode 100644
index c7fa7136..00000000
--- a/tests/fuzz/seed/xpath/func_true
+++ /dev/null
@@ -1 +0,0 @@
-true()
diff --git a/tests/fuzz/seed/xpath/math_abs b/tests/fuzz/seed/xpath/math_abs
deleted file mode 100644
index a56bfbf9..00000000
--- a/tests/fuzz/seed/xpath/math_abs
+++ /dev/null
@@ -1 +0,0 @@
-math:abs(-1.5)
diff --git a/tests/fuzz/seed/xpath/math_acos b/tests/fuzz/seed/xpath/math_acos
deleted file mode 100644
index 79d181c8..00000000
--- a/tests/fuzz/seed/xpath/math_acos
+++ /dev/null
@@ -1 +0,0 @@
-math:acos(-0.5)
diff --git a/tests/fuzz/seed/xpath/math_asin b/tests/fuzz/seed/xpath/math_asin
deleted file mode 100644
index 919d6eb4..00000000
--- a/tests/fuzz/seed/xpath/math_asin
+++ /dev/null
@@ -1 +0,0 @@
-math:asin(-0.5)
diff --git a/tests/fuzz/seed/xpath/math_atan b/tests/fuzz/seed/xpath/math_atan
deleted file mode 100644
index 40e6610f..00000000
--- a/tests/fuzz/seed/xpath/math_atan
+++ /dev/null
@@ -1 +0,0 @@
-math:atan(-0.5)
diff --git a/tests/fuzz/seed/xpath/math_atan2 b/tests/fuzz/seed/xpath/math_atan2
deleted file mode 100644
index c02562ba..00000000
--- a/tests/fuzz/seed/xpath/math_atan2
+++ /dev/null
@@ -1 +0,0 @@
-math:atan2(-1.5,-1.5)
diff --git a/tests/fuzz/seed/xpath/math_constant b/tests/fuzz/seed/xpath/math_constant
deleted file mode 100644
index bf6fe12b..00000000
--- a/tests/fuzz/seed/xpath/math_constant
+++ /dev/null
@@ -1 +0,0 @@
-math:constant('E',20)
diff --git a/tests/fuzz/seed/xpath/math_cos b/tests/fuzz/seed/xpath/math_cos
deleted file mode 100644
index 2a95639c..00000000
--- a/tests/fuzz/seed/xpath/math_cos
+++ /dev/null
@@ -1 +0,0 @@
-math:cos(-1.5)
diff --git a/tests/fuzz/seed/xpath/math_exp b/tests/fuzz/seed/xpath/math_exp
deleted file mode 100644
index 5ddf4b6a..00000000
--- a/tests/fuzz/seed/xpath/math_exp
+++ /dev/null
@@ -1 +0,0 @@
-math:exp(-1.5)
diff --git a/tests/fuzz/seed/xpath/math_highest b/tests/fuzz/seed/xpath/math_highest
deleted file mode 100644
index 7a64ae57..00000000
--- a/tests/fuzz/seed/xpath/math_highest
+++ /dev/null
@@ -1 +0,0 @@
-math:highest(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))
diff --git a/tests/fuzz/seed/xpath/math_log b/tests/fuzz/seed/xpath/math_log
deleted file mode 100644
index 260e6bc5..00000000
--- a/tests/fuzz/seed/xpath/math_log
+++ /dev/null
@@ -1 +0,0 @@
-math:log(2.0)
diff --git a/tests/fuzz/seed/xpath/math_lowest b/tests/fuzz/seed/xpath/math_lowest
deleted file mode 100644
index 5590bee8..00000000
--- a/tests/fuzz/seed/xpath/math_lowest
+++ /dev/null
@@ -1 +0,0 @@
-math:lowest(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))
diff --git a/tests/fuzz/seed/xpath/math_max b/tests/fuzz/seed/xpath/math_max
deleted file mode 100644
index 47e745b6..00000000
--- a/tests/fuzz/seed/xpath/math_max
+++ /dev/null
@@ -1 +0,0 @@
-math:max(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))
diff --git a/tests/fuzz/seed/xpath/math_min b/tests/fuzz/seed/xpath/math_min
deleted file mode 100644
index 3265d2c2..00000000
--- a/tests/fuzz/seed/xpath/math_min
+++ /dev/null
@@ -1 +0,0 @@
-math:min(str:split('1.2,-0.5,-2.2e8,-0.1e-5',','))
diff --git a/tests/fuzz/seed/xpath/math_power b/tests/fuzz/seed/xpath/math_power
deleted file mode 100644
index 3c7591c7..00000000
--- a/tests/fuzz/seed/xpath/math_power
+++ /dev/null
@@ -1 +0,0 @@
-math:power(2.0,0.5)
diff --git a/tests/fuzz/seed/xpath/math_random b/tests/fuzz/seed/xpath/math_random
deleted file mode 100644
index 9c6cca42..00000000
--- a/tests/fuzz/seed/xpath/math_random
+++ /dev/null
@@ -1 +0,0 @@
-math:random()
diff --git a/tests/fuzz/seed/xpath/math_sin b/tests/fuzz/seed/xpath/math_sin
deleted file mode 100644
index ba2e6bb4..00000000
--- a/tests/fuzz/seed/xpath/math_sin
+++ /dev/null
@@ -1 +0,0 @@
-math:sin(-1.5)
diff --git a/tests/fuzz/seed/xpath/math_sqrt b/tests/fuzz/seed/xpath/math_sqrt
deleted file mode 100644
index 36f71c43..00000000
--- a/tests/fuzz/seed/xpath/math_sqrt
+++ /dev/null
@@ -1 +0,0 @@
-math:sqrt(2.0)
diff --git a/tests/fuzz/seed/xpath/math_tan b/tests/fuzz/seed/xpath/math_tan
deleted file mode 100644
index 2329ae52..00000000
--- a/tests/fuzz/seed/xpath/math_tan
+++ /dev/null
@@ -1 +0,0 @@
-math:tan(-1.5)
diff --git a/tests/fuzz/seed/xpath/saxon_eval b/tests/fuzz/seed/xpath/saxon_eval
deleted file mode 100644
index 0f520105..00000000
--- a/tests/fuzz/seed/xpath/saxon_eval
+++ /dev/null
@@ -1 +0,0 @@
-saxon:eval(saxon:expression('1+1'))
diff --git a/tests/fuzz/seed/xpath/saxon_evaluate b/tests/fuzz/seed/xpath/saxon_evaluate
deleted file mode 100644
index b8102265..00000000
--- a/tests/fuzz/seed/xpath/saxon_evaluate
+++ /dev/null
@@ -1 +0,0 @@
-saxon:evaluate('1+1')
diff --git a/tests/fuzz/seed/xpath/saxon_line_number_0 b/tests/fuzz/seed/xpath/saxon_line_number_0
deleted file mode 100644
index 5052bc2a..00000000
--- a/tests/fuzz/seed/xpath/saxon_line_number_0
+++ /dev/null
@@ -1 +0,0 @@
-saxon:line-number()
diff --git a/tests/fuzz/seed/xpath/saxon_line_number_1 b/tests/fuzz/seed/xpath/saxon_line_number_1
deleted file mode 100644
index 542705cf..00000000
--- a/tests/fuzz/seed/xpath/saxon_line_number_1
+++ /dev/null
@@ -1 +0,0 @@
-saxon:line-number(*)
diff --git a/tests/fuzz/seed/xpath/saxon_systemId b/tests/fuzz/seed/xpath/saxon_systemId
deleted file mode 100644
index 2c548b51..00000000
--- a/tests/fuzz/seed/xpath/saxon_systemId
+++ /dev/null
@@ -1 +0,0 @@
-saxon:systemId()
diff --git a/tests/fuzz/seed/xpath/set_difference b/tests/fuzz/seed/xpath/set_difference
deleted file mode 100644
index 2e8678ba..00000000
--- a/tests/fuzz/seed/xpath/set_difference
+++ /dev/null
@@ -1 +0,0 @@
-set:difference(//*,//a:*)
diff --git a/tests/fuzz/seed/xpath/set_distinct b/tests/fuzz/seed/xpath/set_distinct
deleted file mode 100644
index c7dc183b..00000000
--- a/tests/fuzz/seed/xpath/set_distinct
+++ /dev/null
@@ -1 +0,0 @@
-set:distinct(//*)
diff --git a/tests/fuzz/seed/xpath/set_has_same_node b/tests/fuzz/seed/xpath/set_has_same_node
deleted file mode 100644
index 83096062..00000000
--- a/tests/fuzz/seed/xpath/set_has_same_node
+++ /dev/null
@@ -1 +0,0 @@
-set:has-same-node(//*,//a:*)
diff --git a/tests/fuzz/seed/xpath/set_intersection b/tests/fuzz/seed/xpath/set_intersection
deleted file mode 100644
index 8f2d97f5..00000000
--- a/tests/fuzz/seed/xpath/set_intersection
+++ /dev/null
@@ -1 +0,0 @@
-set:intersection(//*,//a:*)
diff --git a/tests/fuzz/seed/xpath/set_leading b/tests/fuzz/seed/xpath/set_leading
deleted file mode 100644
index 2b7209ff..00000000
--- a/tests/fuzz/seed/xpath/set_leading
+++ /dev/null
@@ -1 +0,0 @@
-set:leading(//*,/*/*[3])
diff --git a/tests/fuzz/seed/xpath/set_trailing b/tests/fuzz/seed/xpath/set_trailing
deleted file mode 100644
index fb00d07e..00000000
--- a/tests/fuzz/seed/xpath/set_trailing
+++ /dev/null
@@ -1 +0,0 @@
-set:trailing(//*,/*/*[2])
diff --git a/tests/fuzz/seed/xpath/str_align_center b/tests/fuzz/seed/xpath/str_align_center
deleted file mode 100644
index 4d906bf3..00000000
--- a/tests/fuzz/seed/xpath/str_align_center
+++ /dev/null
@@ -1 +0,0 @@
-str:align('dƩjƠ','--------','center')
diff --git a/tests/fuzz/seed/xpath/str_align_left b/tests/fuzz/seed/xpath/str_align_left
deleted file mode 100644
index 66a41084..00000000
--- a/tests/fuzz/seed/xpath/str_align_left
+++ /dev/null
@@ -1 +0,0 @@
-str:align('dƩjƠ','--------','left')
diff --git a/tests/fuzz/seed/xpath/str_align_right b/tests/fuzz/seed/xpath/str_align_right
deleted file mode 100644
index 03f20683..00000000
--- a/tests/fuzz/seed/xpath/str_align_right
+++ /dev/null
@@ -1 +0,0 @@
-str:align('dƩjƠ','--------','right')
diff --git a/tests/fuzz/seed/xpath/str_concat b/tests/fuzz/seed/xpath/str_concat
deleted file mode 100644
index 9b0bbce5..00000000
--- a/tests/fuzz/seed/xpath/str_concat
+++ /dev/null
@@ -1 +0,0 @@
-str:concat(str:split('ab,cd,ef',','))
diff --git a/tests/fuzz/seed/xpath/str_decode_uri b/tests/fuzz/seed/xpath/str_decode_uri
deleted file mode 100644
index f96b345c..00000000
--- a/tests/fuzz/seed/xpath/str_decode_uri
+++ /dev/null
@@ -1 +0,0 @@
-str:decode-uri('%41%00%2d')
diff --git a/tests/fuzz/seed/xpath/str_encode_uri_1 b/tests/fuzz/seed/xpath/str_encode_uri_1
deleted file mode 100644
index 97dbeae1..00000000
--- a/tests/fuzz/seed/xpath/str_encode_uri_1
+++ /dev/null
@@ -1 +0,0 @@
-str:encode-uri(';/?:@&=+$,[]',true())
diff --git a/tests/fuzz/seed/xpath/str_encode_uri_2 b/tests/fuzz/seed/xpath/str_encode_uri_2
deleted file mode 100644
index 09827ae5..00000000
--- a/tests/fuzz/seed/xpath/str_encode_uri_2
+++ /dev/null
@@ -1 +0,0 @@
-str:encode-uri('|<>',false())
diff --git a/tests/fuzz/seed/xpath/str_padding b/tests/fuzz/seed/xpath/str_padding
deleted file mode 100644
index 35736cc7..00000000
--- a/tests/fuzz/seed/xpath/str_padding
+++ /dev/null
@@ -1 +0,0 @@
-str:padding(81,' ')
diff --git a/tests/fuzz/seed/xpath/str_replace b/tests/fuzz/seed/xpath/str_replace
deleted file mode 100644
index 56056ae8..00000000
--- a/tests/fuzz/seed/xpath/str_replace
+++ /dev/null
@@ -1 +0,0 @@
-str:replace('abcdefgh',str:split('a,c,e,g',','),str:split('w,x,y,z',','))
diff --git a/tests/fuzz/seed/xpath/str_split b/tests/fuzz/seed/xpath/str_split
deleted file mode 100644
index f67c03c9..00000000
--- a/tests/fuzz/seed/xpath/str_split
+++ /dev/null
@@ -1 +0,0 @@
-str:split('a, sim, lis',', ')
diff --git a/tests/fuzz/seed/xpath/str_tokenize b/tests/fuzz/seed/xpath/str_tokenize
deleted file mode 100644
index fc74e187..00000000
--- a/tests/fuzz/seed/xpath/str_tokenize
+++ /dev/null
@@ -1 +0,0 @@
-str:tokenize('2016-01-01T12:00:00','-T:')
diff --git a/tests/fuzz/seed/xpath/xslt_current b/tests/fuzz/seed/xpath/xslt_current
deleted file mode 100644
index 79021cfc..00000000
--- a/tests/fuzz/seed/xpath/xslt_current
+++ /dev/null
@@ -1 +0,0 @@
-current()
diff --git a/tests/fuzz/seed/xpath/xslt_document b/tests/fuzz/seed/xpath/xslt_document
deleted file mode 100644
index c6027632..00000000
--- a/tests/fuzz/seed/xpath/xslt_document
+++ /dev/null
@@ -1 +0,0 @@
-document('')
diff --git a/tests/fuzz/seed/xpath/xslt_element_available b/tests/fuzz/seed/xpath/xslt_element_available
deleted file mode 100644
index 737c582c..00000000
--- a/tests/fuzz/seed/xpath/xslt_element_available
+++ /dev/null
@@ -1 +0,0 @@
-element-available('exsl:document')
diff --git a/tests/fuzz/seed/xpath/xslt_format_number b/tests/fuzz/seed/xpath/xslt_format_number
deleted file mode 100644
index f85ece94..00000000
--- a/tests/fuzz/seed/xpath/xslt_format_number
+++ /dev/null
@@ -1 +0,0 @@
-format-number(1.0,'##,##,00.00##')
diff --git a/tests/fuzz/seed/xpath/xslt_format_number_neg b/tests/fuzz/seed/xpath/xslt_format_number_neg
deleted file mode 100644
index 360c493f..00000000
--- a/tests/fuzz/seed/xpath/xslt_format_number_neg
+++ /dev/null
@@ -1 +0,0 @@
-format-number(1.0,'#.#;-0.0%')
diff --git a/tests/fuzz/seed/xpath/xslt_function_available b/tests/fuzz/seed/xpath/xslt_function_available
deleted file mode 100644
index 814530b7..00000000
--- a/tests/fuzz/seed/xpath/xslt_function_available
+++ /dev/null
@@ -1 +0,0 @@
-function-available('exsl:node-set')
diff --git a/tests/fuzz/seed/xpath/xslt_generate_id b/tests/fuzz/seed/xpath/xslt_generate_id
deleted file mode 100644
index 6221ee56..00000000
--- a/tests/fuzz/seed/xpath/xslt_generate_id
+++ /dev/null
@@ -1 +0,0 @@
-generate-id(.)
diff --git a/tests/fuzz/seed/xpath/xslt_system_property b/tests/fuzz/seed/xpath/xslt_system_property
deleted file mode 100644
index 643acb18..00000000
--- a/tests/fuzz/seed/xpath/xslt_system_property
+++ /dev/null
@@ -1 +0,0 @@
-system-property('xsl:version')
diff --git a/tests/fuzz/seed/xpath/xslt_unparsed_entity_uri b/tests/fuzz/seed/xpath/xslt_unparsed_entity_uri
deleted file mode 100644
index ba409c0c..00000000
--- a/tests/fuzz/seed/xpath/xslt_unparsed_entity_uri
+++ /dev/null
@@ -1 +0,0 @@
-unparsed-entity-uri('a')
diff --git a/tests/fuzz/seed/xslt/attr_set b/tests/fuzz/seed/xslt/attr_set
deleted file mode 100644
index 640c92f7..00000000
--- a/tests/fuzz/seed/xslt/attr_set
+++ /dev/null
@@ -1,9 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:attribute-set name="s"><x:attribute name="a:f" namespace="a">v</x:attribute></x:attribute-set>
-<x:attribute-set name="t" use-attribute-sets="s"><x:attribute name="g">w</x:attribute></x:attribute-set>
-<x:template match="a:*">
-<x:element name="e" use-attribute-sets="t"/>
-<a:e x:use-attribute-sets="t"/>
-<x:copy use-attribute-sets="t"></x:copy>
-</x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/cdata b/tests/fuzz/seed/xslt/cdata
deleted file mode 100644
index cb03937e..00000000
--- a/tests/fuzz/seed/xslt/cdata
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet version="1.0" xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b">
-<x:output cdata-section-elements="b a:c"/>
-<x:template match="*"><x:copy><x:apply-templates select="node()"/></x:copy></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/decimal_format b/tests/fuzz/seed/xslt/decimal_format
deleted file mode 100644
index 1a9332e2..00000000
--- a/tests/fuzz/seed/xslt/decimal_format
+++ /dev/null
@@ -1,15 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<x:decimal-format name="f"
-decimal-separator="ā€¢" grouping-separator="`"
-infinity="āˆž" minus-sign="ā€“" NaN="šŸ€€"
-percent="ā„" per-mille="*"
-zero-digit="0" digit="Ć·"
-pattern-separator="|"/>
-<x:template match="*">
-<n><x:value-of select="format-number(123456789.123456,'_Ć·Ć·`Ć·`00ā€¢00Ć·Ć·_','f')"/></n>
-<n><x:value-of select="format-number(-1.5,'Ć·ā€¢Ć·*|ā€“0ā€¢0ā„','f')"/></n>
-<n><x:value-of select="format-number(-1 div 0,'0','f')"/></n>
-<n><x:value-of select="format-number(0 div 0,'0','f')"/></n>
-</x:template>
-</x:stylesheet>
-
diff --git a/tests/fuzz/seed/xslt/element b/tests/fuzz/seed/xslt/element
deleted file mode 100644
index 7086695e..00000000
--- a/tests/fuzz/seed/xslt/element
+++ /dev/null
@@ -1,5 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:template match="*"><x:element name="e"><x:apply-templates select="node()|@*"/></x:element></x:template>
-<x:template match="@*"><x:attribute name="{local-name()}"></x:attribute></x:template>
-<x:template match="text()"><x:text></x:text></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/extension b/tests/fuzz/seed/xslt/extension
deleted file mode 100644
index 64e850f2..00000000
--- a/tests/fuzz/seed/xslt/extension
+++ /dev/null
@@ -1,7 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" xmlns:e1="e1" xmlns:e2="e2" xmlns:e3="e3" version="1.0" extension-element-prefixes="e1 e2 e3">
-<x:template match="*">
-<e3:e><x:fallback><f3/></x:fallback></e3:e>
-<x:foo><x:fallback><foo/></x:fallback></x:foo>
-<x:apply-templates select="*"/>
-</x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/html b/tests/fuzz/seed/xslt/html
deleted file mode 100644
index c171a2df..00000000
--- a/tests/fuzz/seed/xslt/html
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns:a="a" xmlns:b="b" exclude-result-prefixes="a b">
-<x:output method="html" version="4.0" encoding="iso-8859-1" indent="yes" media-type="t/h"/>
-<x:template match="*"><div><img/><x:apply-templates select="node()"/></div></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/key b/tests/fuzz/seed/xslt/key
deleted file mode 100644
index bda12f75..00000000
--- a/tests/fuzz/seed/xslt/key
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:key name="k" match="*" use="."/>
-<x:template match="a:*"><x:copy-of select="key('k',.)"/></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/lre b/tests/fuzz/seed/xslt/lre
deleted file mode 100644
index 4930ad52..00000000
--- a/tests/fuzz/seed/xslt/lre
+++ /dev/null
@@ -1,3 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:template match="*"><a:e a="{1+1}"><a:f/></a:e></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/mode b/tests/fuzz/seed/xslt/mode
deleted file mode 100644
index 7d587a91..00000000
--- a/tests/fuzz/seed/xslt/mode
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:template match="a:*"><x:apply-templates select="*" mode="m"/></x:template>
-<x:template match="*" mode="m"><r/></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/number b/tests/fuzz/seed/xslt/number
deleted file mode 100644
index ed38d63c..00000000
--- a/tests/fuzz/seed/xslt/number
+++ /dev/null
@@ -1,10 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" version="1.0">
-<x:template match="*">
-<x:number level="any" count="*" from="*" format="1.i.I.A.a"/>
-<x:number level="multiple" count="*" format="A.a.I.i.1"/>
-<x:number level="single" from="*"/>
-<x:number value="123456789" format="1" grouping-separator="ā€™" grouping-size="3"/>
-<x:apply-templates select="*"/>
-</x:template>
-</x:stylesheet>
-
diff --git a/tests/fuzz/seed/xslt/output b/tests/fuzz/seed/xslt/output
deleted file mode 100644
index b1f0176b..00000000
--- a/tests/fuzz/seed/xslt/output
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:a="a" xmlns:b="b" exclude-result-prefixes="a b">
-<x:output method="xml" version="1.0" encoding="iso-8859-1" omit-xml-declaration="yes" standalone="yes" doctype-public="p" doctype-system="s" cdata-section-elements="a" indent="yes" media-type="t/x"/>
-<x:template match="@*|node()"><x:copy><x:apply-templates select="@*|node()"/></x:copy></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/param b/tests/fuzz/seed/xslt/param
deleted file mode 100644
index f35c92a2..00000000
--- a/tests/fuzz/seed/xslt/param
+++ /dev/null
@@ -1,8 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:template match="*">
-<x:call-template name="n"><x:with-param name="p" select="."/></x:call-template>
-</x:template>
-<x:template name="n">
-<x:param name="p"/><x:value-of select="$p"/>
-</x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/sort b/tests/fuzz/seed/xslt/sort
deleted file mode 100644
index 2eebe979..00000000
--- a/tests/fuzz/seed/xslt/sort
+++ /dev/null
@@ -1,6 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:template match="*">
-<x:for-each select="*"><x:sort select="count(.)" data-type="number" order="ascending"/><x:value-of select="local-name()"/></x:for-each>
-<x:copy><x:apply-templates select="*"><x:sort select="." order="descending" lang="en"/></x:apply-templates></x:copy>
-</x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/strip_space b/tests/fuzz/seed/xslt/strip_space
deleted file mode 100644
index 563a327a..00000000
--- a/tests/fuzz/seed/xslt/strip_space
+++ /dev/null
@@ -1,6 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:strip-space elements="a b a:*"/>
-<x:preserve-space elements="a:e"/>
-<x:output indent="yes"/>
-<x:template match="*"><x:copy><x:apply-templates select="node()"/></x:copy></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/text b/tests/fuzz/seed/xslt/text
deleted file mode 100644
index 242c2691..00000000
--- a/tests/fuzz/seed/xslt/text
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:output method="text" encoding="iso-8859-1" media-type="t/p"/>
-<x:template match="*"><x:copy><x:apply-templates select="node()"/></x:copy></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/variable b/tests/fuzz/seed/xslt/variable
deleted file mode 100644
index 5fa2be06..00000000
--- a/tests/fuzz/seed/xslt/variable
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" xmlns:a="a" xmlns:b="b" version="1.0">
-<x:variable name="g" select="/*"/>
-<x:template match="a:*"><x:variable name="v" select="*"/><x:value-of select="$v"/></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/seed/xslt/xhtml b/tests/fuzz/seed/xslt/xhtml
deleted file mode 100644
index 3c521969..00000000
--- a/tests/fuzz/seed/xslt/xhtml
+++ /dev/null
@@ -1,4 +0,0 @@
-<x:stylesheet xmlns:x="http://www.w3.org/1999/XSL/Transform" version="1.0" xmlns="http://www.w3.org/1999/xhtml" xmlns:a="a" xmlns:b="b" exclude-result-prefixes="a b">
-<x:output encoding="iso-8859-1" media-type="t/h" doctype-public="-//W3C//DTD XHTML 1.0 Strict//EN" doctype-system="http://www.w3.org/TR/xhtml1/DTD/xhtml1-strict.dtd"/>
-<x:template match="*"><div><img/><x:apply-templates select="node()"/></div></x:template>
-</x:stylesheet>
diff --git a/tests/fuzz/testTargets.c b/tests/fuzz/testTargets.c
index de17d555..86026e78 100644
--- a/tests/fuzz/testTargets.c
+++ b/tests/fuzz/testTargets.c
@@ -9,24 +9,26 @@
#include "fuzz.h"
#include <libxml/globals.h>
-int
-testXPath(int argc, char **argv) {
+static int
+testXPath(void) {
xmlXPathObjectPtr obj;
- const char expr[] = "count(//node())";
+ const char data[] =
+ "\0\0\0\0count(//node())\\\n"
+ "<d><e><f/></e></d>";
int ret = 0;
- if (xsltFuzzXPathInit(&argc, &argv, argv[1]) != 0) {
+ if (xsltFuzzXPathInit() != 0) {
xsltFuzzXPathCleanup();
return 1;
}
- obj = xsltFuzzXPath(expr, sizeof(expr) - 1);
+ obj = xsltFuzzXPath(data, sizeof(data) - 1);
if ((obj == NULL) || (obj->type != XPATH_NUMBER)) {
fprintf(stderr, "Expression doesn't evaluate to number\n");
ret = 1;
- } else if (obj->floatval != 39.0) {
+ } else if (obj->floatval != 3.0) {
fprintf(stderr, "Expression returned %f, expected %f\n",
- obj->floatval, 39.0);
+ obj->floatval, 3.0);
ret = 1;
}
@@ -36,10 +38,11 @@ testXPath(int argc, char **argv) {
return ret;
}
-int
-testXslt(int argc, char **argv) {
+static int
+testXslt(void) {
xmlChar *result;
- const char styleBuf[] =
+ const char fuzzData[] =
+ "\0\0\0\0stylesheet.xsl\\\n"
"<xsl:stylesheet"
" xmlns:xsl='http://www.w3.org/1999/XSL/Transform'"
" version='1.0'"
@@ -50,21 +53,23 @@ testXslt(int argc, char **argv) {
"<xsl:template match='/'>\n"
" <r><xsl:value-of select='count(//node())'/></r>\n"
"</xsl:template>\n"
- "</xsl:stylesheet>\n";
+ "</xsl:stylesheet>\\\n"
+ "document.xml\\\n"
+ "<d><e><f/></e></d>";
int ret = 0;
- if (xsltFuzzXsltInit(&argc, &argv, argv[1]) != 0) {
+ if (xsltFuzzXsltInit() != 0) {
xsltFuzzXsltCleanup();
return 1;
}
- result = xsltFuzzXslt(styleBuf, sizeof(styleBuf) - 1);
+ result = xsltFuzzXslt(fuzzData, sizeof(fuzzData) - 1);
if (result == NULL) {
fprintf(stderr, "Result is NULL\n");
ret = 1;
- } else if (xmlStrcmp(result, BAD_CAST "<r>42</r>\n") != 0) {
+ } else if (xmlStrcmp(result, BAD_CAST "<r>3</r>\n") != 0) {
fprintf(stderr, "Stylesheet returned\n%sexpected \n%s\n",
- result, "<r>42</r>");
+ result, "<r>3</r>");
ret = 1;
}
@@ -74,12 +79,13 @@ testXslt(int argc, char **argv) {
return ret;
}
-int main(int argc, char **argv) {
+int
+main(void) {
int ret = 0;
- if (testXPath(argc, argv) != 0)
+ if (testXPath() != 0)
ret = 1;
- if (testXslt(argc, argv) != 0)
+ if (testXslt() != 0)
ret = 1;
return ret;
diff --git a/tests/fuzz/xpath.c b/tests/fuzz/xpath.c
index 475cb073..1f801795 100644
--- a/tests/fuzz/xpath.c
+++ b/tests/fuzz/xpath.c
@@ -7,8 +7,9 @@
#include "fuzz.h"
int
-LLVMFuzzerInitialize(int *argc_p, char ***argv_p) {
- return xsltFuzzXPathInit(argc_p, argv_p, NULL);
+LLVMFuzzerInitialize(int *argc_p ATTRIBUTE_UNUSED,
+ char ***argv_p ATTRIBUTE_UNUSED) {
+ return xsltFuzzXPathInit();
}
int
diff --git a/tests/fuzz/xpath.dict b/tests/fuzz/xpath.dict
index 6699fe8d..b20bdf7e 100644
--- a/tests/fuzz/xpath.dict
+++ b/tests/fuzz/xpath.dict
@@ -68,3 +68,18 @@ var_node_set="=$n"
utf8_2="\xC3\x84"
utf8_3="\xE2\x80\x9C"
utf8_4="\xF0\x9F\x98\x80"
+
+# XML
+
+elem_start_end="<a></a>"
+elem_ns_start_end="<a:a></a:a>"
+
+attr=" a='a'"
+
+ns_decl=" xmlns:a='a'"
+ns_default=" xmlns='a'"
+ns_prefix="a:"
+
+cdata_section="<![CDATA[ ]]>"
+comment="<!-- -->"
+pi="<?a?>"
diff --git a/tests/fuzz/xpath.xml b/tests/fuzz/xpath.xml
deleted file mode 100644
index 0ab51932..00000000
--- a/tests/fuzz/xpath.xml
+++ /dev/null
@@ -1,19 +0,0 @@
-<?pi content?>
-<a xmlns:a="a">
- <b xmlns:b="b" a="1" id="b">
- <c b="2">Ƅrger</c>
- <b:d b="3">text</b:d>
- <!-- comment -->
- <a:b b="4">Ɵ&#x1f600;</a:b>
- <b:c a="4"><![CDATA[text]]></b:c>
- </b>
- <?pi content?>
- <a:e xmlns:c="c" a="Ī±Ī²Ī³">
- <c:d b="2"/>
- <a:c>99</a:c>
- <e a="2">content</e>
- </a:e>
- <b/>
- <a:a/>
- <!-- comment -->
-</a>
diff --git a/tests/fuzz/xslt.c b/tests/fuzz/xslt.c
index 42ba7881..878ccd0b 100644
--- a/tests/fuzz/xslt.c
+++ b/tests/fuzz/xslt.c
@@ -8,8 +8,9 @@
#include <libxml/globals.h>
int
-LLVMFuzzerInitialize(int *argc_p, char ***argv_p) {
- return xsltFuzzXsltInit(argc_p, argv_p, NULL);
+LLVMFuzzerInitialize(int *argc_p ATTRIBUTE_UNUSED,
+ char ***argv_p ATTRIBUTE_UNUSED) {
+ return xsltFuzzXsltInit();
}
int
diff --git a/tests/fuzz/xslt.dict b/tests/fuzz/xslt.dict
index c7b53618..001605d8 100644
--- a/tests/fuzz/xslt.dict
+++ b/tests/fuzz/xslt.dict
@@ -81,3 +81,18 @@ expr_var="+$v"
utf8_2="\xC3\x84"
utf8_3="\xE2\x80\x9C"
utf8_4="\xF0\x9F\x98\x80"
+
+# XML
+
+elem_start_end="<a></a>"
+elem_ns_start_end="<a:a></a:a>"
+
+attr=" a='a'"
+
+ns_decl=" xmlns:a='a'"
+ns_default=" xmlns='a'"
+ns_prefix="a:"
+
+cdata_section="<![CDATA[ ]]>"
+comment="<!-- -->"
+pi="<?a?>"
diff --git a/tests/fuzz/xslt.xml b/tests/fuzz/xslt.xml
deleted file mode 100644
index b20eb192..00000000
--- a/tests/fuzz/xslt.xml
+++ /dev/null
@@ -1,21 +0,0 @@
-<?pi content?>
-<a xmlns:a="a">
- <b xmlns:b="b" a="1" id="b">
- <c b="2">Ƅrger</c>
- <b:d b="3">text &amp; &lt;&gt;</b:d>
- <!-- comment -->
- <a:b b="4">
- <a:c>Ɵ&#x1f600;</a:c>
- </a:b>
- <b:c a="4"><![CDATA[text]]></b:c>
- </b>
- <?pi content?>
- <a:e xmlns:c="c" a="Ī±Ī²Ī³">
- <c:d b="2"/>
- <a:c>99</a:c>
- <e a="2">content</e>
- </a:e>
- <b/>
- <a:a/>
- <!-- comment -->
-</a>
diff --git a/tests/general/Makefile.am b/tests/general/Makefile.am
deleted file mode 100644
index b394489d..00000000
--- a/tests/general/Makefile.am
+++ /dev/null
@@ -1,310 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- bug-1-.out bug-1-.xsl \
- bug-2-.out bug-2-.xsl \
- bug-3-.out bug-3-.xsl \
- bug-4-.out bug-4-.xsl \
- bug-5-.out bug-5-.xsl \
- bug-6-.out bug-6-.xsl \
- bug-7-.out bug-7-.xsl \
- bug-8-.out bug-8-.xsl \
- bug-9-.out bug-9-.xsl \
- bug-10-.out bug-10-.xsl \
- bug-11-.out bug-11-.xsl \
- bug-12-.out bug-12-.xsl \
- bug-13-.out bug-13-.xsl \
- bug-14-.out bug-14-.xsl \
- bug-15-.out bug-15-.xsl \
- bug-16-.out bug-16-.xsl \
- bug-17-.out bug-17-.xsl \
- bug-18-.out bug-18-.xsl \
- bug-19-.out bug-19-.xsl \
- bug-20-.out bug-20-.xsl \
- bug-21-.out bug-21-.xsl \
- bug-22-.out bug-22-.xsl \
- bug-23-.out bug-23-.xsl \
- bug-24-.out bug-24-.xsl \
- bug-25-.out bug-25-.xsl \
- bug-26-.out bug-26-.xsl \
- bug-27-.out bug-27-.xsl \
- bug-28-.out bug-28-.xsl \
- bug-29-.out bug-29-.xsl \
- bug-30-.out bug-30-.xsl \
- bug-31-.out bug-31-.xsl \
- bug-32-.out bug-32-.xsl \
- bug-33-.out bug-33-.xsl \
- bug-35-.out bug-35-.xsl \
- bug-36-.out bug-36-.xsl \
- bug-36-inc.out bug-36-inc.xsl \
- bug-37-.out bug-37-.xsl \
- bug-37-inc.out bug-37-inc.xsl \
- array.out array.xsl \
- bug-38-.out bug-38-.xsl \
- bug-39-.out bug-39-.xsl \
- bug-40-.out bug-40-.xsl \
- bug-41-.out bug-41-.xsl \
- bug-42-.out bug-42-.xsl \
- bug-43-.out bug-43-.xsl \
- bug-44-.out bug-44-.xsl \
- bug-45-.out bug-45-.xsl \
- bug-46-.out bug-46-.xsl \
- bug-47-.out bug-47-.xsl \
- bug-48-.out bug-48-.xsl \
- bug-49-.out bug-49-.xsl \
- bug-50-.out bug-50-.xsl \
- bug-52.out bug-52.xsl \
- bug-53.out bug-53.xsl \
- bug-54.out bug-54.xsl \
- bug-55.out bug-55.xsl \
- bug-56.out bug-56.xsl \
- bug-57.out bug-57.xsl \
- bug-59.out bug-59.xsl \
- bug-60.out bug-60.xsl bug-60.err \
- bug-61.out bug-61.xsl \
- bug-62-inc.out bug-62-inc.xsl \
- bug-62.out bug-62.xsl \
- bug-63.out bug-63.xsl \
- bug-64.out bug-64.xsl \
- bug-65.ent bug-65.out bug-65.xsl \
- bug-66.out bug-66.xsl \
- bug-68.out bug-68.xsl \
- bug-69.out bug-69.xsl \
- bug-70.out bug-70.xsl \
- bug-71.out bug-71.xsl \
- bug-72.out bug-72.xsl \
- bug-73.out bug-73.xsl \
- bug-74.out bug-74.xsl \
- bug-75.out bug-75.xsl \
- bug-76.out bug-76.xsl \
- bug-77.out bug-77.xsl \
- bug-78.out bug-78.xsl \
- bug-79.out bug-79.xsl \
- bug-80.out bug-80.xsl \
- bug-81.out bug-81.xsl \
- bug-82.out bug-82.xsl \
- bug-83.out bug-83.xsl \
- bug-84.out bug-84.xsl \
- bug-86.out bug-86.xsl \
- bug-87.out bug-87.xsl \
- bug-88.out bug-88.xsl \
- bug-89.out bug-89.xsl \
- bug-90.out bug-90.xsl \
- bug-91.out bug-91.xsl \
- bug-92.out bug-92.xsl \
- bug-93.out bug-93.xsl \
- bug-93-inc.out bug-93-inc.xsl \
- bug-94.out bug-94.xsl \
- bug-95.out bug-95.xsl \
- bug-96.out bug-96.xsl \
- bug-97.out bug-97.xsl \
- bug-98.out bug-98.xsl \
- bug-99.out bug-99.xsl \
- bug-100.out bug-100.xsl \
- bug-101.out bug-101.xsl \
- bug-102.out bug-102.xsl \
- bug-102-inc.out bug-102-inc.xsl \
- bug-103.out bug-103.xsl \
- bug-104.out bug-104.xsl \
- bug-105.out bug-105.xsl \
- bug-106.out bug-106.xsl \
- bug-107.out bug-107.xsl \
- bug-108.out bug-108.xsl \
- bug-109.out bug-109.xsl \
- bug-110.out bug-110.xsl bug-110.err \
- bug-111.out bug-111.xsl \
- bug-112.out bug-112.xsl \
- bug-113.out bug-113.xsl \
- bug-114.out bug-114.xsl \
- bug-115.out bug-115.xsl \
- bug-116.out bug-116.xsl \
- bug-117.out bug-117.xsl \
- bug-118.out bug-118.xsl \
- bug-119.out bug-119.xsl \
- bug-120.out bug-120.xsl \
- bug-121.out bug-121.xsl \
- bug-122.out bug-122.xsl \
- bug-123.out bug-123.xsl \
- bug-124.out bug-124.xsl \
- bug-125.out bug-125.xsl \
- bug-126.out bug-126.xsl \
- bug-127.out bug-127.xsl \
- bug-128.out bug-128.xsl \
- bug-129.out bug-129.xsl \
- bug-130.out bug-130.xsl \
- bug-130-imp1.imp bug-130-imp2.imp bug-130-imp3.imp bug-130-imp4.imp \
- bug-131.out bug-131.xsl bug-131-imp.imp \
- bug-132.out bug-132.xsl \
- bug-133.out bug-133.xsl \
- bug-134.out bug-134.xsl \
- bug-135.out bug-135.xsl \
- bug-136.out bug-136.xsl \
- bug-137.imp bug-137.out bug-137.xsl \
- bug-138.out bug-138.xsl \
- bug-139.out bug-139.xsl \
- bug-140.out bug-140.xsl \
- bug-141.out bug-141.xsl \
- bug-142.out bug-142.xsl \
- bug-143.out bug-143.xsl \
- bug-144.out bug-144.xsl \
- bug-145.out bug-145.xsl bug-145.err \
- bug-146.out bug-146.xsl \
- bug-147.out bug-147.xsl \
- bug-147-1.imp bug-147-2.imp bug-147-3.imp \
- bug-147-4.imp bug-147-5.imp bug-147-6.imp \
- bug-148.out bug-148.xsl \
- bug-149.out bug-149.xsl \
- bug-150.out bug-150.xsl \
- bug-151.out bug-151.xsl \
- bug-152.out bug-152.xsl \
- bug-153.out bug-153.xsl \
- bug-154.out bug-154.xsl \
- bug-155.out bug-155.xsl \
- bug-156.err bug-156.out bug-156.xsl \
- bug-156.imp1.imp bug-156.imp2.imp \
- bug-157.err bug-157.out bug-157.xsl \
- bug-158.out bug-158.xsl \
- bug-159.out bug-159.xsl \
- bug-160.out bug-160.xsl \
- bug-161.out bug-161.xsl \
- bug-163.out bug-163.xsl \
- bug-164.out bug-164.xsl \
- bug-165.out bug-165.xsl bug-165.err \
- bug-166.out bug-166.xsl \
- bug-167.out bug-167.xsl \
- bug-168.out bug-168.xsl \
- bug-169.out bug-169.xsl bug-169.imp \
- bug-170.out bug-170.xsl \
- bug-171.out bug-171.xsl \
- bug-172.out bug-172.xsl \
- bug-173.out bug-173.xsl \
- bug-174.out bug-174.xsl bug-174.err \
- bug-175.out bug-175.xsl bug-175.err \
- bug-176.out bug-176.xsl \
- bug-177.out bug-177.xsl \
- bug-178.out bug-178.xsl \
- bug-179.out bug-179.xsl \
- bug-180.out bug-180.xsl bug-180.err \
- bug-181.out bug-181.xsl \
- bug-182.out bug-182.xsl \
- bug-183.out bug-183.xsl \
- bug-184.out bug-184.xsl bug-184.err \
- bug-186.out bug-186.xsl \
- bug-187.out bug-187.xsl bug-187.err \
- bug-188.out bug-188.xsl bug-188-imp.out bug-188-imp.xsl \
- bug-189.out bug-189.xsl \
- bug-190.out bug-190.xsl bug-190-imp.out bug-190-imp.xsl \
- bug-191.out bug-191.xsl bug-191.err bug-191-imp.out bug-191-imp.xsl \
- bug-192.out bug-192.xsl \
- bug-193.out bug-193.xsl \
- bug-194.out bug-194.xsl bug-194.err \
- bug-195.out bug-195.xsl \
- bug-196.out bug-196.xsl \
- bug-197.out bug-197.xsl \
- bug-198.out bug-198.xsl \
- bug-199.out bug-199.xsl \
- bug-200.out bug-200.xsl \
- bug-201.out bug-201.xsl bug-201.err \
- bug-202.out bug-202.xsl bug-202.err \
- bug-203.out bug-203.xsl bug-203.err \
- bug-204.out bug-204.xsl bug-204.err \
- bug-205.out bug-205.xsl \
- bug-206.out bug-206.xsl \
- bug-207.out bug-207.xsl \
- bug-208.out bug-208.xsl bug-208.err \
- bug-209.out bug-209.xsl \
- bug-210.out bug-210.xsl \
- bug-211.out bug-211.xsl \
- bug-212.out bug-212.xsl \
- bug-213.out bug-213.xsl \
- bug-214.out bug-214.xsl \
- bug-215.out bug-215.xsl bug-215.err \
- bug-216.out bug-216.xsl \
- bug-217.out bug-217.xsl \
- bug-218.out bug-218.xsl \
- bug-219.out bug-219.xsl \
- bug-220.out bug-220.xsl \
- bug-221.out bug-221.xsl \
- bug-222.out bug-222.xsl \
- character.out character.xsl \
- character2.out character2.xsl \
- itemschoose.out itemschoose.xsl \
- inner.xsl \
- date_add.out date_add.xsl
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running general tests'
- @(echo > .memdump)
- -@(for i in $(srcdir)/../docs/*.xml ; do \
- if [ -d $$i ] ; then continue ; fi ; \
- doc=`basename $$i .xml` ; \
- for j in $(srcdir)/$$doc*.xsl ; do \
- if [ ! -f $$j ] ; then continue ; fi ; \
- if [ -d $$j ] ; then continue ; fi ; \
- name=`basename $$j .xsl`; \
- out=$(srcdir)/"$$name".out; \
- err=$(srcdir)/"$$name".err; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --maxdepth 200 $$j $$i \
- > result.$$name 2>err.$$name; \
- if [ ! -f $$out ] ; then \
- cp result.$$name $$out ; \
- if [ -s err.$$name ] ; then \
- cp err.$$name $$err ; \
- fi ; \
- else \
- diff $$out result.$$name; \
- if [ -s $$err ] ; then \
- diff $$err err.$$name; \
- else \
- diff /dev/null err.$$name; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f result.$$name err.$$name; \
- done ; done)
- @echo '## Running general tests without dictionaries'
- -@(for i in $(srcdir)/../docs/*.xml ; do \
- if [ -d $$i ] ; then continue ; fi ; \
- doc=`basename $$i .xml` ; \
- for j in $(srcdir)/$$doc*.xsl ; do \
- if [ ! -f $$j ] ; then continue ; fi ; \
- if [ -d $$j ] ; then continue ; fi ; \
- name=`basename $$j .xsl`; \
- out=$(srcdir)/"$$name".out; \
- err=$(srcdir)/"$$name".err; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc --nodict --maxdepth 200 $$j $$i \
- > result.$$name 2>err.$$name; \
- if [ ! -f $$out ] ; then \
- cp result.$$name $$out ; \
- if [ -s err.$$name ] ; then \
- cp err.$$name $$err ; \
- fi ; \
- else \
- diff $$out result.$$name; \
- if [ -s $$err ] ; then \
- diff $$err err.$$name; \
- else \
- diff /dev/null err.$$name; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f result.$$name err.$$name; \
- done ; done)
-
diff --git a/tests/docs/array.xml b/tests/general/array.xml
index f850b64e..f850b64e 100644
--- a/tests/docs/array.xml
+++ b/tests/general/array.xml
diff --git a/tests/docs/bug-1-.xml b/tests/general/bug-1-.xml
index cc677f79..cc677f79 100644
--- a/tests/docs/bug-1-.xml
+++ b/tests/general/bug-1-.xml
diff --git a/tests/docs/bug-10-.xml b/tests/general/bug-10-.xml
index f3810665..f3810665 100644
--- a/tests/docs/bug-10-.xml
+++ b/tests/general/bug-10-.xml
diff --git a/tests/docs/bug-101.xml b/tests/general/bug-100.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-101.xml
+++ b/tests/general/bug-100.xml
diff --git a/tests/docs/bug-102.xml b/tests/general/bug-101.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-102.xml
+++ b/tests/general/bug-101.xml
diff --git a/tests/general/bug-102-inc.out b/tests/general/bug-102-inc.out
deleted file mode 100644
index 4052716b..00000000
--- a/tests/general/bug-102-inc.out
+++ /dev/null
@@ -1,3 +0,0 @@
-<font text-align="start" size="+1">
- foo
- </font>
diff --git a/tests/docs/bug-105.xml b/tests/general/bug-102.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-105.xml
+++ b/tests/general/bug-102.xml
diff --git a/tests/docs/bug-103.xml b/tests/general/bug-103.xml
index f1999f80..f1999f80 100644
--- a/tests/docs/bug-103.xml
+++ b/tests/general/bug-103.xml
diff --git a/tests/docs/bug-104.xml b/tests/general/bug-104.xml
index 59f90f79..59f90f79 100644
--- a/tests/docs/bug-104.xml
+++ b/tests/general/bug-104.xml
diff --git a/tests/docs/bug-112.xml b/tests/general/bug-105.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-112.xml
+++ b/tests/general/bug-105.xml
diff --git a/tests/docs/bug-106.xml b/tests/general/bug-106.xml
index 98e62997..98e62997 100644
--- a/tests/docs/bug-106.xml
+++ b/tests/general/bug-106.xml
diff --git a/tests/docs/bug-107.xml b/tests/general/bug-107.xml
index 2ecf374c..2ecf374c 100644
--- a/tests/docs/bug-107.xml
+++ b/tests/general/bug-107.xml
diff --git a/tests/docs/bug-108.xml b/tests/general/bug-108.xml
index 9ec6ac20..9ec6ac20 100644
--- a/tests/docs/bug-108.xml
+++ b/tests/general/bug-108.xml
diff --git a/tests/docs/bug-109.xml b/tests/general/bug-109.xml
index 920dd995..920dd995 100644
--- a/tests/docs/bug-109.xml
+++ b/tests/general/bug-109.xml
diff --git a/tests/docs/bug-11-.xml b/tests/general/bug-11-.xml
index 64fe27f1..64fe27f1 100644
--- a/tests/docs/bug-11-.xml
+++ b/tests/general/bug-11-.xml
diff --git a/tests/docs/bug-110.ent b/tests/general/bug-110.ent
index eaa70cf9..eaa70cf9 100644
--- a/tests/docs/bug-110.ent
+++ b/tests/general/bug-110.ent
diff --git a/tests/general/bug-110.err b/tests/general/bug-110.err
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-110.err
+++ /dev/null
diff --git a/tests/docs/bug-110.xml b/tests/general/bug-110.xml
index 6a201193..6a201193 100644
--- a/tests/docs/bug-110.xml
+++ b/tests/general/bug-110.xml
diff --git a/tests/docs/bug-111.xml b/tests/general/bug-111.xml
index b10f5152..b10f5152 100644
--- a/tests/docs/bug-111.xml
+++ b/tests/general/bug-111.xml
diff --git a/tests/docs/bug-115.xml b/tests/general/bug-112.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-115.xml
+++ b/tests/general/bug-112.xml
diff --git a/tests/docs/bug-113.xml b/tests/general/bug-113.xml
index e0612240..e0612240 100644
--- a/tests/docs/bug-113.xml
+++ b/tests/general/bug-113.xml
diff --git a/tests/docs/bug-114.xml b/tests/general/bug-114.xml
index 7ee54b4b..7ee54b4b 100644
--- a/tests/docs/bug-114.xml
+++ b/tests/general/bug-114.xml
diff --git a/tests/docs/bug-116.xml b/tests/general/bug-115.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-116.xml
+++ b/tests/general/bug-115.xml
diff --git a/tests/docs/bug-121.xml b/tests/general/bug-116.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-121.xml
+++ b/tests/general/bug-116.xml
diff --git a/tests/docs/bug-117.xml b/tests/general/bug-117.xml
index 4369f107..4369f107 100644
--- a/tests/docs/bug-117.xml
+++ b/tests/general/bug-117.xml
diff --git a/tests/docs/bug-118.xml b/tests/general/bug-118.xml
index 7b8a7dd1..7b8a7dd1 100644
--- a/tests/docs/bug-118.xml
+++ b/tests/general/bug-118.xml
diff --git a/tests/docs/bug-119.xml b/tests/general/bug-119.xml
index 72cc3ecf..72cc3ecf 100644
--- a/tests/docs/bug-119.xml
+++ b/tests/general/bug-119.xml
diff --git a/tests/docs/bug-12-.xml b/tests/general/bug-12-.xml
index af18b360..af18b360 100644
--- a/tests/docs/bug-12-.xml
+++ b/tests/general/bug-12-.xml
diff --git a/tests/docs/bug-120.xml b/tests/general/bug-120.xml
index e2c80aeb..e2c80aeb 100644
--- a/tests/docs/bug-120.xml
+++ b/tests/general/bug-120.xml
diff --git a/tests/docs/bug-126.xml b/tests/general/bug-121.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-126.xml
+++ b/tests/general/bug-121.xml
diff --git a/tests/docs/bug-122.xml b/tests/general/bug-122.xml
index b2c1b4ec..b2c1b4ec 100644
--- a/tests/docs/bug-122.xml
+++ b/tests/general/bug-122.xml
diff --git a/tests/docs/bug-123.xml b/tests/general/bug-123.xml
index effc8a0c..effc8a0c 100644
--- a/tests/docs/bug-123.xml
+++ b/tests/general/bug-123.xml
diff --git a/tests/docs/bug-124.xml b/tests/general/bug-124.xml
index 15ec5b0a..15ec5b0a 100644
--- a/tests/docs/bug-124.xml
+++ b/tests/general/bug-124.xml
diff --git a/tests/docs/bug-125.xml b/tests/general/bug-125.xml
index 90b36d68..90b36d68 100644
--- a/tests/docs/bug-125.xml
+++ b/tests/general/bug-125.xml
diff --git a/tests/docs/bug-127.xml b/tests/general/bug-126.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-127.xml
+++ b/tests/general/bug-126.xml
diff --git a/tests/docs/bug-143.xml b/tests/general/bug-127.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-143.xml
+++ b/tests/general/bug-127.xml
diff --git a/tests/docs/bug-128.xml b/tests/general/bug-128.xml
index 0a3027d2..0a3027d2 100644
--- a/tests/docs/bug-128.xml
+++ b/tests/general/bug-128.xml
diff --git a/tests/docs/bug-129.xml b/tests/general/bug-129.xml
index 2ec6d994..2ec6d994 100644
--- a/tests/docs/bug-129.xml
+++ b/tests/general/bug-129.xml
diff --git a/tests/docs/bug-13-.xml b/tests/general/bug-13-.xml
index a01ae291..a01ae291 100644
--- a/tests/docs/bug-13-.xml
+++ b/tests/general/bug-13-.xml
diff --git a/tests/docs/bug-130.doc b/tests/general/bug-130.doc
index ce28433e..ce28433e 100644
--- a/tests/docs/bug-130.doc
+++ b/tests/general/bug-130.doc
diff --git a/tests/docs/bug-130.xml b/tests/general/bug-130.xml
index c375b9ac..c375b9ac 100644
--- a/tests/docs/bug-130.xml
+++ b/tests/general/bug-130.xml
diff --git a/tests/general/bug-130.xsl b/tests/general/bug-130.xsl
index 1ac6e9fc..27377d22 100644
--- a/tests/general/bug-130.xsl
+++ b/tests/general/bug-130.xsl
@@ -10,7 +10,7 @@
<xsl:output method="html" indent="no"/>
-<xsl:variable name="g.doc.root" select="document('../docs/bug-130.doc')"/>
+<xsl:variable name="g.doc.root" select="document('bug-130.doc')"/>
<xsl:template match="/">
<html>
diff --git a/tests/docs/bug-131.xml b/tests/general/bug-131.xml
index cc77fb4d..cc77fb4d 100644
--- a/tests/docs/bug-131.xml
+++ b/tests/general/bug-131.xml
diff --git a/tests/docs/bug-132.xml b/tests/general/bug-132.xml
index b4db7917..b4db7917 100644
--- a/tests/docs/bug-132.xml
+++ b/tests/general/bug-132.xml
diff --git a/tests/docs/bug-133.xml b/tests/general/bug-133.xml
index 07164941..07164941 100644
--- a/tests/docs/bug-133.xml
+++ b/tests/general/bug-133.xml
diff --git a/tests/docs/bug-134.xml b/tests/general/bug-134.xml
index 9d5f51f9..9d5f51f9 100644
--- a/tests/docs/bug-134.xml
+++ b/tests/general/bug-134.xml
diff --git a/tests/docs/bug-135.xml b/tests/general/bug-135.xml
index 9d5f51f9..9d5f51f9 100644
--- a/tests/docs/bug-135.xml
+++ b/tests/general/bug-135.xml
diff --git a/tests/docs/bug-136.xml b/tests/general/bug-136.xml
index af34d2b0..af34d2b0 100644
--- a/tests/docs/bug-136.xml
+++ b/tests/general/bug-136.xml
diff --git a/tests/docs/bug-137.xml b/tests/general/bug-137.xml
index 69f40625..69f40625 100644
--- a/tests/docs/bug-137.xml
+++ b/tests/general/bug-137.xml
diff --git a/tests/docs/bug-138.xml b/tests/general/bug-138.xml
index 6ff36cf6..6ff36cf6 100644
--- a/tests/docs/bug-138.xml
+++ b/tests/general/bug-138.xml
diff --git a/tests/docs/bug-139.xml b/tests/general/bug-139.xml
index 9340011c..9340011c 100644
--- a/tests/docs/bug-139.xml
+++ b/tests/general/bug-139.xml
diff --git a/tests/docs/bug-14-.xml b/tests/general/bug-14-.xml
index 1be92ec7..1be92ec7 100644
--- a/tests/docs/bug-14-.xml
+++ b/tests/general/bug-14-.xml
diff --git a/tests/docs/bug-140.xml b/tests/general/bug-140.xml
index 54a1d225..54a1d225 100644
--- a/tests/docs/bug-140.xml
+++ b/tests/general/bug-140.xml
diff --git a/tests/docs/bug-141.xml b/tests/general/bug-141.xml
index 115b7c3f..115b7c3f 100644
--- a/tests/docs/bug-141.xml
+++ b/tests/general/bug-141.xml
diff --git a/tests/docs/bug-142.xml b/tests/general/bug-142.xml
index 295bb03a..295bb03a 100755
--- a/tests/docs/bug-142.xml
+++ b/tests/general/bug-142.xml
diff --git a/tests/docs/bug-144.xml b/tests/general/bug-143.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-144.xml
+++ b/tests/general/bug-143.xml
diff --git a/tests/docs/bug-148.xml b/tests/general/bug-144.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-148.xml
+++ b/tests/general/bug-144.xml
diff --git a/tests/general/bug-145.err b/tests/general/bug-145.err
index 5daeab4c..79d6a505 100644
--- a/tests/general/bug-145.err
+++ b/tests/general/bug-145.err
@@ -2,4 +2,4 @@ compilation error: file ./bug-145.xsl line 4 element transform
xsl:version is missing: document may not be a stylesheet
runtime error: file ./bug-145.xsl line 6 element call-template
The called template '{a}a' was not found.
-no result for ./../docs/bug-145.xml
+no result for ./bug-145.xml
diff --git a/tests/general/bug-145.out b/tests/general/bug-145.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-145.out
+++ /dev/null
diff --git a/tests/docs/bug-145.xml b/tests/general/bug-145.xml
index 14061a1d..14061a1d 100644
--- a/tests/docs/bug-145.xml
+++ b/tests/general/bug-145.xml
diff --git a/tests/docs/bug-147.xml b/tests/general/bug-147.xml
index d3a17685..d3a17685 100644
--- a/tests/docs/bug-147.xml
+++ b/tests/general/bug-147.xml
diff --git a/tests/docs/bug-149.xml b/tests/general/bug-148.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-149.xml
+++ b/tests/general/bug-148.xml
diff --git a/tests/docs/bug-150.xml b/tests/general/bug-149.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-150.xml
+++ b/tests/general/bug-149.xml
diff --git a/tests/docs/bug-15-.xml b/tests/general/bug-15-.xml
index 1ab284b0..1ab284b0 100644
--- a/tests/docs/bug-15-.xml
+++ b/tests/general/bug-15-.xml
diff --git a/tests/docs/bug-151.xml b/tests/general/bug-150.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-151.xml
+++ b/tests/general/bug-150.xml
diff --git a/tests/general/bug-151.out b/tests/general/bug-151.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-151.out
+++ /dev/null
diff --git a/tests/docs/bug-152.xml b/tests/general/bug-151.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-152.xml
+++ b/tests/general/bug-151.xml
diff --git a/tests/docs/bug-154.xml b/tests/general/bug-152.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-154.xml
+++ b/tests/general/bug-152.xml
diff --git a/tests/docs/bug-153.doc b/tests/general/bug-153.doc
index ea2a7a06..ea2a7a06 100644
--- a/tests/docs/bug-153.doc
+++ b/tests/general/bug-153.doc
diff --git a/tests/docs/bug-153.xml b/tests/general/bug-153.xml
index 35e58523..35e58523 100644
--- a/tests/docs/bug-153.xml
+++ b/tests/general/bug-153.xml
diff --git a/tests/general/bug-153.xsl b/tests/general/bug-153.xsl
index 68b05324..3de7f7c3 100644
--- a/tests/general/bug-153.xsl
+++ b/tests/general/bug-153.xsl
@@ -10,7 +10,7 @@
<xsl:template match="c">
<p>
- <xsl:value-of select="document('../docs/bug-153.doc')/ch/v[@name=current()/v]"/>
+ <xsl:value-of select="document('bug-153.doc')/ch/v[@name=current()/v]"/>
</p>
</xsl:template>
diff --git a/tests/general/bug-154.out b/tests/general/bug-154.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-154.out
+++ /dev/null
diff --git a/tests/docs/bug-156.xml b/tests/general/bug-154.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-156.xml
+++ b/tests/general/bug-154.xml
diff --git a/tests/docs/bug-155.xml b/tests/general/bug-155.xml
index a583694e..a583694e 100644
--- a/tests/docs/bug-155.xml
+++ b/tests/general/bug-155.xml
diff --git a/tests/general/bug-156.out b/tests/general/bug-156.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-156.out
+++ /dev/null
diff --git a/tests/docs/bug-159.xml b/tests/general/bug-156.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-159.xml
+++ b/tests/general/bug-156.xml
diff --git a/tests/docs/bug-157.xml b/tests/general/bug-157.xml
index 14cac783..14cac783 100644
--- a/tests/docs/bug-157.xml
+++ b/tests/general/bug-157.xml
diff --git a/tests/docs/bug-158.doc b/tests/general/bug-158.doc
index 80b3f018..80b3f018 100644
--- a/tests/docs/bug-158.doc
+++ b/tests/general/bug-158.doc
diff --git a/tests/docs/bug-158.xml b/tests/general/bug-158.xml
index 19837413..19837413 100644
--- a/tests/docs/bug-158.xml
+++ b/tests/general/bug-158.xml
diff --git a/tests/general/bug-158.xsl b/tests/general/bug-158.xsl
index 3b955dca..230aca23 100644
--- a/tests/general/bug-158.xsl
+++ b/tests/general/bug-158.xsl
@@ -7,7 +7,7 @@
xmlns="http://www.w3.org/1999/xhtml">
<xsl:variable name="myPath" select="/dsl:page/@path" />
-<xsl:variable name="layout" select="document('../docs/bug-158.doc')"/>
+<xsl:variable name="layout" select="document('bug-158.doc')"/>
<xsl:variable name="root"><xsl:value-of select="$layout//layout:page[@path=$myPath]" />
</xsl:variable>
diff --git a/tests/docs/bug-167.xml b/tests/general/bug-159.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-167.xml
+++ b/tests/general/bug-159.xml
diff --git a/tests/docs/bug-16-.xml b/tests/general/bug-16-.xml
index 92e4247f..92e4247f 100644
--- a/tests/docs/bug-16-.xml
+++ b/tests/general/bug-16-.xml
diff --git a/tests/docs/bug-160.xml b/tests/general/bug-160.xml
index 3abe6b5a..3abe6b5a 100644
--- a/tests/docs/bug-160.xml
+++ b/tests/general/bug-160.xml
diff --git a/tests/docs/bug-161.xml b/tests/general/bug-161.xml
index b1548f38..b1548f38 100644
--- a/tests/docs/bug-161.xml
+++ b/tests/general/bug-161.xml
diff --git a/tests/docs/bug-163.xml b/tests/general/bug-163.xml
index 5209f085..5209f085 100644
--- a/tests/docs/bug-163.xml
+++ b/tests/general/bug-163.xml
diff --git a/tests/docs/bug-164.xml b/tests/general/bug-164.xml
index 920546dc..920546dc 100644
--- a/tests/docs/bug-164.xml
+++ b/tests/general/bug-164.xml
diff --git a/tests/general/bug-165.err b/tests/general/bug-165.err
index dab9d7ef..df0e7949 100644
--- a/tests/general/bug-165.err
+++ b/tests/general/bug-165.err
@@ -3,4 +3,4 @@ Variable 'pStyle' has not been declared.
XPath error : Undefined variable
runtime error: file ./bug-165.xsl line 6 element value-of
XPath evaluation returned no result.
-no result for ./../docs/bug-165.xml
+no result for ./bug-165.xml
diff --git a/tests/general/bug-165.out b/tests/general/bug-165.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-165.out
+++ /dev/null
diff --git a/tests/docs/bug-165.xml b/tests/general/bug-165.xml
index 7c2846b2..7c2846b2 100644
--- a/tests/docs/bug-165.xml
+++ b/tests/general/bug-165.xml
diff --git a/tests/docs/bug-166.xml b/tests/general/bug-166.xml
index e4e363c2..e4e363c2 100644
--- a/tests/docs/bug-166.xml
+++ b/tests/general/bug-166.xml
diff --git a/tests/docs/bug-169.xml b/tests/general/bug-167.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-169.xml
+++ b/tests/general/bug-167.xml
diff --git a/tests/docs/bug-168.xml b/tests/general/bug-168.xml
index cd13d419..cd13d419 100644
--- a/tests/docs/bug-168.xml
+++ b/tests/general/bug-168.xml
diff --git a/tests/docs/bug-17-.xml b/tests/general/bug-169.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-17-.xml
+++ b/tests/general/bug-169.xml
diff --git a/tests/docs/bug-174.xml b/tests/general/bug-17-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-174.xml
+++ b/tests/general/bug-17-.xml
diff --git a/tests/docs/bug-170.xml b/tests/general/bug-170.xml
index 08c3c4dc..08c3c4dc 100644
--- a/tests/docs/bug-170.xml
+++ b/tests/general/bug-170.xml
diff --git a/tests/docs/bug-171.xml b/tests/general/bug-171.xml
index 658021be..658021be 100644
--- a/tests/docs/bug-171.xml
+++ b/tests/general/bug-171.xml
diff --git a/tests/docs/bug-172.xml b/tests/general/bug-172.xml
index 406f40d1..406f40d1 100644
--- a/tests/docs/bug-172.xml
+++ b/tests/general/bug-172.xml
diff --git a/tests/docs/bug-173.xml b/tests/general/bug-173.xml
index f3f286ea..f3f286ea 100644
--- a/tests/docs/bug-173.xml
+++ b/tests/general/bug-173.xml
diff --git a/tests/general/bug-174.out b/tests/general/bug-174.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-174.out
+++ /dev/null
diff --git a/tests/docs/bug-175.xml b/tests/general/bug-174.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-175.xml
+++ b/tests/general/bug-174.xml
diff --git a/tests/docs/bug-176.xml b/tests/general/bug-175.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-176.xml
+++ b/tests/general/bug-175.xml
diff --git a/tests/docs/bug-177.xml b/tests/general/bug-176.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-177.xml
+++ b/tests/general/bug-176.xml
diff --git a/tests/docs/bug-178.xml b/tests/general/bug-177.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-178.xml
+++ b/tests/general/bug-177.xml
diff --git a/tests/docs/bug-179.xml b/tests/general/bug-178.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-179.xml
+++ b/tests/general/bug-178.xml
diff --git a/tests/docs/bug-184.xml b/tests/general/bug-179.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-184.xml
+++ b/tests/general/bug-179.xml
diff --git a/tests/docs/bug-18-.xml b/tests/general/bug-18-.xml
index f706ec40..f706ec40 100644
--- a/tests/docs/bug-18-.xml
+++ b/tests/general/bug-18-.xml
diff --git a/tests/general/bug-180.err b/tests/general/bug-180.err
index 7b15044d..76e3ae1d 100644
--- a/tests/general/bug-180.err
+++ b/tests/general/bug-180.err
@@ -1,4 +1,4 @@
runtime error: file ./bug-180.xsl line 4 element copy-of
Variable 'xxx' has not been declared.
XPath error : Undefined variable
-no result for ./../docs/bug-180.xml
+no result for ./bug-180.xml
diff --git a/tests/general/bug-180.out b/tests/general/bug-180.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-180.out
+++ /dev/null
diff --git a/tests/docs/bug-180.xml b/tests/general/bug-180.xml
index 2ca0eba5..2ca0eba5 100644
--- a/tests/docs/bug-180.xml
+++ b/tests/general/bug-180.xml
diff --git a/tests/docs/bug-181.xml b/tests/general/bug-181.xml
index 285b69a1..285b69a1 100644
--- a/tests/docs/bug-181.xml
+++ b/tests/general/bug-181.xml
diff --git a/tests/docs/bug-182.xml b/tests/general/bug-182.xml
index 02b378db..02b378db 100644
--- a/tests/docs/bug-182.xml
+++ b/tests/general/bug-182.xml
diff --git a/tests/docs/bug-183.xml b/tests/general/bug-183.xml
index bcd45a88..bcd45a88 100644
--- a/tests/docs/bug-183.xml
+++ b/tests/general/bug-183.xml
diff --git a/tests/general/bug-184.err b/tests/general/bug-184.err
index eaeb65bd..ddcef71d 100644
--- a/tests/general/bug-184.err
+++ b/tests/general/bug-184.err
@@ -3,4 +3,4 @@ Variable 'nonexistent' has not been declared.
XPath error : Undefined variable
runtime error: file ./bug-184.xsl line 5 element value-of
XPath evaluation returned no result.
-no result for ./../docs/bug-184.xml
+no result for ./bug-184.xml
diff --git a/tests/general/bug-184.out b/tests/general/bug-184.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-184.out
+++ /dev/null
diff --git a/tests/docs/bug-187.xml b/tests/general/bug-184.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-187.xml
+++ b/tests/general/bug-184.xml
diff --git a/tests/docs/bug-186.xml b/tests/general/bug-186.xml
index 424db6bd..424db6bd 100644
--- a/tests/docs/bug-186.xml
+++ b/tests/general/bug-186.xml
diff --git a/tests/docs/bug-188.xml b/tests/general/bug-187.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-188.xml
+++ b/tests/general/bug-187.xml
diff --git a/tests/general/bug-188-imp.out b/tests/general/bug-188-imp.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-188-imp.out
+++ /dev/null
diff --git a/tests/docs/bug-189.xml b/tests/general/bug-188.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-189.xml
+++ b/tests/general/bug-188.xml
diff --git a/tests/docs/bug-190.xml b/tests/general/bug-189.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-190.xml
+++ b/tests/general/bug-189.xml
diff --git a/tests/docs/bug-19-.xml b/tests/general/bug-19-.xml
index f706ec40..f706ec40 100644
--- a/tests/docs/bug-19-.xml
+++ b/tests/general/bug-19-.xml
diff --git a/tests/general/bug-190-imp.out b/tests/general/bug-190-imp.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-190-imp.out
+++ /dev/null
diff --git a/tests/docs/bug-191.xml b/tests/general/bug-190.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-191.xml
+++ b/tests/general/bug-190.xml
diff --git a/tests/general/bug-191-imp.out b/tests/general/bug-191-imp.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-191-imp.out
+++ /dev/null
diff --git a/tests/general/bug-191.out b/tests/general/bug-191.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-191.out
+++ /dev/null
diff --git a/tests/docs/bug-192.xml b/tests/general/bug-191.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-192.xml
+++ b/tests/general/bug-191.xml
diff --git a/tests/docs/bug-194.xml b/tests/general/bug-192.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-194.xml
+++ b/tests/general/bug-192.xml
diff --git a/tests/docs/bug-193.xml b/tests/general/bug-193.xml
index 91dccb3f..91dccb3f 100644
--- a/tests/docs/bug-193.xml
+++ b/tests/general/bug-193.xml
diff --git a/tests/general/bug-194.err b/tests/general/bug-194.err
index 2d5a6bef..79b9b009 100644
--- a/tests/general/bug-194.err
+++ b/tests/general/bug-194.err
@@ -6,4 +6,4 @@ Failed to evaluate the expression of variable 'p'.
XPath error : Undefined variable
runtime error: file ./bug-194.xsl line 5 element param
Failed to evaluate the expression of variable 'p2'.
-no result for ./../docs/bug-194.xml
+no result for ./bug-194.xml
diff --git a/tests/general/bug-194.out b/tests/general/bug-194.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-194.out
+++ /dev/null
diff --git a/tests/docs/bug-200.xml b/tests/general/bug-194.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-200.xml
+++ b/tests/general/bug-194.xml
diff --git a/tests/docs/bug-195.xml b/tests/general/bug-195.xml
index 4b5f3b0a..4b5f3b0a 100644
--- a/tests/docs/bug-195.xml
+++ b/tests/general/bug-195.xml
diff --git a/tests/docs/bug-196.xml b/tests/general/bug-196.xml
index d82bb846..d82bb846 100644
--- a/tests/docs/bug-196.xml
+++ b/tests/general/bug-196.xml
diff --git a/tests/docs/bug-197.xml b/tests/general/bug-197.xml
index ae793921..ae793921 100644
--- a/tests/docs/bug-197.xml
+++ b/tests/general/bug-197.xml
diff --git a/tests/docs/bug-198.xml b/tests/general/bug-198.xml
index ad6e2cae..ad6e2cae 100644
--- a/tests/docs/bug-198.xml
+++ b/tests/general/bug-198.xml
diff --git a/tests/docs/bug-199.xml b/tests/general/bug-199.xml
index 47a355a0..47a355a0 100644
--- a/tests/docs/bug-199.xml
+++ b/tests/general/bug-199.xml
diff --git a/tests/docs/bug-2-.xml b/tests/general/bug-2-.xml
index 94879b01..94879b01 100644
--- a/tests/docs/bug-2-.xml
+++ b/tests/general/bug-2-.xml
diff --git a/tests/docs/bug-20-.xml b/tests/general/bug-20-.xml
index f1302fd7..f1302fd7 100644
--- a/tests/docs/bug-20-.xml
+++ b/tests/general/bug-20-.xml
diff --git a/tests/docs/bug-201.xml b/tests/general/bug-200.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-201.xml
+++ b/tests/general/bug-200.xml
diff --git a/tests/general/bug-201.err b/tests/general/bug-201.err
index a115d4d2..624c4c55 100644
--- a/tests/general/bug-201.err
+++ b/tests/general/bug-201.err
@@ -3,4 +3,4 @@ exsltFuncFunctionFunction: Potentially infinite recursion detected in function {
XPath error : Stack usage error
runtime error: file ./bug-201.xsl line 8 element param
Failed to evaluate the expression of variable 'var'.
-no result for ./../docs/bug-201.xml
+no result for ./bug-201.xml
diff --git a/tests/general/bug-201.out b/tests/general/bug-201.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-201.out
+++ /dev/null
diff --git a/tests/docs/bug-202.xml b/tests/general/bug-201.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-202.xml
+++ b/tests/general/bug-201.xml
diff --git a/tests/general/bug-202.out b/tests/general/bug-202.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-202.out
+++ /dev/null
diff --git a/tests/docs/bug-203.xml b/tests/general/bug-202.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-203.xml
+++ b/tests/general/bug-202.xml
diff --git a/tests/general/bug-203.out b/tests/general/bug-203.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-203.out
+++ /dev/null
diff --git a/tests/docs/bug-204.xml b/tests/general/bug-203.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-204.xml
+++ b/tests/general/bug-203.xml
diff --git a/tests/general/bug-204.out b/tests/general/bug-204.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-204.out
+++ /dev/null
diff --git a/tests/docs/bug-205.xml b/tests/general/bug-204.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-205.xml
+++ b/tests/general/bug-204.xml
diff --git a/tests/docs/bug-206.xml b/tests/general/bug-205.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-206.xml
+++ b/tests/general/bug-205.xml
diff --git a/tests/docs/bug-209.xml b/tests/general/bug-206.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-209.xml
+++ b/tests/general/bug-206.xml
diff --git a/tests/docs/bug-207.xml b/tests/general/bug-207.xml
index 3cf443a9..3cf443a9 100644
--- a/tests/docs/bug-207.xml
+++ b/tests/general/bug-207.xml
diff --git a/tests/general/bug-208.err b/tests/general/bug-208.err
index 02c97121..4b96fa74 100644
--- a/tests/general/bug-208.err
+++ b/tests/general/bug-208.err
@@ -3,4 +3,4 @@ XPath error : Undefined namespace prefix
XPath error : Undefined namespace prefix
XPath error : Undefined namespace prefix
XPath error : Undefined namespace prefix
-no result for ./../docs/bug-208.xml
+no result for ./bug-208.xml
diff --git a/tests/general/bug-208.out b/tests/general/bug-208.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-208.out
+++ /dev/null
diff --git a/tests/docs/bug-208.xml b/tests/general/bug-208.xml
index 5d3529ae..5d3529ae 100644
--- a/tests/docs/bug-208.xml
+++ b/tests/general/bug-208.xml
diff --git a/tests/docs/bug-210.xml b/tests/general/bug-209.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-210.xml
+++ b/tests/general/bug-209.xml
diff --git a/tests/general/bug-21-.out b/tests/general/bug-21-.out
index 8a98dfde..ac45087a 100644
--- a/tests/general/bug-21-.out
+++ b/tests/general/bug-21-.out
@@ -1,2 +1,2 @@
<?xml version="1.0"?>
-../docs/test.jpg
+test.jpg
diff --git a/tests/docs/bug-21-.xml b/tests/general/bug-21-.xml
index 05a269eb..05a269eb 100644
--- a/tests/docs/bug-21-.xml
+++ b/tests/general/bug-21-.xml
diff --git a/tests/docs/bug-211.xml b/tests/general/bug-210.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-211.xml
+++ b/tests/general/bug-210.xml
diff --git a/tests/docs/bug-212.xml b/tests/general/bug-211.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-212.xml
+++ b/tests/general/bug-211.xml
diff --git a/tests/docs/bug-213.xml b/tests/general/bug-212.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-213.xml
+++ b/tests/general/bug-212.xml
diff --git a/tests/docs/bug-220.xml b/tests/general/bug-213.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-220.xml
+++ b/tests/general/bug-213.xml
diff --git a/tests/docs/bug-214.xml b/tests/general/bug-214.xml
index 196b8025..196b8025 100644
--- a/tests/docs/bug-214.xml
+++ b/tests/general/bug-214.xml
diff --git a/tests/general/bug-215.err b/tests/general/bug-215.err
index 86556144..4d4fd80f 100644
--- a/tests/general/bug-215.err
+++ b/tests/general/bug-215.err
@@ -1,8 +1,5 @@
- ELEMENT fake
-element fake: error : Node has no parent
- ELEMENT elem
{DEF}f: cannot write to result tree while executing a function
XPath error : Stack usage error
runtime error: file ./bug-215.xsl line 5 element variable
Evaluating global variable var/param being computed failed
-no result for ./../docs/bug-215.xml
+no result for ./bug-215.xml
diff --git a/tests/general/bug-215.out b/tests/general/bug-215.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-215.out
+++ /dev/null
diff --git a/tests/docs/bug-215.xml b/tests/general/bug-215.xml
index ead3414d..ead3414d 100644
--- a/tests/docs/bug-215.xml
+++ b/tests/general/bug-215.xml
diff --git a/tests/docs/bug-216.xml b/tests/general/bug-216.xml
index d128aecc..d128aecc 100644
--- a/tests/docs/bug-216.xml
+++ b/tests/general/bug-216.xml
diff --git a/tests/docs/bug-217.xml b/tests/general/bug-217.xml
index f1999f80..f1999f80 100644
--- a/tests/docs/bug-217.xml
+++ b/tests/general/bug-217.xml
diff --git a/tests/docs/bug-218.xml b/tests/general/bug-218.xml
index 38065478..38065478 100644
--- a/tests/docs/bug-218.xml
+++ b/tests/general/bug-218.xml
diff --git a/tests/docs/bug-219.xml b/tests/general/bug-219.xml
index 65497811..65497811 100644
--- a/tests/docs/bug-219.xml
+++ b/tests/general/bug-219.xml
diff --git a/tests/docs/bug-22-.xml b/tests/general/bug-22-.xml
index 63e79899..63e79899 100644
--- a/tests/docs/bug-22-.xml
+++ b/tests/general/bug-22-.xml
diff --git a/tests/docs/bug-222.xml b/tests/general/bug-220.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-222.xml
+++ b/tests/general/bug-220.xml
diff --git a/tests/docs/bug-221.xml b/tests/general/bug-221.xml
index d9d4bacf..d9d4bacf 100644
--- a/tests/docs/bug-221.xml
+++ b/tests/general/bug-221.xml
diff --git a/tests/docs/bug-25-.xml b/tests/general/bug-222.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-25-.xml
+++ b/tests/general/bug-222.xml
diff --git a/tests/general/bug-223-imp.xsl b/tests/general/bug-223-imp.xsl
new file mode 100644
index 00000000..1fa8d3aa
--- /dev/null
+++ b/tests/general/bug-223-imp.xsl
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:x="urn:math"
+ xmlns:func="http://exslt.org/functions"
+ extension-element-prefixes="func">
+
+ <func:function name="x:pow">
+ <xsl:param name="number"/>
+ <func:result select="$number * $number"/>
+ </func:function>
+</xsl:stylesheet>
diff --git a/tests/general/bug-223-inc.xsl b/tests/general/bug-223-inc.xsl
new file mode 100644
index 00000000..8652aa27
--- /dev/null
+++ b/tests/general/bug-223-inc.xsl
@@ -0,0 +1,12 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:x="urn:math"
+ xmlns:func="http://exslt.org/functions"
+ extension-element-prefixes="func">
+
+ <func:function name="x:sqrt">
+ <xsl:param name="number"/>
+ <func:result select="$number div $number"/>
+ </func:function>
+</xsl:stylesheet>
diff --git a/tests/general/bug-223.out b/tests/general/bug-223.out
new file mode 100644
index 00000000..26106339
--- /dev/null
+++ b/tests/general/bug-223.out
@@ -0,0 +1 @@
+0 NaN
diff --git a/tests/docs/bug-26-.xml b/tests/general/bug-223.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-26-.xml
+++ b/tests/general/bug-223.xml
diff --git a/tests/general/bug-223.xsl b/tests/general/bug-223.xsl
new file mode 100644
index 00000000..4154b6ae
--- /dev/null
+++ b/tests/general/bug-223.xsl
@@ -0,0 +1,17 @@
+<?xml version="1.0"?>
+<xsl:stylesheet version="1.0"
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
+ xmlns:x="urn:math">
+
+ <xsl:import href="bug-223-imp.xsl"/>
+ <xsl:include href="bug-223-inc.xsl"/>
+
+ <xsl:output omit-xml-declaration="yes"/>
+
+ <xsl:template match="/">
+ <xsl:value-of select="x:pow(count(cd))"/>
+ <xsl:value-of select="' '"/>
+ <xsl:value-of select="x:sqrt(count(cd))"/>
+ </xsl:template>
+
+</xsl:stylesheet>
diff --git a/tests/docs/bug-23-.xml b/tests/general/bug-23-.xml
index 4ff059f1..4ff059f1 100644
--- a/tests/docs/bug-23-.xml
+++ b/tests/general/bug-23-.xml
diff --git a/tests/docs/bug-24-.xml b/tests/general/bug-24-.xml
index e11821ed..e11821ed 100644
--- a/tests/docs/bug-24-.xml
+++ b/tests/general/bug-24-.xml
diff --git a/tests/docs/bug-27-.xml b/tests/general/bug-25-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-27-.xml
+++ b/tests/general/bug-25-.xml
diff --git a/tests/docs/bug-28-.xml b/tests/general/bug-26-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-28-.xml
+++ b/tests/general/bug-26-.xml
diff --git a/tests/docs/bug-30-.xml b/tests/general/bug-27-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-30-.xml
+++ b/tests/general/bug-27-.xml
diff --git a/tests/docs/bug-40-.xml b/tests/general/bug-28-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-40-.xml
+++ b/tests/general/bug-28-.xml
diff --git a/tests/docs/bug-29-.ent b/tests/general/bug-29-.ent
index 6ba97269..6ba97269 100644
--- a/tests/docs/bug-29-.ent
+++ b/tests/general/bug-29-.ent
diff --git a/tests/docs/bug-29-.xml b/tests/general/bug-29-.xml
index 80bde4b9..80bde4b9 100644
--- a/tests/docs/bug-29-.xml
+++ b/tests/general/bug-29-.xml
diff --git a/tests/docs/bug-3-.xml b/tests/general/bug-3-.xml
index 400a2d5f..400a2d5f 100644
--- a/tests/docs/bug-3-.xml
+++ b/tests/general/bug-3-.xml
diff --git a/tests/docs/bug-41-.xml b/tests/general/bug-30-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-41-.xml
+++ b/tests/general/bug-30-.xml
diff --git a/tests/docs/bug-31-.xml b/tests/general/bug-31-.xml
index 873400f9..873400f9 100644
--- a/tests/docs/bug-31-.xml
+++ b/tests/general/bug-31-.xml
diff --git a/tests/docs/bug-32-.xml b/tests/general/bug-32-.xml
index 91d2bb6a..91d2bb6a 100644
--- a/tests/docs/bug-32-.xml
+++ b/tests/general/bug-32-.xml
diff --git a/tests/docs/bug-33-.xml b/tests/general/bug-33-.xml
index c58f4d57..c58f4d57 100644
--- a/tests/docs/bug-33-.xml
+++ b/tests/general/bug-33-.xml
diff --git a/tests/docs/bug-35-.xml b/tests/general/bug-35-.xml
index b7f9231b..b7f9231b 100644
--- a/tests/docs/bug-35-.xml
+++ b/tests/general/bug-35-.xml
diff --git a/tests/docs/bug-36-.xml b/tests/general/bug-36-.xml
index 4d6bd03f..4d6bd03f 100644
--- a/tests/docs/bug-36-.xml
+++ b/tests/general/bug-36-.xml
diff --git a/tests/general/bug-36-inc.out b/tests/general/bug-36-inc.out
deleted file mode 100644
index 2e6134ec..00000000
--- a/tests/general/bug-36-inc.out
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0"?>
-<root>
-some text
-</root>
diff --git a/tests/docs/bug-37-.xml b/tests/general/bug-37-.xml
index 4d6bd03f..4d6bd03f 100644
--- a/tests/docs/bug-37-.xml
+++ b/tests/general/bug-37-.xml
diff --git a/tests/general/bug-37-inc.out b/tests/general/bug-37-inc.out
deleted file mode 100644
index 2e6134ec..00000000
--- a/tests/general/bug-37-inc.out
+++ /dev/null
@@ -1,4 +0,0 @@
-<?xml version="1.0"?>
-<root>
-some text
-</root>
diff --git a/tests/docs/bug-38-.xml b/tests/general/bug-38-.xml
index 57d0e820..57d0e820 100644
--- a/tests/docs/bug-38-.xml
+++ b/tests/general/bug-38-.xml
diff --git a/tests/docs/bug-39-.xml b/tests/general/bug-39-.xml
index ae743ebf..ae743ebf 100644
--- a/tests/docs/bug-39-.xml
+++ b/tests/general/bug-39-.xml
diff --git a/tests/docs/bug-4-.xml b/tests/general/bug-4-.xml
index db0534d6..db0534d6 100644
--- a/tests/docs/bug-4-.xml
+++ b/tests/general/bug-4-.xml
diff --git a/tests/docs/bug-42-.xml b/tests/general/bug-40-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-42-.xml
+++ b/tests/general/bug-40-.xml
diff --git a/tests/docs/bug-43-.xml b/tests/general/bug-41-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-43-.xml
+++ b/tests/general/bug-41-.xml
diff --git a/tests/docs/bug-44-.xml b/tests/general/bug-42-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-44-.xml
+++ b/tests/general/bug-42-.xml
diff --git a/tests/docs/bug-45-.xml b/tests/general/bug-43-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-45-.xml
+++ b/tests/general/bug-43-.xml
diff --git a/tests/docs/bug-46-.xml b/tests/general/bug-44-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-46-.xml
+++ b/tests/general/bug-44-.xml
diff --git a/tests/docs/bug-47-.xml b/tests/general/bug-45-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-47-.xml
+++ b/tests/general/bug-45-.xml
diff --git a/tests/docs/bug-48-.xml b/tests/general/bug-46-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-48-.xml
+++ b/tests/general/bug-46-.xml
diff --git a/tests/docs/bug-49-.xml b/tests/general/bug-47-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-49-.xml
+++ b/tests/general/bug-47-.xml
diff --git a/tests/docs/bug-56.xml b/tests/general/bug-48-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-56.xml
+++ b/tests/general/bug-48-.xml
diff --git a/tests/docs/bug-60.xml b/tests/general/bug-49-.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-60.xml
+++ b/tests/general/bug-49-.xml
diff --git a/tests/docs/bug-5-.xml b/tests/general/bug-5-.xml
index f5a34ecd..f5a34ecd 100644
--- a/tests/docs/bug-5-.xml
+++ b/tests/general/bug-5-.xml
diff --git a/tests/docs/bug-50-.xml b/tests/general/bug-50-.xml
index 0d0cc5b9..0d0cc5b9 100644
--- a/tests/docs/bug-50-.xml
+++ b/tests/general/bug-50-.xml
diff --git a/tests/general/bug-52.out b/tests/general/bug-52.out
index 486ba022..3179a6a7 100644
--- a/tests/general/bug-52.out
+++ b/tests/general/bug-52.out
@@ -1,3 +1,3 @@
-Graphic file=../docs/graphic.gif
+Graphic file=graphic.gif
diff --git a/tests/docs/bug-52.xml b/tests/general/bug-52.xml
index 66a10a50..66a10a50 100644
--- a/tests/docs/bug-52.xml
+++ b/tests/general/bug-52.xml
diff --git a/tests/docs/bug-53.xml b/tests/general/bug-53.xml
index 27ed7a8d..27ed7a8d 100644
--- a/tests/docs/bug-53.xml
+++ b/tests/general/bug-53.xml
diff --git a/tests/docs/bug-54.xml b/tests/general/bug-54.xml
index 188b15af..188b15af 100644
--- a/tests/docs/bug-54.xml
+++ b/tests/general/bug-54.xml
diff --git a/tests/docs/bug-55.xml b/tests/general/bug-55.xml
index 98f1f7a3..98f1f7a3 100644
--- a/tests/docs/bug-55.xml
+++ b/tests/general/bug-55.xml
diff --git a/tests/docs/bug-61.xml b/tests/general/bug-56.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-61.xml
+++ b/tests/general/bug-56.xml
diff --git a/tests/docs/bug-57.xml b/tests/general/bug-57.xml
index c65312dc..c65312dc 100644
--- a/tests/docs/bug-57.xml
+++ b/tests/general/bug-57.xml
diff --git a/tests/docs/bug-59.xml b/tests/general/bug-59.xml
index 64ce75b4..64ce75b4 100644
--- a/tests/docs/bug-59.xml
+++ b/tests/general/bug-59.xml
diff --git a/tests/docs/bug-6-.xml b/tests/general/bug-6-.xml
index e0222812..e0222812 100644
--- a/tests/docs/bug-6-.xml
+++ b/tests/general/bug-6-.xml
diff --git a/tests/docs/bug-62.xml b/tests/general/bug-60.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-62.xml
+++ b/tests/general/bug-60.xml
diff --git a/tests/docs/bug-64.xml b/tests/general/bug-61.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-64.xml
+++ b/tests/general/bug-61.xml
diff --git a/tests/general/bug-62-inc.out b/tests/general/bug-62-inc.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/general/bug-62-inc.out
+++ /dev/null
diff --git a/tests/docs/bug-68.xml b/tests/general/bug-62.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-68.xml
+++ b/tests/general/bug-62.xml
diff --git a/tests/docs/bug-63.xml b/tests/general/bug-63.xml
index dd4d8357..dd4d8357 100644
--- a/tests/docs/bug-63.xml
+++ b/tests/general/bug-63.xml
diff --git a/tests/docs/bug-75.xml b/tests/general/bug-64.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-75.xml
+++ b/tests/general/bug-64.xml
diff --git a/tests/docs/bug-65.xml b/tests/general/bug-65.xml
index e2a137c5..e2a137c5 100644
--- a/tests/docs/bug-65.xml
+++ b/tests/general/bug-65.xml
diff --git a/tests/docs/bug-66.xml b/tests/general/bug-66.xml
index 70babc47..70babc47 100644
--- a/tests/docs/bug-66.xml
+++ b/tests/general/bug-66.xml
diff --git a/tests/docs/bug-83.xml b/tests/general/bug-68.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-83.xml
+++ b/tests/general/bug-68.xml
diff --git a/tests/docs/bug-69.xml b/tests/general/bug-69.xml
index d2c746b6..d2c746b6 100644
--- a/tests/docs/bug-69.xml
+++ b/tests/general/bug-69.xml
diff --git a/tests/docs/bug-7-.xml b/tests/general/bug-7-.xml
index 171d61b9..171d61b9 100644
--- a/tests/docs/bug-7-.xml
+++ b/tests/general/bug-7-.xml
diff --git a/tests/docs/bug-70.xml b/tests/general/bug-70.xml
index b5080dd3..b5080dd3 100644
--- a/tests/docs/bug-70.xml
+++ b/tests/general/bug-70.xml
diff --git a/tests/docs/bug-71.xml b/tests/general/bug-71.xml
index 555662cc..555662cc 100644
--- a/tests/docs/bug-71.xml
+++ b/tests/general/bug-71.xml
diff --git a/tests/docs/bug-72.xml b/tests/general/bug-72.xml
index 90060bd2..90060bd2 100644
--- a/tests/docs/bug-72.xml
+++ b/tests/general/bug-72.xml
diff --git a/tests/docs/bug-73.xml b/tests/general/bug-73.xml
index 0b2cb1c3..0b2cb1c3 100644
--- a/tests/docs/bug-73.xml
+++ b/tests/general/bug-73.xml
diff --git a/tests/docs/bug-74.xml b/tests/general/bug-74.xml
index f030d508..f030d508 100644
--- a/tests/docs/bug-74.xml
+++ b/tests/general/bug-74.xml
diff --git a/tests/docs/bug-88.xml b/tests/general/bug-75.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-88.xml
+++ b/tests/general/bug-75.xml
diff --git a/tests/docs/bug-76.xml b/tests/general/bug-76.xml
index 6f5ae8ea..6f5ae8ea 100644
--- a/tests/docs/bug-76.xml
+++ b/tests/general/bug-76.xml
diff --git a/tests/docs/bug-77.xml b/tests/general/bug-77.xml
index e414475e..e414475e 100644
--- a/tests/docs/bug-77.xml
+++ b/tests/general/bug-77.xml
diff --git a/tests/docs/bug-78.xml b/tests/general/bug-78.xml
index c5987944..c5987944 100644
--- a/tests/docs/bug-78.xml
+++ b/tests/general/bug-78.xml
diff --git a/tests/docs/bug-79.xml b/tests/general/bug-79.xml
index a94a515a..a94a515a 100644
--- a/tests/docs/bug-79.xml
+++ b/tests/general/bug-79.xml
diff --git a/tests/docs/bug-8-.xml b/tests/general/bug-8-.xml
index 975f42d6..975f42d6 100644
--- a/tests/docs/bug-8-.xml
+++ b/tests/general/bug-8-.xml
diff --git a/tests/docs/bug-80.xml b/tests/general/bug-80.xml
index 4acc5823..4acc5823 100644
--- a/tests/docs/bug-80.xml
+++ b/tests/general/bug-80.xml
diff --git a/tests/docs/bug-81.xml b/tests/general/bug-81.xml
index 45220c94..45220c94 100644
--- a/tests/docs/bug-81.xml
+++ b/tests/general/bug-81.xml
diff --git a/tests/docs/bug-82.xml b/tests/general/bug-82.xml
index f58bb8ef..f58bb8ef 100644
--- a/tests/docs/bug-82.xml
+++ b/tests/general/bug-82.xml
diff --git a/tests/docs/bug-99.xml b/tests/general/bug-83.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/bug-99.xml
+++ b/tests/general/bug-83.xml
diff --git a/tests/docs/bug-84.xml b/tests/general/bug-84.xml
index 948c9ddd..948c9ddd 100644
--- a/tests/docs/bug-84.xml
+++ b/tests/general/bug-84.xml
diff --git a/tests/docs/bug-86.xml b/tests/general/bug-86.xml
index 12eabe1a..12eabe1a 100644
--- a/tests/docs/bug-86.xml
+++ b/tests/general/bug-86.xml
diff --git a/tests/docs/bug-87.xml b/tests/general/bug-87.xml
index 7761b4b4..7761b4b4 100644
--- a/tests/docs/bug-87.xml
+++ b/tests/general/bug-87.xml
diff --git a/tests/docs/date_add.xml b/tests/general/bug-88.xml
index 69d62f2c..69d62f2c 100644
--- a/tests/docs/date_add.xml
+++ b/tests/general/bug-88.xml
diff --git a/tests/docs/bug-89.xml b/tests/general/bug-89.xml
index 2528660f..2528660f 100644
--- a/tests/docs/bug-89.xml
+++ b/tests/general/bug-89.xml
diff --git a/tests/docs/bug-9-.xml b/tests/general/bug-9-.xml
index f3810665..f3810665 100644
--- a/tests/docs/bug-9-.xml
+++ b/tests/general/bug-9-.xml
diff --git a/tests/docs/bug-90.xml b/tests/general/bug-90.xml
index 99894746..99894746 100644
--- a/tests/docs/bug-90.xml
+++ b/tests/general/bug-90.xml
diff --git a/tests/docs/bug-91.xml b/tests/general/bug-91.xml
index 64a348aa..64a348aa 100644
--- a/tests/docs/bug-91.xml
+++ b/tests/general/bug-91.xml
diff --git a/tests/docs/bug-92.xml b/tests/general/bug-92.xml
index 501b187a..501b187a 100644
--- a/tests/docs/bug-92.xml
+++ b/tests/general/bug-92.xml
diff --git a/tests/general/bug-93-inc.out b/tests/general/bug-93-inc.out
deleted file mode 100644
index 85c9aba0..00000000
--- a/tests/general/bug-93-inc.out
+++ /dev/null
@@ -1,3 +0,0 @@
-<font size="+1">
-foo
- </font>
diff --git a/tests/docs/bug-93.xml b/tests/general/bug-93.xml
index f1999f80..f1999f80 100644
--- a/tests/docs/bug-93.xml
+++ b/tests/general/bug-93.xml
diff --git a/tests/docs/bug-94.xml b/tests/general/bug-94.xml
index 10935f77..10935f77 100644
--- a/tests/docs/bug-94.xml
+++ b/tests/general/bug-94.xml
diff --git a/tests/docs/bug-95.xml b/tests/general/bug-95.xml
index 91f84d4a..91f84d4a 100644
--- a/tests/docs/bug-95.xml
+++ b/tests/general/bug-95.xml
diff --git a/tests/docs/bug-96.xml b/tests/general/bug-96.xml
index 1f8d9d45..1f8d9d45 100644
--- a/tests/docs/bug-96.xml
+++ b/tests/general/bug-96.xml
diff --git a/tests/docs/bug-97.xml b/tests/general/bug-97.xml
index bba9c3be..bba9c3be 100644
--- a/tests/docs/bug-97.xml
+++ b/tests/general/bug-97.xml
diff --git a/tests/docs/bug-98.xml b/tests/general/bug-98.xml
index d4c827a4..d4c827a4 100644
--- a/tests/docs/bug-98.xml
+++ b/tests/general/bug-98.xml
diff --git a/tests/general/bug-99.xml b/tests/general/bug-99.xml
new file mode 100644
index 00000000..69d62f2c
--- /dev/null
+++ b/tests/general/bug-99.xml
@@ -0,0 +1 @@
+<doc/>
diff --git a/tests/docs/character.xml b/tests/general/character.xml
index 815e9678..815e9678 100644
--- a/tests/docs/character.xml
+++ b/tests/general/character.xml
diff --git a/tests/general/character2.out b/tests/general/character2.out
deleted file mode 100644
index 2ced81af..00000000
--- a/tests/general/character2.out
+++ /dev/null
@@ -1,2 +0,0 @@
-<?xml version="1.0"?>
-Balance Bluff Climb Diplomacy Escape artist Gather info Hide Jump Listen Move silently Perform Ride Search Sense motive Spot Swim Tumble Use rope
diff --git a/tests/general/character2.xsl b/tests/general/character2.xsl
deleted file mode 100644
index c3ff26ee..00000000
--- a/tests/general/character2.xsl
+++ /dev/null
@@ -1,16 +0,0 @@
-<?xml version="1.0" encoding="ISO-8859-1"?>
-<xsl:stylesheet xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
-version="1.0">
- <xsl:output method="xml" indent="yes"/>
-
-<xsl:template match="character">
- <xsl:apply-templates select="skills"/>
-</xsl:template>
-
-<xsl:template match="skills">
- <xsl:for-each select="*">
- <xsl:value-of select="./@name"/>
- <xsl:text> </xsl:text>
- </xsl:for-each>
-</xsl:template>
-</xsl:stylesheet>
diff --git a/tests/general/date_add.xml b/tests/general/date_add.xml
new file mode 100644
index 00000000..69d62f2c
--- /dev/null
+++ b/tests/general/date_add.xml
@@ -0,0 +1 @@
+<doc/>
diff --git a/tests/REC1/doc.dtd b/tests/general/doc.dtd
index f06b4dc4..f06b4dc4 100644
--- a/tests/REC1/doc.dtd
+++ b/tests/general/doc.dtd
diff --git a/tests/REC1/result.xml b/tests/general/doc.out
index 4e7836b3..4e7836b3 100644
--- a/tests/REC1/result.xml
+++ b/tests/general/doc.out
diff --git a/tests/REC1/doc.xml b/tests/general/doc.xml
index 0bad2544..0bad2544 100644
--- a/tests/REC1/doc.xml
+++ b/tests/general/doc.xml
diff --git a/tests/REC1/doc.xsl b/tests/general/doc.xsl
index bcc60a4d..bcc60a4d 100644
--- a/tests/REC1/doc.xsl
+++ b/tests/general/doc.xsl
diff --git a/tests/docs/items.xml b/tests/general/items.xml
index 78a94c85..78a94c85 100644
--- a/tests/docs/items.xml
+++ b/tests/general/items.xml
diff --git a/tests/general/itemschoose.out b/tests/general/itemschoose.out
deleted file mode 100644
index 5ebd98ab..00000000
--- a/tests/general/itemschoose.out
+++ /dev/null
@@ -1,35 +0,0 @@
-<?xml version="1.0"?>
-<doc xmlns:fo="http://www.w3.org/1999/XSL/Format">
-
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem1</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem2</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem3</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem4</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem5</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>listitem6</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="i"/>. </fo:list-item-label><fo:list-item-body>
-
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>
-
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>
- </fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>listitem7.1.2</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>listitem7.1.3</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>listitem7.1.4</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>listitem7.1.5</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>listitem7.1.6</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="1"/>. </fo:list-item-label><fo:list-item-body>
- </fo:list-item-body></fo:list-item>
-
- </fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>listitem7.2</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>listitem7.3</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>listitem7.4</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>listitem7.5</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>listitem7.6</fo:list-item-body></fo:list-item>
- <fo:list-item indent-start="2pi"><fo:list-item-label><number format="a"/>. </fo:list-item-label><fo:list-item-body>
- </fo:list-item-body></fo:list-item>
-
- </fo:list-item-body></fo:list-item>
-
-</doc>
diff --git a/tests/general/itemschoose.xsl b/tests/general/itemschoose.xsl
deleted file mode 100644
index c8201f42..00000000
--- a/tests/general/itemschoose.xsl
+++ /dev/null
@@ -1,37 +0,0 @@
-<xsl:stylesheet version="1.0"
- xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
- xmlns:fo="http://www.w3.org/1999/XSL/Format">
-
-<xsl:strip-space elements="itemlist"/>
-
-<xsl:template match="doc">
-<doc>
-<xsl:apply-templates/>
-</doc>
-</xsl:template>
-
-<xsl:template match="orderedlist/listitem">
- <fo:list-item indent-start='2pi'>
- <fo:list-item-label>
- <xsl:variable name="level"
- select="count(ancestor::orderedlist) mod 3"/>
- <xsl:choose>
- <xsl:when test='$level=1'>
- <number format="i"/>
- </xsl:when>
- <xsl:when test='$level=2'>
- <number format="a"/>
- </xsl:when>
- <xsl:otherwise>
- <number format="1"/>
- </xsl:otherwise>
- </xsl:choose>
- <xsl:text>. </xsl:text>
- </fo:list-item-label>
- <fo:list-item-body>
- <xsl:apply-templates/>
- </fo:list-item-body>
- </fo:list-item>
-</xsl:template>
-</xsl:stylesheet>
-
diff --git a/tests/keys/Makefile.am b/tests/keys/Makefile.am
deleted file mode 100644
index faeed361..00000000
--- a/tests/keys/Makefile.am
+++ /dev/null
@@ -1,23 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = dates.xml month.xml month.xsl month.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running keys tests'
- @(echo > .memdump)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/month.xsl $(srcdir)/dates.xml > month.res ; \
- if [ -r $(srcdir)/month.out ] ; \
- then diff $(srcdir)/month.out month.res ; \
- else mv month.res $(srcdir)/month.out ; fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f month.res)
-
diff --git a/tests/keys/month.out b/tests/keys/dates.out
index 088c1c7b..088c1c7b 100644
--- a/tests/keys/month.out
+++ b/tests/keys/dates.out
diff --git a/tests/keys/month.xsl b/tests/keys/dates.xsl
index 336c0364..336c0364 100644
--- a/tests/keys/month.xsl
+++ b/tests/keys/dates.xsl
diff --git a/tests/multiple/Makefile.am b/tests/multiple/Makefile.am
index 1c40c2d5..d02a4bef 100644
--- a/tests/multiple/Makefile.am
+++ b/tests/multiple/Makefile.am
@@ -30,11 +30,7 @@ GENERATED = \
CLEANFILES = .memdump
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
+check-local: $(top_builddir)/xsltproc/xsltproc
@echo '## Running multiple tests'
@(echo > .memdump)
@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/dict.xsl $(srcdir)/dict.xml > dict.res ; \
diff --git a/tests/namespaces/Makefile.am b/tests/namespaces/Makefile.am
deleted file mode 100644
index a81f22f4..00000000
--- a/tests/namespaces/Makefile.am
+++ /dev/null
@@ -1,59 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- extra.xml extra.xsl extra.out \
- extra2.xml extra2.xsl extra2.out extra2.err\
- tst.xml tst.xsl tst.out \
- tst2.xml tst2.xsl tst2.out \
- tst3.xml tst3.xsl tst3.out \
- tst4.xml tst4.xsl tst4.out \
- tst5.xml tst5.xsl tst5.out \
- tst6.xml tst6.xsl tst6.out \
- tst7.xml tst7.xsl tst7.out \
- tst8.xml tst8.xsl tst8.out \
- tst9.xml tst9.xsl tst9.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running namespaces tests'
- @(echo > .memdump)
- -@(for i in $(srcdir)/*.xml ; do \
- if [ -d $$i ] ; then continue ; fi ; \
- doc=`basename $$i .xml` ; \
- j=$(srcdir)/$$doc.xsl ; \
- if [ ! -f $$j ] ; then continue ; fi ; \
- if [ -d $$j ] ; then continue ; fi ; \
- name=`basename $$j .xsl`; \
- out=$(srcdir)/"$$name".out; \
- err=$(srcdir)/"$$name".err; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc $$j $$i \
- > result.$$name 2>err.$$name; \
- if [ ! -f $$out ] ; then \
- cp result.$$name $$out ; \
- if [ -s err.$$name ] ; then \
- cp err.$$name $$err ; \
- fi ; \
- else \
- diff $$out result.$$name; \
- if [ -s $$err ] ; then \
- diff $$err err.$$name; \
- else \
- diff /dev/null err.$$name; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f result.$$name err.$$name; \
- done)
-
diff --git a/tests/namespaces/extra2.out b/tests/namespaces/extra2.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/namespaces/extra2.out
+++ /dev/null
diff --git a/tests/numbers/Makefile.am b/tests/numbers/Makefile.am
deleted file mode 100644
index 8fa9ba0a..00000000
--- a/tests/numbers/Makefile.am
+++ /dev/null
@@ -1,21 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = format-number.xsl format-number.xml format-number.out
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running numbers tests'
- @(echo > .memdump)
- @($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/format-number.xsl $(srcdir)/format-number.xml > format-number.res ; \
- diff $(srcdir)/format-number.out format-number.res ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true;\
- rm -f format-number.res)
-
diff --git a/tests/plugins/Makefile.am b/tests/plugins/Makefile.am
deleted file mode 100644
index e0736ab9..00000000
--- a/tests/plugins/Makefile.am
+++ /dev/null
@@ -1,42 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = plugin.out plugin.xml plugin.xsl
-
-AM_CPPFLAGS = -I$(top_srcdir) -I../../libxslt
-
-CLEANFILES = *.res
-
-if WITH_MODULES
-
-noinst_LTLIBRARIES = xmlsoft_org_xslt_testplugin.la
-
-# our rpath is a rather unorthodox location as we
-# don't want to pollute $(DESTDIR) with the test plugin
-
-plugindir = $(abs_builddir)/.libs
-
-xmlsoft_org_xslt_testplugin_la_CFLAGS = -DMODULE_COMPILE $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
-xmlsoft_org_xslt_testplugin_la_SOURCES = testplugin.c
-xmlsoft_org_xslt_testplugin_la_LIBADD = $(top_builddir)/libxslt/libxslt.la $(EXTRA_LIBS)
-xmlsoft_org_xslt_testplugin_la_LDFLAGS = -module -avoid-version -rpath $(plugindir)
-
-test-logall:
- @echo '## Running plugin tests'
-
-test tests: $(top_builddir)/xsltproc/xsltproc test-logall $(noinst_LTLIBRARIES)
- @LD_LIBRARY_PATH=$(plugindir):$(top_builddir)/libxslt/.libs:$(LD_LIBRARY_PATH) \
- LIBXSLT_PLUGINS_PATH=$(plugindir) \
- $(top_builddir)/xsltproc/xsltproc plugin.xsl plugin.xml > plugin.res
- @diff plugin.out plugin.res
- @rm plugin.res
-
-else
-
-test tests:
- @echo Skipping the plugin tests.
-
-endif
-
diff --git a/tests/reports/Makefile.am b/tests/reports/Makefile.am
deleted file mode 100644
index a017afd0..00000000
--- a/tests/reports/Makefile.am
+++ /dev/null
@@ -1,57 +0,0 @@
-## Process this file with automake to produce Makefile.in
-
-$(top_builddir)/xsltproc/xsltproc:
- @(cd ../../xsltproc ; $(MAKE) xsltproc)
-
-EXTRA_DIST = \
- cmdlineparams.xml cmdlineparams.xsl cmdlineparams.out \
- tst-1.xml tst-1.xsl tst-1.out tst-1.err \
- tst-2.xml tst-2.xsl tst-2.out tst-2.err \
- undefvar.xml undefvar.xsl undefvar.out undefvar.err \
- recglobparam.xsl recglobvar.xsl reclocparam.xsl reclocvar.xsl \
- recglobparam.xml recglobvar.xml reclocparam.xml reclocvar.xml
-
-CLEANFILES = .memdump
-
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
- @echo '## Running reports tests'
- @(echo > .memdump)
- -@(for i in $(srcdir)/../docs/*.xml ; do \
- if [ -d $$i ] ; then continue ; fi ; \
- doc=`basename $$i .xml` ; \
- for j in $(srcdir)/$$doc*.xsl ; do \
- if [ ! -f $$j ] ; then continue ; fi ; \
- if [ -d $$j ] ; then continue ; fi ; \
- name=`basename $$j .xsl`; \
- out=$(srcdir)/"$$name".out; \
- err=$(srcdir)/"$$name".err; \
- log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc \
- --stringparam test passed_value \
- --stringparam test2 passed_value2 \
- $$j $$i > result.$$name \
- 2> err.$$name ; \
- if [ ! -f $$out ] ; then \
- cp result.$$name $$out ; \
- if [ -s err.$$name ] ; then \
- cp err.$$name $$err ; \
- fi ; \
- else \
- diff $$out result.$$name; \
- if [ -s $$err ] ; then \
- diff $$err err.$$name; \
- else \
- diff /dev/null err.$$name; \
- fi ; \
- fi ; \
- grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true`;\
- if [ -n "$$log" ] ; then \
- echo $$name result ; \
- echo "$$log" ; \
- fi ; \
- rm -f result.$$name err.$$name; \
- done ; done)
-
diff --git a/tests/reports/recglobparam.err b/tests/reports/recglobparam.err
index 6bb87705..8486a5f2 100644
--- a/tests/reports/recglobparam.err
+++ b/tests/reports/recglobparam.err
@@ -1,8 +1,8 @@
runtime error: file ./recglobparam.xsl line 4 element param
Recursive definition of ok
runtime error: file ./recglobparam.xsl line 4 element value-of
-unregistered variable ok
-xmlXPathCompiledEval: evaluation failed
+Variable 'ok' has not been declared.
+XPath error : Undefined variable
runtime error: file ./recglobparam.xsl line 4 element value-of
-xsltValueOf: text copy failed
+XPath evaluation returned no result.
no result for ./recglobparam.xml
diff --git a/tests/reports/recglobparam.out b/tests/reports/recglobparam.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/recglobparam.out
+++ /dev/null
diff --git a/tests/reports/recglobvar.err b/tests/reports/recglobvar.err
index 1755e974..171c94cb 100644
--- a/tests/reports/recglobvar.err
+++ b/tests/reports/recglobvar.err
@@ -1,8 +1,8 @@
runtime error: file ./recglobvar.xsl line 4 element variable
Recursive definition of ok
runtime error: file ./recglobvar.xsl line 4 element value-of
-unregistered variable ok
-xmlXPathCompiledEval: evaluation failed
+Variable 'ok' has not been declared.
+XPath error : Undefined variable
runtime error: file ./recglobvar.xsl line 4 element value-of
-xsltValueOf: text copy failed
+XPath evaluation returned no result.
no result for ./recglobvar.xml
diff --git a/tests/reports/recglobvar.out b/tests/reports/recglobvar.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/recglobvar.out
+++ /dev/null
diff --git a/tests/reports/reclocparam.err b/tests/reports/reclocparam.err
index 90eea964..9f6b1e93 100644
--- a/tests/reports/reclocparam.err
+++ b/tests/reports/reclocparam.err
@@ -1,6 +1,6 @@
runtime error: file ./reclocparam.xsl line 5 element value-of
-unregistered variable ok
-xmlXPathCompiledEval: evaluation failed
+Variable 'ok' has not been declared.
+XPath error : Undefined variable
runtime error: file ./reclocparam.xsl line 5 element value-of
-xsltValueOf: text copy failed
+XPath evaluation returned no result.
no result for ./reclocparam.xml
diff --git a/tests/reports/reclocparam.out b/tests/reports/reclocparam.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/reclocparam.out
+++ /dev/null
diff --git a/tests/reports/reclocvar.err b/tests/reports/reclocvar.err
index a02ccedf..b4d70c3f 100644
--- a/tests/reports/reclocvar.err
+++ b/tests/reports/reclocvar.err
@@ -1,6 +1,6 @@
runtime error: file ./reclocvar.xsl line 5 element value-of
-unregistered variable ok
-xmlXPathCompiledEval: evaluation failed
+Variable 'ok' has not been declared.
+XPath error : Undefined variable
runtime error: file ./reclocvar.xsl line 5 element value-of
-xsltValueOf: text copy failed
+XPath evaluation returned no result.
no result for ./reclocvar.xml
diff --git a/tests/reports/reclocvar.out b/tests/reports/reclocvar.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/reclocvar.out
+++ /dev/null
diff --git a/tests/reports/tst-1.out b/tests/reports/tst-1.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/tst-1.out
+++ /dev/null
diff --git a/tests/reports/tst-2.err b/tests/reports/tst-2.err
index d144c491..df8000e9 100644
--- a/tests/reports/tst-2.err
+++ b/tests/reports/tst-2.err
@@ -1,5 +1,5 @@
-compilation error: file ./tst-2.xsl line 2 element text
-misplaced text element: '
+compilation error: file ./tst-2.xsl line 6 element text
+misplaced text node: '
a not allowed top level element
diff --git a/tests/reports/tst-2.out b/tests/reports/tst-2.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/tst-2.out
+++ /dev/null
diff --git a/tests/reports/undefvar.err b/tests/reports/undefvar.err
index b18045ce..7395f26f 100644
--- a/tests/reports/undefvar.err
+++ b/tests/reports/undefvar.err
@@ -1,7 +1,6 @@
runtime error: file ./undefvar.xsl line 6 element value-of
-unregistered variable one
-xmlXPathCompOpEval: parameter error
-xmlXPathCompiledEval: 1 object left on the stack
+Variable 'one' has not been declared.
+XPath error : Undefined variable
runtime error: file ./undefvar.xsl line 6 element value-of
-xsltValueOf: text copy failed
+XPath evaluation returned no result.
no result for ./undefvar.xml
diff --git a/tests/reports/undefvar.out b/tests/reports/undefvar.out
deleted file mode 100644
index e69de29b..00000000
--- a/tests/reports/undefvar.out
+++ /dev/null
diff --git a/tests/runtest.c b/tests/runtest.c
new file mode 100644
index 00000000..ea088244
--- /dev/null
+++ b/tests/runtest.c
@@ -0,0 +1,879 @@
+/*
+ * runtest.c: libxslt test suite
+ *
+ * See Copyright for the status of this software.
+ */
+
+#include "config.h"
+
+#include <stdlib.h>
+#include <stdio.h>
+#include <string.h>
+#include <fcntl.h>
+#include <sys/stat.h>
+
+#ifdef _WIN32
+ #define WIN32_LEAN_AND_MEAN
+ #include <windows.h>
+ #include <io.h>
+#else
+ #include <unistd.h>
+ #include <glob.h>
+#endif
+
+#include <libxml/parser.h>
+#include <libxslt/extensions.h>
+#include <libxslt/transform.h>
+#include <libxslt/xsltInternals.h>
+#include <libxslt/xsltlocale.h>
+#include <libxslt/xsltutils.h>
+#include <libexslt/exslt.h>
+
+/*
+ * O_BINARY is just for Windows compatibility - if it isn't defined
+ * on this system, avoid any compilation error
+ */
+#ifdef O_BINARY
+#define RD_FLAGS O_RDONLY | O_BINARY
+#define WR_FLAGS O_WRONLY | O_CREAT | O_TRUNC | O_BINARY
+#else
+#define RD_FLAGS O_RDONLY
+#define WR_FLAGS O_WRONLY | O_CREAT | O_TRUNC
+#endif
+
+typedef int (*functest) (const char *filename, int options);
+
+typedef struct testDesc testDesc;
+typedef testDesc *testDescPtr;
+struct testDesc {
+ const char *desc; /* description of the test */
+ functest func; /* function implementing the test */
+ const char *dir; /* directory to change to */
+ const char *in; /* glob to path for input files */
+ int options; /* parser options for the test */
+};
+
+static int update_results = 0;
+static char* temp_directory = NULL;
+static int checkTestFile(const char *filename);
+
+#if defined(_WIN32)
+
+typedef struct
+{
+ size_t gl_pathc; /* Count of paths matched so far */
+ char **gl_pathv; /* List of matched pathnames. */
+ size_t gl_offs; /* Slots to reserve in 'gl_pathv'. */
+} glob_t;
+
+#define GLOB_DOOFFS 0
+static int glob(const char *pattern, ATTRIBUTE_UNUSED int flags,
+ ATTRIBUTE_UNUSED int errfunc(const char *epath, int eerrno),
+ glob_t *pglob) {
+ glob_t *ret;
+ WIN32_FIND_DATA FindFileData;
+ HANDLE hFind;
+ unsigned int nb_paths = 0;
+ char directory[500];
+ int len;
+
+ if ((pattern == NULL) || (pglob == NULL)) return(-1);
+
+ strncpy(directory, pattern, 499);
+ for (len = strlen(directory);len >= 0;len--) {
+ if (directory[len] == '/') {
+ len++;
+ directory[len] = 0;
+ break;
+ }
+ }
+ if (len <= 0)
+ len = 0;
+
+
+ ret = pglob;
+ memset(ret, 0, sizeof(glob_t));
+
+ hFind = FindFirstFileA(pattern, &FindFileData);
+ if (hFind == INVALID_HANDLE_VALUE)
+ return(0);
+ nb_paths = 20;
+ ret->gl_pathv = (char **) malloc(nb_paths * sizeof(char *));
+ if (ret->gl_pathv == NULL) {
+ FindClose(hFind);
+ return(-1);
+ }
+ strncpy(directory + len, FindFileData.cFileName, 499 - len);
+ ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+ if (ret->gl_pathv[ret->gl_pathc] == NULL)
+ goto done;
+ ret->gl_pathc++;
+ while(FindNextFileA(hFind, &FindFileData)) {
+ if (FindFileData.cFileName[0] == '.')
+ continue;
+ if (ret->gl_pathc + 2 > nb_paths) {
+ char **tmp = realloc(ret->gl_pathv, nb_paths * 2 * sizeof(char *));
+ if (tmp == NULL)
+ break;
+ ret->gl_pathv = tmp;
+ nb_paths *= 2;
+ }
+ strncpy(directory + len, FindFileData.cFileName, 499 - len);
+ ret->gl_pathv[ret->gl_pathc] = strdup(directory);
+ if (ret->gl_pathv[ret->gl_pathc] == NULL)
+ break;
+ ret->gl_pathc++;
+ }
+ ret->gl_pathv[ret->gl_pathc] = NULL;
+
+done:
+ FindClose(hFind);
+ return(0);
+}
+
+
+
+static void globfree(glob_t *pglob) {
+ unsigned int i;
+ if (pglob == NULL)
+ return;
+
+ for (i = 0;i < pglob->gl_pathc;i++) {
+ if (pglob->gl_pathv[i] != NULL)
+ free(pglob->gl_pathv[i]);
+ }
+}
+
+#endif
+
+/************************************************************************
+ * *
+ * Libxml2 specific routines *
+ * *
+ ************************************************************************/
+
+static int nb_tests = 0;
+static int nb_errors = 0;
+
+static int
+fatalError(void) {
+ fprintf(stderr, "Exiting tests on fatal error\n");
+ exit(1);
+}
+
+/*
+ * Trapping the error messages at the generic level to grab the equivalent of
+ * stderr messages on CLI tools.
+ */
+static char testErrors[32769];
+static int testErrorsSize = 0;
+
+static void XMLCDECL
+testErrorHandler(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
+ va_list args;
+ int res;
+
+ if (testErrorsSize >= 32768)
+ return;
+ va_start(args, msg);
+ res = vsnprintf(&testErrors[testErrorsSize],
+ 32768 - testErrorsSize,
+ msg, args);
+ va_end(args);
+ if (testErrorsSize + res >= 32768) {
+ /* buffer is full */
+ testErrorsSize = 32768;
+ testErrors[testErrorsSize] = 0;
+ } else {
+ testErrorsSize += res;
+ }
+ testErrors[testErrorsSize] = 0;
+}
+
+static void XMLCDECL
+channel(void *ctx ATTRIBUTE_UNUSED, const char *msg, ...) {
+ va_list args;
+ int res;
+
+ if (testErrorsSize >= 32768)
+ return;
+ va_start(args, msg);
+ res = vsnprintf(&testErrors[testErrorsSize],
+ 32768 - testErrorsSize,
+ msg, args);
+ va_end(args);
+ if (testErrorsSize + res >= 32768) {
+ /* buffer is full */
+ testErrorsSize = 32768;
+ testErrors[testErrorsSize] = 0;
+ } else {
+ testErrorsSize += res;
+ }
+ testErrors[testErrorsSize] = 0;
+}
+
+/**
+ * xmlParserPrintFileContext:
+ * @input: an xmlParserInputPtr input
+ *
+ * Displays current context within the input content for error tracking
+ */
+
+static void
+xmlParserPrintFileContextInternal(xmlParserInputPtr input ,
+ xmlGenericErrorFunc chanl, void *data ) {
+ const xmlChar *cur, *base;
+ unsigned int n, col; /* GCC warns if signed, because compared with sizeof() */
+ xmlChar content[81]; /* space for 80 chars + line terminator */
+ xmlChar *ctnt;
+
+ if (input == NULL) return;
+ cur = input->cur;
+ base = input->base;
+ /* skip backwards over any end-of-lines */
+ while ((cur > base) && ((*(cur) == '\n') || (*(cur) == '\r'))) {
+ cur--;
+ }
+ n = 0;
+ /* search backwards for beginning-of-line (to max buff size) */
+ while ((n++ < (sizeof(content)-1)) && (cur > base) &&
+ (*(cur) != '\n') && (*(cur) != '\r'))
+ cur--;
+ if ((*(cur) == '\n') || (*(cur) == '\r')) cur++;
+ /* calculate the error position in terms of the current position */
+ col = input->cur - cur;
+ /* search forward for end-of-line (to max buff size) */
+ n = 0;
+ ctnt = content;
+ /* copy selected text to our buffer */
+ while ((*cur != 0) && (*(cur) != '\n') &&
+ (*(cur) != '\r') && (n < sizeof(content)-1)) {
+ *ctnt++ = *cur++;
+ n++;
+ }
+ *ctnt = 0;
+ /* print out the selected text */
+ chanl(data ,"%s\n", content);
+ /* create blank line with problem pointer */
+ n = 0;
+ ctnt = content;
+ /* (leave buffer space for pointer + line terminator) */
+ while ((n<col) && (n++ < sizeof(content)-2) && (*ctnt != 0)) {
+ if (*(ctnt) != '\t')
+ *(ctnt) = ' ';
+ ctnt++;
+ }
+ *ctnt++ = '^';
+ *ctnt = 0;
+ chanl(data ,"%s\n", content);
+}
+
+static void
+testStructuredErrorHandler(void *ctx ATTRIBUTE_UNUSED, const xmlError *err) {
+ char *file = NULL;
+ int line = 0;
+ int code = -1;
+ int domain;
+ void *data = NULL;
+ const char *str;
+ const xmlChar *name = NULL;
+ xmlNodePtr node;
+ xmlErrorLevel level;
+ xmlParserInputPtr input = NULL;
+ xmlParserInputPtr cur = NULL;
+ xmlParserCtxtPtr ctxt = NULL;
+
+ if (err == NULL)
+ return;
+
+ file = err->file;
+ line = err->line;
+ code = err->code;
+ domain = err->domain;
+ level = err->level;
+ node = err->node;
+ if ((domain == XML_FROM_PARSER) || (domain == XML_FROM_HTML) ||
+ (domain == XML_FROM_DTD) || (domain == XML_FROM_NAMESPACE) ||
+ (domain == XML_FROM_IO) || (domain == XML_FROM_VALID)) {
+ ctxt = err->ctxt;
+ }
+ str = err->message;
+
+ if (code == XML_ERR_OK)
+ return;
+
+ if ((node != NULL) && (node->type == XML_ELEMENT_NODE))
+ name = node->name;
+
+ /*
+ * Maintain the compatibility with the legacy error handling
+ */
+ if (ctxt != NULL) {
+ input = ctxt->input;
+ if ((input != NULL) && (input->filename == NULL) &&
+ (ctxt->inputNr > 1)) {
+ cur = input;
+ input = ctxt->inputTab[ctxt->inputNr - 2];
+ }
+ if (input != NULL) {
+ if (input->filename)
+ channel(data, "%s:%d: ", input->filename, input->line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: ", input->line);
+ }
+ } else {
+ if (file != NULL)
+ channel(data, "%s:%d: ", file, line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: ", line);
+ }
+ if (name != NULL) {
+ channel(data, "element %s: ", name);
+ }
+ if (code == XML_ERR_OK)
+ return;
+ switch (domain) {
+ case XML_FROM_PARSER:
+ channel(data, "parser ");
+ break;
+ case XML_FROM_NAMESPACE:
+ channel(data, "namespace ");
+ break;
+ case XML_FROM_DTD:
+ case XML_FROM_VALID:
+ channel(data, "validity ");
+ break;
+ case XML_FROM_HTML:
+ channel(data, "HTML parser ");
+ break;
+ case XML_FROM_MEMORY:
+ channel(data, "memory ");
+ break;
+ case XML_FROM_OUTPUT:
+ channel(data, "output ");
+ break;
+ case XML_FROM_IO:
+ channel(data, "I/O ");
+ break;
+ case XML_FROM_XINCLUDE:
+ channel(data, "XInclude ");
+ break;
+ case XML_FROM_XPATH:
+ channel(data, "XPath ");
+ break;
+ case XML_FROM_XPOINTER:
+ channel(data, "parser ");
+ break;
+ case XML_FROM_REGEXP:
+ channel(data, "regexp ");
+ break;
+ case XML_FROM_MODULE:
+ channel(data, "module ");
+ break;
+ case XML_FROM_SCHEMASV:
+ channel(data, "Schemas validity ");
+ break;
+ case XML_FROM_SCHEMASP:
+ channel(data, "Schemas parser ");
+ break;
+ case XML_FROM_RELAXNGP:
+ channel(data, "Relax-NG parser ");
+ break;
+ case XML_FROM_RELAXNGV:
+ channel(data, "Relax-NG validity ");
+ break;
+ case XML_FROM_CATALOG:
+ channel(data, "Catalog ");
+ break;
+ case XML_FROM_C14N:
+ channel(data, "C14N ");
+ break;
+ case XML_FROM_XSLT:
+ channel(data, "XSLT ");
+ break;
+ default:
+ break;
+ }
+ if (code == XML_ERR_OK)
+ return;
+ switch (level) {
+ case XML_ERR_NONE:
+ channel(data, ": ");
+ break;
+ case XML_ERR_WARNING:
+ channel(data, "warning : ");
+ break;
+ case XML_ERR_ERROR:
+ channel(data, "error : ");
+ break;
+ case XML_ERR_FATAL:
+ channel(data, "error : ");
+ break;
+ }
+ if (code == XML_ERR_OK)
+ return;
+ if (str != NULL) {
+ int len;
+ len = xmlStrlen((const xmlChar *)str);
+ if ((len > 0) && (str[len - 1] != '\n'))
+ channel(data, "%s\n", str);
+ else
+ channel(data, "%s", str);
+ } else {
+ channel(data, "%s\n", "out of memory error");
+ }
+ if (code == XML_ERR_OK)
+ return;
+
+ if (ctxt != NULL) {
+ xmlParserPrintFileContextInternal(input, channel, data);
+ if (cur != NULL) {
+ if (cur->filename)
+ channel(data, "%s:%d: \n", cur->filename, cur->line);
+ else if ((line != 0) && (domain == XML_FROM_PARSER))
+ channel(data, "Entity: line %d: \n", cur->line);
+ xmlParserPrintFileContextInternal(cur, channel, data);
+ }
+ }
+ if ((domain == XML_FROM_XPATH) && (err->str1 != NULL) &&
+ (err->int1 < 100) &&
+ (err->int1 < xmlStrlen((const xmlChar *)err->str1))) {
+ xmlChar buf[150];
+ int i;
+
+ channel(data, "%s\n", err->str1);
+ for (i=0;i < err->int1;i++)
+ buf[i] = ' ';
+ buf[i++] = '^';
+ buf[i] = 0;
+ channel(data, "%s\n", buf);
+ }
+}
+
+static void
+initializeLibxml2(void) {
+ xmlInitParser();
+ xmlSetExternalEntityLoader(xmlNoNetExternalEntityLoader);
+ xmlSetGenericErrorFunc(NULL, testErrorHandler);
+ xsltSetGenericErrorFunc(NULL, testErrorHandler);
+ xmlSetStructuredErrorFunc(NULL, testStructuredErrorHandler);
+ exsltRegisterAll();
+ xsltRegisterTestModule();
+ xsltMaxDepth = 200;
+}
+
+
+/************************************************************************
+ * *
+ * File name and path utilities *
+ * *
+ ************************************************************************/
+
+static char *
+changeSuffix(const char *filename, const char *suffix) {
+ const char *dot;
+ char *ret;
+ char res[500];
+ int baseLen;
+
+ dot = strrchr(filename, '.');
+ baseLen = dot ? dot - filename : (int) strlen(filename);
+ snprintf(res, sizeof(res), "%.*s%s", baseLen, filename, suffix);
+
+ ret = strdup(res);
+ if (ret == NULL) {
+ fprintf(stderr, "strdup failed\n");
+ fatalError();
+ }
+
+ return(ret);
+}
+
+static int
+checkTestFile(const char *filename) {
+ struct stat buf;
+
+ if (stat(filename, &buf) == -1)
+ return(0);
+
+#if defined(_WIN32)
+ if (!(buf.st_mode & _S_IFREG))
+ return(0);
+#else
+ if (!S_ISREG(buf.st_mode))
+ return(0);
+#endif
+
+ return(1);
+}
+
+static int compareFileMem(const char *filename, const char *mem, int size) {
+ int res;
+ int fd;
+ char bytes[4096];
+ int idx = 0;
+ struct stat info;
+
+ if (update_results) {
+ if (size == 0) {
+ unlink(filename);
+ return(0);
+ }
+ fd = open(filename, WR_FLAGS, 0644);
+ if (fd < 0) {
+ fprintf(stderr, "failed to open %s for writing", filename);
+ return(-1);
+ }
+ res = write(fd, mem, size);
+ close(fd);
+ return(res != size);
+ }
+
+ if (stat(filename, &info) < 0) {
+ if (size == 0)
+ return(0);
+ fprintf(stderr, "failed to stat %s\n", filename);
+ return(-1);
+ }
+ if (info.st_size != size) {
+ fprintf(stderr, "file %s is %ld bytes, result is %d bytes\n",
+ filename, (long) info.st_size, size);
+ return(-1);
+ }
+ fd = open(filename, RD_FLAGS);
+ if (fd < 0) {
+ fprintf(stderr, "failed to open %s for reading", filename);
+ return(-1);
+ }
+ while (idx < size) {
+ res = read(fd, bytes, 4096);
+ if (res <= 0)
+ break;
+ if (res + idx > size)
+ break;
+ if (memcmp(bytes, &mem[idx], res) != 0) {
+ int ix;
+ for (ix=0; ix<res; ix++)
+ if (bytes[ix] != mem[idx+ix])
+ break;
+ fprintf(stderr,"Compare error at position %d\n", idx+ix);
+ close(fd);
+ return(1);
+ }
+ idx += res;
+ }
+ close(fd);
+ if (idx != size) {
+ fprintf(stderr,"Compare error index %d, size %d\n", idx, size);
+ }
+ return(idx != size);
+}
+
+/************************************************************************
+ * *
+ * Tests implementations *
+ * *
+ ************************************************************************/
+
+/************************************************************************
+ * *
+ * XSLT tests *
+ * *
+ ************************************************************************/
+
+static int
+xsltTest(const char *filename, int options) {
+ xsltStylesheetPtr style;
+ xmlDocPtr styleDoc, doc = NULL, outDoc;
+ xmlChar *out = NULL;
+ const char *outSuffix, *errSuffix;
+ char *docFilename, *outFilename, *errFilename;
+ int outSize = 0;
+ int res;
+ int ret = 0;
+
+ if (strcmp(filename, "./test-10-3.xsl") == 0) {
+ void *locale = xsltNewLocale(BAD_CAST "de", 0);
+ /* Skip test requiring "de" locale */
+ if (locale == NULL)
+ return(0);
+ xsltFreeLocale(locale);
+ }
+
+ styleDoc = xmlReadFile(filename, NULL, XSLT_PARSE_OPTIONS | options);
+ style = xsltLoadStylesheetPI(styleDoc);
+ if (style != NULL) {
+ /* Standalone stylesheet */
+ doc = styleDoc;
+ docFilename = strdup(filename);
+
+ outSuffix = ".stand.out";
+ errSuffix = ".stand.err";
+ } else {
+ docFilename = changeSuffix(filename, ".xml");
+ if (!checkTestFile(docFilename)) {
+ xmlFreeDoc(styleDoc);
+ goto out;
+ }
+ style = xsltParseStylesheetDoc(styleDoc);
+ if (style == NULL) {
+ xmlFreeDoc(styleDoc);
+ } else {
+ doc = xmlReadFile(docFilename, NULL, XSLT_PARSE_OPTIONS | options);
+ }
+
+ outSuffix = ".out";
+ errSuffix = ".err";
+ }
+
+ if (style != NULL) {
+ const char *params[] = {
+ "test", "'passed_value'",
+ "test2", "'passed_value2'",
+ NULL
+ };
+
+ outDoc = xsltApplyStylesheet(style, doc, params);
+ if (outDoc == NULL) {
+ /* xsltproc compat */
+ channel(NULL, "no result for %s\n", docFilename);
+ } else {
+ xsltSaveResultToString(&out, &outSize, outDoc, style);
+ xmlFreeDoc(outDoc);
+ }
+ xsltFreeStylesheet(style);
+ }
+ xmlFreeDoc(doc);
+
+ outFilename = changeSuffix(filename, outSuffix);
+ res = compareFileMem(outFilename, (char *) out, outSize);
+ if (res != 0) {
+ fprintf(stderr, "Result for %s failed\n", filename);
+ /* printf("####\n%s####\n", out); */
+ ret = -1;
+ }
+ free(outFilename);
+ xmlFree(out);
+
+ errFilename = changeSuffix(filename, errSuffix);
+ res = compareFileMem(errFilename, testErrors, testErrorsSize);
+ if (res != 0) {
+ fprintf(stderr, "Error for %s failed\n", filename);
+ /* printf("####\n%s####\n", testErrors); */
+ ret = -1;
+ }
+ free(errFilename);
+
+out:
+ free(docFilename);
+ return(ret);
+}
+
+/************************************************************************
+ * *
+ * Tests Descriptions *
+ * *
+ ************************************************************************/
+
+static
+testDesc testDescriptions[] = {
+ { "REC2 tests",
+ xsltTest, "REC2", "./*.xsl", 0 },
+ { "REC tests",
+ xsltTest, "REC", "./*.xsl", 0 },
+ { "REC tests (standalone)",
+ xsltTest, "REC", "./stand*.xml", 0 },
+ { "REC tests without dictionaries",
+ xsltTest, "REC", "./*.xsl", XML_PARSE_NODICT },
+ { "REC tests without dictionaries (standalone)",
+ xsltTest, "REC", "./stand*.xml", XML_PARSE_NODICT },
+ { "general tests",
+ xsltTest, "general", "./*.xsl", 0 },
+ { "general tests without dictionaries",
+ xsltTest, "general", "./*.xsl", XML_PARSE_NODICT },
+#if defined(LIBXML_ICONV_ENABLED) || defined(LIBXML_ICU_ENABLED)
+ { "encoding tests",
+ xsltTest, "encoding", "./*.xsl", 0 },
+#endif
+ { "documents tests",
+ xsltTest, "documents", "./*.xsl", 0 },
+ { "numbers tests",
+ xsltTest, "numbers", "./*.xsl", 0 },
+ { "keys tests",
+ xsltTest, "keys", "./*.xsl", 0 },
+ { "namespaces tests",
+ xsltTest, "namespaces", "./*.xsl", 0 },
+ { "extensions tests",
+ xsltTest, "extensions", "./*.xsl", 0 },
+ { "reports tests",
+ xsltTest, "reports", "./*.xsl", 0 },
+ { "exslt common tests",
+ xsltTest, "exslt/common", "./*.xsl", 0 },
+#if defined(EXSLT_CRYPTO_ENABLED) && !defined(_WIN32)
+ { "exslt crypto tests",
+ xsltTest, "exslt/crypto", "./*.xsl", 0 },
+#endif
+ { "exslt date tests",
+ xsltTest, "exslt/date", "./*.xsl", 0 },
+ { "exslt dynamic tests",
+ xsltTest, "exslt/dynamic", "./*.xsl", 0 },
+ { "exslt functions tests",
+ xsltTest, "exslt/functions", "./*.xsl", 0 },
+ { "exslt math tests",
+ xsltTest, "exslt/math", "./*.xsl", 0 },
+ { "exslt saxon tests",
+ xsltTest, "exslt/saxon", "./*.xsl", 0 },
+ { "exslt sets tests",
+ xsltTest, "exslt/sets", "./*.xsl", 0 },
+ { "exslt strings tests",
+ xsltTest, "exslt/strings", "./*.xsl", 0 },
+#ifdef LIBXSLT_DEFAULT_PLUGINS_PATH
+ { "plugin tests",
+ xsltTest, "plugins", "./*.xsl", 0 },
+#endif
+ {NULL, NULL, NULL, NULL, 0}
+};
+
+/************************************************************************
+ * *
+ * The main code driving the tests *
+ * *
+ ************************************************************************/
+
+static int
+launchTests(testDescPtr tst) {
+ int res = 0, err = 0;
+ size_t i;
+ char oldDir[500] = {0};
+
+ if (tst->dir) {
+ if (getcwd(oldDir, sizeof(oldDir)) == NULL) {
+ fprintf(stderr, "Can't can't get current directory\n");
+ nb_errors++;
+ return(1);
+ }
+ if (chdir(tst->dir) < 0) {
+ fprintf(stderr, "Can't change directory to %s\n", tst->dir);
+ nb_errors++;
+ return(1);
+ }
+ }
+
+ if (tst->in != NULL) {
+ glob_t globbuf;
+
+ globbuf.gl_offs = 0;
+ glob(tst->in, GLOB_DOOFFS, NULL, &globbuf);
+ for (i = 0;i < globbuf.gl_pathc;i++) {
+ testErrorsSize = 0;
+ testErrors[0] = 0;
+ nb_tests++;
+ res = tst->func(globbuf.gl_pathv[i], tst->options);
+ xmlResetLastError();
+ if (res != 0) {
+ fprintf(stderr, "File %s generated an error\n",
+ globbuf.gl_pathv[i]);
+ nb_errors++;
+ err++;
+ }
+ testErrorsSize = 0;
+ }
+ globfree(&globbuf);
+ } else {
+ testErrorsSize = 0;
+ testErrors[0] = 0;
+ nb_tests++;
+ res = tst->func(NULL, tst->options);
+ if (res != 0) {
+ nb_errors++;
+ err++;
+ }
+ }
+
+ if (oldDir[0] && chdir(oldDir) < 0) {
+ fprintf(stderr, "Can't change directory to %s\n", oldDir);
+ nb_errors++;
+ err++;
+ }
+
+ return(err);
+}
+
+static int verbose = 0;
+static int tests_quiet = 0;
+
+static int
+runtest(int i) {
+ int ret = 0, res;
+ int old_errors, old_tests;
+
+ old_errors = nb_errors;
+ old_tests = nb_tests;
+ if ((tests_quiet == 0) && (testDescriptions[i].desc != NULL))
+ printf("## Running %s\n", testDescriptions[i].desc);
+ res = launchTests(&testDescriptions[i]);
+ if (res != 0)
+ ret++;
+ if (verbose) {
+ if (nb_errors == old_errors)
+ printf("Ran %d tests, no errors\n", nb_tests - old_tests);
+ else
+ printf("Ran %d tests, %d errors\n",
+ nb_tests - old_tests,
+ nb_errors - old_errors);
+ }
+ return(ret);
+}
+
+int
+main(int argc ATTRIBUTE_UNUSED, char **argv ATTRIBUTE_UNUSED) {
+ int i, a, ret = 0;
+ int subset = 0;
+
+#if defined(_WIN32)
+ setvbuf(stdout, NULL, _IONBF, 0);
+ setvbuf(stderr, NULL, _IONBF, 0);
+#endif
+
+#if defined(_MSC_VER) && _MSC_VER >= 1400 && _MSC_VER < 1900
+ _set_output_format(_TWO_DIGIT_EXPONENT);
+#endif
+
+ initializeLibxml2();
+
+ for (a = 1; a < argc;a++) {
+ if (!strcmp(argv[a], "-v"))
+ verbose = 1;
+ else if (!strcmp(argv[a], "-u"))
+ update_results = 1;
+ else if (!strcmp(argv[a], "-quiet"))
+ tests_quiet = 1;
+ else if (!strcmp(argv[a], "--out"))
+ temp_directory = argv[++a];
+ else {
+ for (i = 0; testDescriptions[i].func != NULL; i++) {
+ if (strstr(testDescriptions[i].desc, argv[a])) {
+ ret += runtest(i);
+ subset++;
+ }
+ }
+ }
+ }
+ if (subset == 0) {
+ for (i = 0; testDescriptions[i].func != NULL; i++) {
+ ret += runtest(i);
+ }
+ }
+ if (nb_errors == 0) {
+ ret = 0;
+ printf("Total %d tests, no errors\n",
+ nb_tests);
+ } else {
+ ret = 1;
+ printf("Total %d tests, %d errors\n",
+ nb_tests, nb_errors);
+ }
+ xmlCleanupParser();
+
+ return(ret);
+}
diff --git a/tests/plugins/testplugin.c b/tests/testplugin.c
index 315d78b2..315d78b2 100644
--- a/tests/plugins/testplugin.c
+++ b/tests/testplugin.c
diff --git a/tests/xinclude/Makefile.am b/tests/xinclude/Makefile.am
index 35624548..81b67241 100644
--- a/tests/xinclude/Makefile.am
+++ b/tests/xinclude/Makefile.am
@@ -13,11 +13,7 @@ EXTRA_DIST = \
CLEANFILES = .memdump
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
+check-local: $(top_builddir)/xsltproc/xsltproc
@echo '## Running XInclude test'
@(echo > .memdump)
@($(CHECKER) $(top_builddir)/xsltproc/xsltproc $(srcdir)/e.xsl $(srcdir)/e.xml > res ; \
diff --git a/tests/xmlspec/Makefile.am b/tests/xmlspec/Makefile.am
index 9770058c..8b813293 100644
--- a/tests/xmlspec/Makefile.am
+++ b/tests/xmlspec/Makefile.am
@@ -9,11 +9,7 @@ EXTRA_DIST = REC-xml-20001006.xml xmlspec-v21.dtd W3C-REC.css \
CLEANFILES = .memdump debug
-valgrind:
- @echo '## Running the regression tests under Valgrind'
- $(MAKE) CHECKER='libtool --mode=execute valgrind -q --leak-check=full' tests
-
-test tests: $(top_builddir)/xsltproc/xsltproc
+check-local: $(top_builddir)/xsltproc/xsltproc
@echo '## Running xmlspec tests'
@(echo > .memdump)
@log=`$(CHECKER) $(top_builddir)/xsltproc/xsltproc -timing \
diff --git a/win32/Makefile.msvc b/win32/Makefile.msvc
index 1f876684..5582afcf 100644
--- a/win32/Makefile.msvc
+++ b/win32/Makefile.msvc
@@ -29,13 +29,11 @@ XSLT_NAME = xslt
XSLT_BASENAME = lib$(XSLT_NAME)
XSLT_SO = $(XSLT_BASENAME).dll
XSLT_IMP = $(XSLT_BASENAME).lib
-XSLT_DEF = $(XSLT_BASENAME).def
XSLT_A = $(XSLT_BASENAME)_a.lib
EXSLT_NAME = exslt
EXSLT_BASENAME = lib$(EXSLT_NAME)
EXSLT_SO = $(EXSLT_BASENAME).dll
EXSLT_IMP = $(EXSLT_BASENAME).lib
-EXSLT_DEF = $(EXSLT_BASENAME).def
EXSLT_A = $(EXSLT_BASENAME)_a.lib
# Places where intermediate files produced by the compiler go
@@ -238,24 +236,14 @@ $(XSLT_OBJS) : $(XSLT_INTDIR)
# Compiles static libxslt source. Uses the implicit rule for commands.
$(XSLT_OBJS_A) : $(XSLT_INTDIR_A)
-# Creates the export definition file (DEF) for libxslt.
-$(XSLT_INTDIR)\$(XSLT_DEF) : $(XSLT_INTDIR) $(XSLT_DEF).src
- $(CPP) $(CPPFLAGS) $(XSLT_DEF).src > $(XSLT_INTDIR)\$(XSLT_DEF)
-
# Creates the libxslt shared object.
-$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF)
+$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS)
$(LD) $(LDFLAGS) /DLL \
/VERSION:$(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION) \
/IMPLIB:$(BINDIR)\$(XSLT_IMP) /OUT:$(BINDIR)\$(XSLT_SO) \
$(XSLT_OBJS) $(LIBS) libxml2.lib
@$(_VC_MANIFEST_EMBED_DLL)
-#$(BINDIR)\$(XSLT_SO) : $(BINDIR) $(XSLT_OBJS) $(XSLT_INTDIR)\$(XSLT_DEF)
-# $(LD) $(LDFLAGS) /DLL /DEF:$(XSLT_INTDIR)\$(XSLT_DEF) \
-# /VERSION:$(LIBXSLT_MAJOR_VERSION).$(LIBXSLT_MINOR_VERSION) \
-# /IMPLIB:$(BINDIR)\$(XSLT_IMP) /OUT:$(BINDIR)\$(XSLT_SO) \
-# $(XSLT_OBJS) $(LIBS) libxml2.lib
-
# Creates the libxslt archive.
$(BINDIR)\$(XSLT_A) : $(BINDIR) $(XSLT_OBJS_A)
$(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(XSLT_A) $(XSLT_OBJS_A)
@@ -284,24 +272,14 @@ $(EXSLT_OBJS) : $(EXSLT_INTDIR)
# Compiles libxslt source. Uses the implicit rule for commands.
$(EXSLT_OBJS_A) : $(EXSLT_INTDIR_A)
-# Creates the export definition file (DEF) for libxslt.
-$(EXSLT_INTDIR)\$(EXSLT_DEF) : $(EXSLT_INTDIR) $(EXSLT_DEF).src
- $(CPP) $(CPPFLAGS) $(EXSLT_DEF).src > $(EXSLT_INTDIR)\$(EXSLT_DEF)
-
# Creates the libexslt shared object.
-$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt
+$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) libxslt
$(LD) $(LDFLAGS) /DLL \
/VERSION:$(LIBEXSLT_MAJOR_VERSION).$(LIBEXSLT_MINOR_VERSION) \
/IMPLIB:$(BINDIR)\$(EXSLT_IMP) /OUT:$(BINDIR)\$(EXSLT_SO) \
$(EXSLT_OBJS) $(XSLT_IMP) $(LIBS) libxml2.lib
@$(_VC_MANIFEST_EMBED_DLL)
-#$(BINDIR)\$(EXSLT_SO) : $(BINDIR) $(EXSLT_OBJS) $(EXSLT_INTDIR)\$(EXSLT_DEF) libxslt
-# $(LD) $(LDFLAGS) /DLL /DEF:$(EXSLT_INTDIR)\$(EXSLT_DEF) \
-# /VERSION:$(LIBEXSLT_MAJOR_VERSION).$(LIBEXSLT_MINOR_VERSION) \
-# /IMPLIB:$(BINDIR)\$(EXSLT_IMP) /OUT:$(BINDIR)\$(EXSLT_SO) \
-# $(EXSLT_OBJS) $(XSLT_IMP) $(LIBS) libxml2.lib
-
# Creates the libexslt archive.
$(BINDIR)\$(EXSLT_A) : $(BINDIR) $(EXSLT_OBJS_A) libxslta
$(AR) $(ARFLAGS) /OUT:$(BINDIR)\$(EXSLT_A) $(EXSLT_OBJS_A)
diff --git a/win32/Readme.txt b/win32/Readme.txt
index e979294f..2a6a97c1 100644
--- a/win32/Readme.txt
+++ b/win32/Readme.txt
@@ -84,8 +84,8 @@ what in Gods name do I mean with '*.h files and their *.h.in sources',
then you really should do an automatic configuration. Which files must
be generated and what needs to be done with their sources in order to
generate them is something people who have built this software before
-allready know. You will not find any explanations for that
-here. Please configure the source manually only if you allready know
+already know. You will not find any explanations for that
+here. Please configure the source manually only if you already know
what you must do. Otherwise, you have the choice of either getting a
precompiled binary distribution, or performing the automatic
configuration.
@@ -98,7 +98,7 @@ After the configuration stage has been completed, you want to build
the software. You will have to use the make tool which comes with
your compiler. If you, for example, configured the source to build
with Microsoft's MSVC compiler, you would use the NMAKE utility. If
-żou configured it to build with GNU C compiler, mingw edition, you
+you configured it to build with GNU C compiler, mingw edition, you
would use the GNU make. Assuming you use MSVC, type
nmake
diff --git a/win32/configure.js b/win32/configure.js
index 66986b04..22f65593 100644
--- a/win32/configure.js
+++ b/win32/configure.js
@@ -36,6 +36,7 @@ var verMicroXslt;
var verMajorExslt;
var verMinorExslt;
var verMicroExslt;
+var verLibxmlReq;
var verCvs;
var useCvsVer = true;
/* Libxslt features. */
@@ -48,6 +49,7 @@ var withZlib = false;
var withCrypto = true;
var withModules = false;
var withProfiler = true;
+var withPython = false;
/* Win32 build options. */
var dirSep = "\\";
var compiler = "msvc";
@@ -108,6 +110,7 @@ function usage()
txt += " crypto: Enable Crypto support (" + (withCrypto? "yes" : "no") + ")\n";
txt += " modules: Enable Module support (" + (withModules? "yes" : "no") + ")\n";
txt += " profiler: Enable Profiler support (" + (withProfiler? "yes" : "no") + ")\n";
+ txt += " python: Build Python bindings (" + (withPython? "yes" : "no") + ")\n";
txt += "\nWin32 build options, default value given in parentheses:\n\n";
txt += " compiler: Compiler to be used [msvc|mingw] (" + compiler + ")\n";
txt += " cruntime: C-runtime compiler option (only msvc) (" + cruntime + ")\n";
@@ -169,6 +172,9 @@ function discoverVersion()
} else if(s.search(/^LIBEXSLT_MICRO_VERSION=/) != -1) {
vf.WriteLine(s);
verMicroExslt = s.substring(s.indexOf("=") + 1, s.length);
+ } else if(s.search(/^LIBXML_REQUIRED_VERSION=/) != -1) {
+ vf.WriteLine(s);
+ verLibxmlReq = s.substring(s.indexOf("=") + 1, s.length);
}
}
cf.Close();
@@ -181,6 +187,7 @@ function discoverVersion()
vf.WriteLine("WITH_CRYPTO=" + (withCrypto? "1" : "0"));
vf.WriteLine("WITH_MODULES=" + (withModules? "1" : "0"));
vf.WriteLine("WITH_PROFILER=" + (withProfiler? "1" : "0"));
+ vf.WriteLine("WITH_PYTHON=" + (withPython? "1" : "0"));
vf.WriteLine("DEBUG=" + (buildDebug? "1" : "0"));
vf.WriteLine("STATIC=" + (buildStatic? "1" : "0"));
vf.WriteLine("PREFIX=" + buildPrefix);
@@ -270,6 +277,51 @@ function configureExslt()
of.Close();
}
+/* Configures Python bindings. Otherwise identical to the above */
+function configureLibxsltPy()
+{
+ var pyOptsFileIn = baseDir + "\\python\\setup.py.in";
+ var pyOptsFile = baseDir + "\\python\\setup.py";
+ var fso, ofi, of, ln, s;
+ fso = new ActiveXObject("Scripting.FileSystemObject");
+ ofi = fso.OpenTextFile(pyOptsFileIn, 1);
+ of = fso.CreateTextFile(pyOptsFile, true);
+ while (ofi.AtEndOfStream != true) {
+ ln = ofi.ReadLine();
+ s = new String(ln);
+ if (s.search(/\@VERSION\@/) != -1) {
+ of.WriteLine(s.replace(/\@VERSION\@/,
+ verMajorXslt + "." + verMinorXslt + "." + verMicroXslt));
+ } else if (s.search(/\@prefix\@/) != -1) {
+ of.WriteLine(s.replace(/\@prefix\@/, buildPrefix));
+ } else if (s.search(/\@LIBXSLT_VERSION_NUMBER\@/) != -1) {
+ of.WriteLine(s.replace(/\@LIBXSLT_VERSION_NUMBER\@/,
+ verMajorXslt*10000 + verMinorXslt*100 + verMicroXslt*1));
+ } else if (s.search(/\@LIBXSLT_VERSION_EXTRA\@/) != -1) {
+ of.WriteLine(s.replace(/\@LIBXSLT_VERSION_EXTRA\@/, verCvs));
+ } else if (s.search(/\@WITH_TRIO\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_TRIO\@/, withTrio? "1" : "0"));
+ } else if (s.search(/\@WITH_XSLT_DEBUG\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_XSLT_DEBUG\@/, withXsltDebug? "1" : "0"));
+ } else if (s.search(/\@WITH_MEM_DEBUG\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_MEM_DEBUG\@/, withMemDebug? "1" : "0"));
+ } else if (s.search(/\@WITH_DEBUGGER\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_DEBUGGER\@/, withDebugger? "1" : "0"));
+ } else if (s.search(/\@WITH_MODULES\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_MODULES\@/, withModules? "1" : "0"));
+ } else if (s.search(/\@WITH_PROFILER\@/) != -1) {
+ of.WriteLine(s.replace(/\@WITH_PROFILER\@/, withProfiler? "1" : "0"));
+ } else if (s.search(/\@LIBXSLT_DEFAULT_PLUGINS_PATH\@/) != -1) {
+ of.WriteLine(s.replace(/\@LIBXSLT_DEFAULT_PLUGINS_PATH\@/, "NULL"));
+ } else if (s.search(/\@LIBXML_REQUIRED_VERSION\@/) != -1) {
+ of.WriteLine(s.replace(/\@LIBXML_REQUIRED_VERSION\@/, verLibxmlReq));
+ } else
+ of.WriteLine(ln);
+ }
+ ofi.Close();
+ of.Close();
+}
+
/* Creates the readme file for the binary distribution of 'bname', for the
version 'ver' in the file 'file'. This one is called from the Makefile when
generating a binary distribution. The parameters are passed by make. */
@@ -336,6 +388,8 @@ for (i = 0; (i < WScript.Arguments.length) && (error == 0); i++) {
withModules = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "profiler")
withProfiler = strToBool(arg.substring(opt.length + 1, arg.length));
+ else if (opt == "python")
+ withPython = strToBool(arg.substring(opt.length + 1, arg.length));
else if (opt == "compiler")
compiler = arg.substring(opt.length + 1, arg.length);
else if (opt == "cruntime")
@@ -432,6 +486,15 @@ if (error != 0) {
WScript.Quit(error);
}
+if (withPython == true) {
+ configureLibxsltPy();
+ if (error != 0) {
+ WScript.Echo("Configuration failed, aborting.");
+ WScript.Quit(error);
+ }
+
+}
+
// Configure libexslt.
configureExslt();
if (error != 0) {
@@ -469,6 +532,7 @@ txtOut += " With zlib: " + boolToStr(withZlib) + "\n";
txtOut += " Crypto: " + boolToStr(withCrypto) + "\n";
txtOut += " Modules: " + boolToStr(withModules) + "\n";
txtOut += " Profiler: " + boolToStr(withProfiler) + "\n";
+txtOut += " Python bindings: " + boolToStr(withPython) + "\n";
txtOut += "\n";
txtOut += "Win32 build configuration\n";
txtOut += "-------------------------\n";
diff --git a/win32/defgen.xsl b/win32/defgen.xsl
deleted file mode 100644
index 6a295374..00000000
--- a/win32/defgen.xsl
+++ /dev/null
@@ -1,44 +0,0 @@
-<?xml version="1.0"?>
-<!--
- win32/defgen.xsl
- This stylesheet is used to transform doc/lib[e]xslt-api.xml into a pseudo-source,
- which can then be preprocessed to get the .DEF file for the Microsoft's linker.
-
- Use any XSLT processor to produce a file called lib[e]xslt.def.src in the win32
- subdirectory, for example, run xsltproc from the win32 subdirectory:
-
- xsltproc -o libxslt.def.src defgen.xsl ../doc/libxslt-api.xml
- xsltproc -o libexslt.def.src defgen.xsl ../doc/libexslt-api.xml
-
- Once that finishes, rest assured, the Makefile will know what to do with the
- generated file.
-
- May 2003, Igor Zlatkovic <igor@zlatkovic.com>
--->
-<!DOCTYPE xsl:stylesheet [ <!ENTITY nl '&#xd;&#xa;'> ]>
-<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
- <xsl:strip-space elements="*"/>
- <xsl:output method="text"/>
- <xsl:template match="/">
- <xsl:text>LIBRARY </xsl:text>
- <xsl:value-of select="/api/@name"/>
- <xsl:text>&nl;</xsl:text>
- <xsl:text>EXPORTS&nl;</xsl:text>
- <xsl:for-each select="/api/symbols/*[self::variable or self::function]">
- <xsl:if test="@name='xsltExtFunctionLookup' or
- @name='xsltMatchPattern'">
- <xsl:text>/*</xsl:text>
- </xsl:if>
- <xsl:value-of select="@name"/>
- <xsl:if test="self::variable">
- <xsl:text> DATA</xsl:text>
- </xsl:if>
- <xsl:if test="@name='xsltExtFunctionLookup' or
- @name='xsltMatchPattern'">
- <xsl:text>*/</xsl:text>
- </xsl:if>
- <xsl:text>&nl;</xsl:text>
- </xsl:for-each>
- </xsl:template>
-</xsl:stylesheet>
-
diff --git a/win32/libexslt.def.src b/win32/libexslt.def.src
deleted file mode 100644
index cb02e028..00000000
--- a/win32/libexslt.def.src
+++ /dev/null
@@ -1,20 +0,0 @@
-LIBRARY libexslt
-EXPORTS
-exsltLibexsltVersion DATA
-exsltLibraryVersion DATA
-exsltLibxmlVersion DATA
-exsltLibxsltVersion DATA
-exsltCommonRegister
-exsltCryptoRegister
-exsltDateRegister
-exsltDateXpathCtxtRegister
-exsltDynRegister
-exsltFuncRegister
-exsltMathRegister
-exsltMathXpathCtxtRegister
-exsltRegisterAll
-exsltSaxonRegister
-exsltSetsRegister
-exsltSetsXpathCtxtRegister
-exsltStrRegister
-exsltStrXpathCtxtRegister
diff --git a/win32/libxslt.def.src b/win32/libxslt.def.src
deleted file mode 100644
index b4846a6b..00000000
--- a/win32/libxslt.def.src
+++ /dev/null
@@ -1,262 +0,0 @@
-LIBRARY libxslt
-EXPORTS
-xslDebugStatus DATA
-xsltConstNamespaceNameXSLT DATA
-xsltDocDefaultLoader DATA
-xsltEngineVersion DATA
-xsltExtMarker DATA
-xsltGenericDebug DATA
-xsltGenericDebugContext DATA
-xsltGenericError DATA
-xsltGenericErrorContext DATA
-xsltLibxmlVersion DATA
-xsltLibxsltVersion DATA
-xsltMaxDepth DATA
-xsltMaxVars DATA
-xsltXSLTAttrMarker DATA
-xslAddCall
-xslDropCall
-xslHandleDebugger
-xsltAddKey
-xsltAddStackElemList
-xsltAddTemplate
-xsltAllocateExtra
-xsltAllocateExtraCtxt
-xsltApplyAttributeSet
-xsltApplyImports
-xsltApplyOneTemplate
-xsltApplyStripSpaces
-xsltApplyStylesheet
-xsltApplyStylesheetUser
-xsltApplyTemplates
-xsltAttrListTemplateProcess
-xsltAttrTemplateProcess
-xsltAttrTemplateValueProcess
-xsltAttrTemplateValueProcessNode
-xsltAttribute
-xsltCalibrateAdjust
-xsltCallTemplate
-xsltCheckExtPrefix
-xsltCheckExtURI
-xsltCheckRead
-xsltCheckWrite
-xsltChoose
-xsltCleanupGlobals
-xsltCleanupTemplates
-xsltComment
-xsltCompMatchClearCache
-xsltCompileAttr
-xsltCompilePattern
-xsltComputeSortResult
-xsltCopy
-xsltCopyNamespace
-xsltCopyNamespaceList
-xsltCopyOf
-xsltCopyTextString
-xsltCreateRVT
-xsltDebug
-xsltDebugDumpExtensions
-xsltDebugGetDefaultTrace
-xsltDebugSetDefaultTrace
-xsltDecimalFormatGetByName
-xsltDecimalFormatGetByQName
-xsltDefaultSortFunction
-xsltDoSortFunction
-xsltDocumentComp
-xsltDocumentElem
-xsltDocumentFunction
-xsltDocumentSortFunction
-xsltElement
-xsltElementAvailableFunction
-xsltEvalAVT
-xsltEvalAttrValueTemplate
-xsltEvalGlobalVariables
-xsltEvalOneUserParam
-xsltEvalStaticAttrValueTemplate
-xsltEvalTemplateString
-xsltEvalUserParams
-xsltEvalXPathPredicate
-xsltEvalXPathString
-xsltEvalXPathStringNs
-xsltExtElementLookup
-xsltExtModuleElementLookup
-xsltExtModuleElementPreComputeLookup
-xsltExtModuleFunctionLookup
-xsltExtModuleTopLevelLookup
-xsltExtensionInstructionResultFinalize
-xsltExtensionInstructionResultRegister
-xsltFindDocument
-xsltFindElemSpaceHandling
-xsltFindTemplate
-xsltFlagRVTs
-xsltForEach
-xsltFormatNumberConversion
-xsltFormatNumberFunction
-xsltFreeAVTList
-xsltFreeAttributeSetsHashes
-xsltFreeCompMatchList
-xsltFreeCtxtExts
-xsltFreeDocumentKeys
-xsltFreeDocuments
-xsltFreeExts
-xsltFreeGlobalVariables
-xsltFreeKeys
-xsltFreeLocale
-xsltFreeLocales
-xsltFreeNamespaceAliasHashes
-xsltFreeRVTs
-xsltFreeSecurityPrefs
-xsltFreeStackElemList
-xsltFreeStyleDocuments
-xsltFreeStylePreComps
-xsltFreeStylesheet
-xsltFreeTemplateHashes
-xsltFreeTransformContext
-xsltFunctionAvailableFunction
-xsltFunctionNodeSet
-xsltGenerateIdFunction
-xsltGetCNsProp
-xsltGetDebuggerStatus
-xsltGetDefaultSecurityPrefs
-xsltGetExtData
-xsltGetExtInfo
-xsltGetKey
-xsltGetNamespace
-xsltGetNsProp
-xsltGetPlainNamespace
-xsltGetProfileInformation
-xsltGetQNameURI
-xsltGetQNameURI2
-xsltGetSecurityPrefs
-xsltGetSpecialNamespace
-xsltGetTemplate
-xsltGetUTF8Char
-xsltGetXIncludeDefault
-xsltIf
-xsltInit
-xsltInitAllDocKeys
-xsltInitCtxtExts
-xsltInitCtxtKey
-xsltInitCtxtKeys
-xsltInitElemPreComp
-xsltInitGlobals
-xsltIsBlank
-xsltKeyFunction
-xsltLoadDocument
-xsltLoadStyleDocument
-xsltLoadStylesheetPI
-xsltLocalVariablePop
-xsltLocalVariablePush
-xsltLocaleStrcmp
-/*xsltMatchPattern*/
-xsltMessage
-xsltNamespaceAlias
-xsltNeedElemSpaceHandling
-xsltNewDocument
-xsltNewElemPreComp
-xsltNewLocale
-xsltNewSecurityPrefs
-xsltNewStyleDocument
-xsltNewStylesheet
-xsltNewTransformContext
-xsltNextImport
-xsltNormalizeCompSteps
-xsltNumber
-xsltNumberFormat
-xsltParseAnyXSLTElem
-xsltParseGlobalParam
-xsltParseGlobalVariable
-xsltParseSequenceConstructor
-xsltParseStylesheetAttributeSet
-xsltParseStylesheetCallerParam
-xsltParseStylesheetDoc
-xsltParseStylesheetFile
-xsltParseStylesheetImport
-xsltParseStylesheetImportedDoc
-xsltParseStylesheetInclude
-xsltParseStylesheetOutput
-xsltParseStylesheetParam
-xsltParseStylesheetProcess
-xsltParseStylesheetUser
-xsltParseStylesheetVariable
-xsltParseTemplateContent
-xsltPointerListAddSize
-xsltPointerListClear
-xsltPointerListCreate
-xsltPointerListFree
-xsltPreComputeExtModuleElement
-xsltPrintErrorContext
-xsltProcessOneNode
-xsltProcessingInstruction
-xsltProfileStylesheet
-xsltQuoteOneUserParam
-xsltQuoteUserParams
-xsltRegisterAllElement
-xsltRegisterAllExtras
-xsltRegisterAllFunctions
-xsltRegisterExtElement
-xsltRegisterExtFunction
-xsltRegisterExtModule
-xsltRegisterExtModuleElement
-xsltRegisterExtModuleFull
-xsltRegisterExtModuleFunction
-xsltRegisterExtModuleTopLevel
-xsltRegisterExtPrefix
-xsltRegisterExtras
-xsltRegisterLocalRVT
-xsltRegisterPersistRVT
-xsltRegisterTestModule
-xsltRegisterTmpRVT
-xsltReleaseRVT
-xsltResolveStylesheetAttributeSet
-xsltRestoreDocumentNamespaces
-xsltRunStylesheet
-xsltRunStylesheetUser
-xsltSaveProfiling
-xsltSaveResultTo
-xsltSaveResultToFd
-xsltSaveResultToFile
-xsltSaveResultToFilename
-xsltSaveResultToString
-xsltSecurityAllow
-xsltSecurityForbid
-xsltSetCtxtParseOptions
-xsltSetCtxtSecurityPrefs
-xsltSetCtxtSortFunc
-xsltSetDebuggerCallbacks
-xsltSetDebuggerStatus
-xsltSetDefaultSecurityPrefs
-xsltSetGenericDebugFunc
-xsltSetGenericErrorFunc
-xsltSetLoaderFunc
-xsltSetSecurityPrefs
-xsltSetSortFunc
-xsltSetTransformErrorFunc
-xsltSetXIncludeDefault
-xsltShutdownCtxtExts
-xsltShutdownExts
-xsltSort
-xsltSplitQName
-xsltStrxfrm
-xsltStyleGetExtData
-xsltStylePreCompute
-xsltStyleStylesheetLevelGetExtData
-xsltSystemPropertyFunction
-xsltTemplateProcess
-xsltTestCompMatchList
-xsltText
-xsltTimestamp
-xsltTransformError
-xsltUninit
-xsltUnparsedEntityURIFunction
-xsltUnregisterExtModule
-xsltUnregisterExtModuleElement
-xsltUnregisterExtModuleFunction
-xsltUnregisterExtModuleTopLevel
-xsltValueOf
-xsltVariableLookup
-xsltXPathCompile
-xsltXPathCompileFlags
-xsltXPathFunctionLookup
-xsltXPathGetTransformContext
-xsltXPathVariableLookup
diff --git a/xslt-config.in b/xslt-config.in
index f68df0f7..584dcc59 100644
--- a/xslt-config.in
+++ b/xslt-config.in
@@ -74,7 +74,7 @@ while test $# -gt 0; do
;;
--cflags)
- cflags="@LIBXML_CFLAGS@ @LIBXSLT_CFLAGS@"
+ cflags="@LIBXML_CFLAGS@ @LIBXSLT_CFLAGS@ @LIBEXSLT_CFLAGS@"
if test "$includedir" != "/usr/include"; then
cflags="$cflags @XSLT_INCLUDEDIR@"
fi
diff --git a/xsltproc/Makefile.am b/xsltproc/Makefile.am
index 7ddac9d2..bf2d5f58 100644
--- a/xsltproc/Makefile.am
+++ b/xsltproc/Makefile.am
@@ -2,12 +2,9 @@ AM_CPPFLAGS = -I$(top_srcdir) -I$(top_srcdir)/libxslt -I$(top_srcdir)/libexslt \
-I$(top_builddir) -I$(top_builddir)/libxslt \
-I$(top_builddir)/libexslt
-EXTRA_PROGRAMS=
bin_PROGRAMS = xsltproc
-noinst_PROGRAMS=testThreads
-
-AM_CFLAGS = $(LIBGCRYPT_CFLAGS) $(LIBXML_CFLAGS) $(LIBXSLT_CFLAGS)
+check_PROGRAMS = testThreads
xsltproc_SOURCES = xsltproc.c
xsltproc_LDFLAGS =
@@ -35,7 +32,7 @@ $(top_builddir)/libxslt/libxslt.la:
$(top_builddir)/libexslt/libexslt.la: $(top_builddir)/libxslt/libxslt.la
cd $(top_builddir)/libexslt && $(MAKE) libexslt.la
-tests: testThreads
+check-local:
@echo > .memdump
@echo '## Running testThreads'
@($(CHECKER) ./testThreads > /dev/null; grep "MORY ALLO" .memdump | grep -v "MEMORY ALLOCATED : 0" || true)
diff --git a/xsltproc/testThreads.c b/xsltproc/testThreads.c
index 7c226446..ba04c0e1 100644
--- a/xsltproc/testThreads.c
+++ b/xsltproc/testThreads.c
@@ -100,7 +100,7 @@ threadRoutine1(void *data)
xmlChar *result;
int len;
xsltStylesheetPtr cur;
- int id = (int)(unsigned long) data;
+ int id = (int) (size_t) data;
input = xmlReadMemory(doc, strlen(doc), "doc.xml", NULL, 0);
if (input == NULL) {
@@ -205,7 +205,7 @@ main(void)
for (i = 0; i < num_threads; i++) {
ret = pthread_create(&tid[i], NULL, threadRoutine1,
- (void *) (unsigned long) i);
+ (void *) (size_t) i);
if (ret != 0) {
perror("pthread_create");
exit(1);
diff --git a/xsltproc/xsltproc.c b/xsltproc/xsltproc.c
index 7edcc536..a2882359 100644
--- a/xsltproc/xsltproc.c
+++ b/xsltproc/xsltproc.c
@@ -55,7 +55,9 @@
#include <sys/timeb.h>
#endif
+#ifdef LIBXML_DEBUG_ENABLED
static int debug = 0;
+#endif
static int repeat = 0;
static int timing = 0;
static int dumpextensions = 0;