nokogiri-maglev- 1.5.0.1

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 (225) hide show
  1. data/.autotest +26 -0
  2. data/.gemtest +0 -0
  3. data/CHANGELOG.ja.rdoc +544 -0
  4. data/CHANGELOG.rdoc +532 -0
  5. data/Manifest.txt +283 -0
  6. data/README.ja.rdoc +106 -0
  7. data/README.rdoc +174 -0
  8. data/Rakefile +171 -0
  9. data/bin/nokogiri +53 -0
  10. data/ext/nokogiri/depend +358 -0
  11. data/ext/nokogiri/extconf.rb +124 -0
  12. data/ext/nokogiri/html_document.c +154 -0
  13. data/ext/nokogiri/html_document.h +10 -0
  14. data/ext/nokogiri/html_element_description.c +276 -0
  15. data/ext/nokogiri/html_element_description.h +10 -0
  16. data/ext/nokogiri/html_entity_lookup.c +32 -0
  17. data/ext/nokogiri/html_entity_lookup.h +8 -0
  18. data/ext/nokogiri/html_sax_parser_context.c +94 -0
  19. data/ext/nokogiri/html_sax_parser_context.h +11 -0
  20. data/ext/nokogiri/nokogiri.c +115 -0
  21. data/ext/nokogiri/nokogiri.h +160 -0
  22. data/ext/nokogiri/st.c +576 -0
  23. data/ext/nokogiri/xml_attr.c +94 -0
  24. data/ext/nokogiri/xml_attr.h +9 -0
  25. data/ext/nokogiri/xml_attribute_decl.c +70 -0
  26. data/ext/nokogiri/xml_attribute_decl.h +9 -0
  27. data/ext/nokogiri/xml_cdata.c +56 -0
  28. data/ext/nokogiri/xml_cdata.h +9 -0
  29. data/ext/nokogiri/xml_comment.c +54 -0
  30. data/ext/nokogiri/xml_comment.h +9 -0
  31. data/ext/nokogiri/xml_document.c +478 -0
  32. data/ext/nokogiri/xml_document.h +23 -0
  33. data/ext/nokogiri/xml_document_fragment.c +48 -0
  34. data/ext/nokogiri/xml_document_fragment.h +10 -0
  35. data/ext/nokogiri/xml_dtd.c +202 -0
  36. data/ext/nokogiri/xml_dtd.h +10 -0
  37. data/ext/nokogiri/xml_element_content.c +123 -0
  38. data/ext/nokogiri/xml_element_content.h +10 -0
  39. data/ext/nokogiri/xml_element_decl.c +69 -0
  40. data/ext/nokogiri/xml_element_decl.h +9 -0
  41. data/ext/nokogiri/xml_encoding_handler.c +79 -0
  42. data/ext/nokogiri/xml_encoding_handler.h +8 -0
  43. data/ext/nokogiri/xml_entity_decl.c +110 -0
  44. data/ext/nokogiri/xml_entity_decl.h +10 -0
  45. data/ext/nokogiri/xml_entity_reference.c +52 -0
  46. data/ext/nokogiri/xml_entity_reference.h +9 -0
  47. data/ext/nokogiri/xml_io.c +56 -0
  48. data/ext/nokogiri/xml_io.h +11 -0
  49. data/ext/nokogiri/xml_libxml2_hacks.c +112 -0
  50. data/ext/nokogiri/xml_libxml2_hacks.h +12 -0
  51. data/ext/nokogiri/xml_namespace.c +84 -0
  52. data/ext/nokogiri/xml_namespace.h +13 -0
  53. data/ext/nokogiri/xml_node.c +1397 -0
  54. data/ext/nokogiri/xml_node.h +13 -0
  55. data/ext/nokogiri/xml_node_set.c +418 -0
  56. data/ext/nokogiri/xml_node_set.h +9 -0
  57. data/ext/nokogiri/xml_processing_instruction.c +56 -0
  58. data/ext/nokogiri/xml_processing_instruction.h +9 -0
  59. data/ext/nokogiri/xml_reader.c +684 -0
  60. data/ext/nokogiri/xml_reader.h +10 -0
  61. data/ext/nokogiri/xml_relax_ng.c +162 -0
  62. data/ext/nokogiri/xml_relax_ng.h +9 -0
  63. data/ext/nokogiri/xml_sax_parser.c +293 -0
  64. data/ext/nokogiri/xml_sax_parser.h +39 -0
  65. data/ext/nokogiri/xml_sax_parser_context.c +199 -0
  66. data/ext/nokogiri/xml_sax_parser_context.h +10 -0
  67. data/ext/nokogiri/xml_sax_push_parser.c +115 -0
  68. data/ext/nokogiri/xml_sax_push_parser.h +9 -0
  69. data/ext/nokogiri/xml_schema.c +205 -0
  70. data/ext/nokogiri/xml_schema.h +9 -0
  71. data/ext/nokogiri/xml_syntax_error.c +58 -0
  72. data/ext/nokogiri/xml_syntax_error.h +13 -0
  73. data/ext/nokogiri/xml_text.c +50 -0
  74. data/ext/nokogiri/xml_text.h +9 -0
  75. data/ext/nokogiri/xml_xpath_context.c +315 -0
  76. data/ext/nokogiri/xml_xpath_context.h +9 -0
  77. data/ext/nokogiri/xslt_stylesheet.c +265 -0
  78. data/ext/nokogiri/xslt_stylesheet.h +9 -0
  79. data/lib/nokogiri.rb +127 -0
  80. data/lib/nokogiri/css.rb +27 -0
  81. data/lib/nokogiri/css/node.rb +99 -0
  82. data/lib/nokogiri/css/parser.rb +677 -0
  83. data/lib/nokogiri/css/parser.y +237 -0
  84. data/lib/nokogiri/css/parser_extras.rb +91 -0
  85. data/lib/nokogiri/css/syntax_error.rb +7 -0
  86. data/lib/nokogiri/css/tokenizer.rb +152 -0
  87. data/lib/nokogiri/css/tokenizer.rex +55 -0
  88. data/lib/nokogiri/css/xpath_visitor.rb +171 -0
  89. data/lib/nokogiri/decorators/slop.rb +35 -0
  90. data/lib/nokogiri/html.rb +36 -0
  91. data/lib/nokogiri/html/builder.rb +35 -0
  92. data/lib/nokogiri/html/document.rb +213 -0
  93. data/lib/nokogiri/html/document_fragment.rb +41 -0
  94. data/lib/nokogiri/html/element_description.rb +23 -0
  95. data/lib/nokogiri/html/element_description_defaults.rb +671 -0
  96. data/lib/nokogiri/html/entity_lookup.rb +13 -0
  97. data/lib/nokogiri/html/sax/parser.rb +52 -0
  98. data/lib/nokogiri/html/sax/parser_context.rb +16 -0
  99. data/lib/nokogiri/syntax_error.rb +4 -0
  100. data/lib/nokogiri/version.rb +88 -0
  101. data/lib/nokogiri/xml.rb +67 -0
  102. data/lib/nokogiri/xml/attr.rb +14 -0
  103. data/lib/nokogiri/xml/attribute_decl.rb +18 -0
  104. data/lib/nokogiri/xml/builder.rb +426 -0
  105. data/lib/nokogiri/xml/cdata.rb +11 -0
  106. data/lib/nokogiri/xml/character_data.rb +7 -0
  107. data/lib/nokogiri/xml/document.rb +234 -0
  108. data/lib/nokogiri/xml/document_fragment.rb +98 -0
  109. data/lib/nokogiri/xml/dtd.rb +22 -0
  110. data/lib/nokogiri/xml/element_content.rb +36 -0
  111. data/lib/nokogiri/xml/element_decl.rb +13 -0
  112. data/lib/nokogiri/xml/entity_decl.rb +19 -0
  113. data/lib/nokogiri/xml/namespace.rb +13 -0
  114. data/lib/nokogiri/xml/node.rb +915 -0
  115. data/lib/nokogiri/xml/node/save_options.rb +61 -0
  116. data/lib/nokogiri/xml/node_set.rb +357 -0
  117. data/lib/nokogiri/xml/notation.rb +6 -0
  118. data/lib/nokogiri/xml/parse_options.rb +93 -0
  119. data/lib/nokogiri/xml/pp.rb +2 -0
  120. data/lib/nokogiri/xml/pp/character_data.rb +18 -0
  121. data/lib/nokogiri/xml/pp/node.rb +56 -0
  122. data/lib/nokogiri/xml/processing_instruction.rb +8 -0
  123. data/lib/nokogiri/xml/reader.rb +112 -0
  124. data/lib/nokogiri/xml/relax_ng.rb +32 -0
  125. data/lib/nokogiri/xml/sax.rb +4 -0
  126. data/lib/nokogiri/xml/sax/document.rb +164 -0
  127. data/lib/nokogiri/xml/sax/parser.rb +115 -0
  128. data/lib/nokogiri/xml/sax/parser_context.rb +16 -0
  129. data/lib/nokogiri/xml/sax/push_parser.rb +60 -0
  130. data/lib/nokogiri/xml/schema.rb +63 -0
  131. data/lib/nokogiri/xml/syntax_error.rb +47 -0
  132. data/lib/nokogiri/xml/text.rb +9 -0
  133. data/lib/nokogiri/xml/xpath.rb +10 -0
  134. data/lib/nokogiri/xml/xpath/syntax_error.rb +11 -0
  135. data/lib/nokogiri/xml/xpath_context.rb +16 -0
  136. data/lib/nokogiri/xslt.rb +52 -0
  137. data/lib/nokogiri/xslt/stylesheet.rb +25 -0
  138. data/lib/xsd/xmlparser/nokogiri.rb +90 -0
  139. data/nokogiri_help_responses.md +40 -0
  140. data/tasks/cross_compile.rb +152 -0
  141. data/tasks/nokogiri.org.rb +18 -0
  142. data/tasks/test.rb +94 -0
  143. data/test/css/test_nthiness.rb +159 -0
  144. data/test/css/test_parser.rb +303 -0
  145. data/test/css/test_tokenizer.rb +198 -0
  146. data/test/css/test_xpath_visitor.rb +85 -0
  147. data/test/decorators/test_slop.rb +16 -0
  148. data/test/files/2ch.html +108 -0
  149. data/test/files/address_book.rlx +12 -0
  150. data/test/files/address_book.xml +10 -0
  151. data/test/files/bar/bar.xsd +4 -0
  152. data/test/files/dont_hurt_em_why.xml +422 -0
  153. data/test/files/encoding.html +82 -0
  154. data/test/files/encoding.xhtml +84 -0
  155. data/test/files/exslt.xml +8 -0
  156. data/test/files/exslt.xslt +35 -0
  157. data/test/files/foo/foo.xsd +4 -0
  158. data/test/files/metacharset.html +10 -0
  159. data/test/files/noencoding.html +47 -0
  160. data/test/files/po.xml +32 -0
  161. data/test/files/po.xsd +66 -0
  162. data/test/files/shift_jis.html +10 -0
  163. data/test/files/shift_jis.xml +5 -0
  164. data/test/files/snuggles.xml +3 -0
  165. data/test/files/staff.dtd +10 -0
  166. data/test/files/staff.xml +59 -0
  167. data/test/files/staff.xslt +32 -0
  168. data/test/files/tlm.html +850 -0
  169. data/test/files/valid_bar.xml +2 -0
  170. data/test/helper.rb +173 -0
  171. data/test/html/sax/test_parser.rb +139 -0
  172. data/test/html/sax/test_parser_context.rb +48 -0
  173. data/test/html/test_builder.rb +165 -0
  174. data/test/html/test_document.rb +472 -0
  175. data/test/html/test_document_encoding.rb +138 -0
  176. data/test/html/test_document_fragment.rb +255 -0
  177. data/test/html/test_element_description.rb +101 -0
  178. data/test/html/test_named_characters.rb +14 -0
  179. data/test/html/test_node.rb +193 -0
  180. data/test/html/test_node_encoding.rb +27 -0
  181. data/test/test_convert_xpath.rb +135 -0
  182. data/test/test_css_cache.rb +45 -0
  183. data/test/test_encoding_handler.rb +46 -0
  184. data/test/test_memory_leak.rb +72 -0
  185. data/test/test_nokogiri.rb +133 -0
  186. data/test/test_reader.rb +425 -0
  187. data/test/test_soap4r_sax.rb +52 -0
  188. data/test/test_xslt_transforms.rb +193 -0
  189. data/test/xml/node/test_save_options.rb +28 -0
  190. data/test/xml/node/test_subclass.rb +44 -0
  191. data/test/xml/sax/test_parser.rb +338 -0
  192. data/test/xml/sax/test_parser_context.rb +113 -0
  193. data/test/xml/sax/test_push_parser.rb +156 -0
  194. data/test/xml/test_attr.rb +65 -0
  195. data/test/xml/test_attribute_decl.rb +86 -0
  196. data/test/xml/test_builder.rb +227 -0
  197. data/test/xml/test_cdata.rb +50 -0
  198. data/test/xml/test_comment.rb +29 -0
  199. data/test/xml/test_document.rb +697 -0
  200. data/test/xml/test_document_encoding.rb +26 -0
  201. data/test/xml/test_document_fragment.rb +192 -0
  202. data/test/xml/test_dtd.rb +107 -0
  203. data/test/xml/test_dtd_encoding.rb +33 -0
  204. data/test/xml/test_element_content.rb +56 -0
  205. data/test/xml/test_element_decl.rb +73 -0
  206. data/test/xml/test_entity_decl.rb +122 -0
  207. data/test/xml/test_entity_reference.rb +21 -0
  208. data/test/xml/test_namespace.rb +70 -0
  209. data/test/xml/test_node.rb +917 -0
  210. data/test/xml/test_node_attributes.rb +34 -0
  211. data/test/xml/test_node_encoding.rb +107 -0
  212. data/test/xml/test_node_reparenting.rb +334 -0
  213. data/test/xml/test_node_set.rb +742 -0
  214. data/test/xml/test_parse_options.rb +52 -0
  215. data/test/xml/test_processing_instruction.rb +30 -0
  216. data/test/xml/test_reader_encoding.rb +126 -0
  217. data/test/xml/test_relax_ng.rb +60 -0
  218. data/test/xml/test_schema.rb +94 -0
  219. data/test/xml/test_syntax_error.rb +12 -0
  220. data/test/xml/test_text.rb +47 -0
  221. data/test/xml/test_unparented_node.rb +381 -0
  222. data/test/xml/test_xpath.rb +237 -0
  223. data/test/xslt/test_custom_functions.rb +94 -0
  224. data/test/xslt/test_exception_handling.rb +37 -0
  225. metadata +548 -0
@@ -0,0 +1,237 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XML
5
+ class TestXPath < Nokogiri::TestCase
6
+
7
+ # ** WHY ALL THOSE _if Nokogiri.uses_libxml?_ **
8
+ # Hi, my dear readers,
9
+ #
10
+ # After reading these tests you may be wondering why all those ugly
11
+ # if Nokogiri.uses_libxml? sparsed over the whole document. Well, let
12
+ # me explain it. While using XPath in Java, you need the extension
13
+ # functions to be in a namespace. This is not required by XPath, afaik,
14
+ # but it is an usual convention though.
15
+ #
16
+ # Furthermore, CSS does not support extension functions but it does in
17
+ # Nokogiri. Result: you cannot use them in JRuby impl. At least, until
18
+ # the CSS to XPath parser is patched, and let me say that there are more
19
+ # important features to add before that happens. I hope you will forgive
20
+ # me.
21
+ #
22
+ # Yours truly,
23
+ #
24
+ # The guy whose headaches belong to Nokogiri JRuby impl.
25
+
26
+
27
+ def setup
28
+ super
29
+
30
+ @xml = Nokogiri::XML.parse(File.read(XML_FILE), XML_FILE)
31
+
32
+ @ns = @xml.root.namespaces
33
+
34
+ # TODO: Maybe I should move this to the original code.
35
+ @ns["nokogiri"] = "http://www.nokogiri.org/default_ns/ruby/extensions_functions"
36
+
37
+ @handler = Class.new {
38
+ attr_reader :things
39
+
40
+ def initialize
41
+ @things = []
42
+ end
43
+
44
+ def thing thing
45
+ @things << thing
46
+ thing
47
+ end
48
+
49
+ def returns_array node_set
50
+ @things << node_set.to_a
51
+ node_set.to_a
52
+ end
53
+
54
+ def my_filter set, attribute, value
55
+ set.find_all { |x| x[attribute] == value }
56
+ end
57
+
58
+ def saves_node_set node_set
59
+ @things = node_set
60
+ end
61
+ }.new
62
+ end
63
+
64
+ def test_variable_binding
65
+ assert_equal 4, @xml.xpath('//address[@domestic=$value]', nil, :value => 'Yes').length
66
+ end
67
+
68
+ def test_unknown_attribute
69
+ assert_equal 0, @xml.xpath('//employee[@id="asdfasdf"]/@fooo').length
70
+ assert_nil @xml.xpath('//employee[@id="asdfasdf"]/@fooo')[0]
71
+ end
72
+
73
+ def test_boolean
74
+ assert_equal false, @xml.xpath('1 = 2')
75
+ end
76
+
77
+ def test_number
78
+ assert_equal 2, @xml.xpath('1 + 1')
79
+ end
80
+
81
+ def test_string
82
+ assert_equal 'foo', @xml.xpath('concat("fo", "o")')
83
+ end
84
+
85
+ def test_css_search_uses_custom_selectors_with_arguments
86
+ set = if Nokogiri.uses_libxml?
87
+ @xml.css('employee > address:my_filter("domestic", "Yes")', @handler)
88
+ else
89
+ @xml.xpath("//employee/address[nokogiri:my_filter(., \"domestic\", \"Yes\")]", @ns, @handler)
90
+ end
91
+ assert set.length > 0
92
+ set.each do |node|
93
+ assert_equal 'Yes', node['domestic']
94
+ end
95
+ end
96
+
97
+ def test_css_search_uses_custom_selectors
98
+ set = @xml.xpath('//employee')
99
+ assert_nothing_raised do
100
+ if Nokogiri.uses_libxml?
101
+ @xml.css('employee:thing()', @handler)
102
+ else
103
+ @xml.xpath("//employee[nokogiri:thing(.)]", @ns, @handler)
104
+ end
105
+ end
106
+ assert_equal(set.length, @handler.things.length)
107
+ assert_equal(set.to_a, @handler.things.flatten)
108
+ end
109
+
110
+ def test_pass_self_to_function
111
+ set = if Nokogiri.uses_libxml?
112
+ @xml.xpath('//employee/address[my_filter(., "domestic", "Yes")]', @handler)
113
+ else
114
+ @xml.xpath('//employee/address[nokogiri:my_filter(., "domestic", "Yes")]', @ns, @handler)
115
+ end
116
+ assert set.length > 0
117
+ set.each do |node|
118
+ assert_equal 'Yes', node['domestic']
119
+ end
120
+ end
121
+
122
+ def test_custom_xpath_function_gets_strings
123
+ set = @xml.xpath('//employee')
124
+ if Nokogiri.uses_libxml?
125
+ @xml.xpath('//employee[thing("asdf")]', @handler)
126
+ else
127
+ @xml.xpath('//employee[nokogiri:thing("asdf")]', @ns, @handler)
128
+ end
129
+ assert_equal(set.length, @handler.things.length)
130
+ assert_equal(['asdf'] * set.length, @handler.things)
131
+ end
132
+
133
+ def test_custom_xpath_gets_true_booleans
134
+ set = @xml.xpath('//employee')
135
+ if Nokogiri.uses_libxml?
136
+ @xml.xpath('//employee[thing(true())]', @handler)
137
+ else
138
+ @xml.xpath("//employee[nokogiri:thing(true())]", @ns, @handler)
139
+ end
140
+ assert_equal(set.length, @handler.things.length)
141
+ assert_equal([true] * set.length, @handler.things)
142
+ end
143
+
144
+ def test_custom_xpath_gets_false_booleans
145
+ set = @xml.xpath('//employee')
146
+ if Nokogiri.uses_libxml?
147
+ @xml.xpath('//employee[thing(false())]', @handler)
148
+ else
149
+ @xml.xpath("//employee[nokogiri:thing(false())]", @ns, @handler)
150
+ end
151
+ assert_equal(set.length, @handler.things.length)
152
+ assert_equal([false] * set.length, @handler.things)
153
+ end
154
+
155
+ def test_custom_xpath_gets_numbers
156
+ set = @xml.xpath('//employee')
157
+ if Nokogiri.uses_libxml?
158
+ @xml.xpath('//employee[thing(10)]', @handler)
159
+ else
160
+ @xml.xpath('//employee[nokogiri:thing(10)]', @ns, @handler)
161
+ end
162
+ assert_equal(set.length, @handler.things.length)
163
+ assert_equal([10] * set.length, @handler.things)
164
+ end
165
+
166
+ def test_custom_xpath_gets_node_sets
167
+ set = @xml.xpath('//employee/name')
168
+ if Nokogiri.uses_libxml?
169
+ @xml.xpath('//employee[thing(name)]', @handler)
170
+ else
171
+ @xml.xpath('//employee[nokogiri:thing(name)]', @ns, @handler)
172
+ end
173
+ assert_equal(set.length, @handler.things.length)
174
+ assert_equal(set.to_a, @handler.things.flatten)
175
+ end
176
+
177
+ def test_custom_xpath_gets_node_sets_and_returns_array
178
+ set = @xml.xpath('//employee/name')
179
+ if Nokogiri.uses_libxml?
180
+ @xml.xpath('//employee[returns_array(name)]', @handler)
181
+ else
182
+ @xml.xpath('//employee[nokogiri:returns_array(name)]', @ns, @handler)
183
+ end
184
+ assert_equal(set.length, @handler.things.length)
185
+ assert_equal(set.to_a, @handler.things.flatten)
186
+ end
187
+
188
+ def test_custom_xpath_handler_is_passed_a_decorated_node_set
189
+ x = Module.new do
190
+ def awesome! ; end
191
+ end
192
+ util_decorate(@xml, x)
193
+
194
+ assert @xml.xpath('//employee/name')
195
+
196
+ @xml.xpath('//employee[saves_node_set(name)]', @handler)
197
+ assert_equal @xml, @handler.things.document
198
+ assert @handler.things.respond_to?(:awesome!)
199
+ end
200
+
201
+ def test_code_that_invokes_OP_RESET_inside_libxml2
202
+ doc = "<html><body id='foo'><foo>hi</foo></body></html>"
203
+ xpath = 'id("foo")//foo'
204
+ nokogiri = Nokogiri::HTML.parse(doc)
205
+ assert nokogiri.xpath(xpath)
206
+ end
207
+
208
+ def test_custom_xpath_handler_with_args_under_gc_pressure
209
+ # see http://github.com/tenderlove/nokogiri/issues/#issue/345
210
+ tool_inspector = Class.new do
211
+ def name_equals(nodeset, name, *args)
212
+ nodeset.all? do |node|
213
+ args.each { |thing| thing.inspect }
214
+ node["name"] == name
215
+ end
216
+ end
217
+ end.new
218
+
219
+ xml = <<-EOXML
220
+ <toolbox>
221
+ #{"<tool name='hammer'/><tool name='wrench'/>" * 10}
222
+ </toolbox>
223
+ EOXML
224
+ doc = Nokogiri::XML xml
225
+
226
+ # long list of long arguments, to apply GC pressure during
227
+ # ruby_funcall argument marshalling
228
+ xpath = ["//tool[name_equals(.,'hammer'"]
229
+ 1000.times { xpath << "'unused argument #{'x' * 1000}'" }
230
+ xpath << "'unused argument')]"
231
+ xpath = xpath.join(',')
232
+
233
+ assert_equal doc.xpath("//tool[@name='hammer']"), doc.xpath(xpath, tool_inspector)
234
+ end
235
+ end
236
+ end
237
+ end
@@ -0,0 +1,94 @@
1
+ # -*- encoding: utf-8 -*-
2
+
3
+ require "helper"
4
+
5
+ module Nokogiri
6
+ module XSLT
7
+ class TestCustomFunctions < Nokogiri::TestCase
8
+ def setup
9
+ super
10
+ @xml = Nokogiri.XML(<<-EOXML)
11
+ <?xml version="1.0" encoding="UTF-8"?>
12
+ <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.1 plus MathML 2.0//EN"
13
+ "http://www.w3.org/TR/MathML2/dtd/xhtml-math11-f.dtd">
14
+ <html xmlns="http://www.w3.org/1999/xhtml" lang="en">
15
+ <head>
16
+ <meta http-equiv="Content-type" content="application/xhtml+xml"/>
17
+ <title>Foo</title>
18
+ </head>
19
+ <body>
20
+ <h1>Foo</h1>
21
+ <p>Lorem ipsum.</p>
22
+ </body>
23
+ </html>
24
+ EOXML
25
+ end
26
+
27
+ def test_function
28
+ skip("Pure Java version doesn't support this feature.") if !Nokogiri.uses_libxml?
29
+ foo = Class.new do
30
+ def capitalize nodes
31
+ nodes.first.content.upcase
32
+ end
33
+ end
34
+
35
+ XSLT.register "http://e.org/functions", foo
36
+
37
+ xsl = Nokogiri.XSLT(<<-EOXSL)
38
+ <?xml version="1.0"?>
39
+ <xsl:stylesheet version="1.0"
40
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
41
+ xmlns:f="http://e.org/functions"
42
+ extension-element-prefixes="f">
43
+
44
+ <xsl:template match="text()">
45
+ <xsl:copy-of select="f:capitalize(.)"/>
46
+ </xsl:template>
47
+
48
+ <xsl:template match="@*|node()">
49
+ <xsl:copy>
50
+ <xsl:apply-templates select="@*|node()"/>
51
+ <xsl:apply-imports/>
52
+ </xsl:copy>
53
+ </xsl:template>
54
+
55
+ </xsl:stylesheet>
56
+ EOXSL
57
+ result = xsl.transform @xml
58
+ assert_equal 'FOO', result.css('title').first.text
59
+ end
60
+
61
+ def test_function_XSLT
62
+ skip("Pure Java version doesn't support this feature.") if !Nokogiri.uses_libxml?
63
+ foo = Class.new do
64
+ def america nodes
65
+ nodes.first.content.upcase
66
+ end
67
+ end
68
+
69
+ xsl = Nokogiri.XSLT(<<-EOXSL, "http://e.org/functions" => foo)
70
+ <?xml version="1.0"?>
71
+ <xsl:stylesheet version="1.0"
72
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
73
+ xmlns:f="http://e.org/functions"
74
+ extension-element-prefixes="f">
75
+
76
+ <xsl:template match="text()">
77
+ <xsl:copy-of select="f:america(.)"/>
78
+ </xsl:template>
79
+
80
+ <xsl:template match="@*|node()">
81
+ <xsl:copy>
82
+ <xsl:apply-templates select="@*|node()"/>
83
+ <xsl:apply-imports/>
84
+ </xsl:copy>
85
+ </xsl:template>
86
+
87
+ </xsl:stylesheet>
88
+ EOXSL
89
+ result = xsl.transform @xml
90
+ assert_equal 'FOO', result.css('title').first.text
91
+ end
92
+ end
93
+ end
94
+ end
@@ -0,0 +1,37 @@
1
+ require "helper"
2
+
3
+ module Nokogiri
4
+ module XSLT
5
+ class TestExceptionHandling < Nokogiri::TestCase
6
+ def test_java_exception_handling
7
+ skip('This test is for Java only') if Nokogiri.uses_libxml?
8
+
9
+ xml = Nokogiri.XML(<<-EOXML)
10
+ <foo>
11
+ <bar/>
12
+ </foo>
13
+ EOXML
14
+
15
+ xsl = Nokogiri.XSLT(<<-EOXSL)
16
+ <?xml version="1.0"?>
17
+ <xsl:stylesheet version="1.0"
18
+ xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
19
+
20
+ <xsl:template match="/">
21
+ <a/>
22
+ <b/>
23
+ </xsl:template>
24
+ </xsl:stylesheet>
25
+ EOXSL
26
+
27
+ begin
28
+ xsl.transform xml
29
+ fail('It should not get here')
30
+ rescue RuntimeError => e
31
+ assert_match(/HIERARCHY_REQUEST_ERR/, e.to_s, 'The exception message does not contain the expected information')
32
+ end
33
+ end
34
+
35
+ end
36
+ end
37
+ end
metadata ADDED
@@ -0,0 +1,548 @@
1
+ --- !ruby/object:Gem::Specification
2
+ name: nokogiri-maglev-
3
+ version: !ruby/object:Gem::Version
4
+ hash: 117
5
+ prerelease:
6
+ segments:
7
+ - 1
8
+ - 5
9
+ - 0
10
+ - 1
11
+ version: 1.5.0.1
12
+ platform: ruby
13
+ authors:
14
+ - Aaron Patterson
15
+ - Mike Dalessio
16
+ - Yoko Harada
17
+ autorequire:
18
+ bindir: bin
19
+ cert_chain: []
20
+
21
+ date: 2011-09-20 00:00:00 -07:00
22
+ default_executable:
23
+ dependencies:
24
+ - !ruby/object:Gem::Dependency
25
+ name: racc
26
+ prerelease: false
27
+ requirement: &id001 !ruby/object:Gem::Requirement
28
+ none: false
29
+ requirements:
30
+ - - ">="
31
+ - !ruby/object:Gem::Version
32
+ hash: 11
33
+ segments:
34
+ - 1
35
+ - 4
36
+ - 6
37
+ version: 1.4.6
38
+ type: :development
39
+ version_requirements: *id001
40
+ - !ruby/object:Gem::Dependency
41
+ name: rexical
42
+ prerelease: false
43
+ requirement: &id002 !ruby/object:Gem::Requirement
44
+ none: false
45
+ requirements:
46
+ - - ">="
47
+ - !ruby/object:Gem::Version
48
+ hash: 29
49
+ segments:
50
+ - 1
51
+ - 0
52
+ - 5
53
+ version: 1.0.5
54
+ type: :development
55
+ version_requirements: *id002
56
+ - !ruby/object:Gem::Dependency
57
+ name: rake-compiler
58
+ prerelease: false
59
+ requirement: &id003 !ruby/object:Gem::Requirement
60
+ none: false
61
+ requirements:
62
+ - - ">="
63
+ - !ruby/object:Gem::Version
64
+ hash: 17
65
+ segments:
66
+ - 0
67
+ - 7
68
+ - 9
69
+ version: 0.7.9
70
+ type: :development
71
+ version_requirements: *id003
72
+ - !ruby/object:Gem::Dependency
73
+ name: minitest
74
+ prerelease: false
75
+ requirement: &id004 !ruby/object:Gem::Requirement
76
+ none: false
77
+ requirements:
78
+ - - ~>
79
+ - !ruby/object:Gem::Version
80
+ hash: 3
81
+ segments:
82
+ - 2
83
+ - 2
84
+ - 2
85
+ version: 2.2.2
86
+ type: :development
87
+ version_requirements: *id004
88
+ - !ruby/object:Gem::Dependency
89
+ name: mini_portile
90
+ prerelease: false
91
+ requirement: &id005 !ruby/object:Gem::Requirement
92
+ none: false
93
+ requirements:
94
+ - - ">="
95
+ - !ruby/object:Gem::Version
96
+ hash: 19
97
+ segments:
98
+ - 0
99
+ - 2
100
+ - 2
101
+ version: 0.2.2
102
+ type: :development
103
+ version_requirements: *id005
104
+ - !ruby/object:Gem::Dependency
105
+ name: hoe-debugging
106
+ prerelease: false
107
+ requirement: &id006 !ruby/object:Gem::Requirement
108
+ none: false
109
+ requirements:
110
+ - - ">="
111
+ - !ruby/object:Gem::Version
112
+ hash: 3
113
+ segments:
114
+ - 0
115
+ version: "0"
116
+ type: :development
117
+ version_requirements: *id006
118
+ - !ruby/object:Gem::Dependency
119
+ name: hoe-git
120
+ prerelease: false
121
+ requirement: &id007 !ruby/object:Gem::Requirement
122
+ none: false
123
+ requirements:
124
+ - - ">="
125
+ - !ruby/object:Gem::Version
126
+ hash: 3
127
+ segments:
128
+ - 0
129
+ version: "0"
130
+ type: :development
131
+ version_requirements: *id007
132
+ - !ruby/object:Gem::Dependency
133
+ name: hoe-gemspec
134
+ prerelease: false
135
+ requirement: &id008 !ruby/object:Gem::Requirement
136
+ none: false
137
+ requirements:
138
+ - - ">="
139
+ - !ruby/object:Gem::Version
140
+ hash: 3
141
+ segments:
142
+ - 0
143
+ version: "0"
144
+ type: :development
145
+ version_requirements: *id008
146
+ - !ruby/object:Gem::Dependency
147
+ name: hoe-bundler
148
+ prerelease: false
149
+ requirement: &id009 !ruby/object:Gem::Requirement
150
+ none: false
151
+ requirements:
152
+ - - ">="
153
+ - !ruby/object:Gem::Version
154
+ hash: 3
155
+ segments:
156
+ - 0
157
+ version: "0"
158
+ type: :development
159
+ version_requirements: *id009
160
+ - !ruby/object:Gem::Dependency
161
+ name: hoe
162
+ prerelease: false
163
+ requirement: &id010 !ruby/object:Gem::Requirement
164
+ none: false
165
+ requirements:
166
+ - - ~>
167
+ - !ruby/object:Gem::Version
168
+ hash: 27
169
+ segments:
170
+ - 2
171
+ - 12
172
+ version: "2.12"
173
+ type: :development
174
+ version_requirements: *id010
175
+ description: "Nokogiri (\xE9\x8B\xB8) is an HTML, XML, SAX, and Reader parser. Among Nokogiri's\n\
176
+ many features is the ability to search documents via XPath or CSS3 selectors.\n\n\
177
+ XML is like violence - if it doesn\xE2\x80\x99t solve your problems, you are not using\n\
178
+ enough of it."
179
+ email:
180
+ - aaronp@rubyforge.org
181
+ - mike.dalessio@gmail.com
182
+ - yokolet@gmail.com
183
+ executables:
184
+ - nokogiri
185
+ extensions:
186
+ - ext/nokogiri/extconf.rb
187
+ extra_rdoc_files:
188
+ - Manifest.txt
189
+ - CHANGELOG.ja.rdoc
190
+ - README.ja.rdoc
191
+ - README.rdoc
192
+ - CHANGELOG.rdoc
193
+ - ext/nokogiri/xml_namespace.c
194
+ - ext/nokogiri/xml_dtd.c
195
+ - ext/nokogiri/xml_encoding_handler.c
196
+ - ext/nokogiri/xml_attr.c
197
+ - ext/nokogiri/xml_reader.c
198
+ - ext/nokogiri/xml_sax_parser.c
199
+ - ext/nokogiri/xml_sax_parser_context.c
200
+ - ext/nokogiri/xml_syntax_error.c
201
+ - ext/nokogiri/html_document.c
202
+ - ext/nokogiri/xml_comment.c
203
+ - ext/nokogiri/xml_document_fragment.c
204
+ - ext/nokogiri/html_sax_parser_context.c
205
+ - ext/nokogiri/nokogiri.c
206
+ - ext/nokogiri/html_element_description.c
207
+ - ext/nokogiri/xml_libxml2_hacks.c
208
+ - ext/nokogiri/xml_entity_decl.c
209
+ - ext/nokogiri/xml_attribute_decl.c
210
+ - ext/nokogiri/xml_node_set.c
211
+ - ext/nokogiri/xml_element_decl.c
212
+ - ext/nokogiri/xml_sax_push_parser.c
213
+ - ext/nokogiri/xml_document.c
214
+ - ext/nokogiri/xml_element_content.c
215
+ - ext/nokogiri/xml_xpath_context.c
216
+ - ext/nokogiri/xml_text.c
217
+ - ext/nokogiri/st.c
218
+ - ext/nokogiri/xml_processing_instruction.c
219
+ - ext/nokogiri/xml_cdata.c
220
+ - ext/nokogiri/xslt_stylesheet.c
221
+ - ext/nokogiri/xml_schema.c
222
+ - ext/nokogiri/xml_node.c
223
+ - ext/nokogiri/xml_entity_reference.c
224
+ - ext/nokogiri/html_entity_lookup.c
225
+ - ext/nokogiri/xml_io.c
226
+ - ext/nokogiri/xml_relax_ng.c
227
+ files:
228
+ - .autotest
229
+ - .gemtest
230
+ - CHANGELOG.ja.rdoc
231
+ - CHANGELOG.rdoc
232
+ - Manifest.txt
233
+ - README.ja.rdoc
234
+ - README.rdoc
235
+ - Rakefile
236
+ - bin/nokogiri
237
+ - ext/nokogiri/depend
238
+ - ext/nokogiri/extconf.rb
239
+ - ext/nokogiri/html_document.c
240
+ - ext/nokogiri/html_document.h
241
+ - ext/nokogiri/html_element_description.c
242
+ - ext/nokogiri/html_element_description.h
243
+ - ext/nokogiri/html_entity_lookup.c
244
+ - ext/nokogiri/html_entity_lookup.h
245
+ - ext/nokogiri/html_sax_parser_context.c
246
+ - ext/nokogiri/html_sax_parser_context.h
247
+ - ext/nokogiri/nokogiri.c
248
+ - ext/nokogiri/nokogiri.h
249
+ - ext/nokogiri/xml_attr.c
250
+ - ext/nokogiri/xml_attr.h
251
+ - ext/nokogiri/xml_attribute_decl.c
252
+ - ext/nokogiri/xml_attribute_decl.h
253
+ - ext/nokogiri/xml_cdata.c
254
+ - ext/nokogiri/xml_cdata.h
255
+ - ext/nokogiri/xml_comment.c
256
+ - ext/nokogiri/xml_comment.h
257
+ - ext/nokogiri/xml_document.c
258
+ - ext/nokogiri/xml_document.h
259
+ - ext/nokogiri/xml_document_fragment.c
260
+ - ext/nokogiri/xml_document_fragment.h
261
+ - ext/nokogiri/xml_dtd.c
262
+ - ext/nokogiri/xml_dtd.h
263
+ - ext/nokogiri/xml_element_content.c
264
+ - ext/nokogiri/xml_element_content.h
265
+ - ext/nokogiri/xml_element_decl.c
266
+ - ext/nokogiri/xml_element_decl.h
267
+ - ext/nokogiri/xml_encoding_handler.c
268
+ - ext/nokogiri/xml_encoding_handler.h
269
+ - ext/nokogiri/xml_entity_decl.c
270
+ - ext/nokogiri/xml_entity_decl.h
271
+ - ext/nokogiri/xml_entity_reference.c
272
+ - ext/nokogiri/xml_entity_reference.h
273
+ - ext/nokogiri/xml_io.c
274
+ - ext/nokogiri/xml_io.h
275
+ - ext/nokogiri/xml_libxml2_hacks.c
276
+ - ext/nokogiri/xml_libxml2_hacks.h
277
+ - ext/nokogiri/xml_namespace.c
278
+ - ext/nokogiri/xml_namespace.h
279
+ - ext/nokogiri/xml_node.c
280
+ - ext/nokogiri/xml_node.h
281
+ - ext/nokogiri/xml_node_set.c
282
+ - ext/nokogiri/xml_node_set.h
283
+ - ext/nokogiri/xml_processing_instruction.c
284
+ - ext/nokogiri/xml_processing_instruction.h
285
+ - ext/nokogiri/xml_reader.c
286
+ - ext/nokogiri/xml_reader.h
287
+ - ext/nokogiri/xml_relax_ng.c
288
+ - ext/nokogiri/xml_relax_ng.h
289
+ - ext/nokogiri/xml_sax_parser.c
290
+ - ext/nokogiri/xml_sax_parser.h
291
+ - ext/nokogiri/xml_sax_parser_context.c
292
+ - ext/nokogiri/xml_sax_parser_context.h
293
+ - ext/nokogiri/xml_sax_push_parser.c
294
+ - ext/nokogiri/xml_sax_push_parser.h
295
+ - ext/nokogiri/xml_schema.c
296
+ - ext/nokogiri/xml_schema.h
297
+ - ext/nokogiri/xml_syntax_error.c
298
+ - ext/nokogiri/xml_syntax_error.h
299
+ - ext/nokogiri/xml_text.c
300
+ - ext/nokogiri/xml_text.h
301
+ - ext/nokogiri/xml_xpath_context.c
302
+ - ext/nokogiri/xml_xpath_context.h
303
+ - ext/nokogiri/xslt_stylesheet.c
304
+ - ext/nokogiri/xslt_stylesheet.h
305
+ - lib/nokogiri.rb
306
+ - lib/nokogiri/css.rb
307
+ - lib/nokogiri/css/node.rb
308
+ - lib/nokogiri/css/parser.rb
309
+ - lib/nokogiri/css/parser.y
310
+ - lib/nokogiri/css/parser_extras.rb
311
+ - lib/nokogiri/css/syntax_error.rb
312
+ - lib/nokogiri/css/tokenizer.rb
313
+ - lib/nokogiri/css/tokenizer.rex
314
+ - lib/nokogiri/css/xpath_visitor.rb
315
+ - lib/nokogiri/decorators/slop.rb
316
+ - lib/nokogiri/html.rb
317
+ - lib/nokogiri/html/builder.rb
318
+ - lib/nokogiri/html/document.rb
319
+ - lib/nokogiri/html/document_fragment.rb
320
+ - lib/nokogiri/html/element_description.rb
321
+ - lib/nokogiri/html/element_description_defaults.rb
322
+ - lib/nokogiri/html/entity_lookup.rb
323
+ - lib/nokogiri/html/sax/parser.rb
324
+ - lib/nokogiri/html/sax/parser_context.rb
325
+ - lib/nokogiri/syntax_error.rb
326
+ - lib/nokogiri/version.rb
327
+ - lib/nokogiri/xml.rb
328
+ - lib/nokogiri/xml/attr.rb
329
+ - lib/nokogiri/xml/attribute_decl.rb
330
+ - lib/nokogiri/xml/builder.rb
331
+ - lib/nokogiri/xml/cdata.rb
332
+ - lib/nokogiri/xml/character_data.rb
333
+ - lib/nokogiri/xml/document.rb
334
+ - lib/nokogiri/xml/document_fragment.rb
335
+ - lib/nokogiri/xml/dtd.rb
336
+ - lib/nokogiri/xml/element_content.rb
337
+ - lib/nokogiri/xml/element_decl.rb
338
+ - lib/nokogiri/xml/entity_decl.rb
339
+ - lib/nokogiri/xml/namespace.rb
340
+ - lib/nokogiri/xml/node.rb
341
+ - lib/nokogiri/xml/node/save_options.rb
342
+ - lib/nokogiri/xml/node_set.rb
343
+ - lib/nokogiri/xml/notation.rb
344
+ - lib/nokogiri/xml/parse_options.rb
345
+ - lib/nokogiri/xml/pp.rb
346
+ - lib/nokogiri/xml/pp/character_data.rb
347
+ - lib/nokogiri/xml/pp/node.rb
348
+ - lib/nokogiri/xml/processing_instruction.rb
349
+ - lib/nokogiri/xml/reader.rb
350
+ - lib/nokogiri/xml/relax_ng.rb
351
+ - lib/nokogiri/xml/sax.rb
352
+ - lib/nokogiri/xml/sax/document.rb
353
+ - lib/nokogiri/xml/sax/parser.rb
354
+ - lib/nokogiri/xml/sax/parser_context.rb
355
+ - lib/nokogiri/xml/sax/push_parser.rb
356
+ - lib/nokogiri/xml/schema.rb
357
+ - lib/nokogiri/xml/syntax_error.rb
358
+ - lib/nokogiri/xml/text.rb
359
+ - lib/nokogiri/xml/xpath.rb
360
+ - lib/nokogiri/xml/xpath/syntax_error.rb
361
+ - lib/nokogiri/xml/xpath_context.rb
362
+ - lib/nokogiri/xslt.rb
363
+ - lib/nokogiri/xslt/stylesheet.rb
364
+ - lib/xsd/xmlparser/nokogiri.rb
365
+ - nokogiri_help_responses.md
366
+ - tasks/cross_compile.rb
367
+ - tasks/nokogiri.org.rb
368
+ - tasks/test.rb
369
+ - test/css/test_nthiness.rb
370
+ - test/css/test_parser.rb
371
+ - test/css/test_tokenizer.rb
372
+ - test/css/test_xpath_visitor.rb
373
+ - test/decorators/test_slop.rb
374
+ - test/files/2ch.html
375
+ - test/files/address_book.rlx
376
+ - test/files/address_book.xml
377
+ - test/files/bar/bar.xsd
378
+ - test/files/dont_hurt_em_why.xml
379
+ - test/files/encoding.html
380
+ - test/files/encoding.xhtml
381
+ - test/files/exslt.xml
382
+ - test/files/exslt.xslt
383
+ - test/files/foo/foo.xsd
384
+ - test/files/metacharset.html
385
+ - test/files/noencoding.html
386
+ - test/files/po.xml
387
+ - test/files/po.xsd
388
+ - test/files/shift_jis.html
389
+ - test/files/shift_jis.xml
390
+ - test/files/snuggles.xml
391
+ - test/files/staff.dtd
392
+ - test/files/staff.xml
393
+ - test/files/staff.xslt
394
+ - test/files/tlm.html
395
+ - test/files/valid_bar.xml
396
+ - test/helper.rb
397
+ - test/html/sax/test_parser.rb
398
+ - test/html/sax/test_parser_context.rb
399
+ - test/html/test_builder.rb
400
+ - test/html/test_document.rb
401
+ - test/html/test_document_encoding.rb
402
+ - test/html/test_document_fragment.rb
403
+ - test/html/test_element_description.rb
404
+ - test/html/test_named_characters.rb
405
+ - test/html/test_node.rb
406
+ - test/html/test_node_encoding.rb
407
+ - test/test_convert_xpath.rb
408
+ - test/test_css_cache.rb
409
+ - test/test_encoding_handler.rb
410
+ - test/test_memory_leak.rb
411
+ - test/test_nokogiri.rb
412
+ - test/test_reader.rb
413
+ - test/test_soap4r_sax.rb
414
+ - test/test_xslt_transforms.rb
415
+ - test/xml/node/test_save_options.rb
416
+ - test/xml/node/test_subclass.rb
417
+ - test/xml/sax/test_parser.rb
418
+ - test/xml/sax/test_parser_context.rb
419
+ - test/xml/sax/test_push_parser.rb
420
+ - test/xml/test_attr.rb
421
+ - test/xml/test_attribute_decl.rb
422
+ - test/xml/test_builder.rb
423
+ - test/xml/test_cdata.rb
424
+ - test/xml/test_comment.rb
425
+ - test/xml/test_document.rb
426
+ - test/xml/test_document_encoding.rb
427
+ - test/xml/test_document_fragment.rb
428
+ - test/xml/test_dtd.rb
429
+ - test/xml/test_dtd_encoding.rb
430
+ - test/xml/test_element_content.rb
431
+ - test/xml/test_element_decl.rb
432
+ - test/xml/test_entity_decl.rb
433
+ - test/xml/test_entity_reference.rb
434
+ - test/xml/test_namespace.rb
435
+ - test/xml/test_node.rb
436
+ - test/xml/test_node_attributes.rb
437
+ - test/xml/test_node_encoding.rb
438
+ - test/xml/test_node_reparenting.rb
439
+ - test/xml/test_node_set.rb
440
+ - test/xml/test_parse_options.rb
441
+ - test/xml/test_processing_instruction.rb
442
+ - test/xml/test_reader_encoding.rb
443
+ - test/xml/test_relax_ng.rb
444
+ - test/xml/test_schema.rb
445
+ - test/xml/test_syntax_error.rb
446
+ - test/xml/test_text.rb
447
+ - test/xml/test_unparented_node.rb
448
+ - test/xml/test_xpath.rb
449
+ - test/xslt/test_custom_functions.rb
450
+ - test/xslt/test_exception_handling.rb
451
+ - ext/nokogiri/st.c
452
+ has_rdoc: true
453
+ homepage: http://nokogiri.org
454
+ licenses: []
455
+
456
+ post_install_message:
457
+ rdoc_options:
458
+ - --main
459
+ - README.rdoc
460
+ require_paths:
461
+ - lib
462
+ required_ruby_version: !ruby/object:Gem::Requirement
463
+ none: false
464
+ requirements:
465
+ - - ">="
466
+ - !ruby/object:Gem::Version
467
+ hash: 57
468
+ segments:
469
+ - 1
470
+ - 8
471
+ - 7
472
+ version: 1.8.7
473
+ required_rubygems_version: !ruby/object:Gem::Requirement
474
+ none: false
475
+ requirements:
476
+ - - ">="
477
+ - !ruby/object:Gem::Version
478
+ hash: 3
479
+ segments:
480
+ - 0
481
+ version: "0"
482
+ requirements: []
483
+
484
+ rubyforge_project: nokogiri-maglev-
485
+ rubygems_version: 1.6.2
486
+ signing_key:
487
+ specification_version: 3
488
+ summary: "Nokogiri (\xE9\x8B\xB8) is an HTML, XML, SAX, and Reader parser"
489
+ test_files:
490
+ - test/css/test_tokenizer.rb
491
+ - test/css/test_nthiness.rb
492
+ - test/css/test_xpath_visitor.rb
493
+ - test/css/test_parser.rb
494
+ - test/test_nokogiri.rb
495
+ - test/test_encoding_handler.rb
496
+ - test/decorators/test_slop.rb
497
+ - test/xslt/test_exception_handling.rb
498
+ - test/xslt/test_custom_functions.rb
499
+ - test/test_reader.rb
500
+ - test/test_memory_leak.rb
501
+ - test/test_xslt_transforms.rb
502
+ - test/test_css_cache.rb
503
+ - test/xml/test_syntax_error.rb
504
+ - test/xml/test_attribute_decl.rb
505
+ - test/xml/test_schema.rb
506
+ - test/xml/test_reader_encoding.rb
507
+ - test/xml/test_entity_reference.rb
508
+ - test/xml/node/test_subclass.rb
509
+ - test/xml/node/test_save_options.rb
510
+ - test/xml/test_unparented_node.rb
511
+ - test/xml/sax/test_push_parser.rb
512
+ - test/xml/sax/test_parser_context.rb
513
+ - test/xml/sax/test_parser.rb
514
+ - test/xml/test_processing_instruction.rb
515
+ - test/xml/test_dtd_encoding.rb
516
+ - test/xml/test_document.rb
517
+ - test/xml/test_node_set.rb
518
+ - test/xml/test_xpath.rb
519
+ - test/xml/test_cdata.rb
520
+ - test/xml/test_attr.rb
521
+ - test/xml/test_element_content.rb
522
+ - test/xml/test_document_encoding.rb
523
+ - test/xml/test_document_fragment.rb
524
+ - test/xml/test_element_decl.rb
525
+ - test/xml/test_node_reparenting.rb
526
+ - test/xml/test_dtd.rb
527
+ - test/xml/test_relax_ng.rb
528
+ - test/xml/test_comment.rb
529
+ - test/xml/test_namespace.rb
530
+ - test/xml/test_text.rb
531
+ - test/xml/test_builder.rb
532
+ - test/xml/test_node.rb
533
+ - test/xml/test_entity_decl.rb
534
+ - test/xml/test_node_attributes.rb
535
+ - test/xml/test_node_encoding.rb
536
+ - test/xml/test_parse_options.rb
537
+ - test/test_convert_xpath.rb
538
+ - test/html/test_element_description.rb
539
+ - test/html/sax/test_parser_context.rb
540
+ - test/html/sax/test_parser.rb
541
+ - test/html/test_named_characters.rb
542
+ - test/html/test_document.rb
543
+ - test/html/test_document_encoding.rb
544
+ - test/html/test_document_fragment.rb
545
+ - test/html/test_builder.rb
546
+ - test/html/test_node.rb
547
+ - test/html/test_node_encoding.rb
548
+ - test/test_soap4r_sax.rb