leptris 1.9.201.1-arm-linux → 1.9.201.2-arm-linux

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (1533) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +23 -0
  3. data/Rakefile +52 -12
  4. data/ext/leptris/native/extconf.rb +85 -0
  5. data/lib/leptris/version.rb +1 -1
  6. data/lib/leptris/xml/ffi.rb +13 -0
  7. data/vendor-src/libleptris/CHANGELOG.md +8080 -0
  8. data/vendor-src/libleptris/CLAUDE.md +150 -0
  9. data/vendor-src/libleptris/CMakeLists.txt +379 -0
  10. data/vendor-src/libleptris/CMakePresets.json +61 -0
  11. data/vendor-src/libleptris/CODE_OF_CONDUCT.md +132 -0
  12. data/vendor-src/libleptris/CONTEXT.md +49 -0
  13. data/vendor-src/libleptris/LICENSE.md +33 -0
  14. data/vendor-src/libleptris/README.adoc +1197 -0
  15. data/vendor-src/libleptris/TODO.assemble/README.md +16 -0
  16. data/vendor-src/libleptris/TODO.bindings/01-mutation-construction.md +18 -0
  17. data/vendor-src/libleptris/TODO.bindings/02-incremental-iterparse.md +15 -0
  18. data/vendor-src/libleptris/TODO.bindings/03-compiled-xpath.md +15 -0
  19. data/vendor-src/libleptris/TODO.bindings/04-pull-stax-api.md +14 -0
  20. data/vendor-src/libleptris/TODO.bindings/05-per-parse-options.md +17 -0
  21. data/vendor-src/libleptris/TODO.bindings/06-serialize-encoding-guarantees.md +14 -0
  22. data/vendor-src/libleptris/TODO.bindings/README.md +36 -0
  23. data/vendor-src/libleptris/TODO.concurrency/01-thread-safe-errors.md +19 -0
  24. data/vendor-src/libleptris/TODO.concurrency/02-export-surface-gate.md +24 -0
  25. data/vendor-src/libleptris/TODO.concurrency/03-mixed-nodeset-batch.md +14 -0
  26. data/vendor-src/libleptris/TODO.concurrency/04-canonical-status-message.md +13 -0
  27. data/vendor-src/libleptris/TODO.concurrency/05-windows-dll-name.md +10 -0
  28. data/vendor-src/libleptris/TODO.concurrency/06-exslt-pack.md +26 -0
  29. data/vendor-src/libleptris/TODO.concurrency/07-ns-set-pairs.md +11 -0
  30. data/vendor-src/libleptris/TODO.concurrency/08-threading-contract.md +45 -0
  31. data/vendor-src/libleptris/TODO.engine/01-file-sources.md +11 -0
  32. data/vendor-src/libleptris/TODO.engine/02-compiled-contexts.md +10 -0
  33. data/vendor-src/libleptris/TODO.engine/03-rust-publish.md +9 -0
  34. data/vendor-src/libleptris/TODO.engine/04-ruby-release-input.md +8 -0
  35. data/vendor-src/libleptris/TODO.engine/05-todo-md-refresh.md +7 -0
  36. data/vendor-src/libleptris/TODO.engine/README.md +16 -0
  37. data/vendor-src/libleptris/TODO.hygiene/README.md +15 -0
  38. data/vendor-src/libleptris/TODO.max-perf/00-INDEX.md +22 -0
  39. data/vendor-src/libleptris/TODO.max-perf/1-simd-html-scanner.md +15 -0
  40. data/vendor-src/libleptris/TODO.max-perf/10-moxml-plan-followups.md +9 -0
  41. data/vendor-src/libleptris/TODO.max-perf/2-compiled-dispatch-tokenizer.md +8 -0
  42. data/vendor-src/libleptris/TODO.max-perf/3-iterparse-fixed-cost.md +5 -0
  43. data/vendor-src/libleptris/TODO.max-perf/4-compact-node-micro-opts.md +17 -0
  44. data/vendor-src/libleptris/TODO.max-perf/5-xslt-bench-profiling-rounds.md +13 -0
  45. data/vendor-src/libleptris/TODO.max-perf/6-language-tails.md +9 -0
  46. data/vendor-src/libleptris/TODO.max-perf/7-validate-bindings.md +6 -0
  47. data/vendor-src/libleptris/TODO.max-perf/8-native-xml-diff-consumer.md +5 -0
  48. data/vendor-src/libleptris/TODO.max-perf/9-prebuilt-gem-matrix.md +14 -0
  49. data/vendor-src/libleptris/TODO.md +33 -0
  50. data/vendor-src/libleptris/TODO.transform/README.md +39 -0
  51. data/vendor-src/libleptris/TODO.validate/README.md +32 -0
  52. data/vendor-src/libleptris/TODO.xpath2/README.md +91 -0
  53. data/vendor-src/libleptris/TODO.xslt-full/01-xpath-fn-sequences.md +27 -0
  54. data/vendor-src/libleptris/TODO.xslt-full/02-xpath-fn-regex.md +13 -0
  55. data/vendor-src/libleptris/TODO.xslt-full/03-xpath-fn-math.md +10 -0
  56. data/vendor-src/libleptris/TODO.xslt-full/04-xpath-fn-strings-qname-uri.md +97 -0
  57. data/vendor-src/libleptris/TODO.xslt-full/05-xpath-fn-dates.md +30 -0
  58. data/vendor-src/libleptris/TODO.xslt-full/06-xpath-grammar-3x.md +83 -0
  59. data/vendor-src/libleptris/TODO.xslt-full/07-xpath-function-items.md +124 -0
  60. data/vendor-src/libleptris/TODO.xslt-full/08-xpath-maps-arrays.md +79 -0
  61. data/vendor-src/libleptris/TODO.xslt-full/09-xslt-noop-fillins.md +35 -0
  62. data/vendor-src/libleptris/TODO.xslt-full/10-xslt-tunnel-params.md +9 -0
  63. data/vendor-src/libleptris/TODO.xslt-full/11-xquery-core.md +119 -0
  64. data/vendor-src/libleptris/TODO.xslt-full/12-xquery-31.md +65 -0
  65. data/vendor-src/libleptris/TODO.xslt-full/13-perf-inprocess.md +425 -0
  66. data/vendor-src/libleptris/TODO.xslt-full/14-html-mode.md +803 -0
  67. data/vendor-src/libleptris/TODO.xslt-full/15-binding-entries.md +19 -0
  68. data/vendor-src/libleptris/TODO.xslt-full/16-schematron.md +156 -0
  69. data/vendor-src/libleptris/TODO.xslt-full/17-xml-diff.md +52 -0
  70. data/vendor-src/libleptris/TODO.xslt-full/18-compact-nodes.md +278 -0
  71. data/vendor-src/libleptris/TODO.xslt-full/README.md +26 -0
  72. data/vendor-src/libleptris/TODO.xslt-full/REMAINING.md +163 -0
  73. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/00-triage.md +171 -0
  74. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/01-fragment-nodes.md +19 -0
  75. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/02-root-node-semantics.md +34 -0
  76. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/03-crashes.md +15 -0
  77. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/04-namespaces.md +14 -0
  78. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/05-number-attrset-sort.md +13 -0
  79. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/06-document-chains.md +10 -0
  80. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/07-charef-serializer.md +9 -0
  81. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/08-perf-gate.md +8 -0
  82. data/vendor-src/libleptris/TODO.xslt-full/legacy-v19/09-release.md +14 -0
  83. data/vendor-src/libleptris/VALIDATION.md +151 -0
  84. data/vendor-src/libleptris/benchmarks/CMakeLists.txt +259 -0
  85. data/vendor-src/libleptris/benchmarks/README.adoc +228 -0
  86. data/vendor-src/libleptris/benchmarks/README.md +212 -0
  87. data/vendor-src/libleptris/benchmarks/common/benchmark.c +252 -0
  88. data/vendor-src/libleptris/benchmarks/common/benchmark.h +77 -0
  89. data/vendor-src/libleptris/benchmarks/common/test_data.c +415 -0
  90. data/vendor-src/libleptris/benchmarks/common/test_data.h +18 -0
  91. data/vendor-src/libleptris/benchmarks/comprehensive/CMakeLists.txt +184 -0
  92. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_decomp.cpp +110 -0
  93. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_first_access.cpp +261 -0
  94. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_many_attrs.cpp +150 -0
  95. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_memory.cpp +185 -0
  96. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse.cpp +270 -0
  97. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_parse_ops.cpp +392 -0
  98. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_sax.c +106 -0
  99. data/vendor-src/libleptris/benchmarks/comprehensive/benchmark_write.cpp +351 -0
  100. data/vendor-src/libleptris/benchmarks/data/attrs.xml +303 -0
  101. data/vendor-src/libleptris/benchmarks/data/cdata_test.xml +13 -0
  102. data/vendor-src/libleptris/benchmarks/data/comment_test.xml +15 -0
  103. data/vendor-src/libleptris/benchmarks/data/deep.xml +205 -0
  104. data/vendor-src/libleptris/benchmarks/data/generate_attrs.rb +22 -0
  105. data/vendor-src/libleptris/benchmarks/data/generate_deep.rb +25 -0
  106. data/vendor-src/libleptris/benchmarks/data/generate_large.rb +33 -0
  107. data/vendor-src/libleptris/benchmarks/data/generate_wide.rb +18 -0
  108. data/vendor-src/libleptris/benchmarks/data/large.xml +21003 -0
  109. data/vendor-src/libleptris/benchmarks/data/large_workflow.xml +4003 -0
  110. data/vendor-src/libleptris/benchmarks/data/medium.xml +67 -0
  111. data/vendor-src/libleptris/benchmarks/data/medium_workflow.xml +353 -0
  112. data/vendor-src/libleptris/benchmarks/data/pi_test.xml +9 -0
  113. data/vendor-src/libleptris/benchmarks/data/small.xml +10 -0
  114. data/vendor-src/libleptris/benchmarks/data/small_workflow.xml +36 -0
  115. data/vendor-src/libleptris/benchmarks/data/wide.xml +5003 -0
  116. data/vendor-src/libleptris/benchmarks/dom/bench_document_lifecycle.c +69 -0
  117. data/vendor-src/libleptris/benchmarks/dom/bench_leptris.c +184 -0
  118. data/vendor-src/libleptris/benchmarks/dom/bench_libxml2.c +176 -0
  119. data/vendor-src/libleptris/benchmarks/dom/bench_text_borrowed.c +74 -0
  120. data/vendor-src/libleptris/benchmarks/dom/dom_benchmark_v2.cpp +314 -0
  121. data/vendor-src/libleptris/benchmarks/fixtures/large.xml +4003 -0
  122. data/vendor-src/libleptris/benchmarks/fixtures/large_catalog.xml +50003 -0
  123. data/vendor-src/libleptris/benchmarks/fixtures/libxml2/eve.xml +6 -0
  124. data/vendor-src/libleptris/benchmarks/fixtures/libxml2/slashdot.rdf +66 -0
  125. data/vendor-src/libleptris/benchmarks/fixtures/libxml2/wap.xml +27 -0
  126. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/4rects.xml +11 -0
  127. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-valid.xml +10 -0
  128. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/a-wf.xml +9 -0
  129. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/bike.xml +41 -0
  130. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/circle.xml +11 -0
  131. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/defs.xml +14 -0
  132. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/desc.xml +14 -0
  133. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/ellipse.xml +10 -0
  134. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/flower2.xml +44 -0
  135. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/gradient.xml +16 -0
  136. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group01.xml +15 -0
  137. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group02.xml +13 -0
  138. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/group03.xml +13 -0
  139. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-valid.xml +11 -0
  140. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/image-wf.xml +11 -0
  141. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/lin-gradient.xml +16 -0
  142. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/marker.xml +28 -0
  143. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mask.xml +13 -0
  144. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/mathswitch.xml +32 -0
  145. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/parentns.xml +12 -0
  146. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path01.xml +5 -0
  147. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/path02.xml +10 -0
  148. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/patternfill.xml +12 -0
  149. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/polyline.xml +9 -0
  150. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/private.xml +19 -0
  151. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rad-gradient.xml +17 -0
  152. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/rectangle.xml +10 -0
  153. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/richdesc.xml +12 -0
  154. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/script.xml +13 -0
  155. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/structure01.xml +10 -0
  156. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/style.xml +11 -0
  157. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/switch.xml +21 -0
  158. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/symbol-use.xml +28 -0
  159. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/template.xml +9 -0
  160. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text01.xml +12 -0
  161. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text02.xml +17 -0
  162. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/text03.xml +8 -0
  163. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap01.xml +10 -0
  164. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/toap02.xml +33 -0
  165. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/transform.xml +26 -0
  166. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/trivial.xml +6 -0
  167. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/twin-gradients.xml +19 -0
  168. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/v-template.xml +9 -0
  169. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-nest.xml +13 -0
  170. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport-transform.xml +46 -0
  171. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/viewport.xml +11 -0
  172. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_svg/wf-template.xml +7 -0
  173. data/vendor-src/libleptris/benchmarks/fixtures/libxml2_xsdtest.xml +5286 -0
  174. data/vendor-src/libleptris/benchmarks/fixtures/medium.xml +403 -0
  175. data/vendor-src/libleptris/benchmarks/fixtures/medium_catalog.xml +3003 -0
  176. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/empty.xml +0 -0
  177. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/large.xml +1 -0
  178. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_latin1.xml +1 -0
  179. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/latintest_utf8.xml +1 -0
  180. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/multiline.xml +3 -0
  181. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/small.xml +1 -0
  182. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/truncation.xml +19 -0
  183. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be.xml +0 -0
  184. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_bom.xml +0 -0
  185. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_clean.xml +0 -0
  186. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_be_nodecl.xml +0 -0
  187. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le.xml +0 -0
  188. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_bom.xml +0 -0
  189. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_clean.xml +0 -0
  190. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf16_le_nodecl.xml +0 -0
  191. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be.xml +0 -0
  192. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_bom.xml +0 -0
  193. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_clean.xml +0 -0
  194. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_be_nodecl.xml +0 -0
  195. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le.xml +0 -0
  196. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_bom.xml +0 -0
  197. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_clean.xml +0 -0
  198. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf32_le_nodecl.xml +0 -0
  199. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8.xml +87 -0
  200. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_bom.xml +87 -0
  201. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_clean.xml +84 -0
  202. data/vendor-src/libleptris/benchmarks/fixtures/pugixml/utftest_utf8_nodecl.xml +86 -0
  203. data/vendor-src/libleptris/benchmarks/fixtures/pugixml//321/202/320/265/321/201/321/202.xml +1 -0
  204. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/empty.xml +0 -0
  205. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/large.xml +1 -0
  206. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_latin1.xml +1 -0
  207. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/latintest_utf8.xml +1 -0
  208. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/multiline.xml +3 -0
  209. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/small.xml +1 -0
  210. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/truncation.xml +19 -0
  211. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be.xml +0 -0
  212. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_bom.xml +0 -0
  213. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_clean.xml +0 -0
  214. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_be_nodecl.xml +0 -0
  215. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le.xml +0 -0
  216. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_bom.xml +0 -0
  217. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_clean.xml +0 -0
  218. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf16_le_nodecl.xml +0 -0
  219. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be.xml +0 -0
  220. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_bom.xml +0 -0
  221. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_clean.xml +0 -0
  222. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_be_nodecl.xml +0 -0
  223. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le.xml +0 -0
  224. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_bom.xml +0 -0
  225. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_clean.xml +0 -0
  226. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf32_le_nodecl.xml +0 -0
  227. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8.xml +87 -0
  228. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_bom.xml +87 -0
  229. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_clean.xml +84 -0
  230. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests/utftest_utf8_nodecl.xml +86 -0
  231. data/vendor-src/libleptris/benchmarks/fixtures/pugixml_tests//321/202/320/265/321/201/321/202.xml +1 -0
  232. data/vendor-src/libleptris/benchmarks/fixtures/small.xml +38 -0
  233. data/vendor-src/libleptris/benchmarks/html/bench_html_parse.c +111 -0
  234. data/vendor-src/libleptris/benchmarks/html/gen_nokogiri_reference.rb +112 -0
  235. data/vendor-src/libleptris/benchmarks/html/nokogiri_html_parse.rb +64 -0
  236. data/vendor-src/libleptris/benchmarks/matrix/README.md +71 -0
  237. data/vendor-src/libleptris/benchmarks/matrix/bench2html.rb +316 -0
  238. data/vendor-src/libleptris/benchmarks/matrix/bench_matrix.cpp +724 -0
  239. data/vendor-src/libleptris/benchmarks/modification/bench_leptris_modify.c +211 -0
  240. data/vendor-src/libleptris/benchmarks/modification/bench_node_creation.c +130 -0
  241. data/vendor-src/libleptris/benchmarks/results/BENCHMARK_REPORT.md +226 -0
  242. data/vendor-src/libleptris/benchmarks/results/baseline_report.md +219 -0
  243. data/vendor-src/libleptris/benchmarks/results/benchmark_20251223_134550.json +13 -0
  244. data/vendor-src/libleptris/benchmarks/results/benchmark_20260129_225844.json +13 -0
  245. data/vendor-src/libleptris/benchmarks/results/leptris_dom_output.txt +24 -0
  246. data/vendor-src/libleptris/benchmarks/results/leptris_modify.json +36 -0
  247. data/vendor-src/libleptris/benchmarks/results/leptris_modify_optimized.json +36 -0
  248. data/vendor-src/libleptris/benchmarks/results/leptris_modify_session1.json +36 -0
  249. data/vendor-src/libleptris/benchmarks/results/leptris_modify_session2.json +36 -0
  250. data/vendor-src/libleptris/benchmarks/results/leptris_serialize.json +34 -0
  251. data/vendor-src/libleptris/benchmarks/results/leptris_xpath_output.txt +24 -0
  252. data/vendor-src/libleptris/benchmarks/results/libxml2_dom_output.txt +24 -0
  253. data/vendor-src/libleptris/benchmarks/results/libxml2_xpath_output.txt +24 -0
  254. data/vendor-src/libleptris/benchmarks/results/phase16_session2.json +21 -0
  255. data/vendor-src/libleptris/benchmarks/results/phase17.5_session1.json +30 -0
  256. data/vendor-src/libleptris/benchmarks/results/phase17_session1.json +30 -0
  257. data/vendor-src/libleptris/benchmarks/results/pugixml_dom_output.txt +51 -0
  258. data/vendor-src/libleptris/benchmarks/results/xpath_axes_leptris.json +318 -0
  259. data/vendor-src/libleptris/benchmarks/results/xpath_axes_libxml2.json +318 -0
  260. data/vendor-src/libleptris/benchmarks/results/xpath_functions_leptris.json +222 -0
  261. data/vendor-src/libleptris/benchmarks/results/xpath_functions_libxml2.json +222 -0
  262. data/vendor-src/libleptris/benchmarks/sax/bench_iterparse.c +115 -0
  263. data/vendor-src/libleptris/benchmarks/sax/bench_leptris.c +124 -0
  264. data/vendor-src/libleptris/benchmarks/sax/bench_libxml2.c +115 -0
  265. data/vendor-src/libleptris/benchmarks/serialization/bench_leptris_serialize.c +198 -0
  266. data/vendor-src/libleptris/benchmarks/src/benchmark_base.h +175 -0
  267. data/vendor-src/libleptris/benchmarks/twins/mutation_leptris.c +37 -0
  268. data/vendor-src/libleptris/benchmarks/twins/mutation_pugixml.cpp +28 -0
  269. data/vendor-src/libleptris/benchmarks/twins/parse_leptris.c +35 -0
  270. data/vendor-src/libleptris/benchmarks/twins/parse_pugixml.cpp +35 -0
  271. data/vendor-src/libleptris/benchmarks/utils.c +171 -0
  272. data/vendor-src/libleptris/benchmarks/utils.h +70 -0
  273. data/vendor-src/libleptris/benchmarks/workflows/bench_dom_modify.c +325 -0
  274. data/vendor-src/libleptris/benchmarks/workflows/bench_end_to_end.c +529 -0
  275. data/vendor-src/libleptris/benchmarks/xpath/bench_axes.c +411 -0
  276. data/vendor-src/libleptris/benchmarks/xpath/bench_axes_libxml2.c +108 -0
  277. data/vendor-src/libleptris/benchmarks/xpath/bench_diagnostic.c +431 -0
  278. data/vendor-src/libleptris/benchmarks/xpath/bench_functions.c +271 -0
  279. data/vendor-src/libleptris/benchmarks/xpath/bench_functions_libxml2.c +123 -0
  280. data/vendor-src/libleptris/benchmarks/xpath/bench_leptris.c +78 -0
  281. data/vendor-src/libleptris/benchmarks/xpath/bench_libxml2.c +98 -0
  282. data/vendor-src/libleptris/benchmarks/xpath/bench_pugixml.cpp +117 -0
  283. data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval.c +86 -0
  284. data/vendor-src/libleptris/benchmarks/xpath/bench_scalar_eval_libxml2.c +70 -0
  285. data/vendor-src/libleptris/benchmarks/xpath/bench_xslt_transform.c +48 -0
  286. data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch.c +52 -0
  287. data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_heavy.c +82 -0
  288. data/vendor-src/libleptris/benchmarks/xslt/bench_dispatch_pred.c +34 -0
  289. data/vendor-src/libleptris/benchmarks/xslt/bench_subtree_copy.c +55 -0
  290. data/vendor-src/libleptris/benchmarks/xslt/bench_valueof.c +46 -0
  291. data/vendor-src/libleptris/benchmarks/xslt/heavy_lxml.py +48 -0
  292. data/vendor-src/libleptris/benchmarks/xslt/scorecard_lxml.py +169 -0
  293. data/vendor-src/libleptris/bindings/ruby/leptris.gemspec +22 -0
  294. data/vendor-src/libleptris/bindings/ruby/lib/leptris/document.rb +60 -0
  295. data/vendor-src/libleptris/bindings/ruby/lib/leptris/element.rb +86 -0
  296. data/vendor-src/libleptris/bindings/ruby/lib/leptris/error.rb +6 -0
  297. data/vendor-src/libleptris/bindings/ruby/lib/leptris/node.rb +73 -0
  298. data/vendor-src/libleptris/bindings/ruby/lib/leptris/sax.rb +189 -0
  299. data/vendor-src/libleptris/bindings/ruby/lib/leptris/xpath.rb +44 -0
  300. data/vendor-src/libleptris/bindings/ruby/lib/leptris.rb +137 -0
  301. data/vendor-src/libleptris/bindings/ruby/spec/leptris_spec.rb +113 -0
  302. data/vendor-src/libleptris/bindings/ruby/spec/sax_spec.rb +141 -0
  303. data/vendor-src/libleptris/bindings/ruby/spec/spec_helper.rb +7 -0
  304. data/vendor-src/libleptris/bindings/ruby/test_full.rb +21 -0
  305. data/vendor-src/libleptris/bindings/rust/Cargo.lock +7 -0
  306. data/vendor-src/libleptris/bindings/rust/Cargo.toml +13 -0
  307. data/vendor-src/libleptris/bindings/rust/README.md +61 -0
  308. data/vendor-src/libleptris/bindings/rust/build.rs +74 -0
  309. data/vendor-src/libleptris/bindings/rust/src/ffi.rs +204 -0
  310. data/vendor-src/libleptris/bindings/rust/src/lib.rs +580 -0
  311. data/vendor-src/libleptris/bindings/rust/tests/integration.rs +156 -0
  312. data/vendor-src/libleptris/cli/ARCHITECTURE_REVIEW.md +514 -0
  313. data/vendor-src/libleptris/cli/CLI_ARCHITECTURE.md +851 -0
  314. data/vendor-src/libleptris/cli/CMakeLists.txt +46 -0
  315. data/vendor-src/libleptris/cli/cli.c +115 -0
  316. data/vendor-src/libleptris/cli/cli.h +232 -0
  317. data/vendor-src/libleptris/cli/commands/diff.c +208 -0
  318. data/vendor-src/libleptris/cli/commands/format.c +379 -0
  319. data/vendor-src/libleptris/cli/commands/parse.c +343 -0
  320. data/vendor-src/libleptris/cli/commands/validate.c +284 -0
  321. data/vendor-src/libleptris/cli/commands/version.c +49 -0
  322. data/vendor-src/libleptris/cli/commands/xpath.c +428 -0
  323. data/vendor-src/libleptris/cli/commands/xquery.c +188 -0
  324. data/vendor-src/libleptris/cli/completion/leptris.bash +86 -0
  325. data/vendor-src/libleptris/cli/completion/leptris.zsh +74 -0
  326. data/vendor-src/libleptris/cli/error.c +394 -0
  327. data/vendor-src/libleptris/cli/error.h +360 -0
  328. data/vendor-src/libleptris/cli/leptris +0 -0
  329. data/vendor-src/libleptris/cli/main.c +127 -0
  330. data/vendor-src/libleptris/cli/man/leptris-format.1.adoc +226 -0
  331. data/vendor-src/libleptris/cli/man/leptris-parse.1.adoc +213 -0
  332. data/vendor-src/libleptris/cli/man/leptris-xpath.1.adoc +479 -0
  333. data/vendor-src/libleptris/cli/man/leptris.1.adoc +192 -0
  334. data/vendor-src/libleptris/cli/options.c +451 -0
  335. data/vendor-src/libleptris/cli/options.h +378 -0
  336. data/vendor-src/libleptris/cli/output.c +841 -0
  337. data/vendor-src/libleptris/cli/output.h +361 -0
  338. data/vendor-src/libleptris/cmake/FindUtf8proc.cmake +56 -0
  339. data/vendor-src/libleptris/cmake/leptris-config.cmake.in +14 -0
  340. data/vendor-src/libleptris/cmake/leptris.pc.in +11 -0
  341. data/vendor-src/libleptris/cmake/modules/AdocMan.cmake +132 -0
  342. data/vendor-src/libleptris/docs/ARCHITECTURE_REVIEW.md +280 -0
  343. data/vendor-src/libleptris/docs/Doxyfile +47 -0
  344. data/vendor-src/libleptris/docs/FFI.md +165 -0
  345. data/vendor-src/libleptris/docs/README.md +47 -0
  346. data/vendor-src/libleptris/docs/ROADMAP-SAXON-PARITY.md +194 -0
  347. data/vendor-src/libleptris/docs/guide/building.md +199 -0
  348. data/vendor-src/libleptris/docs/guide/getting-started.md +134 -0
  349. data/vendor-src/libleptris/docs/guide/parsing.md +315 -0
  350. data/vendor-src/libleptris/docs/guide/xpath-queries.md +444 -0
  351. data/vendor-src/libleptris/examples/c/CMakeLists.txt +58 -0
  352. data/vendor-src/libleptris/examples/c/README.md +345 -0
  353. data/vendor-src/libleptris/examples/c/basic_example.c +80 -0
  354. data/vendor-src/libleptris/examples/c/dom_traversal_example.c +58 -0
  355. data/vendor-src/libleptris/examples/c/error_handling_example.c +121 -0
  356. data/vendor-src/libleptris/examples/c/namespace_example.c +49 -0
  357. data/vendor-src/libleptris/examples/c/xpath_example.c +74 -0
  358. data/vendor-src/libleptris/ports/leptris/portfile.cmake +41 -0
  359. data/vendor-src/libleptris/ports/leptris/usage +28 -0
  360. data/vendor-src/libleptris/scripts/check_dll_exports.py +54 -0
  361. data/vendor-src/libleptris/scripts/check_export_surface.py +84 -0
  362. data/vendor-src/libleptris/scripts/check_ffi_mirrors.py +163 -0
  363. data/vendor-src/libleptris/scripts/check_formatting.sh +30 -0
  364. data/vendor-src/libleptris/scripts/check_shared_exports.sh +120 -0
  365. data/vendor-src/libleptris/scripts/check_trailing_whitespace.sh +18 -0
  366. data/vendor-src/libleptris/scripts/gen-api-docs.sh +31 -0
  367. data/vendor-src/libleptris/scripts/run_static_analysis.sh +16 -0
  368. data/vendor-src/libleptris/scripts/validate.sh +199 -0
  369. data/vendor-src/libleptris/scripts/xslt_triage.sh +72 -0
  370. data/vendor-src/libleptris/src/CMakeLists.txt +597 -0
  371. data/vendor-src/libleptris/src/include/leptris/descriptor.h +178 -0
  372. data/vendor-src/libleptris/src/include/leptris/dom/document.h +213 -0
  373. data/vendor-src/libleptris/src/include/leptris/dom/element.h +435 -0
  374. data/vendor-src/libleptris/src/include/leptris/dom/serialize.h +133 -0
  375. data/vendor-src/libleptris/src/include/leptris/dtd.h +178 -0
  376. data/vendor-src/libleptris/src/include/leptris/error.h +97 -0
  377. data/vendor-src/libleptris/src/include/leptris/sax/sax.h +584 -0
  378. data/vendor-src/libleptris/src/include/leptris/types.h +386 -0
  379. data/vendor-src/libleptris/src/include/leptris/xpath/xpath.h +250 -0
  380. data/vendor-src/libleptris/src/include/leptris/xquery/xquery.h +80 -0
  381. data/vendor-src/libleptris/src/include/leptris.h +3701 -0
  382. data/vendor-src/libleptris/src/leptris/chartype.h +124 -0
  383. data/vendor-src/libleptris/src/leptris/common/chartype.c +90 -0
  384. data/vendor-src/libleptris/src/leptris/common/chartype.h +44 -0
  385. data/vendor-src/libleptris/src/leptris/common/cpu.c +40 -0
  386. data/vendor-src/libleptris/src/leptris/common/cpu.h +63 -0
  387. data/vendor-src/libleptris/src/leptris/common/entities.c +329 -0
  388. data/vendor-src/libleptris/src/leptris/common/entities.h +79 -0
  389. data/vendor-src/libleptris/src/leptris/common/format_number.c +273 -0
  390. data/vendor-src/libleptris/src/leptris/common/format_number.h +29 -0
  391. data/vendor-src/libleptris/src/leptris/common/port.h +171 -0
  392. data/vendor-src/libleptris/src/leptris/common/simd_text.c +237 -0
  393. data/vendor-src/libleptris/src/leptris/common/simd_text.h +104 -0
  394. data/vendor-src/libleptris/src/leptris/common/simd_text_avx2.c +105 -0
  395. data/vendor-src/libleptris/src/leptris/common/simd_text_neon.c +280 -0
  396. data/vendor-src/libleptris/src/leptris/common/string_view.c +204 -0
  397. data/vendor-src/libleptris/src/leptris/common/string_view.h +68 -0
  398. data/vendor-src/libleptris/src/leptris/common/types_internal.h +31 -0
  399. data/vendor-src/libleptris/src/leptris/core.c +201 -0
  400. data/vendor-src/libleptris/src/leptris/descriptor/plan.c +527 -0
  401. data/vendor-src/libleptris/src/leptris/diff/diff.c +491 -0
  402. data/vendor-src/libleptris/src/leptris/dom/cdata.c +47 -0
  403. data/vendor-src/libleptris/src/leptris/dom/cdata.h +73 -0
  404. data/vendor-src/libleptris/src/leptris/dom/comment.c +48 -0
  405. data/vendor-src/libleptris/src/leptris/dom/comment.h +74 -0
  406. data/vendor-src/libleptris/src/leptris/dom/compact.c +397 -0
  407. data/vendor-src/libleptris/src/leptris/dom/compact.h +307 -0
  408. data/vendor-src/libleptris/src/leptris/dom/diag.c +58 -0
  409. data/vendor-src/libleptris/src/leptris/dom/diag.h +75 -0
  410. data/vendor-src/libleptris/src/leptris/dom/digest.c +255 -0
  411. data/vendor-src/libleptris/src/leptris/dom/doctype.c +137 -0
  412. data/vendor-src/libleptris/src/leptris/dom/doctype.h +52 -0
  413. data/vendor-src/libleptris/src/leptris/dom/document_node.c +13 -0
  414. data/vendor-src/libleptris/src/leptris/dom/document_node.h +21 -0
  415. data/vendor-src/libleptris/src/leptris/dom/edges.h +60 -0
  416. data/vendor-src/libleptris/src/leptris/dom/element.c +1114 -0
  417. data/vendor-src/libleptris/src/leptris/dom/element.h +1109 -0
  418. data/vendor-src/libleptris/src/leptris/dom/element_index.c +444 -0
  419. data/vendor-src/libleptris/src/leptris/dom/element_index.h +135 -0
  420. data/vendor-src/libleptris/src/leptris/dom/element_modify.c +2185 -0
  421. data/vendor-src/libleptris/src/leptris/dom/element_query.c +1468 -0
  422. data/vendor-src/libleptris/src/leptris/dom/entity_ref.c +57 -0
  423. data/vendor-src/libleptris/src/leptris/dom/entity_ref.h +70 -0
  424. data/vendor-src/libleptris/src/leptris/dom/node.c +420 -0
  425. data/vendor-src/libleptris/src/leptris/dom/node.h +170 -0
  426. data/vendor-src/libleptris/src/leptris/dom/node_public.c +937 -0
  427. data/vendor-src/libleptris/src/leptris/dom/node_vtable.c +138 -0
  428. data/vendor-src/libleptris/src/leptris/dom/pi.c +70 -0
  429. data/vendor-src/libleptris/src/leptris/dom/pi.h +80 -0
  430. data/vendor-src/libleptris/src/leptris/dom/root_doc_map.c +310 -0
  431. data/vendor-src/libleptris/src/leptris/dom/root_doc_map.h +30 -0
  432. data/vendor-src/libleptris/src/leptris/dom/text.c +157 -0
  433. data/vendor-src/libleptris/src/leptris/dom/text.h +119 -0
  434. data/vendor-src/libleptris/src/leptris/dtd/content_check.c +300 -0
  435. data/vendor-src/libleptris/src/leptris/dtd/model.c +533 -0
  436. data/vendor-src/libleptris/src/leptris/dtd/model.h +354 -0
  437. data/vendor-src/libleptris/src/leptris/dtd/parser.c +827 -0
  438. data/vendor-src/libleptris/src/leptris/dtd/resolver.c +354 -0
  439. data/vendor-src/libleptris/src/leptris/dtd/validator.c +668 -0
  440. data/vendor-src/libleptris/src/leptris/encoding/encoders.c +346 -0
  441. data/vendor-src/libleptris/src/leptris/encoding/encoders.h +61 -0
  442. data/vendor-src/libleptris/src/leptris/encoding/encoding.c +451 -0
  443. data/vendor-src/libleptris/src/leptris/encoding/encoding.h +118 -0
  444. data/vendor-src/libleptris/src/leptris/encoding/unicode.c +317 -0
  445. data/vendor-src/libleptris/src/leptris/encoding/unicode.h +64 -0
  446. data/vendor-src/libleptris/src/leptris/encoding/utf16.c +204 -0
  447. data/vendor-src/libleptris/src/leptris/encoding/utf16.h +78 -0
  448. data/vendor-src/libleptris/src/leptris/encoding/wrapper.c +243 -0
  449. data/vendor-src/libleptris/src/leptris/error.c +134 -0
  450. data/vendor-src/libleptris/src/leptris/flat/direct_parse.c +1935 -0
  451. data/vendor-src/libleptris/src/leptris/flat/direct_parse.h +41 -0
  452. data/vendor-src/libleptris/src/leptris/html/html_parse.c +8040 -0
  453. data/vendor-src/libleptris/src/leptris/leptris.c +1264 -0
  454. data/vendor-src/libleptris/src/leptris/leptris_internal.h +910 -0
  455. data/vendor-src/libleptris/src/leptris/leptris_memory.c +179 -0
  456. data/vendor-src/libleptris/src/leptris/leptris_memory.h +180 -0
  457. data/vendor-src/libleptris/src/leptris/leptris_parse.h +195 -0
  458. data/vendor-src/libleptris/src/leptris/memory/arena.c +243 -0
  459. data/vendor-src/libleptris/src/leptris/memory/arena.h +93 -0
  460. data/vendor-src/libleptris/src/leptris/memory/pool.c +1055 -0
  461. data/vendor-src/libleptris/src/leptris/memory/pool.h +426 -0
  462. data/vendor-src/libleptris/src/leptris/rng/parse.c +814 -0
  463. data/vendor-src/libleptris/src/leptris/rng/rng_internal.h +112 -0
  464. data/vendor-src/libleptris/src/leptris/rng/rng_public.c +159 -0
  465. data/vendor-src/libleptris/src/leptris/rng/rng_regex.c +453 -0
  466. data/vendor-src/libleptris/src/leptris/rng/validate.c +1923 -0
  467. data/vendor-src/libleptris/src/leptris/sax/iterparse.c +435 -0
  468. data/vendor-src/libleptris/src/leptris/sax/parser.c +105 -0
  469. data/vendor-src/libleptris/src/leptris/sax/pull.c +489 -0
  470. data/vendor-src/libleptris/src/leptris/sax/recorder.c +252 -0
  471. data/vendor-src/libleptris/src/leptris/sax/sax_internal.h +163 -0
  472. data/vendor-src/libleptris/src/leptris/sax/streaming.c +1469 -0
  473. data/vendor-src/libleptris/src/leptris/sch/schematron.c +1588 -0
  474. data/vendor-src/libleptris/src/leptris/serialize/c14n.c +1143 -0
  475. data/vendor-src/libleptris/src/leptris/serialize/serialize.c +2333 -0
  476. data/vendor-src/libleptris/src/leptris/serialize/serialize.h +188 -0
  477. data/vendor-src/libleptris/src/leptris/simd_helpers.h +447 -0
  478. data/vendor-src/libleptris/src/leptris/unicode/unicode.c +237 -0
  479. data/vendor-src/libleptris/src/leptris/unicode/unicode.h +113 -0
  480. data/vendor-src/libleptris/src/leptris/xinclude/xinclude.c +794 -0
  481. data/vendor-src/libleptris/src/leptris/xpath/bytecode.h +229 -0
  482. data/vendor-src/libleptris/src/leptris/xpath/compiler.c +1478 -0
  483. data/vendor-src/libleptris/src/leptris/xpath/evaluator.c +1099 -0
  484. data/vendor-src/libleptris/src/leptris/xpath/evaluator.h +189 -0
  485. data/vendor-src/libleptris/src/leptris/xpath/evaluator_axes.c +787 -0
  486. data/vendor-src/libleptris/src/leptris/xpath/evaluator_internal.h +112 -0
  487. data/vendor-src/libleptris/src/leptris/xpath/evaluator_operators.c +2138 -0
  488. data/vendor-src/libleptris/src/leptris/xpath/evaluator_path.c +1312 -0
  489. data/vendor-src/libleptris/src/leptris/xpath/evaluator_types.c +294 -0
  490. data/vendor-src/libleptris/src/leptris/xpath/functions.c +2544 -0
  491. data/vendor-src/libleptris/src/leptris/xpath/functions.h +161 -0
  492. data/vendor-src/libleptris/src/leptris/xpath/functions_exslt.c +545 -0
  493. data/vendor-src/libleptris/src/leptris/xpath/functions_ext31.c +4316 -0
  494. data/vendor-src/libleptris/src/leptris/xpath/lexer.c +636 -0
  495. data/vendor-src/libleptris/src/leptris/xpath/lexer.h +25 -0
  496. data/vendor-src/libleptris/src/leptris/xpath/parser.c +2992 -0
  497. data/vendor-src/libleptris/src/leptris/xpath/parser.h +28 -0
  498. data/vendor-src/libleptris/src/leptris/xpath/vm.c +2903 -0
  499. data/vendor-src/libleptris/src/leptris/xpath/xpath_ast_cache.c +319 -0
  500. data/vendor-src/libleptris/src/leptris/xpath/xpath_compiled.c +263 -0
  501. data/vendor-src/libleptris/src/leptris/xpath/xpath_internal.h +134 -0
  502. data/vendor-src/libleptris/src/leptris/xpath/xpath_public.c +1139 -0
  503. data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.c +410 -0
  504. data/vendor-src/libleptris/src/leptris/xpath/xpath_variables.h +230 -0
  505. data/vendor-src/libleptris/src/leptris/xquery/xquery.c +2641 -0
  506. data/vendor-src/libleptris/src/leptris/xslt/xslt_exec.c +4887 -0
  507. data/vendor-src/libleptris/src/leptris/xslt/xslt_functions.c +1612 -0
  508. data/vendor-src/libleptris/src/leptris/xslt/xslt_internal.h +862 -0
  509. data/vendor-src/libleptris/src/leptris/xslt/xslt_parse.c +2418 -0
  510. data/vendor-src/libleptris/src/leptris/xslt/xslt_pattern.c +441 -0
  511. data/vendor-src/libleptris/src/leptris/xslt/xslt_public.c +710 -0
  512. data/vendor-src/libleptris/src/leptris.symvers +16 -0
  513. data/vendor-src/libleptris/src/man/libleptris.5.adoc +961 -0
  514. data/vendor-src/libleptris/test/CMakeLists.txt +234 -0
  515. data/vendor-src/libleptris/test/README.md +59 -0
  516. data/vendor-src/libleptris/test/abi/test_descriptor.cpp +441 -0
  517. data/vendor-src/libleptris/test/abi/test_doctype_api.cpp +51 -0
  518. data/vendor-src/libleptris/test/abi/test_dom_deep_copy.cpp +110 -0
  519. data/vendor-src/libleptris/test/abi/test_dom_mutation_bugs.cpp +210 -0
  520. data/vendor-src/libleptris/test/abi/test_header_hygiene.cpp +269 -0
  521. data/vendor-src/libleptris/test/abi/test_namespace_mutation_and_create.cpp +198 -0
  522. data/vendor-src/libleptris/test/abi/test_node_get_xpath.cpp +128 -0
  523. data/vendor-src/libleptris/test/abi/test_nokogiri_api.cpp +392 -0
  524. data/vendor-src/libleptris/test/abi/test_parse_fragment.cpp +114 -0
  525. data/vendor-src/libleptris/test/abi/test_previous_sibling_and_c14n_ex.cpp +299 -0
  526. data/vendor-src/libleptris/test/abi/test_public_surface.cpp +463 -0
  527. data/vendor-src/libleptris/test/abi/test_serialize_abi.cpp +67 -0
  528. data/vendor-src/libleptris/test/abi/test_v0_5_14_bugs.cpp +299 -0
  529. data/vendor-src/libleptris/test/abi/test_xpath_custom_fns.cpp +106 -0
  530. data/vendor-src/libleptris/test/cli/test_cli.cpp +493 -0
  531. data/vendor-src/libleptris/test/common/test_simd_spans.cpp +88 -0
  532. data/vendor-src/libleptris/test/common/test_simd_text.cpp +142 -0
  533. data/vendor-src/libleptris/test/concurrency/test_concurrency.cpp +218 -0
  534. data/vendor-src/libleptris/test/diff/test_diff.cpp +244 -0
  535. data/vendor-src/libleptris/test/dom/test_compact.cpp +339 -0
  536. data/vendor-src/libleptris/test/dom/test_digest.cpp +111 -0
  537. data/vendor-src/libleptris/test/dom/test_document_children.cpp +270 -0
  538. data/vendor-src/libleptris/test/dom/test_dom.cpp +2310 -0
  539. data/vendor-src/libleptris/test/dom/test_map_lifecycle.cpp +111 -0
  540. data/vendor-src/libleptris/test/dom/test_node_surface_parity.cpp +268 -0
  541. data/vendor-src/libleptris/test/dom/test_text_borrowed.cpp +126 -0
  542. data/vendor-src/libleptris/test/dom/test_vtable.cpp +108 -0
  543. data/vendor-src/libleptris/test/dtd/test_dtd_validate.cpp +1227 -0
  544. data/vendor-src/libleptris/test/dtd/test_w3c_conformance.cpp +212 -0
  545. data/vendor-src/libleptris/test/fixtures/basic.xml +13 -0
  546. data/vendor-src/libleptris/test/fixtures/cdata.xml +5 -0
  547. data/vendor-src/libleptris/test/fixtures/malformed.xml +2 -0
  548. data/vendor-src/libleptris/test/fixtures/namespaces.xml +11 -0
  549. data/vendor-src/libleptris/test/fixtures/utf16_decl.xml +5 -0
  550. data/vendor-src/libleptris/test/fuzz/fuzz_parse.c +40 -0
  551. data/vendor-src/libleptris/test/html/html5lib-redlist.txt +1366 -0
  552. data/vendor-src/libleptris/test/html/html5lib-tests/LICENSE +21 -0
  553. data/vendor-src/libleptris/test/html/html5lib-tests/README.md +11 -0
  554. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption01.dat +354 -0
  555. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/adoption02.dat +39 -0
  556. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/blocks.dat +695 -0
  557. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/comments01.dat +217 -0
  558. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/doctype01.dat +474 -0
  559. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/domjs-unsafe.dat +0 -0
  560. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities01.dat +943 -0
  561. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/entities02.dat +309 -0
  562. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/foreign-fragment.dat +645 -0
  563. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/html5test-com.dat +301 -0
  564. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/inbody01.dat +54 -0
  565. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/isindex.dat +49 -0
  566. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/main-element.dat +46 -0
  567. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/math.dat +104 -0
  568. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/menuitem-element.dat +240 -0
  569. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/namespace-sensitivity.dat +22 -0
  570. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/noscript01.dat +237 -0
  571. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes-plain-text-unsafe.dat +0 -0
  572. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/pending-spec-changes.dat +46 -0
  573. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/plain-text-unsafe.dat +0 -0
  574. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/ruby.dat +302 -0
  575. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/scriptdata01.dat +372 -0
  576. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/search-element.dat +46 -0
  577. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/svg.dat +104 -0
  578. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tables01.dat +308 -0
  579. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/template.dat +1673 -0
  580. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests1.dat +1956 -0
  581. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests10.dat +849 -0
  582. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests11.dat +523 -0
  583. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests12.dat +62 -0
  584. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests14.dat +75 -0
  585. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests15.dat +216 -0
  586. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests16.dat +2602 -0
  587. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests17.dat +179 -0
  588. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests18.dat +558 -0
  589. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests19.dat +1398 -0
  590. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests2.dat +821 -0
  591. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests20.dat +842 -0
  592. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests21.dat +306 -0
  593. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests22.dat +190 -0
  594. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests23.dat +168 -0
  595. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests24.dat +79 -0
  596. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests25.dat +288 -0
  597. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests26.dat +453 -0
  598. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests3.dat +305 -0
  599. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests4.dat +58 -0
  600. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests5.dat +210 -0
  601. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests6.dat +663 -0
  602. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests7.dat +417 -0
  603. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests8.dat +165 -0
  604. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests9.dat +472 -0
  605. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tests_innerHTML_1.dat +843 -0
  606. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/tricky01.dat +336 -0
  607. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit01.dat +785 -0
  608. data/vendor-src/libleptris/test/html/html5lib-tests/tree-construction/webkit02.dat +554 -0
  609. data/vendor-src/libleptris/test/html/html5lib_cases.h.in +6 -0
  610. data/vendor-src/libleptris/test/html/nokogiri-parity-redlist.txt +1183 -0
  611. data/vendor-src/libleptris/test/html/nokogiri-tree-tests.dat +18107 -0
  612. data/vendor-src/libleptris/test/html/test_html.cpp +2191 -0
  613. data/vendor-src/libleptris/test/html/test_html5lib.cpp +831 -0
  614. data/vendor-src/libleptris/test/memory/test_arena.cpp +252 -0
  615. data/vendor-src/libleptris/test/memory/test_oom_injection.cpp +170 -0
  616. data/vendor-src/libleptris/test/memory/test_pool.cpp +331 -0
  617. data/vendor-src/libleptris/test/memory/test_pool_arena.cpp +180 -0
  618. data/vendor-src/libleptris/test/parser/test_encoding.cpp +282 -0
  619. data/vendor-src/libleptris/test/parser/test_large_documents.cpp +346 -0
  620. data/vendor-src/libleptris/test/parser/test_parser.cpp +565 -0
  621. data/vendor-src/libleptris/test/parser/test_simd_count.cpp +70 -0
  622. data/vendor-src/libleptris/test/perf/test_perf.cpp +362 -0
  623. data/vendor-src/libleptris/test/perf/test_stress_high_doc_count.cpp +67 -0
  624. data/vendor-src/libleptris/test/rng/include-cases/bad-construct.rng +7 -0
  625. data/vendor-src/libleptris/test/rng/include-cases/bad-override.rng +6 -0
  626. data/vendor-src/libleptris/test/rng/include-cases/bad-start-override.rng +5 -0
  627. data/vendor-src/libleptris/test/rng/include-cases/ext-lib.rng +3 -0
  628. data/vendor-src/libleptris/test/rng/include-cases/ext-main.rng +7 -0
  629. data/vendor-src/libleptris/test/rng/include-cases/lib.rng +5 -0
  630. data/vendor-src/libleptris/test/rng/include-cases/lib2.rng +6 -0
  631. data/vendor-src/libleptris/test/rng/include-cases/main.rng +4 -0
  632. data/vendor-src/libleptris/test/rng/include-cases/no-href.rng +4 -0
  633. data/vendor-src/libleptris/test/rng/include-cases/override.rng +8 -0
  634. data/vendor-src/libleptris/test/rng/include-cases/self-include.rng +4 -0
  635. data/vendor-src/libleptris/test/rng/include-cases/start-override.rng +5 -0
  636. data/vendor-src/libleptris/test/rng/jing-cases/000.bad.xml +1 -0
  637. data/vendor-src/libleptris/test/rng/jing-cases/000.ok.xml +1 -0
  638. data/vendor-src/libleptris/test/rng/jing-cases/000.rng +1 -0
  639. data/vendor-src/libleptris/test/rng/jing-cases/001.bad.xml +1 -0
  640. data/vendor-src/libleptris/test/rng/jing-cases/001.ok.xml +1 -0
  641. data/vendor-src/libleptris/test/rng/jing-cases/001.rng +1 -0
  642. data/vendor-src/libleptris/test/rng/jing-cases/002.bad.xml +1 -0
  643. data/vendor-src/libleptris/test/rng/jing-cases/002.ok.xml +1 -0
  644. data/vendor-src/libleptris/test/rng/jing-cases/002.rng +1 -0
  645. data/vendor-src/libleptris/test/rng/jing-cases/003.bad.xml +1 -0
  646. data/vendor-src/libleptris/test/rng/jing-cases/003.ok.xml +1 -0
  647. data/vendor-src/libleptris/test/rng/jing-cases/003.rng +1 -0
  648. data/vendor-src/libleptris/test/rng/jing-cases/004.bad.xml +1 -0
  649. data/vendor-src/libleptris/test/rng/jing-cases/004.ok.xml +1 -0
  650. data/vendor-src/libleptris/test/rng/jing-cases/004.rng +1 -0
  651. data/vendor-src/libleptris/test/rng/jing-cases/005.bad.xml +1 -0
  652. data/vendor-src/libleptris/test/rng/jing-cases/005.ok.xml +1 -0
  653. data/vendor-src/libleptris/test/rng/jing-cases/005.rng +1 -0
  654. data/vendor-src/libleptris/test/rng/jing-cases/006.bad.xml +1 -0
  655. data/vendor-src/libleptris/test/rng/jing-cases/006.ok.xml +1 -0
  656. data/vendor-src/libleptris/test/rng/jing-cases/006.rng +1 -0
  657. data/vendor-src/libleptris/test/rng/jing-cases/007.bad.xml +1 -0
  658. data/vendor-src/libleptris/test/rng/jing-cases/007.ok.xml +1 -0
  659. data/vendor-src/libleptris/test/rng/jing-cases/007.rng +1 -0
  660. data/vendor-src/libleptris/test/rng/jing-cases/008.bad.xml +1 -0
  661. data/vendor-src/libleptris/test/rng/jing-cases/008.ok.xml +1 -0
  662. data/vendor-src/libleptris/test/rng/jing-cases/008.rng +1 -0
  663. data/vendor-src/libleptris/test/rng/jing-cases/009.bad.xml +1 -0
  664. data/vendor-src/libleptris/test/rng/jing-cases/009.ok.xml +1 -0
  665. data/vendor-src/libleptris/test/rng/jing-cases/009.rng +1 -0
  666. data/vendor-src/libleptris/test/rng/jing-cases/010.bad.xml +1 -0
  667. data/vendor-src/libleptris/test/rng/jing-cases/010.ok.xml +1 -0
  668. data/vendor-src/libleptris/test/rng/jing-cases/010.rng +1 -0
  669. data/vendor-src/libleptris/test/rng/jing-cases/011.bad.xml +1 -0
  670. data/vendor-src/libleptris/test/rng/jing-cases/011.ok.xml +1 -0
  671. data/vendor-src/libleptris/test/rng/jing-cases/011.rng +1 -0
  672. data/vendor-src/libleptris/test/rng/jing-cases/012.bad.xml +1 -0
  673. data/vendor-src/libleptris/test/rng/jing-cases/012.ok.xml +1 -0
  674. data/vendor-src/libleptris/test/rng/jing-cases/012.rng +1 -0
  675. data/vendor-src/libleptris/test/rng/jing-cases/013.bad.xml +1 -0
  676. data/vendor-src/libleptris/test/rng/jing-cases/013.ok.xml +1 -0
  677. data/vendor-src/libleptris/test/rng/jing-cases/013.rng +1 -0
  678. data/vendor-src/libleptris/test/rng/jing-cases/014.bad.xml +1 -0
  679. data/vendor-src/libleptris/test/rng/jing-cases/014.ok.xml +1 -0
  680. data/vendor-src/libleptris/test/rng/jing-cases/014.rng +1 -0
  681. data/vendor-src/libleptris/test/rng/jing-cases/015.bad.xml +1 -0
  682. data/vendor-src/libleptris/test/rng/jing-cases/015.ok.xml +1 -0
  683. data/vendor-src/libleptris/test/rng/jing-cases/015.rng +1 -0
  684. data/vendor-src/libleptris/test/rng/jing-cases/016.bad.xml +1 -0
  685. data/vendor-src/libleptris/test/rng/jing-cases/016.ok.xml +1 -0
  686. data/vendor-src/libleptris/test/rng/jing-cases/016.rng +1 -0
  687. data/vendor-src/libleptris/test/rng/jing-cases/017.bad.xml +1 -0
  688. data/vendor-src/libleptris/test/rng/jing-cases/017.ok.xml +1 -0
  689. data/vendor-src/libleptris/test/rng/jing-cases/017.rng +1 -0
  690. data/vendor-src/libleptris/test/rng/jing-cases/018.bad.xml +1 -0
  691. data/vendor-src/libleptris/test/rng/jing-cases/018.ok.xml +1 -0
  692. data/vendor-src/libleptris/test/rng/jing-cases/018.rng +1 -0
  693. data/vendor-src/libleptris/test/rng/jing-cases/019.bad.xml +1 -0
  694. data/vendor-src/libleptris/test/rng/jing-cases/019.ok.xml +1 -0
  695. data/vendor-src/libleptris/test/rng/jing-cases/019.rng +7 -0
  696. data/vendor-src/libleptris/test/rng/jing-cases/020-book.rng +4 -0
  697. data/vendor-src/libleptris/test/rng/jing-cases/020.bad.xml +1 -0
  698. data/vendor-src/libleptris/test/rng/jing-cases/020.ok.xml +1 -0
  699. data/vendor-src/libleptris/test/rng/jing-cases/020.rng +3 -0
  700. data/vendor-src/libleptris/test/rng/jing-cases/README.md +32 -0
  701. data/vendor-src/libleptris/test/rng/jing-cases/jing-ref.json +212 -0
  702. data/vendor-src/libleptris/test/rng/jing-cases/meta.json +1 -0
  703. data/vendor-src/libleptris/test/rng/test_rng.cpp +1365 -0
  704. data/vendor-src/libleptris/test/rng/test_rng_corpus.cpp +133 -0
  705. data/vendor-src/libleptris/test/rng/test_rng_corpus_msg.cpp +233 -0
  706. data/vendor-src/libleptris/test/sax/test_iterparse.cpp +203 -0
  707. data/vendor-src/libleptris/test/sax/test_pull.cpp +214 -0
  708. data/vendor-src/libleptris/test/sax/test_pull_batch.cpp +201 -0
  709. data/vendor-src/libleptris/test/sax/test_recorder.cpp +265 -0
  710. data/vendor-src/libleptris/test/sax/test_sax.cpp +665 -0
  711. data/vendor-src/libleptris/test/sax/test_streaming.cpp +434 -0
  712. data/vendor-src/libleptris/test/sch/conformance-cases/README.md +15 -0
  713. data/vendor-src/libleptris/test/sch/conformance-cases/extends-baseuri-fixup-01.xml +28 -0
  714. data/vendor-src/libleptris/test/sch/conformance-cases/extends-recursive-01.xml +27 -0
  715. data/vendor-src/libleptris/test/sch/conformance-cases/include-baseuri-fixup-01.xml +24 -0
  716. data/vendor-src/libleptris/test/sch/conformance-cases/include-recursive-01.xml +24 -0
  717. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-01.xml +20 -0
  718. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-02.xml +20 -0
  719. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-03.xml +20 -0
  720. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-04.xml +23 -0
  721. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-05.xml +20 -0
  722. data/vendor-src/libleptris/test/sch/conformance-cases/let-name-collision-error-06.xml +25 -0
  723. data/vendor-src/libleptris/test/sch/conformance-cases/let-pattern-global-01.xml +24 -0
  724. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-01.xml +18 -0
  725. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-02.xml +18 -0
  726. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-03.xml +18 -0
  727. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-04.xml +19 -0
  728. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-05.xml +20 -0
  729. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-06.xml +20 -0
  730. data/vendor-src/libleptris/test/sch/conformance-cases/let-reference-undefined-07.xml +18 -0
  731. data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-01.xml +20 -0
  732. data/vendor-src/libleptris/test/sch/conformance-cases/let-rule-global-02.xml +23 -0
  733. data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-pattern-01.xml +25 -0
  734. data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-phase-01.xml +23 -0
  735. data/vendor-src/libleptris/test/sch/conformance-cases/let-scope-rule-01.xml +23 -0
  736. data/vendor-src/libleptris/test/sch/conformance-cases/let-value-element-content-01.xml +33 -0
  737. data/vendor-src/libleptris/test/sch/conformance-cases/pattern-abstract-01.xml +22 -0
  738. data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-01.xml +21 -0
  739. data/vendor-src/libleptris/test/sch/conformance-cases/pattern-subordinate-document-02.xml +21 -0
  740. data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-01.xml +21 -0
  741. data/vendor-src/libleptris/test/sch/conformance-cases/rule-abstract-02.xml +23 -0
  742. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-attribute-01.xml +18 -0
  743. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-comment-01.xml +20 -0
  744. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-element-01.xml +18 -0
  745. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-pi-01.xml +20 -0
  746. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-root-01.xml +18 -0
  747. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-text-01.xml +18 -0
  748. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-01.xml +22 -0
  749. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-02.xml +25 -0
  750. data/vendor-src/libleptris/test/sch/conformance-cases/rule-context-variable-03.xml +22 -0
  751. data/vendor-src/libleptris/test/sch/conformance-cases/rule-order-01.xml +21 -0
  752. data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-01.xml +26 -0
  753. data/vendor-src/libleptris/test/sch/conformance-cases/schema-default-phase-02.xml +25 -0
  754. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-01.xml +28 -0
  755. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-diagnostic-02.xml +25 -0
  756. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-nopath-01.xml +23 -0
  757. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-name-path-01.xml +23 -0
  758. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-01.xml +28 -0
  759. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-property-copy-of.xml +26 -0
  760. data/vendor-src/libleptris/test/sch/conformance-cases/svrl-value-of-01.xml +23 -0
  761. data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-01.xml +19 -0
  762. data/vendor-src/libleptris/test/sch/conformance-cases/xslt-key-element-content-01.xml +21 -0
  763. data/vendor-src/libleptris/test/sch/test_schematron.cpp +337 -0
  764. data/vendor-src/libleptris/test/sch/test_schematron_corpus.cpp +421 -0
  765. data/vendor-src/libleptris/test/serializer/test_c14n.cpp +539 -0
  766. data/vendor-src/libleptris/test/serializer/test_serialize.cpp +890 -0
  767. data/vendor-src/libleptris/test/smoke/test_smoke.cpp +41 -0
  768. data/vendor-src/libleptris/test/xinclude/test_xinclude.cpp +903 -0
  769. data/vendor-src/libleptris/test/xpath/test_bytecode_vm.cpp +755 -0
  770. data/vendor-src/libleptris/test/xpath/test_compiled.cpp +171 -0
  771. data/vendor-src/libleptris/test/xpath/test_exslt.cpp +141 -0
  772. data/vendor-src/libleptris/test/xpath/test_xpath.cpp +2433 -0
  773. data/vendor-src/libleptris/test/xpath/test_xpath_conformance.cpp +570 -0
  774. data/vendor-src/libleptris/test/xpath/test_xslt.cpp +4245 -0
  775. data/vendor-src/libleptris/test/xquery/books.xml +1 -0
  776. data/vendor-src/libleptris/test/xquery/qt3/README.md +28 -0
  777. data/vendor-src/libleptris/test/xquery/qt3/fn/concat.xml +878 -0
  778. data/vendor-src/libleptris/test/xquery/qt3/fn/contains.xml +795 -0
  779. data/vendor-src/libleptris/test/xquery/qt3/fn/ends-with.xml +556 -0
  780. data/vendor-src/libleptris/test/xquery/qt3/fn/starts-with.xml +644 -0
  781. data/vendor-src/libleptris/test/xquery/qt3/fn/substring/concepts.xml +1 -0
  782. data/vendor-src/libleptris/test/xquery/qt3/fn/substring.xml +449 -0
  783. data/vendor-src/libleptris/test/xquery/test_qt3.cpp +324 -0
  784. data/vendor-src/libleptris/test/xquery/test_xquery.cpp +768 -0
  785. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/ATTRIBUTION.md +12 -0
  786. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.out +4 -0
  787. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xml +7 -0
  788. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/array.xsl +26 -0
  789. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.out +6 -0
  790. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xml +7 -0
  791. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-1-.xsl +21 -0
  792. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.out +2 -0
  793. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xml +3 -0
  794. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-10-.xsl +10 -0
  795. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.out +2 -0
  796. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xml +1 -0
  797. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-100.xsl +9 -0
  798. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.out +2 -0
  799. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xml +1 -0
  800. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-101.xsl +8 -0
  801. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102-inc.xsl +21 -0
  802. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.out +3 -0
  803. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xml +1 -0
  804. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-102.xsl +10 -0
  805. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.out +2 -0
  806. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xml +1 -0
  807. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-103.xsl +13 -0
  808. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.out +2 -0
  809. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xml +1 -0
  810. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-104.xsl +10 -0
  811. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.out +2 -0
  812. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xml +1 -0
  813. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-105.xsl +8 -0
  814. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.out +2 -0
  815. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xml +2 -0
  816. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-106.xsl +12 -0
  817. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.out +8 -0
  818. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xml +7 -0
  819. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-107.xsl +11 -0
  820. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.out +25 -0
  821. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xml +4 -0
  822. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-108.xsl +21 -0
  823. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.out +3 -0
  824. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xml +4 -0
  825. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-109.xsl +7 -0
  826. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.out +1 -0
  827. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xml +4 -0
  828. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-11-.xsl +12 -0
  829. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.ent +1 -0
  830. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.out +1 -0
  831. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xml +9 -0
  832. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-110.xsl +20 -0
  833. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.out +6 -0
  834. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xml +17 -0
  835. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-111.xsl +45 -0
  836. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.out +2 -0
  837. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xml +1 -0
  838. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-112.xsl +22 -0
  839. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.out +4 -0
  840. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xml +7 -0
  841. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-113.xsl +15 -0
  842. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.out +3 -0
  843. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xml +7 -0
  844. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-114.xsl +16 -0
  845. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.out +2 -0
  846. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xml +1 -0
  847. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-115.xsl +19 -0
  848. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.out +2 -0
  849. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xml +1 -0
  850. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-116.xsl +22 -0
  851. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.out +5 -0
  852. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xml +10 -0
  853. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-117.xsl +59 -0
  854. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.out +3 -0
  855. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xml +6 -0
  856. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-118.xsl +14 -0
  857. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.out +10 -0
  858. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xml +12 -0
  859. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-119.xsl +12 -0
  860. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.out +2 -0
  861. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xml +9 -0
  862. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-12-.xsl +16 -0
  863. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.out +8 -0
  864. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xml +15 -0
  865. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-120.xsl +27 -0
  866. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.out +1 -0
  867. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xml +1 -0
  868. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-121.xsl +8 -0
  869. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.out +2 -0
  870. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xml +11 -0
  871. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-122.xsl +17 -0
  872. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.out +2 -0
  873. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xml +2 -0
  874. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-123.xsl +14 -0
  875. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.out +2 -0
  876. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xml +6 -0
  877. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-124.xsl +14 -0
  878. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.out +351 -0
  879. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xml +118 -0
  880. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-125.xsl +99 -0
  881. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.out +9 -0
  882. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xml +1 -0
  883. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-126.xsl +17 -0
  884. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.out +1 -0
  885. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xml +1 -0
  886. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-127.xsl +18 -0
  887. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.out +5 -0
  888. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xml +26 -0
  889. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-128.xsl +26 -0
  890. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.out +6 -0
  891. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xml +6 -0
  892. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-129.xsl +10 -0
  893. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.out +2 -0
  894. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xml +1 -0
  895. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-13-.xsl +10 -0
  896. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp1.imp +25 -0
  897. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp2.imp +14 -0
  898. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp3.imp +16 -0
  899. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130-imp4.imp +22 -0
  900. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.doc +7 -0
  901. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.out +1 -0
  902. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xml +4 -0
  903. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-130.xsl +22 -0
  904. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131-imp.imp +19 -0
  905. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.out +2 -0
  906. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xml +3 -0
  907. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-131.xsl +13 -0
  908. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.out +6 -0
  909. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xml +6 -0
  910. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-132.xsl +13 -0
  911. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.out +6 -0
  912. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xml +7 -0
  913. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-133.xsl +32 -0
  914. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.out +2 -0
  915. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xml +5 -0
  916. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-134.xsl +12 -0
  917. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.out +2 -0
  918. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xml +5 -0
  919. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-135.xsl +10 -0
  920. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.out +4 -0
  921. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xml +4 -0
  922. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-136.xsl +8 -0
  923. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.imp +12 -0
  924. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.out +2 -0
  925. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xml +1 -0
  926. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-137.xsl +8 -0
  927. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.out +23 -0
  928. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xml +15 -0
  929. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-138.xsl +28 -0
  930. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.out +4 -0
  931. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xml +9 -0
  932. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-139.xsl +14 -0
  933. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.out +4 -0
  934. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xml +7 -0
  935. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-14-.xsl +23 -0
  936. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.out +4 -0
  937. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xml +6 -0
  938. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-140.xsl +32 -0
  939. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.out +46 -0
  940. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xml +9 -0
  941. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-141.xsl +25 -0
  942. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.out +35 -0
  943. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xml +65 -0
  944. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-142.xsl +85 -0
  945. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.out +2 -0
  946. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xml +1 -0
  947. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-143.xsl +10 -0
  948. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.out +2 -0
  949. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xml +1 -0
  950. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-144.xsl +10 -0
  951. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.err +5 -0
  952. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xml +10 -0
  953. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-145.xsl +10 -0
  954. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-1.imp +11 -0
  955. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-2.imp +11 -0
  956. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-3.imp +57 -0
  957. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-4.imp +15 -0
  958. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-5.imp +27 -0
  959. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147-6.imp +31 -0
  960. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.out +17 -0
  961. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xml +21 -0
  962. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-147.xsl +29 -0
  963. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.out +2 -0
  964. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xml +1 -0
  965. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-148.xsl +13 -0
  966. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.out +2 -0
  967. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xml +1 -0
  968. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-149.xsl +11 -0
  969. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.out +5 -0
  970. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xml +5 -0
  971. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-15-.xsl +15 -0
  972. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.out +2 -0
  973. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xml +1 -0
  974. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-150.xsl +9 -0
  975. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xml +1 -0
  976. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-151.xsl +15 -0
  977. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.out +12 -0
  978. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xml +1 -0
  979. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-152.xsl +30 -0
  980. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.doc +4 -0
  981. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.out +2 -0
  982. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xml +9 -0
  983. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-153.xsl +19 -0
  984. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xml +1 -0
  985. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-154.xsl +4 -0
  986. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.out +3 -0
  987. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xml +5 -0
  988. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-155.xsl +10 -0
  989. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.err +2 -0
  990. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp1.imp +16 -0
  991. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.imp2.imp +10 -0
  992. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xml +1 -0
  993. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-156.xsl +12 -0
  994. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.err +3 -0
  995. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.out +9 -0
  996. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xml +6 -0
  997. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-157.xsl +22 -0
  998. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.doc +3 -0
  999. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.out +4 -0
  1000. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xml +2 -0
  1001. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-158.xsl +19 -0
  1002. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.out +8 -0
  1003. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xml +1 -0
  1004. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-159.xsl +17 -0
  1005. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.out +14 -0
  1006. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xml +17 -0
  1007. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-16-.xsl +13 -0
  1008. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.out +7 -0
  1009. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xml +8 -0
  1010. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-160.xsl +14 -0
  1011. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.out +6 -0
  1012. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xml +5 -0
  1013. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-161.xsl +18 -0
  1014. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.out +2 -0
  1015. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xml +5 -0
  1016. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-163.xsl +6 -0
  1017. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.out +4 -0
  1018. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xml +4 -0
  1019. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-164.xsl +13 -0
  1020. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.err +6 -0
  1021. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xml +10 -0
  1022. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-165.xsl +9 -0
  1023. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.out +15256 -0
  1024. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xml +15255 -0
  1025. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-166.xsl +131 -0
  1026. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.out +1 -0
  1027. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xml +1 -0
  1028. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-167.xsl +20 -0
  1029. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.out +2 -0
  1030. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xml +9 -0
  1031. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-168.xsl +9 -0
  1032. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.imp +5 -0
  1033. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.out +2 -0
  1034. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xml +1 -0
  1035. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-169.xsl +11 -0
  1036. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.out +2 -0
  1037. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xml +1 -0
  1038. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-17-.xsl +7 -0
  1039. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.out +4 -0
  1040. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xml +3 -0
  1041. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-170.xsl +6 -0
  1042. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.out +2 -0
  1043. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xml +4 -0
  1044. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-171.xsl +7 -0
  1045. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.out +6 -0
  1046. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xml +6 -0
  1047. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-172.xsl +22 -0
  1048. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.out +1 -0
  1049. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xml +1 -0
  1050. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-173.xsl +11 -0
  1051. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.err +1 -0
  1052. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xml +1 -0
  1053. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-174.xsl +18 -0
  1054. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.err +2 -0
  1055. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.out +8 -0
  1056. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xml +1 -0
  1057. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-175.xsl +33 -0
  1058. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.out +2 -0
  1059. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xml +1 -0
  1060. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-176.xsl +11 -0
  1061. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.out +2 -0
  1062. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xml +1 -0
  1063. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-177.xsl +7 -0
  1064. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.out +2 -0
  1065. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xml +1 -0
  1066. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-178.xsl +18 -0
  1067. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.out +9 -0
  1068. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xml +1 -0
  1069. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-179.xsl +24 -0
  1070. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.out +2 -0
  1071. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xml +3 -0
  1072. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-18-.xsl +17 -0
  1073. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.err +4 -0
  1074. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xml +2 -0
  1075. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-180.xsl +8 -0
  1076. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.out +5 -0
  1077. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xml +4 -0
  1078. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-181.xsl +13 -0
  1079. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.out +2 -0
  1080. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xml +4 -0
  1081. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-182.xsl +21 -0
  1082. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.out +2 -0
  1083. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xml +5 -0
  1084. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-183.xsl +9 -0
  1085. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.err +6 -0
  1086. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xml +1 -0
  1087. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-184.xsl +8 -0
  1088. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.out +5 -0
  1089. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xml +4 -0
  1090. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-186.xsl +7 -0
  1091. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.err +6 -0
  1092. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.out +14 -0
  1093. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xml +1 -0
  1094. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-187.xsl +42 -0
  1095. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188-imp.xsl +8 -0
  1096. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.out +4 -0
  1097. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xml +1 -0
  1098. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-188.xsl +20 -0
  1099. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.out +5 -0
  1100. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xml +1 -0
  1101. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-189.xsl +25 -0
  1102. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.out +2 -0
  1103. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xml +3 -0
  1104. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-19-.xsl +17 -0
  1105. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190-imp.xsl +10 -0
  1106. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.out +4 -0
  1107. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xml +1 -0
  1108. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-190.xsl +16 -0
  1109. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191-imp.xsl +8 -0
  1110. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.err +2 -0
  1111. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xml +1 -0
  1112. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-191.xsl +9 -0
  1113. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.out +1 -0
  1114. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xml +1 -0
  1115. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-192.xsl +33 -0
  1116. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.out +2 -0
  1117. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xml +1 -0
  1118. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-193.xsl +11 -0
  1119. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.err +9 -0
  1120. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xml +1 -0
  1121. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-194.xsl +8 -0
  1122. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.out +8 -0
  1123. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xml +9 -0
  1124. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-195.xsl +19 -0
  1125. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.out +7 -0
  1126. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xml +9 -0
  1127. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-196.xsl +19 -0
  1128. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.out +6 -0
  1129. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xml +6 -0
  1130. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-197.xsl +16 -0
  1131. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.out +2 -0
  1132. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xml +2 -0
  1133. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-198.xsl +17 -0
  1134. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.out +6 -0
  1135. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xml +6 -0
  1136. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-199.xsl +18 -0
  1137. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.out +8 -0
  1138. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xml +12 -0
  1139. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-2-.xsl +16 -0
  1140. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.out +4 -0
  1141. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xml +7 -0
  1142. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-20-.xsl +22 -0
  1143. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.out +2 -0
  1144. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xml +1 -0
  1145. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-200.xsl +5 -0
  1146. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.err +6 -0
  1147. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xml +1 -0
  1148. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-201.xsl +16 -0
  1149. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.err +2 -0
  1150. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xml +1 -0
  1151. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-202.xsl +5 -0
  1152. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.err +1 -0
  1153. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xml +1 -0
  1154. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-203.xsl +5 -0
  1155. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.err +2 -0
  1156. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xml +1 -0
  1157. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-204.xsl +6 -0
  1158. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.out +2 -0
  1159. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xml +1 -0
  1160. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-205.xsl +10 -0
  1161. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.out +2 -0
  1162. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xml +1 -0
  1163. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-206.xsl +9 -0
  1164. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.out +2 -0
  1165. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xml +1 -0
  1166. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-207.xsl +61 -0
  1167. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.err +6 -0
  1168. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xml +8 -0
  1169. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-208.xsl +8 -0
  1170. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.out +2 -0
  1171. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xml +1 -0
  1172. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-209.xsl +21 -0
  1173. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.out +2 -0
  1174. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xml +8 -0
  1175. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-21-.xsl +7 -0
  1176. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.out +2 -0
  1177. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xml +1 -0
  1178. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-210.xsl +20 -0
  1179. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.out +2 -0
  1180. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xml +1 -0
  1181. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-211.xsl +26 -0
  1182. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.out +1 -0
  1183. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xml +1 -0
  1184. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-212.xsl +25 -0
  1185. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.out +1 -0
  1186. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xml +1 -0
  1187. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-213.xsl +26 -0
  1188. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.out +6 -0
  1189. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xml +6 -0
  1190. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-214.xsl +25 -0
  1191. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.err +5 -0
  1192. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xml +1 -0
  1193. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-215.xsl +6 -0
  1194. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.out +2 -0
  1195. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xml +1 -0
  1196. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-216.xsl +11 -0
  1197. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.out +2 -0
  1198. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xml +1 -0
  1199. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-217.xsl +24 -0
  1200. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.out +2 -0
  1201. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xml +1 -0
  1202. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-218.xsl +8 -0
  1203. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.out +68 -0
  1204. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xml +22 -0
  1205. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-219.xsl +17 -0
  1206. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.out +12 -0
  1207. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xml +18 -0
  1208. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-22-.xsl +19 -0
  1209. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.out +2 -0
  1210. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xml +1 -0
  1211. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-220.xsl +15 -0
  1212. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.out +2 -0
  1213. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xml +9 -0
  1214. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-221.xsl +15 -0
  1215. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.out +2 -0
  1216. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xml +1 -0
  1217. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-222.xsl +6 -0
  1218. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-imp.xsl +12 -0
  1219. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223-inc.xsl +12 -0
  1220. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.out +1 -0
  1221. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xml +1 -0
  1222. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-223.xsl +17 -0
  1223. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.out +9 -0
  1224. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xml +8 -0
  1225. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-224.xsl +28 -0
  1226. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.out +2 -0
  1227. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xml +1 -0
  1228. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-225.xsl +32 -0
  1229. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.out +15 -0
  1230. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xml +21 -0
  1231. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-23-.xsl +20 -0
  1232. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.out +27 -0
  1233. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xml +2419 -0
  1234. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-24-.xsl +22 -0
  1235. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.out +3 -0
  1236. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xml +1 -0
  1237. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-25-.xsl +10 -0
  1238. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.out +2 -0
  1239. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xml +1 -0
  1240. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-26-.xsl +9 -0
  1241. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.out +2 -0
  1242. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xml +1 -0
  1243. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-27-.xsl +14 -0
  1244. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.out +1 -0
  1245. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xml +1 -0
  1246. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-28-.xsl +9 -0
  1247. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.ent +7 -0
  1248. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.out +10 -0
  1249. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xml +5 -0
  1250. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-29-.xsl +16 -0
  1251. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.out +2 -0
  1252. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xml +1 -0
  1253. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-3-.xsl +13 -0
  1254. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.out +2 -0
  1255. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xml +1 -0
  1256. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-30-.xsl +7 -0
  1257. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.out +3 -0
  1258. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xml +4 -0
  1259. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-31-.xsl +10 -0
  1260. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.out +2 -0
  1261. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xml +1 -0
  1262. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-32-.xsl +17 -0
  1263. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.out +16 -0
  1264. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xml +14 -0
  1265. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-33-.xsl +29 -0
  1266. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.out +2 -0
  1267. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xml +1 -0
  1268. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-35-.xsl +10 -0
  1269. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.out +4 -0
  1270. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xml +5 -0
  1271. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-.xsl +8 -0
  1272. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-36-inc.xsl +16 -0
  1273. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.out +4 -0
  1274. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xml +5 -0
  1275. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-.xsl +8 -0
  1276. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-37-inc.xsl +15 -0
  1277. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.out +2 -0
  1278. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xml +17 -0
  1279. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-38-.xsl +17 -0
  1280. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.out +3 -0
  1281. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xml +3 -0
  1282. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-39-.xsl +34 -0
  1283. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.out +6 -0
  1284. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xml +38 -0
  1285. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-4-.xsl +12 -0
  1286. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.out +2 -0
  1287. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xml +1 -0
  1288. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-40-.xsl +16 -0
  1289. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.out +2 -0
  1290. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xml +1 -0
  1291. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-41-.xsl +19 -0
  1292. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.out +2 -0
  1293. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xml +1 -0
  1294. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-42-.xsl +16 -0
  1295. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.out +2 -0
  1296. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xml +1 -0
  1297. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-43-.xsl +19 -0
  1298. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.out +2 -0
  1299. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xml +1 -0
  1300. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-44-.xsl +19 -0
  1301. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.out +2 -0
  1302. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xml +1 -0
  1303. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-45-.xsl +27 -0
  1304. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.out +2 -0
  1305. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xml +1 -0
  1306. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-46-.xsl +16 -0
  1307. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.out +2 -0
  1308. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xml +1 -0
  1309. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-47-.xsl +18 -0
  1310. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.out +2 -0
  1311. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xml +1 -0
  1312. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-48-.xsl +24 -0
  1313. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.out +2 -0
  1314. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xml +1 -0
  1315. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-49-.xsl +15 -0
  1316. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.out +954 -0
  1317. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xml +475 -0
  1318. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-5-.xsl +158 -0
  1319. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.out +7 -0
  1320. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xml +3 -0
  1321. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-50-.xsl +14 -0
  1322. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.out +3 -0
  1323. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xml +12 -0
  1324. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-52.xsl +16 -0
  1325. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.out +1 -0
  1326. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xml +6 -0
  1327. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-53.xsl +11 -0
  1328. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.out +2 -0
  1329. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xml +2 -0
  1330. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-54.xsl +22 -0
  1331. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.out +2 -0
  1332. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xml +3 -0
  1333. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-55.xsl +9 -0
  1334. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.out +3 -0
  1335. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xml +1 -0
  1336. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-56.xsl +28 -0
  1337. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.out +2 -0
  1338. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xml +8 -0
  1339. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-57.xsl +21 -0
  1340. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-58.xsl +274 -0
  1341. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.out +2 -0
  1342. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xml +1 -0
  1343. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-59.xsl +9 -0
  1344. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.out +4 -0
  1345. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xml +6 -0
  1346. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-6-.xsl +32 -0
  1347. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.err +2 -0
  1348. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.out +2 -0
  1349. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xml +1 -0
  1350. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-60.xsl +15 -0
  1351. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.out +10 -0
  1352. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xml +1 -0
  1353. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-61.xsl +14 -0
  1354. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62-inc.xsl +4 -0
  1355. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.out +2 -0
  1356. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xml +1 -0
  1357. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-62.xsl +8 -0
  1358. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.out +22 -0
  1359. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xml +13 -0
  1360. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-63.xsl +13 -0
  1361. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.out +2 -0
  1362. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xml +1 -0
  1363. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-64.xsl +8 -0
  1364. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.ent +7 -0
  1365. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.out +8 -0
  1366. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xml +5 -0
  1367. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-65.xsl +26 -0
  1368. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.out +2 -0
  1369. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xml +8 -0
  1370. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-66.xsl +12 -0
  1371. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.out +1 -0
  1372. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xml +1 -0
  1373. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-68.xsl +8 -0
  1374. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.out +2 -0
  1375. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xml +2 -0
  1376. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-69.xsl +12 -0
  1377. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.out +2 -0
  1378. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xml +3 -0
  1379. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-7-.xsl +11 -0
  1380. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.out +9 -0
  1381. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xml +10 -0
  1382. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-70.xsl +13 -0
  1383. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.out +2 -0
  1384. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xml +1 -0
  1385. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-71.xsl +17 -0
  1386. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.out +6 -0
  1387. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xml +3 -0
  1388. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-72.xsl +31 -0
  1389. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.out +3 -0
  1390. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xml +5 -0
  1391. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-73.xsl +17 -0
  1392. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.out +2 -0
  1393. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xml +3 -0
  1394. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-74.xsl +12 -0
  1395. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.out +6 -0
  1396. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xml +1 -0
  1397. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-75.xsl +9 -0
  1398. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.out +4 -0
  1399. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xml +4 -0
  1400. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-76.xsl +16 -0
  1401. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.out +5 -0
  1402. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xml +4 -0
  1403. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-77.xsl +18 -0
  1404. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.out +3 -0
  1405. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xml +8 -0
  1406. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-78.xsl +17 -0
  1407. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.out +5 -0
  1408. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xml +4 -0
  1409. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-79.xsl +4 -0
  1410. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.out +3 -0
  1411. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xml +5 -0
  1412. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-8-.xsl +13 -0
  1413. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.out +2 -0
  1414. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xml +6 -0
  1415. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-80.xsl +29 -0
  1416. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.out +4 -0
  1417. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xml +12 -0
  1418. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-81.xsl +18 -0
  1419. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.out +5 -0
  1420. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xml +4 -0
  1421. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-82.xsl +12 -0
  1422. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.out +1 -0
  1423. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xml +1 -0
  1424. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-83.xsl +14 -0
  1425. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.out +15 -0
  1426. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xml +22 -0
  1427. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-84.xsl +14 -0
  1428. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.out +6 -0
  1429. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xml +7 -0
  1430. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-86.xsl +7 -0
  1431. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.out +5 -0
  1432. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xml +6 -0
  1433. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-87.xsl +16 -0
  1434. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.out +2 -0
  1435. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xml +1 -0
  1436. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-88.xsl +6 -0
  1437. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.out +12 -0
  1438. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xml +13 -0
  1439. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-89.xsl +105 -0
  1440. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.out +2 -0
  1441. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xml +3 -0
  1442. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-9-.xsl +10 -0
  1443. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.out +13 -0
  1444. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xml +15 -0
  1445. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-90.xsl +35 -0
  1446. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.out +3 -0
  1447. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xml +4 -0
  1448. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-91.xsl +8 -0
  1449. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.out +15 -0
  1450. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xml +19 -0
  1451. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-92.xsl +19 -0
  1452. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93-inc.xsl +12 -0
  1453. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.out +3 -0
  1454. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xml +1 -0
  1455. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-93.xsl +7 -0
  1456. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.out +2 -0
  1457. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xml +9 -0
  1458. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-94.xsl +35 -0
  1459. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.out +4 -0
  1460. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xml +5 -0
  1461. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-95.xsl +22 -0
  1462. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.out +5 -0
  1463. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xml +5 -0
  1464. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-96.xsl +10 -0
  1465. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.out +9 -0
  1466. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xml +16 -0
  1467. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-97.xsl +32 -0
  1468. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.out +6 -0
  1469. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xml +10 -0
  1470. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-98.xsl +31 -0
  1471. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.out +2 -0
  1472. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xml +1 -0
  1473. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/bug-99.xsl +16 -0
  1474. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.out +2 -0
  1475. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xml +23 -0
  1476. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/character.xsl +16 -0
  1477. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.out +9 -0
  1478. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xml +1 -0
  1479. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/date_add.xsl +16 -0
  1480. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.dtd +7 -0
  1481. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.out +16 -0
  1482. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xml +17 -0
  1483. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/doc.xsl +62 -0
  1484. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/inner.xsl +12 -0
  1485. data/vendor-src/libleptris/test/xslt/libxslt_suite_general/items.xml +34 -0
  1486. data/vendor-src/libleptris/test/xslt/open_cases.txt +0 -0
  1487. data/vendor-src/libleptris/test/xslt/test_libxslt_suite.cpp +398 -0
  1488. data/vendor-src/libleptris/vcpkg.json +29 -0
  1489. data/vendor-src/utf8proc/CMakeLists.txt +133 -0
  1490. data/vendor-src/utf8proc/Doxyfile +2765 -0
  1491. data/vendor-src/utf8proc/LICENSE.md +93 -0
  1492. data/vendor-src/utf8proc/MANIFEST +9 -0
  1493. data/vendor-src/utf8proc/Makefile +203 -0
  1494. data/vendor-src/utf8proc/NEWS.md +479 -0
  1495. data/vendor-src/utf8proc/README.md +143 -0
  1496. data/vendor-src/utf8proc/appveyor.yml +46 -0
  1497. data/vendor-src/utf8proc/bench/Makefile +40 -0
  1498. data/vendor-src/utf8proc/bench/bench.c +56 -0
  1499. data/vendor-src/utf8proc/bench/icu.c +61 -0
  1500. data/vendor-src/utf8proc/bench/unistring.c +60 -0
  1501. data/vendor-src/utf8proc/bench/util.c +39 -0
  1502. data/vendor-src/utf8proc/bench/util.h +22 -0
  1503. data/vendor-src/utf8proc/cmake/utf8proc-config.cmake.in +5 -0
  1504. data/vendor-src/utf8proc/data/Makefile +62 -0
  1505. data/vendor-src/utf8proc/data/Manifest.toml +16 -0
  1506. data/vendor-src/utf8proc/data/Project.toml +2 -0
  1507. data/vendor-src/utf8proc/data/data_generator.jl +498 -0
  1508. data/vendor-src/utf8proc/libutf8proc.pc.cmakein +10 -0
  1509. data/vendor-src/utf8proc/libutf8proc.pc.in +10 -0
  1510. data/vendor-src/utf8proc/lump.md +27 -0
  1511. data/vendor-src/utf8proc/test/app/CMakeLists.txt +6 -0
  1512. data/vendor-src/utf8proc/test/app/app.c +9 -0
  1513. data/vendor-src/utf8proc/test/case.c +76 -0
  1514. data/vendor-src/utf8proc/test/charwidth.c +91 -0
  1515. data/vendor-src/utf8proc/test/custom.c +28 -0
  1516. data/vendor-src/utf8proc/test/fuzz_main.c +54 -0
  1517. data/vendor-src/utf8proc/test/fuzzer.c +97 -0
  1518. data/vendor-src/utf8proc/test/graphemetest.c +136 -0
  1519. data/vendor-src/utf8proc/test/iscase.c +63 -0
  1520. data/vendor-src/utf8proc/test/iterate.c +168 -0
  1521. data/vendor-src/utf8proc/test/maxdecomposition.c +22 -0
  1522. data/vendor-src/utf8proc/test/misc.c +51 -0
  1523. data/vendor-src/utf8proc/test/normtest.c +64 -0
  1524. data/vendor-src/utf8proc/test/ossfuzz.sh +13 -0
  1525. data/vendor-src/utf8proc/test/printproperty.c +68 -0
  1526. data/vendor-src/utf8proc/test/tests.c +60 -0
  1527. data/vendor-src/utf8proc/test/tests.h +27 -0
  1528. data/vendor-src/utf8proc/test/valid.c +41 -0
  1529. data/vendor-src/utf8proc/utf8proc.c +834 -0
  1530. data/vendor-src/utf8proc/utf8proc.h +794 -0
  1531. data/vendor-src/utf8proc/utf8proc_data.c +17141 -0
  1532. data/vendor-src/utf8proc/utils.cmake +20 -0
  1533. metadata +1527 -1
@@ -0,0 +1,1197 @@
1
+ = libleptris: High-Performance XML Parser & XPath Engine in C
2
+ :toc:
3
+ :toclevels: 2
4
+ :sectanchors:
5
+ :sectlinks:
6
+
7
+ image:https://img.shields.io/badge/C99-✓-blue.svg[Language]
8
+ image:https://img.shields.io/badge/dependencies-zero-brightgreen.svg[Runtime Dependencies]
9
+ image:https://img.shields.io/badge/license-MIT-blue.svg[License]
10
+ image:https://github.com/leptris/leptris/actions/workflows/test.yml/badge.svg[Tests,link="https://github.com/leptris/leptris/actions/workflows/test.yml"]
11
+ image:https://github.com/leptris/leptris/actions/workflows/asan.yml/badge.svg[ASAN,link="https://github.com/leptris/leptris/actions/workflows/asan.yml"]
12
+ image:https://github.com/leptris/leptris/actions/workflows/fuzz-nightly.yml/badge.svg[Fuzzing,link="https://github.com/leptris/leptris/actions/workflows/fuzz-nightly.yml"]
13
+
14
+ **libleptris** is a C99 library providing fast XML 1.0 parsing, complete
15
+ XPath 1.0 evaluation, event-based SAX processing, and document
16
+ canonicalization (C14N). It is designed for low-latency,
17
+ memory-efficient workloads where predictable performance and safe
18
+ memory handling matter.
19
+
20
+ == Highlights
21
+
22
+ * **XML 1.0 parsing** with UTF-8 validation and optional encoding
23
+ conversion (UTF-16, ISO-8859, Shift-JIS, EBCDIC, and others via
24
+ iconv). Zero-copy text nodes — borrowed views into the input buffer,
25
+ no per-node content copy (TODO 115).
26
+ * **XPath 1.0 engine** implementing all 13 axes, 27 functions, and 15
27
+ operators. Bytecode VM for compile-once-eval-many dispatch (TODO 120).
28
+ * **Streaming SAX parser** with an explicit state machine — events emit
29
+ as chunks arrive, memory bounded by nesting depth, not document size
30
+ (TODO 116). All SAX parsing routes through one state machine; the
31
+ legacy recursive parser has been removed (~840 lines deleted).
32
+ * **XInclude 1.0** with ownership-transfer splice — included documents
33
+ are moved (not deep-copied) into the parent tree. Cycle detection
34
+ via ancestor-URI tracking (TODO 117).
35
+ * **DTD validation** with content-model memoization — repeated element
36
+ types with the same children signature skip the matcher on
37
+ subsequent calls (TODO 119). Parameter entities, INCLUDE/IGNORE
38
+ conditional sections, ENTITY/ENTITIES unparsed-entity attribute
39
+ checking, and external subsets via
40
+ `leptris_document_get_dtd` + `leptris_dtd_parse_external_subset`
41
+ (application-supplied I/O).
42
+ * **Canonical XML (C14N)** for digital signatures and cryptographic
43
+ hashing.
44
+ * **Pool-based memory model** — every allocation reachable from a
45
+ document is released in a single `leptris_document_free` call. Zero
46
+ leaks across the test suite.
47
+ * **Compact-pointer architecture** — tree edges stored as int32_t byte
48
+ offsets with overflow-table fallback for macOS ASLR (TODO 121).
49
+ * **Recursion depth guard** — deeply nested input is rejected with a
50
+ parse error rather than crashing.
51
+ * **Per-document strict mode** — strict and lenient parsing can coexist
52
+ in the same thread.
53
+ * **Vtable-based dispatch** — adding a new node type is purely
54
+ additive; no switches to edit.
55
+ * **CLI tool** — `leptris parse`, `leptris xpath`, `leptris format`,
56
+ `leptris version` for command-line XML processing.
57
+ * **Ruby FFI binding** — `Leptris::Document.parse`, XPath, serialize,
58
+ and event-driven SAX (one-shot + incremental streaming) via the
59
+ `ffi` gem. No C extension compilation needed. See
60
+ link:bindings/ruby/[Ruby binding].
61
+ * **Python binding** — `leptris` via `cffi` (ABI mode, single
62
+ `cdef` mirroring the public headers): `Document.parse`, element
63
+ navigation, typed XPath results, serialize. Shipped from its own
64
+ repository, https://github.com/leptris/leptris-py[leptris/leptris-py].
65
+ * **Zero required runtime dependencies** — utf8proc and iconv are
66
+ optional features, not prerequisites.
67
+ * **Stable C ABI** with a documented FFI contract; bindings shipped
68
+ for Ruby and Python (Rust planned). See <<FFI,FFI Design>>.
69
+
70
+ == When to use libleptris
71
+
72
+ [cols="1,1",options="header"]
73
+ |===
74
+ |Use libleptris when |Consider alternatives when
75
+
76
+ |You need a C library with a small footprint and no required runtime dependencies.
77
+ |You need full XML Schema 1.1 validation.
78
+
79
+ |You parse documents that may not fit in memory (SAX streaming).
80
+ |You need schema-aware, streaming or packaged XSLT 3.0.
81
+
82
+ |You need XSLT transformation — 1.0 complete, the 3.0 core ships (see <<xslt>>).
83
+ |You need XQuery 1.0 (XPath only here).
84
+
85
+ |You need deterministic memory usage and zero leaks in normal operation.
86
+ |You need a schema-validated or event-correlated read model.
87
+
88
+ |You want to embed XML processing in another language via FFI.
89
+ |You're already on a platform with libxml2 + bindings you trust.
90
+
91
+ |You need C14N for XML Digital Signatures.
92
+ |===
93
+ ==
94
+
95
+ == Quick start
96
+
97
+ [source,c]
98
+ ----
99
+ #include <leptris.h>
100
+ #include <stdio.h>
101
+ #include <string.h>
102
+
103
+ int main(void) {
104
+ const char* xml = "<root><item>hello</item></root>";
105
+
106
+ LeptrisStatus status = LEPTRIS_OK;
107
+ LeptrisDocument doc = leptris_parse_string(xml, strlen(xml), &status);
108
+ if (!doc) {
109
+ fprintf(stderr, "parse failed: %d\n", status);
110
+ return 1;
111
+ }
112
+
113
+ LeptrisElement root = leptris_document_root(doc);
114
+ printf("root element: %s\n", leptris_element_name(root));
115
+
116
+ LeptrisXPathResult items = leptris_xpath_eval(doc, NULL, "//item");
117
+ printf("item count: %zu\n", leptris_xpath_result_count(items));
118
+ leptris_xpath_result_free(items);
119
+
120
+ leptris_document_free(doc); /* releases the entire pool */
121
+ return 0;
122
+ }
123
+ ----
124
+
125
+ Compile and run:
126
+
127
+ [source,bash]
128
+ ----
129
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
130
+ cmake --build build
131
+ ./build/cli/leptris parse 'fixtures/basic.xml'
132
+ ./build/cli/leptris xpath 'fixtures/basic.xml' 'count(//item)'
133
+ ----
134
+
135
+ == Installation
136
+
137
+ === From source
138
+
139
+ [source,bash]
140
+ ----
141
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
142
+ cmake --build build
143
+ sudo cmake --install build --prefix /usr/local
144
+ ----
145
+
146
+ After install, the library is discoverable via `find_package(leptris)`:
147
+
148
+ [source,cmake]
149
+ ----
150
+ cmake_minimum_required(VERSION 3.20)
151
+ project(myapp LANGUAGES C CXX)
152
+
153
+ find_package(leptris CONFIG REQUIRED)
154
+ target_link_libraries(myapp PRIVATE leptris::leptris)
155
+ ----
156
+
157
+ Or via pkg-config:
158
+
159
+ [source,bash]
160
+ ----
161
+ gcc myapp.c $(pkg-config --cflags --libs leptris)
162
+ ----
163
+
164
+ === Via vcpkg
165
+
166
+ ```bash
167
+ git clone https://github.com/microsoft/vcpkg
168
+ ./vcpkg/vcpkg install leptris
169
+ ```
170
+
171
+ *See <<vcpkg,vcpkg integration>> for the portfile template.*
172
+
173
+ === Via system package manager
174
+
175
+ [options="header",cols="1,1"]
176
+ |===
177
+ |Distro |Install command
178
+
179
+ |Alpine
180
+ |`apk add libleptris-dev` (pending)
181
+
182
+ |Debian/Ubuntu
183
+ |`apt install libleptris-dev` (pending)
184
+
185
+ |Homebrew
186
+ |`brew install leptris` (pending)
187
+
188
+ |MSYS2 (Windows)
189
+ |`pacman -S mingw-w64-leptris` (pending)
190
+ |===
191
+
192
+ == Building
193
+
194
+ === Build options
195
+
196
+ [cols="1,1,3",options="header"]
197
+ |===
198
+ |Option |Default |Description
199
+
200
+ |`BUILD_TESTING`
201
+ |`ON`
202
+ |Build the Google Test suite under `test/`.
203
+
204
+ |`LEPTRIS_BUILD_CLI`
205
+ |`ON`
206
+ |Build the `leptris` command-line tool.
207
+
208
+ |`LEPTRIS_BUILD_BENCHMARKS`
209
+ |`OFF`
210
+ |Build performance comparison targets (libxml2 / pugixml).
211
+
212
+ |`LEPTRIS_BUILD_MAN_PAGES`
213
+ |`OFF`
214
+ |Generate man pages from the AsciiDoc sources.
215
+
216
+ |`LEPTRIS_ENABLE_UTF8PROC`
217
+ |`ON`
218
+ |UTF-8 validation via utf8proc.
219
+
220
+ |`LEPTRIS_ENABLE_ICONV`
221
+ |`ON`
222
+ |Encoding conversion via iconv (ISO-8859-1, Shift-JIS, etc.).
223
+
224
+ |`LEPTRIS_ENABLE_ASAN`
225
+ |`OFF`
226
+ |Build with AddressSanitizer.
227
+
228
+ |`LEPTRIS_ENABLE_FUZZING`
229
+ |`OFF`
230
+ |Build the libFuzzer harness.
231
+
232
+ |`LEPTRIS_BUILD_DOCS`
233
+ |`OFF`
234
+ |Generate Doxygen API docs.
235
+ |===
236
+
237
+ === ASAN build (memory safety)
238
+
239
+ [source,bash]
240
+ ----
241
+ cmake -B build-asan -S . -DLEPTRIS_ENABLE_ASAN=ON -DBUILD_TESTING=ON
242
+ cmake --build build-asan
243
+ ASAN_OPTIONS=detect_leaks=1 ctest --test-dir build-asan
244
+ ----
245
+
246
+ === Fuzzer build (requires LLVM clang)
247
+
248
+ [source,bash]
249
+ ----
250
+ brew install llvm # macOS
251
+ export CC=/opt/homebrew/opt/llvm/bin/clang
252
+ cmake -B build-fuzz -S . -DLEPTRIS_ENABLE_FUZZING=ON
253
+ cmake --build build-fuzz --target fuzz_parse
254
+ ./build-fuzz/fuzz_parse -max_total_time=600 corpus/
255
+ ----
256
+
257
+ === Doxygen API docs
258
+
259
+ [source,bash]
260
+ ----
261
+ brew install doxygen
262
+ cmake -B build -S . -DLEPTRIS_BUILD_DOCS=ON
263
+ cmake --build build --target docs
264
+ open build/docs/api-generated/html/index.html
265
+ ----
266
+
267
+ == Linking
268
+
269
+ The library exposes a single import target:
270
+
271
+ [source,cmake]
272
+ ----
273
+ target_link_libraries(your_app PRIVATE leptris::leptris)
274
+ ----
275
+
276
+ [source,meson]
277
+ ----
278
+ leptris_dep = dependency('leptris')
279
+ executable('your_app', 'main.c', dependencies: leptris_dep)
280
+ ----
281
+
282
+ == Usage
283
+
284
+ [#parse-string]
285
+ === Parsing
286
+
287
+ `leptris_parse_string` is the entry point. It accepts a UTF-8 buffer
288
+ and a status output parameter:
289
+
290
+ [source,c]
291
+ ----
292
+ LeptrisStatus status;
293
+ LeptrisDocument doc = leptris_parse_string(xml, strlen(xml), &status);
294
+ if (!doc) {
295
+ /* status is one of LEPTRIS_ERROR_PARSE, LEPTRIS_ERROR_MEMORY, ... */
296
+ }
297
+
298
+ /* Document is now a pool of nodes; no need to track them individually. */
299
+
300
+ /* Always release the document — the pool is destroyed too. */
301
+ leptris_document_free(doc);
302
+ ----
303
+
304
+ [#xpath]
305
+ === XPath
306
+
307
+ [source,c]
308
+ ----
309
+ LeptrisXPathResult r = leptris_xpath_eval(doc, NULL, "//item[@price > 10]");
310
+ if (r) {
311
+ size_t n = leptris_xpath_result_count(r);
312
+ for (size_t i = 0; i < n; i++) {
313
+ LeptrisNodeRef node = leptris_xpath_result_node(r, i);
314
+ printf(" %s\n", leptris_node_name(node));
315
+ }
316
+ leptris_xpath_result_free(r);
317
+ }
318
+ ----
319
+
320
+ Supported: all 13 axes, all 27 functions, all 15 operators, full
321
+ predicate syntax. See <<api,xpath-coverage>> for details.
322
+
323
+ ==== Parsing models: DOM, SAX, StAX, iterparse
324
+
325
+ One engine, four consumption models. Pick by how you want to pay:
326
+
327
+ [cols="2,2,3,3",options="header"]
328
+ |===
329
+ |Model |API |Memory |Use when
330
+
331
+ |DOM (tree)
332
+ |`leptris_parse_string`
333
+ |Whole document
334
+ |You need random access, XPath, mutation, or serialization.
335
+ |The default; everything else is an optimization.
336
+
337
+ |SAX (push)
338
+ |`leptris_sax_parse` / feed
339
+ |Bounded by depth
340
+ |The engine calls YOU as it parses. Cheapest per event, but every
341
+ |callback crosses the FFI boundary (~1 µs each through bindings).
342
+
343
+ |StAX-style (pull)
344
+ |`leptris_pull_new` / `_new_file`
345
+ |Bounded by the input slice
346
+ |YOU call the engine: `leptris_pull_next()` returns events on
347
+ |demand. Same streaming guarantees as SAX with zero C→host
348
+ |callbacks — the binding-friendly form of streaming.
349
+
350
+ |Incremental (iterparse)
351
+ |`leptris_iterparse_new` / `_new_file`
352
+ |Bounded by the largest subtree
353
+ |You want a TREE but not the whole document at once: each top-level
354
+ |child materializes in its own pool and is released when you move
355
+ |on. The huge-file document-processing shape.
356
+ |===
357
+
358
+ SAX and pull share the same streaming core (`set_streaming(1)`);
359
+ iterparse rides the pull API. File variants (`_new_file`) stream
360
+ from disk in bounded slices — no whole-document buffer.
361
+
362
+ [#sax]
363
+ === Pull (StAX-style) parsing
364
+
365
+ Host-driven event loop over the streaming SAX core — no C->host
366
+ callbacks (each costs ~a microsecond through FFI):
367
+
368
+ [source,c]
369
+ ----
370
+ LeptrisPullParser p = leptris_pull_new(xml, len);
371
+ const LeptrisPullEvent* ev;
372
+ while ((ev = leptris_pull_next(p)) != NULL) {
373
+ if (ev->type == LEPTRIS_PULL_START_ELEMENT)
374
+ handle(leptris_pull_attr_count(p), ev->name);
375
+ if (ev->type == LEPTRIS_PULL_ERROR) break;
376
+ }
377
+ leptris_pull_free(p);
378
+ ----
379
+
380
+ Event strings live until the next `leptris_pull_next` call. Memory is
381
+ bounded by the internal input slice, not the document.
382
+ `leptris_pull_new_file(path)` streams the same events from disk —
383
+ huge documents parse with no whole-document buffer.
384
+
385
+ === Incremental parsing (iterparse)
386
+
387
+ Bounded-memory tree iteration for huge documents
388
+ (`TODO.bindings/02`): each TOP-LEVEL child of the root is
389
+ materialized in its own pool and handed out when complete; the next
390
+ call releases it. Peak memory is bounded by the largest subtree, not
391
+ the document.
392
+
393
+ [source,c]
394
+ ----
395
+ LeptrisIterparse it = leptris_iterparse_new(xml, len);
396
+ LeptrisElement e;
397
+ while ((e = leptris_iterparse_next(it)) != NULL)
398
+ process(e); /* valid until the next call */
399
+ leptris_iterparse_free(it);
400
+ ----
401
+
402
+ v1: element names are QNames as written (prefixes are not
403
+ re-resolved); use the DOM path when namespace URIs matter.
404
+ `leptris_iterparse_new_file(path)` iterates a document on disk with
405
+ memory bounded by the largest subtree.
406
+
407
+ ==== Iterparse v2: full-document mode, namespaces, errors (issue #586)
408
+
409
+ [source,c]
410
+ ----
411
+ /* Every element, in completion order (post-order: children before
412
+ * parents), each with its completed subtree attached. */
413
+ LeptrisIterparse it = leptris_iterparse_new_ex(
414
+ xml, len, LEPTRIS_ITERPARSE_FULL_DOCUMENT);
415
+ LeptrisElement e;
416
+ while ((e = leptris_iterparse_next(it)) != NULL) {
417
+ /* namespace context of THIS element, captured at parse time */
418
+ const char* uri = leptris_iterparse_ns_uri(it, "p"); /* or NULL
419
+ for the default namespace binding */
420
+ size_t nscopes = leptris_iterparse_ns_count(it); /* bulk FFI */
421
+ process(e, uri);
422
+ }
423
+ if (leptris_iterparse_error(it))
424
+ fprintf(stderr, "truncated: %s\n", leptris_iterparse_error(it));
425
+ ----
426
+
427
+ - Full mode keeps the v1 memory discipline — a fresh pool per
428
+ top-level child, released as you advance — and materializes the
429
+ root in its own pool (it yields childless at document end).
430
+ - Namespace bindings come from the streaming core's prefix-mapping
431
+ events; yielded elements carry resolved namespaces
432
+ (`leptris_element_namespace`), and the iterator snapshots the
433
+ in-scope scope per yield.
434
+ - Truncated or malformed input stops iteration with a retrievable
435
+ message instead of failing silently.
436
+
437
+ === SAX (event-driven) parsing
438
+
439
+ [source,c]
440
+ ----
441
+ static void on_start(void* ud, const char* name, const char** attrs) {
442
+ fprintf(stderr, "<%s>\n", name);
443
+ }
444
+
445
+ LeptrisSAXHandler handler = {0};
446
+ handler.start_element = on_start;
447
+
448
+ leptris_sax_parse(xml, len, &handler, NULL);
449
+ ----
450
+
451
+ ==== Chunked SAX delivery (issue #585)
452
+
453
+ Callback SAX through an FFI binding pays one dispatch per event — the
454
+ ffi gem's generic callback machinery costs more per event than the
455
+ parse itself (measured: leptris SAX *slower* than Nokogiri SAX through
456
+ Ruby). The recorder buffers events C-side and hands them over in bulk:
457
+
458
+ [source,c]
459
+ ----
460
+ LeptrisSaxRecorder rec = leptris_sax_recorder_new();
461
+ leptris_sax_recorder_feed(rec, chunk, chunk_len, is_final);
462
+
463
+ size_t n = 0, alen = 0;
464
+ const LeptrisSaxEventRecord* rs = leptris_sax_recorder_records(rec, &n);
465
+ const char* arena = leptris_sax_recorder_arena(rec, &alen);
466
+ /* iterate n fixed-size records; strings slice the arena by the
467
+ * record's offset+length fields (attributes: name\0value\0 pairs
468
+ * at attrs_off, attr_count pairs) */
469
+ ----
470
+
471
+ Each `feed` starts a fresh chunk (records and arena reset), so a
472
+ streaming host drains after every chunk and stays bounded. Event
473
+ semantics are identical to the callback API — the recorder is a
474
+ handler on the same streaming state machine. Callback count becomes
475
+ O(chunks), not O(events): 20 host calls for a 41,806-event document
476
+ (64 KB chunks).
477
+
478
+ [#xslt]
479
+ === XSLT transformation
480
+
481
+ [source,c]
482
+ ----
483
+ LeptrisXslt xslt = leptris_xslt_parse(sheet, strlen(sheet));
484
+ char* out = leptris_xslt_apply_string(xslt, doc); /* owned */
485
+ leptris_free_string(out);
486
+ leptris_xslt_free(xslt);
487
+ ----
488
+
489
+ XSLT 1.0 is complete — every case of the libxslt regression suite
490
+ (205/205) matches byte-for-byte, including attribute sets,
491
+ `xsl:number` formats, keys, namespaces, decimal formats and DTD
492
+ attribute defaults. The XSLT 3.0 core ships and grows release by
493
+ release, each feature verified against Saxon-HE 12.7 before landing:
494
+
495
+ [cols="2,3",options="header"]
496
+ |===
497
+ |Area |Supported
498
+
499
+ |Sequences
500
+ |`xsl:value-of` over sequences, `xsl:sequence`-style item lists, ranges `A to B`
501
+
502
+ |Control
503
+ |`if/then/else`, `for $x in ... return`, `xsl:iterate` (params, `xsl:next-iteration` chaining, `xsl:break`, `xsl:on-completion`), `xsl:try`/`xsl:catch` with `$err:description`
504
+
505
+ |Constructors
506
+ |`xsl:copy` with `@select` (§9.9.2 per-item copy semantics), `xsl:namespace` (§11.7), `xsl:document` (§11.8), `xsl:fork` arms, `xsl:where-populated`/`xsl:on-non-empty`, `xsl:next-match`, `xsl:param @default` (the 4.0 form)
507
+
508
+ |Grouping
509
+ |`xsl:for-each-group`: `group-by`, `group-adjacent`, `group-starting-with`, `group-ending-with`, with `current-group()`/`current-grouping-key()`; composite keys (`use="a b"` token lists)
510
+
511
+ |Merging
512
+ |`xsl:merge` (§14.3): multiple `xsl:merge-source`s joined on their `xsl:merge-key`s, with `current-merge-key()` and `current-merge-group(name)`
513
+
514
+ |Strings
515
+ |`xsl:analyze-string` with `regex-group(n)`, `xsl:on-empty`, text value templates (`expand-text`)
516
+
517
+ |Dynamic evaluation
518
+ |`xsl:evaluate` (dynamic `@xpath`, `@context-item`, child `xsl:with-param`), `error($msg)`
519
+
520
+ |Secondary output
521
+ |`xsl:result-document` serializes its content to the `@href` file (parent directories created as needed); `xsl:character-map` with `xsl:output/@use-character-maps` substitutes characters in text and attribute values at serialization
522
+
523
+ |Modes
524
+ |`xsl:mode` with `use-accumulators` and all six `on-no-match` dispositions (`deep-copy`, `shallow-copy` — the 3.0 default, `shallow-skip`, `deep-skip`, `text-only-copy`, `fail`); 1.0 sheets keep the classic built-in rules
525
+
526
+ |Accumulators (§18.2)
527
+ |`xsl:accumulator` with `phase="start|end"` rules, `accumulator-before()`/`accumulator-after()`, applicability gating and the XTDE33xx error family
528
+ |===
529
+
530
+ The XPath engine inside carries the 3.1 composition core: `let`
531
+ bindings, the `!` simple map with per-item focus, the `=>` arrow
532
+ (every core and extension function serves it), and `||` string
533
+ concatenation, alongside `current()`, `key()`, `document()`,
534
+ `format-number()`, `generate-id()` and the EXSLT packs.
535
+
536
+ [#serialize]
537
+ === Serialization
538
+
539
+ [source,c]
540
+ ----
541
+ LeptrisSerializeOptions opts = { .indent = 2, .xml_declaration = 1 };
542
+ char* out = leptris_document_serialize(doc, &opts);
543
+ puts(out);
544
+ leptris_free_string(out);
545
+ ----
546
+
547
+ [#c14n]
548
+ === Canonical XML
549
+
550
+ [source,c]
551
+ ----
552
+ char* canonical = leptris_c14n_canonicalize(doc, LEPTRIS_C14N_1_0, 0);
553
+ fputs(canonical, stdout);
554
+ putchar('\n'); /* canonical output may not end with newline */
555
+ leptris_free_string(canonical);
556
+ leptris_free_string(canonical);
557
+ ----
558
+
559
+ === Compiled XPath expressions
560
+
561
+ `TODO.bindings/03`: compile once, evaluate many times — skips the
562
+ per-call expression hash and cache probe of `leptris_xpath_eval`.
563
+
564
+ [source,c]
565
+ ----
566
+ LeptrisXPathCompiled c = leptris_xpath_compile("//book[@n > 3]");
567
+ LeptrisXPathResult r = leptris_xpath_compiled_eval(c, doc, NULL);
568
+ leptris_xpath_result_free(r);
569
+ leptris_xpath_compiled_free(c);
570
+ ----
571
+
572
+ Thread contract: the handle is immutable — any number of threads may
573
+ evaluate it concurrently (each against its own document); free it
574
+ only after the last evaluation returns. Context variants:
575
+ `leptris_xpath_compiled_eval_ns` (external namespace bindings) and
576
+ `leptris_xpath_compiled_eval_vars` ($var references) — compiled
577
+ counterparts of `leptris_xpath_eval_ns` / `eval_with_vars_context`.
578
+
579
+ === FFI ergonomics (issue #535)
580
+
581
+ `leptris_node_children(parent, out, max)` copies every child handle
582
+ in one call (elements, text, comments, CDATA, PIs) — out=NULL
583
+ returns the total across all kinds. `leptris_document_serialize_into`
584
+ / `leptris_element_serialize_into` write into a caller buffer:
585
+ buf=NULL queries the needed size (including NUL); with capacity the
586
+ copy happens in the same call — the serialize + read + free FFI
587
+ pattern collapses to one call with zero library-side allocations.
588
+
589
+ === Per-parse options
590
+
591
+ `TODO.bindings/05`: scoped alternative to the thread-global
592
+ `leptris_set_strict_mode` / `leptris_set_max_depth`.
593
+
594
+ [source,c]
595
+ ----
596
+ LeptrisParseOptions o = {LEPTRIS_PARSE_DEFAULT, /*strict*/ 1, /*depth*/ 4};
597
+ LeptrisDocument doc = leptris_parse_string_ex(xml, len, &o, &status);
598
+ ----
599
+
600
+ Options apply to that one call; the thread defaults are restored on
601
+ return. Not reentrant (applied via thread-local state).
602
+
603
+ === Serialization encoding guarantees
604
+
605
+ `TODO.bindings/06`: serialization output is ALWAYS UTF-8 — the body
606
+ is never transcoded (iconv is input-side only). The XML declaration
607
+ never lies: a document parsed as ISO-8859-1 serializes with
608
+ `encoding="UTF-8"` (the body was transcoded at parse time), and
609
+ requesting another output encoding is normalized to UTF-8.
610
+ `serialize(parse(serialize(x)))` is byte-stable.
611
+
612
+ == Memory model
613
+
614
+ Every byte the parser allocates that ends up referenced by a document
615
+ lives in the document's pool. `leptris_document_free` destroys the
616
+ pool and releases everything in one call.
617
+
618
+ [cols="1,3",options="header"]
619
+ |===
620
+ |Allocation |Where it lives
621
+
622
+ |Node structs (element, text, comment, CDATA, PI, doctype)
623
+ |Pool, allocated contiguously with content where possible.
624
+
625
+ |Node content strings
626
+ |Pool, contiguous with the struct (cache locality).
627
+
628
+ |Attribute names
629
+ |Pool hash table (interned; dedup across elements).
630
+
631
+ |Attribute values
632
+ |Pool, bypassing interning (attrs.xml regression fixed).
633
+
634
+ |DTD container + hash tables
635
+ |Pool, with DTD subsystem owned by the document.
636
+
637
+ |XPath intermediates
638
+ |Pool, freed at result destruction.
639
+ |===
640
+
641
+ For bindings: the C API has opaque handles. All freeing is
642
+ explicit. See the `Memory:` comment on each public function.
643
+
644
+ == Threading model
645
+
646
+ libleptris is thread-safe under the *one-document-per-thread*
647
+ contract (documented in `TODO.concurrency/08`):
648
+
649
+ * **Safe**: any number of threads, each owning its own `LeptrisDocument`
650
+ — parse, evaluate, mutate, serialize, free independently.
651
+ * **Safe**: read-only sharing of one document across threads
652
+ (parse once, evaluate concurrently from many threads).
653
+ * **Forbidden**: mutating one document from two threads at once, or
654
+ touching a document after another thread freed it.
655
+
656
+ Process-global state is either initialized at library load (SIMD
657
+ dispatch, the XPath function registry) or mutex-guarded (the
658
+ process-wide XPath AST/bytecode cache). Borrowed cache entries are
659
+ reference-pinned for the duration of an evaluate, so eviction never
660
+ frees an AST underneath a running thread.
661
+
662
+ Error reporting is channel-split:
663
+
664
+ * `leptris_last_error()` — thread-local message of the most recent
665
+ failure on the *calling* thread (e.g. a failed
666
+ `leptris_parse_string`).
667
+ * `leptris_document_last_error(doc)` — per-document message from the
668
+ last failed operation against that document (e.g. a failed
669
+ `leptris_xpath_eval`); immune to concurrent activity on other
670
+ documents.
671
+
672
+ Worker threads keep small per-thread caches (XPath free lists, the
673
+ root-map free list). C99 has no portable thread-exit hook, so a
674
+ thread that used libleptris and then exits retains those entries —
675
+ call `leptris_thread_cleanup()` from each worker just before it
676
+ exits to release them. Pooled, long-lived threads never need it.
677
+
678
+ The full pack is exercised by `test/concurrency/test_concurrency.cpp`
679
+ (parse/eval/serialize/free on four threads, thread-local error
680
+ isolation, per-document error slots), which is ThreadSanitizer-clean.
681
+
682
+ [#abi]
683
+ == ABI stability
684
+
685
+ Opaque handles are pointer-sized — enforced at compile time:
686
+
687
+ [source,c]
688
+ ----
689
+ _Static_assert(sizeof(LeptrisDocument) == sizeof(void*), "...");
690
+ ----
691
+
692
+ To pin enum values (bindings hard-code these):
693
+
694
+ [source,bash]
695
+ ----
696
+ ctest --test-dir build -R HeaderHygiene
697
+ ----
698
+
699
+ [#FFI]
700
+ == FFI design
701
+
702
+ libleptris exposes a stable C ABI. Bindings:
703
+
704
+ * *Ruby* — shipped. Uses `ffi` gem. See link:bindings/ruby/[Ruby binding].
705
+ * *Python* — shipped as `leptris` via `cffi` (ABI mode), from
706
+ https://github.com/leptris/leptris-py[leptris/leptris-py].
707
+ * *Rust* — shipped: crate `leptris` with safe wrappers, XPath, and
708
+ SAX closures. See link:bindings/rust/[Rust binding].
709
+
710
+ === Ruby quick start
711
+
712
+ [source,ruby]
713
+ ----
714
+ require 'leptris'
715
+
716
+ doc = Leptris::Document.parse('<root><item id="1">hello</item></root>')
717
+ root = doc.root
718
+ puts root.name # => "root"
719
+ puts root.first_child_element['id'] # => "1"
720
+ puts doc.xpath('count(//item)') # => 1.0
721
+ doc.free
722
+ ----
723
+
724
+ Install: set `LEPTRIS_LIB_PATH` to your `libleptris.dylib` / `.so`, or
725
+ install libleptris system-wide. The `ffi` gem is the only dependency.
726
+
727
+ [source,bash]
728
+ ----
729
+ gem install ffi
730
+ LEPTRIS_LIB_PATH=/path/to/libleptris.0.dylib ruby -Ilib -rleptris -e '
731
+ doc = Leptris::Document.parse("<r/>")
732
+ puts doc.root.name
733
+ doc.free
734
+ '
735
+ ----
736
+
737
+ To parse the headers from a binding tool:
738
+
739
+ [source,bash]
740
+ ----
741
+ cc -DLEPTRIS_FOR_BINDGEN -E src/include/leptris.h # strips LEPTRIS_API
742
+ ----
743
+
744
+ === Python quick start
745
+
746
+ [source,python]
747
+ ----
748
+ from pyleptris import Document
749
+
750
+ doc = Document.parse('<root><item id="1">hello</item></root>')
751
+ root = doc.root
752
+ print(root.name) # => "root"
753
+ print(root.first_child_element.attribute('id')) # => "1"
754
+ print(doc.xpath('count(//item)')) # => 1.0
755
+ doc.close()
756
+ ----
757
+
758
+ Install: `pip install cffi` and point `LEPTRIS_LIB_PATH` at your
759
+ `libleptris.dylib` / `.so` (or install libleptris system-wide).
760
+
761
+ [source,bash]
762
+ ----
763
+ cmake -B build -S . -DLEPTRIS_BUILD_SHARED=ON
764
+ cmake --build build --target leptris_shared
765
+ LEPTRIS_LIB_PATH=$PWD/build/src/libleptris.dylib \
766
+ python3 -m pytest bindings/python/tests/
767
+ ----
768
+
769
+ ==== Ruby SAX
770
+
771
+ Event-driven parsing (TODO 118 Phase B) — a handlers Hash of procs;
772
+ all keys optional. Strings arrive as UTF-8; entity references in
773
+ text and attribute values arrive expanded (XML 1.0):
774
+
775
+ [source,ruby]
776
+ ----
777
+ require 'leptris'
778
+
779
+ Leptris::SAX.parse('<books><book id="1">title &amp; more</book></books>',
780
+ start_element: ->(name, attrs) { puts "#{name} #{attrs.inspect}" },
781
+ end_element: ->(name) { },
782
+ characters: ->(text) { },
783
+ error: ->(msg, line, col) { warn "#{line}:#{col} #{msg}" }
784
+ )
785
+ # prints: books {}
786
+ # book {"id"=>"1"}
787
+ ----
788
+
789
+ Incremental parsing for streams (`streaming: true` selects the
790
+ constant-memory state machine — the same machine the one-shot API
791
+ uses; the default buffers chunks and parses on the final feed):
792
+
793
+ [source,ruby]
794
+ ----
795
+ parser = Leptris::SAX::Parser.new({ characters: ->(t) { print t } },
796
+ streaming: true)
797
+ IO.popen('curl -s https://example.com/feed.xml') do |io|
798
+ io.each(4096) { |chunk| parser.feed(chunk) }
799
+ end
800
+ parser.feed('', final: true)
801
+ parser.free
802
+ ----
803
+
804
+ Events: `:start_document`, `:end_document`, `:start_element`
805
+ (name, attrs-hash), `:end_element` (name), `:characters` (text),
806
+ `:comment`, `:cdata`, `:processing_instruction` (target, data),
807
+ `:start_prefix_mapping` / `:end_prefix_mapping` (namespace
808
+ declarations), `:error` (message, line, column). A `characters`
809
+ event may fire multiple times per text node — concatenate between
810
+ element events to coalesce (the SAX contract).
811
+
812
+ See link:docs/FFI.md[docs/FFI.md] for the full design document.
813
+
814
+ == CLI
815
+
816
+ [source,bash]
817
+ ----
818
+ # Parse a document
819
+ leptris parse document.xml
820
+
821
+ # Round-trip via XPath count
822
+ leptris xpath --count document.xml 'count(//item)'
823
+
824
+ # Pretty-print
825
+ leptris format --indent 4 document.xml < ugly.xml > pretty.xml
826
+
827
+ # Validate / version
828
+ leptris version
829
+ ----
830
+
831
+ Exit codes: 0 on success, 1 on parse error or invalid usage.
832
+
833
+ == Performance
834
+
835
+ Leptris is benchmarked against libxml2 and pugixml on every push via CI
836
+ (GitHub Actions, Linux + macOS). Numbers below are from Apple Silicon,
837
+ `clang -O3 -flto=thin` (LTO is default for Release builds since TODO 110).
838
+
839
+ === Parse + SAX throughput (vs libxml2)
840
+
841
+ [cols="2,>1,>1,>1",options="header"]
842
+ |===
843
+ |Benchmark |Leptris |libxml2 |Advantage
844
+
845
+ |SAX small (~1 KB)
846
+ |2.8 µs (377 MB/s)
847
+ |7.1 µs (124 MB/s)
848
+ |2.5× faster
849
+
850
+ |SAX medium (~5 KB)
851
+ |7.5 µs (624 MB/s)
852
+ |26.9 µs (175 MB/s)
853
+ |3.6× faster
854
+
855
+ |DOM parse (~5 KB)
856
+ |33 µs
857
+ |47 µs
858
+ |1.4× faster
859
+ |===
860
+
861
+ ==== Parse modes: whitespace semantics
862
+
863
+ By default leptris keeps whitespace-only text nodes — the
864
+ faithful-DOM behavior of libxml2/Nokogiri, and the only mode that
865
+ round-trips pretty-printed XML byte-for-byte. pugixml discards these
866
+ nodes by default (its `parse_ws_pcdata` is opt-in). For an
867
+ apples-to-apples parse comparison on pretty-printed documents, use
868
+ `leptris_parse_string_flags(..., LEPTRIS_PARSE_DROP_WS_TEXT, ...)`
869
+ — the equivalent of pugixml's default and libxml2's
870
+ `XML_PARSE_NOBLANKS`. Without the flag, leptris creates and wires
871
+ one text node per element that pugixml never materializes, which is
872
+ the entire difference on whitespace-heavy shapes (~1.1-1.4x in
873
+ default mode).
874
+
875
+ === DOM read access (vs libxml2)
876
+
877
+ [cols="2,>1,>1,>1",options="header"]
878
+ |===
879
+ |Benchmark |Leptris |libxml2 |Advantage
880
+
881
+ |Attribute lookup by name
882
+ |1.6 µs
883
+ |3.0 µs
884
+ |1.9× faster
885
+
886
+ |Text content extraction
887
+ |1.4 µs
888
+ |3.5 µs
889
+ |2.6× faster
890
+
891
+ |Indexed child access (1000 × 50)
892
+ |2.3 µs (O(1) cached)
893
+ |2.5 µs
894
+ |9% faster
895
+ |===
896
+
897
+ === XPath evaluation (vs libxml2)
898
+
899
+ Leptris's XPath engine uses a bytecode VM with per-axis
900
+ specialization, predicate fast paths, absolute-path fusion, a
901
+ per-document element index with attribute buckets, fused
902
+ axis+predicate opcodes, and memcpy fast paths for index-backed
903
+ queries (TODO 120, TODO 125–137). Numbers below are from
904
+ `benchmarks/xpath/bench_diagnostic` on a ~5 KB catalog fixture,
905
+ CPU time.
906
+
907
+ [cols="2,>1,>1,>1",options="header"]
908
+ |===
909
+ |Benchmark |Leptris |libxml2 |Advantage
910
+
911
+ |`self::*` (per-call floor)
912
+ |0.57 µs
913
+ |0.89 µs
914
+ |**1.6× faster**
915
+
916
+ |`child::*`
917
+ |0.71 µs
918
+ |0.94 µs
919
+ |**1.3× faster**
920
+
921
+ |`attribute::id`
922
+ |0.63 µs
923
+ |2.52 µs
924
+ |**4.0× faster**
925
+
926
+ |`descendant::*`
927
+ |0.72 µs
928
+ |0.96 µs
929
+ |**1.3× faster**
930
+
931
+ |`descendant::title`
932
+ |0.74 µs
933
+ |0.99 µs
934
+ |**1.3× faster**
935
+
936
+ |`//book` (descendant-or-self)
937
+ |0.55 µs
938
+ |~1 µs
939
+ |**1.8× faster**
940
+
941
+ |`//*` (all elements)
942
+ |0.56 µs
943
+ |~1 µs
944
+ |**1.8× faster**
945
+
946
+ |`count(//book[@id='b1'])`
947
+ |1.13 µs
948
+ |~3 µs
949
+ |**2.7× faster**
950
+
951
+ |`descendant::*[@id]`
952
+ |0.77 µs
953
+ |1.02 µs
954
+ |**1.3× faster**
955
+
956
+ |`/catalog` (root match)
957
+ |0.53 µs
958
+ |~1 µs
959
+ |**1.9× faster**
960
+ |===
961
+
962
+ Leptris BEATS libxml2 on **all 10** XPath benchmarks.
963
+
964
+ === DOM writes (vs pugixml)
965
+
966
+ Numbers from `benchmarks/matrix` (median of 20 interleaved Release
967
+ runs, fresh build dirs). Pugixml's `append_attribute` does not
968
+ reject duplicates; the fair comparison for attribute setting is
969
+ find-then-set (or find-then-append), which is what a correct
970
+ program must do. Leptris rejects duplicates per the XML 1.0
971
+ attribute uniqueness rule.
972
+
973
+ [cols="2,>1,>1,>1",options="header"]
974
+ |===
975
+ |Benchmark |Leptris |pugixml |Advantage
976
+
977
+ |Append 10000 children (one parent)
978
+ |160 µs
979
+ |119 µs
980
+ |1.3× slower (measured; was 2.5× faster pre-attr-index — the doc-level
981
+ index bookkeeping is the cost of O(1) duplicate-rejecting
982
+ set_attribute at scale)
983
+
984
+ |Set 2000 attributes (duplicate-rejecting)
985
+ |347 µs
986
+ |~8–14 ms (find+set)
987
+ |**~25× faster**
988
+
989
+ |Serialize attr-heavy 2 MB
990
+ |490 µs
991
+ |799 µs
992
+ |**1.6× faster**
993
+
994
+ |Serialize text-heavy 2 MB
995
+ |566 µs
996
+ |521 µs
997
+ |1.1× slower (measured; the two are at parity within run noise)
998
+ |===
999
+
1000
+ See also `benchmarks/README.md` for the decomposition benchmark
1001
+ (`benchmark_decomp`: isolates text/element/attr/text-node costs)
1002
+ and the SAX benchmark (`benchmark_sax`: leptris vs libxml2 SAX2 —
1003
+ pugixml has no SAX interface; leptris leads every corpus shape).
1004
+
1005
+ === Building with LTO
1006
+
1007
+ LTO is enabled by default for `Release` and `RelWithDebInfo` builds.
1008
+ Disable with `-DLEPTRIS_ENABLE_LTO=OFF`:
1009
+
1010
+ [source,bash]
1011
+ ----
1012
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release
1013
+ cmake --build build # LTO is on automatically
1014
+
1015
+ # or explicitly:
1016
+ cmake -B build -S . -DCMAKE_BUILD_TYPE=Release -DLEPTRIS_ENABLE_LTO=ON
1017
+ ----
1018
+
1019
+ === Running benchmarks
1020
+
1021
+ [source,bash]
1022
+ ----
1023
+ cmake -B build -S . \
1024
+ -DCMAKE_BUILD_TYPE=Release \
1025
+ -DLEPTRIS_BUILD_BENCHMARKS=ON
1026
+ cmake --build build
1027
+
1028
+ # Run individual benchmarks:
1029
+ ./build/benchmarks/bench_dom_leptris
1030
+ ./build/benchmarks/bench_sax_leptris
1031
+ ./build/benchmarks/benchmark_write # vs pugixml + libxml2
1032
+ ./build/benchmarks/bench_xpath_pugixml # XPath vs pugixml
1033
+ ----
1034
+
1035
+ CI uploads a `benchmark-results-<os>` artifact per push with JSON +
1036
+ Markdown output from every benchmark binary.
1037
+
1038
+ [#vcpkg]
1039
+ == vcpkg integration
1040
+
1041
+ A vcpkg port pattern follows the jemalloc convention (see
1042
+ `tamatebako/jemalloc/ports/jemalloc/`). The library ships with:
1043
+
1044
+ * A `vcpkg.json` (manifest) for vcpkg consumption.
1045
+ * A `portfile.cmake` template for vcpkg port submission.
1046
+ * A `usage` file documenting the linkage pattern.
1047
+
1048
+ [source,cmake]
1049
+ ----
1050
+ # portfile.cmake (excerpt — see repo for full version)
1051
+ vcpkg_cmake_configure(
1052
+ SOURCE_PATH "${SOURCE_PATH}"
1053
+ OPTIONS
1054
+ -DLEPTRIS_BUILD_CLI=OFF
1055
+ -DLEPTRIS_ENABLE_UTF8PROC=ON
1056
+ -DLEPTRIS_ENABLE_ICONV=ON
1057
+ )
1058
+ vcpkg_cmake_install()
1059
+ vcpkg_cmake_config_fixup(CONFIG_PATH lib/cmake/leptris)
1060
+ ----
1061
+
1062
+ == Dependencies
1063
+
1064
+ * *CMake* ≥ 3.20
1065
+ * *C99 compiler* (GCC, Clang, MSVC, MinGW)
1066
+ * Optional: *utf8proc* (Unicode), *iconv* (encoding conversion),
1067
+ *Doxygen* (API docs)
1068
+
1069
+ No runtime dependencies when built without utf8proc/iconv.
1070
+
1071
+ == Continuous integration
1072
+
1073
+ [cols="1,2,2",options="header"]
1074
+ |===
1075
+ |Workflow |Triggers |What it does
1076
+
1077
+ |`.github/workflows/test.yml`
1078
+ |Every push/PR
1079
+ |Build, run all 103 specs across 13 modules.
1080
+
1081
+ |`.github/workflows/asan.yml`
1082
+ |Every push/PR
1083
+ |Build with AddressSanitizer; verify zero leaks / errors.
1084
+
1085
+ |`.github/workflows/fuzz-nightly.yml`
1086
+ |Nightly cron
1087
+ |libFuzzer for 5 minutes; report any crashes.
1088
+ |===
1089
+
1090
+ == Project layout
1091
+
1092
+ [source,text]
1093
+ ----
1094
+ leptris/
1095
+ src/ # library + CLI + tests source
1096
+ include/ # public C API headers
1097
+ leptris/ # internal C source
1098
+ dom/ # DOM node types + pool
1099
+ parse/ # parser
1100
+ xpath/ # XPath evaluator
1101
+ sax/ # SAX parser
1102
+ encode/ # UTF-16 + iconv
1103
+ serialize/ # output writer
1104
+ memory/ # pool allocator
1105
+ dtd/ # DTD subsystem
1106
+ cli/ # command-line tool
1107
+ test/ # 345 specs across 14 modules
1108
+ benchmark/ # libxml2 / pugixml comparisons
1109
+ bindings/ruby/ # Ruby FFI binding (TODO 118)
1110
+ TODO.md # open-work tracker (TODO.fix/ planning docs live in git history)
1111
+ .github/workflows/ # CI
1112
+ docs/ # README, building guide, FFI design
1113
+ ====
1114
+
1115
+ == Roadmap
1116
+
1117
+ context, and link:docs/FFI.md[docs/FFI.md] for the FFI roadmap.
1118
+
1119
+ Shipped in v0.3.0:
1120
+
1121
+ * ✓ Zero-copy borrowed text nodes (TODO 115)
1122
+ * ✓ Pool-routed Parser struct (TODO 114 Phase 3)
1123
+ * ✓ Streaming SAX state machine (TODO 116 Phases A-C — recursive parser removed)
1124
+ * ✓ XInclude ownership transfer + cycle detection (TODO 117 Phases A-C)
1125
+ * ✓ DTD content-model memoization (TODO 119)
1126
+ * ✓ XPath bytecode VM, complete + wired in (TODO 120 Phases A-E)
1127
+ * ✓ Compact-pointer int32 overflow fix for macOS (TODO 121)
1128
+ * ✓ Ruby FFI binding (TODO 118)
1129
+
1130
+ Shipped post-v0.3.0 (XPath perf track):
1131
+
1132
+ * ✓ SAX API exported from shared library (TODO 122 — unblocks Ruby SAX)
1133
+ * ✓ XPath diagnostic benchmark suite (TODO 123)
1134
+ * ✓ XPath bytecode VM inline dispatch + bytecode cache (TODO 120 Phase F)
1135
+ * ✓ Lazy namespace init — 5-9× faster per-eval floor (TODO 125)
1136
+ * ✓ Specialized child/attribute/self/parent axes (TODO 126)
1137
+ * ✓ Specialized descendant / descendant-or-self axes (TODO 127)
1138
+ * ✓ Simple predicate fast paths: `[@attr]`, `[@attr='lit']`, `[N]` (TODO 128)
1139
+ * ✓ Specialized absolute paths `/foo` `//foo` with `//name` fusion (TODO 129)
1140
+ * ✓ Inline VM opcodes for common functions — `count`, `sum`, `string`, etc. (TODO 130)
1141
+ * ✓ Iterative descendant walk + result pre-alloc (TODO 131)
1142
+ * ✓ Per-document element index for O(1) descendant queries (TODO 132)
1143
+ * ✓ Attribute index infrastructure for predicate fast paths (TODO 133)
1144
+ * ✓ Fused axis+predicate opcodes — `descendant::*[@id]` now BEATS libxml2 (TODO 134)
1145
+ * ✓ Fast inline nodeset_add for VM hot paths (TODO 135)
1146
+ * ✓ Descendant-or-self fused predicate opcodes (TODO 136)
1147
+ * ✓ Memcpy fast path for index-backed descendant queries — Leptris BEATS libxml2 on ALL XPath benchmarks (TODO 137)
1148
+ * ✓ Contiguous per-document arena + content-derived block sizing (TODO 183)
1149
+ * ✓ Single-representation attribute strings — views only, one cache line per attr (TODO 184)
1150
+ * ✓ Fused attribute/text scans — K=100 parse gap vs pugixml 7.8x → ~1.5x (TODO 184)
1151
+ * ✓ O(K^2) attribute walks eliminated across finalize/DTD/c14n (TODO 185)
1152
+ * ✓ Ruby SAX binding — full callback surface + streaming (TODO 118 Phase B)
1153
+
1154
+ Planned (see TODO.md for the full open list):
1155
+
1156
+ * Extend element index to relative-descendant queries (currently
1157
+ only absolute paths and root-context descendant use it).
1158
+ * XPointer `xmlns()` scheme (needs a public namespace-context API).
1159
+ * Doxygen API reference polish.
1160
+
1161
+ Shipped since this list was last curated: Python bindings (cffi,
1162
+ pyleptris) and Rust bindings (crate `leptris` in bindings/rust); VM
1163
+ constant folding for `concat` / `contains` / `substring`.
1164
+
1165
+ Measured dead (recorded for honesty; see the TODO.remaining/08 and
1166
+ TODO.fix perf-ledger planning docs in git history, v1.1.2-era main):
1167
+
1168
+ * 32 B split-stream attrs — the family's upper-bound probe (views-
1169
+ only 32 B stride, no ctrl array) regressed mid-K and still lost at
1170
+ K=100 (TODO 185 round 6).
1171
+ * Parser two-pass SIMD (v3) — the floor probe (memcpy + scan + stub
1172
+ walk) already cost 88.5% of the current full parse (TODO 193).
1173
+ The single-pass parser is at a compiler-global optimum; leptris
1174
+ parses 6-14x faster than libxml2 and sits ~1.5-1.8x behind
1175
+ pugixml on attr-heavy shapes, with no remaining lever of any
1176
+ known class.
1177
+
1178
+ == Contributing
1179
+
1180
+ Issues and pull requests at
1181
+ https://github.com/leptris/leptris[github.com/leptris/leptris].
1182
+
1183
+ For C contribution, see link:docs/guide/building.md[docs/guide/building.md].
1184
+ For the testing policy, see `test/README.md`.
1185
+
1186
+ == Acknowledgments
1187
+
1188
+ This project draws structural inspiration from several long-running
1189
+ C projects in the wider ecosystem:
1190
+
1191
+ * *jemalloc* (Tebako fork) — memory model and CI patterns.
1192
+ * *libxml2* — public API ergonomics.
1193
+ * *pugixml* — pool-based XML DOM, performance targets.
1194
+
1195
+ == License
1196
+
1197
+ MIT. See link:LICENSE.md[LICENSE.md].