libxml-ruby 0.9.8 → 0.9.9

Sign up to get free protection for your applications and to get access to all the features.
Files changed (96) hide show
  1. data/CHANGES +41 -1
  2. data/LICENSE +3 -4
  3. data/README +37 -24
  4. data/Rakefile +2 -2
  5. data/ext/libxml/extconf.rb +31 -12
  6. data/ext/libxml/libxml.c +56 -858
  7. data/ext/libxml/ruby_libxml.h +93 -96
  8. data/ext/libxml/ruby_xml.c +855 -0
  9. data/ext/libxml/ruby_xml.h +9 -0
  10. data/ext/libxml/ruby_xml_attr.c +3 -9
  11. data/ext/libxml/ruby_xml_attr.h +2 -2
  12. data/ext/libxml/ruby_xml_attr_decl.c +2 -8
  13. data/ext/libxml/ruby_xml_attr_decl.h +1 -1
  14. data/ext/libxml/ruby_xml_attributes.c +6 -8
  15. data/ext/libxml/ruby_xml_attributes.h +1 -1
  16. data/ext/libxml/ruby_xml_document.c +915 -895
  17. data/ext/libxml/ruby_xml_document.h +2 -2
  18. data/ext/libxml/ruby_xml_dtd.c +257 -136
  19. data/ext/libxml/ruby_xml_dtd.h +1 -1
  20. data/ext/libxml/ruby_xml_encoding.c +55 -37
  21. data/ext/libxml/ruby_xml_encoding.h +1 -1
  22. data/ext/libxml/ruby_xml_error.c +526 -1058
  23. data/ext/libxml/ruby_xml_error.h +1 -1
  24. data/ext/libxml/ruby_xml_html_parser.c +2 -8
  25. data/ext/libxml/ruby_xml_html_parser.h +2 -2
  26. data/ext/libxml/ruby_xml_html_parser_context.c +175 -145
  27. data/ext/libxml/ruby_xml_html_parser_context.h +1 -1
  28. data/ext/libxml/ruby_xml_html_parser_options.c +12 -20
  29. data/ext/libxml/ruby_xml_html_parser_options.h +1 -1
  30. data/ext/libxml/ruby_xml_input_cbg.c +2 -8
  31. data/ext/libxml/ruby_xml_input_cbg.h +1 -1
  32. data/ext/libxml/ruby_xml_namespace.c +2 -8
  33. data/ext/libxml/ruby_xml_namespace.h +2 -2
  34. data/ext/libxml/ruby_xml_namespaces.c +1 -9
  35. data/ext/libxml/ruby_xml_namespaces.h +1 -1
  36. data/ext/libxml/ruby_xml_node.c +182 -121
  37. data/ext/libxml/ruby_xml_node.h +2 -2
  38. data/ext/libxml/ruby_xml_parser.c +2 -8
  39. data/ext/libxml/ruby_xml_parser.h +2 -2
  40. data/ext/libxml/ruby_xml_parser_context.c +952 -901
  41. data/ext/libxml/ruby_xml_parser_context.h +2 -2
  42. data/ext/libxml/ruby_xml_parser_options.c +2 -9
  43. data/ext/libxml/ruby_xml_parser_options.h +1 -1
  44. data/ext/libxml/ruby_xml_reader.c +1002 -993
  45. data/ext/libxml/ruby_xml_reader.h +1 -1
  46. data/ext/libxml/ruby_xml_relaxng.c +1 -7
  47. data/ext/libxml/ruby_xml_relaxng.h +1 -1
  48. data/ext/libxml/ruby_xml_sax2_handler.c +2 -2
  49. data/ext/libxml/ruby_xml_sax2_handler.h +1 -1
  50. data/ext/libxml/ruby_xml_sax_parser.c +2 -8
  51. data/ext/libxml/ruby_xml_sax_parser.h +2 -2
  52. data/ext/libxml/ruby_xml_schema.c +1 -7
  53. data/ext/libxml/ruby_xml_schema.h +1 -1
  54. data/ext/libxml/{version.h → ruby_xml_version.h} +2 -2
  55. data/ext/libxml/ruby_xml_xinclude.c +2 -8
  56. data/ext/libxml/ruby_xml_xinclude.h +2 -2
  57. data/ext/libxml/ruby_xml_xpath.c +17 -18
  58. data/ext/libxml/ruby_xml_xpath.h +2 -2
  59. data/ext/libxml/ruby_xml_xpath_context.c +387 -389
  60. data/ext/libxml/ruby_xml_xpath_context.h +2 -2
  61. data/ext/libxml/ruby_xml_xpath_expression.c +18 -8
  62. data/ext/libxml/ruby_xml_xpath_expression.h +1 -1
  63. data/ext/libxml/ruby_xml_xpath_object.c +19 -8
  64. data/ext/libxml/ruby_xml_xpath_object.h +1 -1
  65. data/ext/libxml/ruby_xml_xpointer.c +2 -8
  66. data/ext/libxml/ruby_xml_xpointer.h +2 -2
  67. data/ext/vc/libxml_ruby.sln +7 -1
  68. data/lib/libxml.rb +1 -12
  69. data/lib/libxml/attr.rb +0 -3
  70. data/lib/libxml/attr_decl.rb +0 -3
  71. data/lib/libxml/attributes.rb +0 -3
  72. data/lib/libxml/document.rb +31 -5
  73. data/lib/libxml/error.rb +8 -4
  74. data/lib/libxml/properties.rb +0 -5
  75. data/lib/libxml/sax_callbacks.rb +30 -19
  76. data/lib/libxml/tree.rb +0 -1
  77. data/lib/libxml/xpath_object.rb +0 -13
  78. data/test/model/definition.dtd +8 -0
  79. data/test/tc_attributes.rb +4 -1
  80. data/test/tc_document.rb +16 -0
  81. data/test/tc_dtd.rb +30 -2
  82. data/test/tc_html_parser.rb +55 -10
  83. data/test/tc_node.rb +67 -1
  84. data/test/tc_node_edit.rb +26 -6
  85. data/test/tc_node_text.rb +41 -23
  86. data/test/tc_parser.rb +50 -0
  87. data/test/tc_reader.rb +15 -0
  88. data/test/tc_relaxng.rb +1 -1
  89. data/test/tc_sax_parser.rb +37 -5
  90. data/test/tc_schema.rb +1 -1
  91. data/test/tc_xpath.rb +1 -0
  92. data/test/tc_xpath_expression.rb +4 -2
  93. metadata +6 -6
  94. data/ext/libxml/ruby_xml_state.c +0 -51
  95. data/ext/libxml/ruby_xml_state.h +0 -11
  96. data/ext/vc/libxml_ruby.vcproj +0 -460
data/CHANGES CHANGED
@@ -1,3 +1,43 @@
1
+ == 0.9.9 / 2009-03-05 Charlie Savage
2
+
3
+ * Ruby 1.9.1 support (Charlie Savage). libxml-ruby now compiles and runs on either
4
+ 1.8.6 and 1.9.1. With 1.8.6 all tests should pass while on 1.9.1 all but
5
+ for encoding tests pass. The port to Ruby 1.9.1 revealed two memory
6
+ allocation bugs (one with dtds, one with nodes) which are now fixed.
7
+
8
+ * Better OS X support (Joe Khoobyar). The default version of libxml2
9
+ on OS X 10.5 is fairly old, resulting in this link error:
10
+
11
+ NSLinkModule() error
12
+ dyld: Symbol not found: _htmlNewParserCtxt
13
+
14
+ This can be fixed by using MacPorts to get a newer version of libxml2.
15
+ To make use of MacPorts, the build script has been updated to use xml2-config.
16
+ This can be fine-tuned using the new --with-xml2-config / --without-xml2-config
17
+ options to extconf.rb (default is --without-xml2-config to match existing behavior).
18
+
19
+ * Greatly reduced memory usage (Joe Khoobyar).
20
+ See http://rubyforge.org/pipermail/libxml-devel/2009-February/001375.html.
21
+
22
+ * Add Document#xhtml? and document#node_type methods (Joe Khoobyar)
23
+
24
+ * Add XPath::Object#last (Joe Khoobyar)
25
+
26
+ * Provide finer control over CDATA nodes on a parser by parser basis (Joe Khoobyar).
27
+
28
+ * Bug fix - Namespaces were incorrectly merged with attributes in the new sax2
29
+ handler (Charlie Savage).
30
+
31
+ * Bug fix - Support iterating over nodes and attributes even with blocks
32
+ that call remove! (Charlie Savage)
33
+
34
+ * Bug fix - If reader.node is NULL, return nil instead of crashing (Charlie Savage)
35
+
36
+ * Bug fix - Dtd's owned by documents were freed twice in some circumstances (Joe Khoobyar).
37
+
38
+ * Bug fix - Fix output escaping on attributes nodes (Joe Khoobyar).
39
+
40
+
1
41
  == 0.9.8 / 2009-1-24 Charlie Savage
2
42
 
3
43
  * Refactored XML::Parser, XML::HTMLParser, XML::SaxParser and
@@ -10,7 +50,7 @@
10
50
  boolean value.
11
51
 
12
52
  * Updated all APIs to use the encoding constants defined
13
- in XML::Encoding versus string valus. This API change
53
+ in XML::Encoding versus string values. This API change
14
54
  is not backwards compatible.
15
55
 
16
56
  * Added support for attribute declarations in DTD's via the new
data/LICENSE CHANGED
@@ -1,7 +1,6 @@
1
- LibXML-Ruby
2
-
3
- Copyright (c) 2002-2006 Sean Chittenden <sean@chittenden.org> and contributors
4
- Copyright (c) 2001 Wai-Sun "Squidster" Chia <waisun.chia@compaq.com>
1
+ Copyright (c) 2008-2009 Charlie Savage and contributors
2
+ Copyright (c) 2002-2007 Sean Chittenden and contributors
3
+ Copyright (c) 2001 Wai-Sun "Squidster" Chia
5
4
 
6
5
  Permission is hereby granted, free of charge, to any person obtaining a copy of
7
6
  this software and associated documentation files (the "Software"), to deal in
data/README CHANGED
@@ -43,28 +43,30 @@ solution. If you wish to run a debug version of libxml-ruby on
43
43
  Windows, then it is highly recommended you use VC++.
44
44
 
45
45
  == Getting Started
46
- Using libxml is easy. First decide what parser you want to use.
47
- Generally you'll want to use the LibXML::XML::Parser which provides a tree based API.
48
- For larger documents that don't fit into memory, or if you prefer an input based API,
49
- then use LibXML::XML::Reader. If you are parsing HTML files, then use LibXML::XML::HTMLParser.
50
- Finally, if you are masochistic, then use the LibXML::XML::SaxParser, which provides a callback API.
46
+ Using libxml is easy. First decide what parser you want to use:
51
47
 
52
- Once you choose a parser, then choose a datasource and its
53
- encoding. Libxml can parse files, strings, URIs and IO stream.
54
- For more information, see LibXML::XML::Input.
48
+ * Generally you'll want to use the LibXML::XML::Parser which provides a tree based API.
49
+ * For larger documents that don't fit into memory, or if you prefer an input based API, use the LibXML::XML::Reader.
50
+ * To parse HTML files use LibXML::XML::HTMLParser.
51
+ * If you are masochistic, then use the LibXML::XML::SaxParser, which provides a callback API.
52
+
53
+ Once you have choosen a parser, choose a datasource. Libxml can parse files, strings, URIs
54
+ and IO streams. For each data source you can specify an LibXML::XML::Encoding, a base uri and
55
+ various parser options. For more information, refer the LibXML::XML::Parser.document,
56
+ LibXML::XML::Parser.file, LibXML::XML::Parser.io or LibXML:::XML::Parser.string methods (the
57
+ same methods are defined on all four parser classes).
55
58
 
56
59
  == Advanced Functionality
57
60
  Beyond the basics of parsing and processing XML and HTML documents,
58
- lLibxml provides a wealth of additional functionality.
61
+ libxml provides a wealth of additional functionality.
59
62
 
60
63
  Most commonly, you'll want to use its LibXML::XML::XPath support, which makes
61
- it easy to search for data inside and XML document. Although not as
62
- popular, LibXML::XML::XPointer provides another API for finding data inside
63
- an XML document.
64
+ it easy to find data inside a XML document. Although not as popular,
65
+ LibXML::XML::XPointer provides another API for finding data inside an XML document.
64
66
 
65
67
  Often times you'll need to validate data before processing it. For example,
66
68
  if you accept user generated content submitted over the Web, you'll
67
- want to first verify it does not contain malicious code such as embedded scripts.
69
+ want to verify that it does not contain malicious code such as embedded scripts.
68
70
  This can be done using libxml's powerful set of validators:
69
71
 
70
72
  * DTDs (LibXML::XML::Dtd)
@@ -72,7 +74,7 @@ This can be done using libxml's powerful set of validators:
72
74
  * XML Schema (LibXML::XML::Schema)
73
75
 
74
76
  Finally, if you'd like to use XSL Transformations to process data,
75
- then also install the libxslt gem which is available at
77
+ then install the libxslt gem which is available at
76
78
  http://rubyforge.org/projects/libxsl/.
77
79
 
78
80
  == Usage
@@ -94,8 +96,8 @@ namespace, in which case you can either write your code like this:
94
96
  require 'libxml'
95
97
  document = LibXML::XML::Document.new
96
98
 
97
- or, more conveniently, utilize a proper namespace for you own work
98
- and include LibXML into it. For example:
99
+ Or you can utilize a namespace for you own work and include LibXML into it.
100
+ For example:
99
101
 
100
102
  require 'libxml'
101
103
 
@@ -133,16 +135,27 @@ From https://svn.concord.org/svn/projects/trunk/common/ruby/xml_benchmarks/
133
135
  rexml 22.859000 0.047000 22.906000 ( 23.203000)
134
136
 
135
137
 
136
- == DOCUMENTATION
137
- For more information please refer to the documentation.
138
+ == Documentation
139
+ Documentation is provided via rdoc. To generate the documentation,
140
+ run the the command 'rake doc'. libxml-ruby's online documentation
141
+ is generated using Hanna. To use hanna:
138
142
 
139
- RDoc comments are included - run 'rake doc' to generate documentation.
140
- You can find the latest documentation at:
143
+ gem install mislav-hanna
144
+ rake rdoc RDOCOPT="-S -T hanna"
141
145
 
142
- * http://libxml.rubyforge.org/rdoc/
146
+ Note that older versions of Rdoc, which ship with Ruby 1.8.x, will report
147
+ a number of errors. To avoid them, install Rdoc 2.1 or higher from
148
+ RubyForge (http://rdoc.rubyforge.org/). Once you have installed the gem,
149
+ you'll have to disable the version of Rdoc that Ruby 1.8.x includes. An
150
+ easy way to do that is rename the directory uby/lib/ruby/1.8/rdoc to
151
+ ruby/lib/ruby/1.8/rdoc_old.
143
152
 
144
- If you have any questions, please send email to libxml-devel@rubyforge.org.
153
+ == Support
145
154
 
146
- == License
147
- See LICENSE for license information.
155
+ If you have any questions about using libxml-ruby, please send them to
156
+ libxml-devel@rubyforge.org. If you have found any bugs in libxml-devel,
157
+ or have developed new patches, please submit them to Ruby Forge at
158
+ http://rubyforge.org/tracker/?group_id=494.
148
159
 
160
+ == License
161
+ See LICENSE for license information.
data/Rakefile CHANGED
@@ -43,7 +43,7 @@ default_spec = Gem::Specification.new do |spec|
43
43
 
44
44
  # Determine the current version of the software
45
45
  spec.version =
46
- if File.read('ext/libxml/version.h') =~ /\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/
46
+ if File.read('ext/libxml/ruby_xml_version.h') =~ /\s*RUBY_LIBXML_VERSION\s*['"](\d.+)['"]/
47
47
  CURRENT_VERSION = $1
48
48
  else
49
49
  CURRENT_VERSION = "0.0.0"
@@ -96,7 +96,7 @@ Rake::RDocTask.new("rdoc") do |rdoc|
96
96
  rdoc.rdoc_dir = 'doc/rdoc'
97
97
  rdoc.title = "LibXML"
98
98
  # Show source inline with line numbers
99
- rdoc.options << "--inline-source" << "--line-numbers"
99
+ rdoc.options << "--line-numbers"
100
100
  # Make the readme file the start page for the generated html
101
101
  rdoc.options << '--main' << 'README'
102
102
  rdoc.rdoc_files.include('doc/*.rdoc',
@@ -31,7 +31,6 @@ def crash(str)
31
31
  end
32
32
 
33
33
  dir_config('iconv')
34
- dir_config('xml2')
35
34
  dir_config('zlib')
36
35
 
37
36
  have_library('socket','socket')
@@ -74,21 +73,41 @@ to extconf.rb:
74
73
  EOL
75
74
  end
76
75
 
77
- unless (have_library('xml2', 'xmlParseDoc') or
78
- have_library('libxml2', 'xmlParseDoc') or
79
- find_library('xml2', 'xmlParseDoc', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
80
- (have_header('libxml/xmlversion.h') or
81
- find_header('libxml/xmlversion.h',
82
- "#{CONFIG['prefix']}/include",
83
- "#{CONFIG['prefix']}/include/libxml2",
84
- '/opt/include/libxml2',
85
- '/usr/local/include/libxml2',
86
- '/usr/include/libxml2'))
87
- crash(<<EOL)
76
+ if (xc = with_config('xml2-config')) or RUBY_PLATFORM.match(/darwin/i) then
77
+ xc = 'xml2-config' if xc == true or xc.nil?
78
+ cflags = `#{xc} --cflags`.chomp
79
+ if $? != 0
80
+ cflags = nil
81
+ else
82
+ libs = `#{xc} --libs`.chomp
83
+ if $? != 0
84
+ libs = nil
85
+ else
86
+ $CFLAGS += ' ' + cflags
87
+ $libs = libs + " " + $libs
88
+ end
89
+ end
90
+ else
91
+ dir_config('xml2')
92
+ end
93
+
94
+ unless (cflags and libs) or
95
+ (have_library('xml2', 'xmlParseDoc') or
96
+ have_library('libxml2', 'xmlParseDoc') or
97
+ find_library('xml2', 'xmlParseDoc', '/opt/lib', '/usr/local/lib', '/usr/lib')) and
98
+ (have_header('libxml/xmlversion.h') or
99
+ find_header('libxml/xmlversion.h',
100
+ "#{CONFIG['prefix']}/include",
101
+ "#{CONFIG['prefix']}/include/libxml2",
102
+ '/opt/include/libxml2',
103
+ '/usr/local/include/libxml2',
104
+ '/usr/include/libxml2'))
105
+ crash(<<EOL)
88
106
  need libxml2.
89
107
 
90
108
  Install the library or try one of the following options to extconf.rb:
91
109
 
110
+ --with-xml2-config=/path/to/xml2-config
92
111
  --with-xml2-dir=/path/to/libxml2
93
112
  --with-xml2-lib=/path/to/libxml2/lib
94
113
  --with-xml2-include=/path/to/libxml2/include
@@ -1,878 +1,76 @@
1
- /* $Id: libxml.c 756 2009-01-24 22:56:05Z cfis $ */
2
-
3
- /* Please see the LICENSE file for copyright and distribution information */
4
-
5
1
  #include "ruby_libxml.h"
6
2
 
7
- VALUE mLibXML;
8
- VALUE mXML;
9
-
10
- /*
11
- * call-seq:
12
- * XML.catalog_dump -> true
13
- *
14
- * Dump all the global catalog content stdout.
15
- */
16
- static VALUE rxml_catalog_dump(VALUE self)
17
- {
18
- xmlCatalogDump(stdout);
19
- return (Qtrue);
20
- }
21
-
22
- /*
23
- * call-seq:
24
- * XML.catalog_remove(catalog) -> true
25
- *
26
- * Remove the specified resource catalog.
27
- */
28
- static VALUE rxml_catalog_remove(VALUE self, VALUE cat)
29
- {
30
- Check_Type(cat, T_STRING);
31
- xmlCatalogRemove((xmlChar *) StringValuePtr(cat));
32
- return (Qtrue);
33
- }
34
-
35
- /*
36
- * call-seq:
37
- * XML.check_lib_versions -> true
38
- *
39
- * Check LIBXML version matches version the bindings
40
- * were compiled to. Throws an exception if not.
41
- */
42
- static VALUE rxml_check_lib_versions(VALUE class)
43
- {
44
- xmlCheckVersion(LIBXML_VERSION);
45
- return (Qtrue);
46
- }
47
-
48
- /*
49
- * call-seq:
50
- * XML.enabled_automata? -> (true|false)
51
- *
52
- * Determine whether libxml regexp automata support is enabled.
53
- */
54
- static VALUE rxml_enabled_automata_q(VALUE class)
55
- {
56
- #ifdef LIBXML_AUTOMATA_ENABLED
57
- return(Qtrue);
58
- #else
59
- return (Qfalse);
60
- #endif
61
- }
62
-
63
- /*
64
- * call-seq:
65
- * XML.enabled_c14n? -> (true|false)
66
- *
67
- * Determine whether libxml 'canonical XML' support is enabled.
68
- * See "Canonical XML" (http://www.w3.org/TR/xml-c14n)
69
- */
70
- static VALUE rxml_enabled_c14n_q(VALUE class)
71
- {
72
- #ifdef LIBXML_C14N_ENABLED
73
- return(Qtrue);
74
- #else
75
- return (Qfalse);
76
- #endif
77
- }
78
-
79
- /*
80
- * call-seq:
81
- * XML.enabled_catalog? -> (true|false)
82
- *
83
- * Determine whether libxml resource catalog support is enabled.
84
- */
85
- static VALUE rxml_enabled_catalog_q(VALUE class)
86
- {
87
- #ifdef LIBXML_CATALOG_ENABLED
88
- return(Qtrue);
89
- #else
90
- return (Qfalse);
91
- #endif
92
- }
93
-
94
- /*
95
- * call-seq:
96
- * XML.enabled_debug? -> (true|false)
97
- *
98
- * Determine whether libxml debugging support is enabled.
99
- */
100
- static VALUE rxml_enabled_debug_q(VALUE class)
101
- {
102
- #ifdef LIBXML_DEBUG_ENABLED
103
- return(Qtrue);
104
- #else
105
- return (Qfalse);
106
- #endif
107
- }
108
-
109
- /*
110
- * call-seq:
111
- * XML.enabled_docbook? -> (true|false)
112
- *
113
- * Determine whether libxml docbook support is enabled.
114
- */
115
- static VALUE rxml_enabled_docbook_q(VALUE class)
116
- {
117
- #ifdef LIBXML_DOCB_ENABLED
118
- return(Qtrue);
119
- #else
120
- return (Qfalse);
121
- #endif
122
- }
123
-
124
- /*
125
- * call-seq:
126
- * XML.enabled_ftp? -> (true|false)
127
- *
128
- * Determine whether libxml ftp client support is enabled.
129
- */
130
- static VALUE rxml_enabled_ftp_q(VALUE class)
131
- {
132
- #ifdef LIBXML_FTP_ENABLED
133
- return(Qtrue);
134
- #else
135
- return (Qfalse);
136
- #endif
137
- }
138
-
139
- /*
140
- * call-seq:
141
- * XML.enabled_http? -> (true|false)
142
- *
143
- * Determine whether libxml http client support is enabled.
144
- */
145
- static VALUE rxml_enabled_http_q(VALUE class)
146
- {
147
- #ifdef LIBXML_HTTP_ENABLED
148
- return(Qtrue);
3
+ #if RUBY_INTERN_H
4
+ #include <ruby/util.h>
149
5
  #else
150
- return (Qfalse);
6
+ #include <util.h>
151
7
  #endif
152
- }
153
-
154
- /*
155
- * call-seq:
156
- * XML.enabled_html? -> (true|false)
157
- *
158
- * Determine whether libxml html support is enabled.
159
- */
160
- static VALUE rxml_enabled_html_q(VALUE class)
161
- {
162
- #ifdef LIBXML_HTML_ENABLED
163
- return(Qtrue);
164
- #else
165
- return (Qfalse);
166
- #endif
167
- }
168
8
 
169
- /*
170
- * call-seq:
171
- * XML.enabled_iconv? -> (true|false)
172
- *
173
- * Determine whether libxml iconv support is enabled.
174
- */
175
- static VALUE rxml_enabled_iconv_q(VALUE class)
176
- {
177
- #ifdef LIBXML_ICONV_ENABLED
178
- return(Qtrue);
179
- #else
180
- return (Qfalse);
181
- #endif
182
- }
183
-
184
- /*
185
- * call-seq:
186
- * XML.enabled_memory_debug? -> (true|false)
187
- *
188
- * Determine whether libxml memory location debugging support
189
- * is enabled.
190
- */
191
- static VALUE rxml_enabled_memory_debug_location_q(VALUE class)
192
- {
193
- #ifdef DEBUG_MEMORY_LOCATION
194
- return(Qtrue);
195
- #else
196
- return (Qfalse);
197
- #endif
198
- }
199
-
200
- /*
201
- * call-seq:
202
- * XML.enabled_regexp? -> (true|false)
203
- *
204
- * Determine whether libxml regular expression support is enabled.
205
- */
206
- static VALUE rxml_enabled_regexp_q(VALUE class)
207
- {
208
- #ifdef LIBXML_REGEXP_ENABLED
209
- return(Qtrue);
210
- #else
211
- return (Qfalse);
212
- #endif
213
- }
214
-
215
- /*
216
- * call-seq:
217
- * XML.enabled_schemas? -> (true|false)
218
- *
219
- * Determine whether libxml schema support is enabled.
220
- */
221
- static VALUE rxml_enabled_schemas_q(VALUE class)
222
- {
223
- #ifdef LIBXML_SCHEMAS_ENABLED
224
- return(Qtrue);
225
- #else
226
- return (Qfalse);
227
- #endif
228
- }
229
-
230
- /*
231
- * call-seq:
232
- * XML.enabled_thread? -> (true|false)
233
- *
234
- * Determine whether libxml thread-safe semantics support
235
- * is enabled (I think?).
236
- */
237
- static VALUE rxml_enabled_thread_q(VALUE class)
238
- {
239
- #ifdef LIBXML_THREAD_ENABLED
240
- return(Qtrue);
241
- #else
242
- return (Qfalse);
243
- #endif
244
- }
245
-
246
- /*
247
- * call-seq:
248
- * XML.enabled_unicode? -> (true|false)
249
- *
250
- * Determine whether libxml unicode support is enabled.
251
- */
252
- static VALUE rxml_enabled_unicode_q(VALUE class)
253
- {
254
- #ifdef LIBXML_UNICODE_ENABLED
255
- return(Qtrue);
256
- #else
257
- return (Qfalse);
258
- #endif
259
- }
260
-
261
- /*
262
- * call-seq:
263
- * XML.enabled_xinclude? -> (true|false)
264
- *
265
- * Determine whether libxml xinclude support is enabled.
266
- */
267
- static VALUE rxml_enabled_xinclude_q(VALUE class)
268
- {
269
- #ifdef LIBXML_XINCLUDE_ENABLED
270
- return(Qtrue);
271
- #else
272
- return (Qfalse);
273
- #endif
274
- }
275
-
276
- /*
277
- * call-seq:
278
- * XML.enabled_xpath? -> (true|false)
279
- *
280
- * Determine whether libxml xpath support is enabled.
281
- */
282
- static VALUE rxml_enabled_xpath_q(VALUE class)
283
- {
284
- #ifdef LIBXML_XPATH_ENABLED
285
- return(Qtrue);
286
- #else
287
- return (Qfalse);
288
- #endif
289
- }
290
-
291
- /*
292
- * call-seq:
293
- * XML.enabled_xpointer? -> (true|false)
294
- *
295
- * Determine whether libxml xpointer support is enabled.
296
- */
297
- static VALUE rxml_enabled_xpointer_q(VALUE class)
298
- {
299
- #ifdef LIBXML_XPTR_ENABLED
300
- return(Qtrue);
301
- #else
302
- return (Qfalse);
303
- #endif
304
- }
305
-
306
- /*
307
- * call-seq:
308
- * XML.enabled_zlib? -> (true|false)
309
- *
310
- * Determine whether libxml zlib support is enabled.
311
- */
312
- static VALUE rxml_enabled_zlib_q(VALUE class)
313
- {
314
- #ifdef HAVE_ZLIB_H
315
- return(Qtrue);
316
- #else
317
- return (Qfalse);
318
- #endif
319
- }
320
-
321
- /*
322
- * call-seq:
323
- * XML.debug_entities -> (true|false)
324
- *
325
- * Determine whether included-entity debugging is enabled.
326
- * (Requires Libxml to be compiled with debugging support)
327
- */
328
- static VALUE rxml_debug_entities_get(VALUE class)
329
- {
330
- #ifdef LIBXML_DEBUG_ENABLED
331
- if (xmlParserDebugEntities)
332
- return(Qtrue);
333
- else
334
- return(Qfalse);
335
- #else
336
- rb_warn("libxml was compiled with debugging turned off");
337
- return (Qfalse);
338
- #endif
339
- }
340
-
341
- /*
342
- * call-seq:
343
- * XML.debug_entities = true|false
344
- *
345
- * Enable or disable included-entity debugging.
346
- * (Requires Libxml to be compiled with debugging support)
347
- */
348
- static VALUE rxml_debug_entities_set(VALUE class, VALUE bool)
349
- {
350
- #ifdef LIBXML_DEBUG_ENABLED
351
- if (TYPE(bool) == T_FALSE)
352
- {
353
- xmlParserDebugEntities = 0;
354
- return(Qfalse);
355
- }
356
- else
357
- {
358
- xmlParserDebugEntities = 1;
359
- return(Qtrue);
360
- }
361
- #else
362
- rb_warn("libxml was compiled with debugging turned off");
363
- #endif
364
- }
365
-
366
- /*
367
- * call-seq:
368
- * XML.default_keep_blanks -> (true|false)
369
- *
370
- * Determine whether parsers retain whitespace by default.
371
- */
372
- static VALUE rxml_default_keep_blanks_get(VALUE class)
373
- {
374
- if (xmlKeepBlanksDefaultValue)
375
- return (Qtrue);
376
- else
377
- return (Qfalse);
378
- }
379
-
380
- /*
381
- * call-seq:
382
- * XML.default_keep_blanks = true|false
383
- *
384
- * Controls whether parsers retain whitespace by default.
385
- */
386
- static VALUE rxml_default_keep_blanks_set(VALUE class, VALUE bool)
387
- {
388
- if (TYPE(bool) == T_FALSE)
389
- {
390
- xmlKeepBlanksDefaultValue = 0;
391
- return (Qfalse);
392
- }
393
- else if (TYPE(bool) == T_TRUE)
394
- {
395
- xmlKeepBlanksDefaultValue = 1;
396
- return (Qtrue);
397
- }
398
- else
399
- {
400
- rb_raise(rb_eArgError, "Invalid argument, must be a boolean");
401
- }
402
- }
403
-
404
- /*
405
- * call-seq:
406
- * XML.default_load_external_dtd -> (true|false)
407
- *
408
- * Determine whether parsers load external DTDs by default.
409
- */
410
- static VALUE rxml_default_load_external_dtd_get(VALUE class)
411
- {
412
- if (xmlLoadExtDtdDefaultValue)
413
- return (Qtrue);
414
- else
415
- return (Qfalse);
416
- }
417
-
418
- /*
419
- * call-seq:
420
- * XML.default_load_external_dtd = true|false
421
- *
422
- * Controls whether parsers load external DTDs by default.
423
- */
424
- static VALUE rxml_default_load_external_dtd_set(VALUE class, VALUE bool)
425
- {
426
- if (bool == Qfalse)
427
- {
428
- xmlLoadExtDtdDefaultValue = 0;
429
- return (Qfalse);
430
- }
431
- else
432
- {
433
- xmlLoadExtDtdDefaultValue = 1;
434
- return (Qtrue);
435
- }
436
- }
437
-
438
- /*
439
- * call-seq:
440
- * XML.default_line_numbers -> (true|false)
441
- *
442
- * Determine whether parsers retain line-numbers by default.
443
- */
444
- static VALUE rxml_default_line_numbers_get(VALUE class)
445
- {
446
- if (xmlLineNumbersDefaultValue)
447
- return (Qtrue);
448
- else
449
- return (Qfalse);
450
- }
451
-
452
- /*
453
- * call-seq:
454
- * XML.default_line_numbers = true|false
455
- *
456
- * Controls whether parsers retain line-numbers by default.
457
- */
458
- static VALUE rxml_default_line_numbers_set(VALUE class, VALUE bool)
459
- {
460
- if (TYPE(bool) == T_FALSE)
461
- {
462
- xmlLineNumbersDefault(0);
463
- return (Qfalse);
464
- }
465
- else
466
- {
467
- xmlLineNumbersDefault(1);
468
- return (Qtrue);
469
- }
470
- }
471
-
472
- /*
473
- * call-seq:
474
- * XML.default_pedantic_parser -> (true|false)
475
- *
476
- * Determine whether parsers are pedantic by default.
477
- */
478
- static VALUE rxml_default_pedantic_parser_get(VALUE class)
479
- {
480
- if (xmlPedanticParserDefaultValue)
481
- return (Qtrue);
482
- else
483
- return (Qfalse);
484
- }
485
-
486
- /*
487
- * call-seq:
488
- * XML.default_pedantic_parser = true|false
489
- *
490
- * Controls whether parsers are pedantic by default.
491
- */
492
- static VALUE rxml_default_pedantic_parser_set(VALUE class, VALUE bool)
493
- {
494
- if (TYPE(bool) == T_FALSE)
495
- {
496
- xmlPedanticParserDefault(0);
497
- return (Qfalse);
498
- }
499
- else
500
- {
501
- xmlPedanticParserDefault(1);
502
- return (Qtrue);
503
- }
504
- }
505
-
506
- /*
507
- * call-seq:
508
- * XML.default_substitute_entities -> (true|false)
509
- *
510
- * Determine whether parsers perform inline entity substitution
511
- * (for external entities) by default.
512
- */
513
- static VALUE rxml_default_substitute_entities_get(VALUE class)
514
- {
515
- if (xmlSubstituteEntitiesDefaultValue)
516
- return (Qtrue);
517
- else
518
- return (Qfalse);
519
- }
520
-
521
- /*
522
- * call-seq:
523
- * XML.default_substitute_entities = true|false
524
- *
525
- * Controls whether parsers perform inline entity substitution
526
- * (for external entities) by default.
527
- */
528
- static VALUE rxml_default_substitute_entities_set(VALUE class, VALUE bool)
529
- {
530
- if (bool == Qfalse)
531
- {
532
- xmlSubstituteEntitiesDefault(0);
533
- return (Qfalse);
534
- }
535
- else
536
- {
537
- xmlSubstituteEntitiesDefault(1);
538
- return (Qtrue);
539
- }
540
- }
541
-
542
- /*
543
- * call-seq:
544
- * XML.default_tree_indent_string -> "string"
545
- *
546
- * Obtain the default string used by parsers to indent the XML tree
547
- * for output.
548
- */
549
- static VALUE rxml_default_tree_indent_string_get(VALUE class)
550
- {
551
- if (xmlTreeIndentString == NULL)
552
- return (Qnil);
553
- else
554
- return (rb_str_new2(xmlTreeIndentString));
555
- }
556
-
557
- /*
558
- * call-seq:
559
- * XML.default_tree_indent_string = "string"
560
- *
561
- * Set the default string used by parsers to indent the XML tree
562
- * for output.
563
- */
564
- static VALUE rxml_default_tree_indent_string_set(VALUE class, VALUE string)
565
- {
566
- Check_Type(string, T_STRING);
567
- xmlTreeIndentString = xmlStrdup((xmlChar *)StringValuePtr(string));
568
- return (string);
569
- }
570
-
571
- /*
572
- * call-seq:
573
- * XML.default_validity_checking -> (true|false)
574
- *
575
- * Determine whether parsers perform XML validation by default.
576
- */
577
- static VALUE rxml_default_validity_checking_get(VALUE class)
578
- {
579
- if (xmlDoValidityCheckingDefaultValue)
580
- return (Qtrue);
581
- else
582
- return (Qfalse);
583
- }
584
-
585
- /*
586
- * call-seq:
587
- * XML.default_validity_checking = true|false
588
- *
589
- * Controls whether parsers perform XML validation by default.
590
- */
591
- static VALUE rxml_default_validity_checking_set(VALUE class, VALUE bool)
592
- {
593
- if (TYPE(bool) == T_FALSE)
594
- {
595
- xmlDoValidityCheckingDefaultValue = 0;
596
- return (Qfalse);
597
- }
598
- else
599
- {
600
- xmlDoValidityCheckingDefaultValue = 1;
601
- return (Qtrue);
602
- }
603
- }
604
-
605
- /*
606
- * call-seq:
607
- * XML.default_warnings -> (true|false)
608
- *
609
- * Determine whether parsers output warnings by default.
610
- */
611
- static VALUE rxml_default_warnings_get(VALUE class)
612
- {
613
- if (xmlGetWarningsDefaultValue)
614
- return (Qtrue);
615
- else
616
- return (Qfalse);
617
- }
618
-
619
- /*
620
- * call-seq:
621
- * XML.default_warnings = true|false
622
- *
623
- * Controls whether parsers output warnings by default.
624
- */
625
- static VALUE rxml_default_warnings_set(VALUE class, VALUE bool)
626
- {
627
- if (TYPE(bool) == T_FALSE)
628
- {
629
- xmlGetWarningsDefaultValue = 0;
630
- return (Qfalse);
631
- }
632
- else
633
- {
634
- xmlGetWarningsDefaultValue = 1;
635
- return (Qtrue);
636
- }
637
- }
9
+ VALUE mLibXML;
638
10
 
639
- /*
640
- * call-seq:
641
- * XML.default_compression -> (true|false)
642
- *
643
- * Determine whether parsers use Zlib compression by default
644
- * (requires libxml to be compiled with Zlib support).
645
- */
646
- static VALUE rxml_default_compression_get(VALUE class)
11
+ static void rxml_init_memory(void)
647
12
  {
648
- #ifdef HAVE_ZLIB_H
649
- return(INT2FIX(xmlGetCompressMode()));
650
- #else
651
- rb_warn("libxml was compiled without zlib support");
652
- return (Qfalse);
653
- #endif
13
+ xmlGcMemSetup(
14
+ (xmlFreeFunc)ruby_xfree,
15
+ (xmlMallocFunc)ruby_xmalloc,
16
+ (xmlMallocFunc)ruby_xmalloc,
17
+ (xmlReallocFunc)ruby_xrealloc,
18
+ (xmlStrdupFunc)ruby_strdup
19
+ );
654
20
  }
655
21
 
656
- /*
657
- * call-seq:
658
- * XML.default_compression = true|false
659
- *
660
- * Controls whether parsers use Zlib compression by default
661
- * (requires libxml to be compiled with Zlib support).
662
- */
663
- static VALUE rxml_default_compression_set(VALUE class, VALUE num)
664
- {
665
- #ifdef HAVE_ZLIB_H
666
- Check_Type(num, T_FIXNUM);
667
- xmlSetCompressMode(FIX2INT(num));
668
- return(num);
669
- #else
670
- rb_warn("libxml was compiled without zlib support");
671
- return (Qfalse);
22
+ #if defined(_WIN32)
23
+ __declspec(dllexport)
672
24
  #endif
673
- }
674
-
675
- /*
676
- * call-seq:
677
- * XML.features -> ["feature", ..., "feature"]
678
- *
679
- * Obtains an array of strings representing features supported
680
- * (and enabled) by the installed libxml.
681
- */
682
- static VALUE rxml_features(VALUE class)
25
+ void Init_libxml_ruby(void)
683
26
  {
684
- VALUE arr, str;
685
- int i, len = MAX_LIBXML_FEATURES_LEN;
686
- char **list = NULL;
687
-
688
- list = ALLOC_N(char *,MAX_LIBXML_FEATURES_LEN);
689
- MEMZERO(list, char *, MAX_LIBXML_FEATURES_LEN);
690
-
691
- arr = rb_ary_new();
692
- if (xmlGetFeaturesList(&len, (const char **) list) == -1)
693
- return Qnil;
694
-
695
- for (i = 0; i < len; i++)
696
- {
697
- str = rb_str_new2((const char *) list[i]);
698
- rb_gc_unregister_address(&str);
699
- rb_ary_push(arr, str);
700
- }
701
-
702
- if (len == MAX_LIBXML_FEATURES_LEN)
703
- rb_warn(
704
- "Please contact libxml-devel@rubyforge.org and ask to have the \"MAX_LIBXML_FEATURES_LEN increased\" because you could possibly be seeing an incomplete list");
705
-
706
- ruby_xfree(list);
707
- return (arr);
708
- }
709
-
710
- /*
711
- * call-seq:
712
- * XML.indent_tree_output -> (true|false)
27
+ /* The libxml gem provides Ruby language bindings for GNOME's Libxml2
28
+ * XML toolkit. To get started you may:
713
29
  *
714
- * Determines whether XML output will be indented
715
- * (using the string supplied to +default_indent_tree_string+)
716
- */
717
- static VALUE rxml_indent_tree_output_get(VALUE class)
718
- {
719
- if (xmlIndentTreeOutput)
720
- return (Qtrue);
721
- else
722
- return (Qfalse);
723
- }
724
-
725
- /*
726
- * call-seq:
727
- * XML.indent_tree_output = true|false
30
+ * require 'xml'
31
+ * document = XML::Document.new
728
32
  *
729
- * Controls whether XML output will be indented
730
- * (using the string supplied to +default_indent_tree_string+)
731
- */
732
- static VALUE rxml_indent_tree_output_set(VALUE class, VALUE bool)
733
- {
734
- if (TYPE(bool) == T_TRUE)
735
- {
736
- xmlIndentTreeOutput = 1;
737
- return (Qtrue);
738
- }
739
- else if (TYPE(bool) == T_FALSE)
740
- {
741
- xmlIndentTreeOutput = 0;
742
- return (Qfalse);
743
- }
744
- else
745
- {
746
- rb_raise(rb_eArgError, "Invalid argument, must be boolean");
747
- }
748
- }
749
-
750
- /*
751
- * call-seq:
752
- * XML.memory_dump -> (true|false)
33
+ * However, when creating an application or library you plan to
34
+ * redistribute, it is best to not add the LibXML module to the global
35
+ * namespace, in which case you can either write your code like this:
753
36
  *
754
- * Perform a parser memory dump (requires memory debugging
755
- * support in libxml).
756
- */
757
- static VALUE rxml_memory_dump(VALUE self)
758
- {
759
- #ifdef DEBUG_MEMORY_LOCATION
760
- xmlMemoryDump();
761
- return(Qtrue);
762
- #else
763
- rb_warn("libxml was compiled without memory debugging support");
764
- return (Qfalse);
765
- #endif
766
- }
767
-
768
- /*
769
- * call-seq:
770
- * XML.memory_used -> num_bytes
37
+ * require 'libxml'
38
+ * document = LibXML::XML::Document.new
771
39
  *
772
- * Perform a parser memory dump (requires memory debugging
773
- * support in libxml).
40
+ * Refer to the README file to get started and the LICENSE file for
41
+ * copyright and distribution information.
774
42
  */
775
- static VALUE rxml_memory_used(VALUE self)
776
- {
777
- #ifdef DEBUG_MEMORY_LOCATION
778
- return(INT2NUM(xmlMemUsed()));
779
- #else
780
- rb_warn("libxml was compiled without memory debugging support");
781
- return (Qfalse);
782
- #endif
783
- }
784
-
785
- #if defined(_WIN32)
786
- __declspec(dllexport)
787
- #endif
788
- void Init_libxml_ruby(void)
789
- {
790
43
  mLibXML = rb_define_module("LibXML");
791
- mXML = rb_define_module_under(mLibXML, "XML");
792
-
793
- /* Constants */
794
- rb_define_const(mXML, "LIBXML_VERSION", rb_str_new2(LIBXML_DOTTED_VERSION));
795
- rb_define_const(mXML, "VERSION", rb_str_new2(RUBY_LIBXML_VERSION));
796
- rb_define_const(mXML, "VERNUM", INT2NUM(RUBY_LIBXML_VERNUM));
797
- rb_define_const(mXML, "XML_NAMESPACE", rb_str_new2(
798
- (const char*) XML_XML_NAMESPACE));
799
-
800
- rb_define_module_function(mXML, "enabled_automata?", rxml_enabled_automata_q, 0);
801
- rb_define_module_function(mXML, "enabled_c14n?", rxml_enabled_c14n_q, 0);
802
- rb_define_module_function(mXML, "enabled_catalog?", rxml_enabled_catalog_q, 0);
803
- rb_define_module_function(mXML, "enabled_debug?", rxml_enabled_debug_q, 0);
804
- rb_define_module_function(mXML, "enabled_docbook?", rxml_enabled_docbook_q, 0);
805
- rb_define_module_function(mXML, "enabled_ftp?", rxml_enabled_ftp_q, 0);
806
- rb_define_module_function(mXML, "enabled_http?", rxml_enabled_http_q, 0);
807
- rb_define_module_function(mXML, "enabled_html?", rxml_enabled_html_q, 0);
808
- rb_define_module_function(mXML, "enabled_iconv?", rxml_enabled_iconv_q, 0);
809
- rb_define_module_function(mXML, "enabled_memory_debug?", rxml_enabled_memory_debug_location_q, 0);
810
- rb_define_module_function(mXML, "enabled_regexp?", rxml_enabled_regexp_q, 0);
811
- rb_define_module_function(mXML, "enabled_schemas?", rxml_enabled_schemas_q, 0);
812
- rb_define_module_function(mXML, "enabled_thread?", rxml_enabled_thread_q, 0);
813
- rb_define_module_function(mXML, "enabled_unicode?", rxml_enabled_unicode_q, 0);
814
- rb_define_module_function(mXML, "enabled_xinclude?", rxml_enabled_xinclude_q, 0);
815
- rb_define_module_function(mXML, "enabled_xpath?", rxml_enabled_xpath_q, 0);
816
- rb_define_module_function(mXML, "enabled_xpointer?", rxml_enabled_xpointer_q, 0);
817
- rb_define_module_function(mXML, "enabled_zlib?", rxml_enabled_zlib_q, 0);
818
-
819
- rb_define_module_function(mXML, "catalog_dump", rxml_catalog_dump, 0);
820
- rb_define_module_function(mXML, "catalog_remove", rxml_catalog_remove, 1);
821
- rb_define_module_function(mXML, "check_lib_versions", rxml_check_lib_versions, 0);
822
- rb_define_module_function(mXML, "debug_entities", rxml_debug_entities_get, 0);
823
- rb_define_module_function(mXML, "debug_entities=", rxml_debug_entities_set, 1);
824
- rb_define_module_function(mXML, "default_compression", rxml_default_compression_get, 0);
825
- rb_define_module_function(mXML, "default_compression=", rxml_default_compression_set, 1);
826
- rb_define_module_function(mXML, "default_keep_blanks", rxml_default_keep_blanks_get, 0);
827
- rb_define_module_function(mXML, "default_keep_blanks=", rxml_default_keep_blanks_set, 1);
828
- rb_define_module_function(mXML, "default_load_external_dtd", rxml_default_load_external_dtd_get, 0);
829
- rb_define_module_function(mXML, "default_load_external_dtd=", rxml_default_load_external_dtd_set, 1);
830
- rb_define_module_function(mXML, "default_line_numbers", rxml_default_line_numbers_get, 0);
831
- rb_define_module_function(mXML, "default_line_numbers=", rxml_default_line_numbers_set, 1);
832
- rb_define_module_function(mXML, "default_pedantic_parser", rxml_default_pedantic_parser_get, 0);
833
- rb_define_module_function(mXML, "default_pedantic_parser=", rxml_default_pedantic_parser_set, 1);
834
- rb_define_module_function(mXML, "default_substitute_entities", rxml_default_substitute_entities_get, 0);
835
- rb_define_module_function(mXML, "default_substitute_entities=", rxml_default_substitute_entities_set, 1);
836
- rb_define_module_function(mXML, "default_tree_indent_string", rxml_default_tree_indent_string_get, 0);
837
- rb_define_module_function(mXML, "default_tree_indent_string=", rxml_default_tree_indent_string_set, 1);
838
- rb_define_module_function(mXML, "default_validity_checking", rxml_default_validity_checking_get, 0);
839
- rb_define_module_function(mXML, "default_validity_checking=", rxml_default_validity_checking_set, 1);
840
- rb_define_module_function(mXML, "default_warnings", rxml_default_warnings_get, 0);
841
- rb_define_module_function(mXML, "default_warnings=", rxml_default_warnings_set, 1);
842
- rb_define_module_function(mXML, "features", rxml_features, 0);
843
- rb_define_module_function(mXML, "indent_tree_output", rxml_indent_tree_output_get, 0);
844
- rb_define_module_function(mXML, "indent_tree_output=", rxml_indent_tree_output_set, 1);
845
- rb_define_module_function(mXML, "memory_dump", rxml_memory_dump, 0);
846
- rb_define_module_function(mXML, "memory_used", rxml_memory_used, 0);
847
44
 
848
- /* Now initialize all the other modules */
45
+ rxml_init_memory();
46
+ rxml_init_xml();
849
47
  rxml_init_io();
850
- ruby_init_xml_error();
851
- ruby_init_xml_encoding();
852
- ruby_init_state();
853
- ruby_init_parser();
854
- ruby_init_xml_parser_context();
855
- ruby_init_parser_options();
856
- ruby_init_xml_node();
857
- ruby_init_xml_attributes();
858
- ruby_init_xml_attr();
859
- ruby_init_xml_attr_decl();
860
- ruby_init_xml_document();
861
- ruby_init_xml_namespaces();
862
- ruby_init_xml_namespace();
863
- ruby_init_xml_sax_parser();
864
- ruby_init_xml_sax2_handler();
865
- ruby_init_xml_xinclude();
866
- ruby_init_xml_xpath();
867
- ruby_init_xml_xpath_context();
868
- ruby_init_xml_xpath_expression();
869
- ruby_init_xml_xpointer();
870
- ruby_init_html_parser();
871
- ruby_init_html_parser_options();
872
- ruby_init_html_parser_context();
873
- ruby_init_input_callbacks();
874
- ruby_init_xml_dtd();
875
- ruby_init_xml_schema();
876
- ruby_init_xml_relaxng();
877
- ruby_init_xml_reader();
48
+ rxml_init_error();
49
+ rxml_init_encoding();
50
+ rxml_init_parser();
51
+ rxml_init_parser_context();
52
+ rxml_init_parser_options();
53
+ rxml_init_node();
54
+ rxml_init_attributes();
55
+ rxml_init_attr();
56
+ rxml_init_attr_decl();
57
+ rxml_init_document();
58
+ rxml_init_namespaces();
59
+ rxml_init_namespace();
60
+ rxml_init_sax_parser();
61
+ rxml_init_sax2_handler();
62
+ rxml_init_xinclude();
63
+ rxml_init_xpath();
64
+ rxml_init_xpath_object();
65
+ rxml_init_xpath_context();
66
+ rxml_init_xpath_expression();
67
+ rxml_init_xpointer();
68
+ rxml_init_html_parser();
69
+ rxml_init_html_parser_options();
70
+ rxml_init_html_parser_context();
71
+ rxml_init_input_callbacks();
72
+ rxml_init_dtd();
73
+ rxml_init_schema();
74
+ rxml_init_relaxng();
75
+ rxml_init_reader();
878
76
  }