libxml-ruby 2.8.0 → 3.2.3
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.
- checksums.yaml +5 -5
- data/HISTORY +859 -775
- data/LICENSE +20 -20
- data/MANIFEST +166 -166
- data/README.rdoc +217 -184
- data/Rakefile +98 -78
- data/ext/libxml/extconf.rb +61 -116
- data/ext/libxml/libxml.c +80 -76
- data/ext/libxml/ruby_libxml.h +67 -75
- data/ext/libxml/ruby_xml.c +937 -893
- data/ext/libxml/ruby_xml.h +10 -10
- data/ext/libxml/ruby_xml_attr.c +333 -333
- data/ext/libxml/ruby_xml_attr.h +12 -12
- data/ext/libxml/ruby_xml_attr_decl.c +153 -153
- data/ext/libxml/ruby_xml_attr_decl.h +11 -11
- data/ext/libxml/ruby_xml_attributes.c +275 -275
- data/ext/libxml/ruby_xml_attributes.h +15 -15
- data/ext/libxml/ruby_xml_cbg.c +85 -85
- data/ext/libxml/ruby_xml_document.c +1123 -1147
- data/ext/libxml/ruby_xml_document.h +11 -11
- data/ext/libxml/ruby_xml_dtd.c +248 -268
- data/ext/libxml/ruby_xml_dtd.h +9 -9
- data/ext/libxml/ruby_xml_encoding.c +250 -260
- data/ext/libxml/ruby_xml_encoding.h +16 -19
- data/ext/libxml/ruby_xml_error.c +996 -996
- data/ext/libxml/ruby_xml_error.h +12 -12
- data/ext/libxml/ruby_xml_html_parser.c +89 -92
- data/ext/libxml/ruby_xml_html_parser.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_context.c +337 -338
- data/ext/libxml/ruby_xml_html_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_html_parser_options.c +46 -46
- data/ext/libxml/ruby_xml_html_parser_options.h +10 -10
- data/ext/libxml/ruby_xml_input_cbg.c +191 -191
- data/ext/libxml/ruby_xml_input_cbg.h +20 -20
- data/ext/libxml/ruby_xml_io.c +47 -50
- data/ext/libxml/ruby_xml_io.h +10 -10
- data/ext/libxml/ruby_xml_namespace.c +154 -153
- data/ext/libxml/ruby_xml_namespace.h +10 -10
- data/ext/libxml/ruby_xml_namespaces.c +293 -293
- data/ext/libxml/ruby_xml_namespaces.h +9 -9
- data/ext/libxml/ruby_xml_node.c +1406 -1452
- data/ext/libxml/ruby_xml_node.h +13 -11
- data/ext/libxml/ruby_xml_parser.c +91 -94
- data/ext/libxml/ruby_xml_parser.h +12 -12
- data/ext/libxml/ruby_xml_parser_context.c +999 -1001
- data/ext/libxml/ruby_xml_parser_context.h +10 -10
- data/ext/libxml/ruby_xml_parser_options.c +66 -66
- data/ext/libxml/ruby_xml_parser_options.h +12 -12
- data/ext/libxml/ruby_xml_reader.c +1239 -1228
- data/ext/libxml/ruby_xml_reader.h +17 -17
- data/ext/libxml/ruby_xml_relaxng.c +110 -111
- data/ext/libxml/ruby_xml_relaxng.h +10 -10
- data/ext/libxml/ruby_xml_sax2_handler.c +326 -328
- data/ext/libxml/ruby_xml_sax2_handler.h +10 -10
- data/ext/libxml/ruby_xml_sax_parser.c +116 -120
- data/ext/libxml/ruby_xml_sax_parser.h +10 -10
- data/ext/libxml/ruby_xml_schema.c +350 -301
- data/ext/libxml/ruby_xml_schema.h +806 -809
- data/ext/libxml/ruby_xml_schema_attribute.c +61 -109
- data/ext/libxml/ruby_xml_schema_attribute.h +15 -15
- data/ext/libxml/ruby_xml_schema_element.c +69 -94
- data/ext/libxml/ruby_xml_schema_element.h +14 -14
- data/ext/libxml/ruby_xml_schema_facet.c +46 -52
- data/ext/libxml/ruby_xml_schema_facet.h +13 -13
- data/ext/libxml/ruby_xml_schema_type.c +214 -259
- data/ext/libxml/ruby_xml_schema_type.h +9 -9
- data/ext/libxml/ruby_xml_version.h +9 -9
- data/ext/libxml/ruby_xml_writer.c +1133 -1137
- data/ext/libxml/ruby_xml_writer.h +10 -10
- data/ext/libxml/ruby_xml_xinclude.c +16 -16
- data/ext/libxml/ruby_xml_xinclude.h +11 -11
- data/ext/libxml/ruby_xml_xpath.c +194 -188
- data/ext/libxml/ruby_xml_xpath.h +13 -13
- data/ext/libxml/ruby_xml_xpath_context.c +360 -361
- data/ext/libxml/ruby_xml_xpath_context.h +9 -9
- data/ext/libxml/ruby_xml_xpath_expression.c +81 -81
- data/ext/libxml/ruby_xml_xpath_expression.h +10 -10
- data/ext/libxml/ruby_xml_xpath_object.c +338 -335
- data/ext/libxml/ruby_xml_xpath_object.h +17 -17
- data/ext/libxml/ruby_xml_xpointer.c +99 -99
- data/ext/libxml/ruby_xml_xpointer.h +11 -11
- data/ext/vc/libxml_ruby.sln +17 -15
- data/lib/libxml/node.rb +2 -78
- data/lib/libxml/parser.rb +0 -266
- data/lib/libxml/sax_parser.rb +0 -17
- data/lib/libxml/schema/attribute.rb +19 -19
- data/lib/libxml/schema/element.rb +19 -27
- data/lib/libxml/schema/type.rb +21 -29
- data/lib/libxml/schema.rb +47 -66
- data/lib/libxml-ruby.rb +30 -0
- data/lib/libxml.rb +3 -33
- data/libxml-ruby.gemspec +48 -44
- data/script/benchmark/depixelate +634 -634
- data/script/benchmark/hamlet.xml +9054 -9054
- data/script/benchmark/parsecount +170 -170
- data/script/benchmark/throughput +41 -41
- data/script/test +6 -6
- data/setup.rb +0 -1
- data/test/c14n/given/example-1.xml +14 -14
- data/test/c14n/given/example-2.xml +11 -11
- data/test/c14n/given/example-3.xml +18 -18
- data/test/c14n/given/example-4.xml +9 -9
- data/test/c14n/given/example-5.xml +12 -12
- data/test/c14n/given/example-6.xml +2 -2
- data/test/c14n/given/example-7.xml +11 -11
- data/test/c14n/given/example-8.xml +11 -11
- data/test/c14n/given/example-8.xpath +9 -9
- data/test/c14n/result/1-1-without-comments/example-1 +3 -3
- data/test/c14n/result/1-1-without-comments/example-2 +10 -10
- data/test/c14n/result/1-1-without-comments/example-3 +13 -13
- data/test/c14n/result/1-1-without-comments/example-4 +8 -8
- data/test/c14n/result/1-1-without-comments/example-5 +2 -2
- data/test/c14n/result/with-comments/example-1 +5 -5
- data/test/c14n/result/with-comments/example-2 +10 -10
- data/test/c14n/result/with-comments/example-3 +13 -13
- data/test/c14n/result/with-comments/example-4 +8 -8
- data/test/c14n/result/with-comments/example-5 +3 -3
- data/test/c14n/result/without-comments/example-1 +3 -3
- data/test/c14n/result/without-comments/example-2 +10 -10
- data/test/c14n/result/without-comments/example-3 +13 -13
- data/test/c14n/result/without-comments/example-4 +8 -8
- data/test/c14n/result/without-comments/example-5 +2 -2
- data/test/model/atom.xml +12 -12
- data/test/model/bands.iso-8859-1.xml +4 -4
- data/test/model/bands.utf-8.xml +4 -4
- data/test/model/bands.xml +4 -4
- data/test/model/books.xml +153 -153
- data/test/model/cwm_1_0.xml +11336 -0
- data/test/model/merge_bug_data.xml +58 -58
- data/test/model/ruby-lang.html +238 -238
- data/test/model/rubynet.xml +79 -79
- data/test/model/shiporder.rnc +28 -28
- data/test/model/shiporder.rng +86 -86
- data/test/model/shiporder.xml +22 -22
- data/test/model/shiporder.xsd +44 -40
- data/test/model/shiporder_bad.xsd +40 -0
- data/test/model/shiporder_import.xsd +45 -0
- data/test/model/soap.xml +27 -27
- data/test/model/xinclude.xml +4 -4
- data/test/{tc_attr.rb → test_attr.rb} +23 -25
- data/test/{tc_attr_decl.rb → test_attr_decl.rb} +13 -14
- data/test/{tc_attributes.rb → test_attributes.rb} +11 -18
- data/test/{tc_canonicalize.rb → test_canonicalize.rb} +36 -41
- data/test/test_deprecated_require.rb +12 -0
- data/test/{tc_document.rb → test_document.rb} +33 -27
- data/test/test_document_write.rb +146 -0
- data/test/{tc_dtd.rb → test_dtd.rb} +29 -29
- data/test/{tc_encoding.rb → test_encoding.rb} +129 -126
- data/test/{tc_encoding_sax.rb → test_encoding_sax.rb} +7 -6
- data/test/test_error.rb +178 -0
- data/test/test_helper.rb +4 -9
- data/test/test_html_parser.rb +162 -0
- data/test/test_html_parser_context.rb +23 -0
- data/test/test_namespace.rb +60 -0
- data/test/{tc_namespaces.rb → test_namespaces.rb} +34 -44
- data/test/{tc_node.rb → test_node.rb} +68 -47
- data/test/{tc_node_cdata.rb → test_node_cdata.rb} +12 -13
- data/test/{tc_node_comment.rb → test_node_comment.rb} +7 -8
- data/test/{tc_node_copy.rb → test_node_copy.rb} +4 -6
- data/test/{tc_node_edit.rb → test_node_edit.rb} +23 -41
- data/test/{tc_node_pi.rb → test_node_pi.rb} +37 -40
- data/test/{tc_node_text.rb → test_node_text.rb} +10 -12
- data/test/{tc_node_write.rb → test_node_write.rb} +18 -29
- data/test/test_node_xlink.rb +28 -0
- data/test/test_parser.rb +324 -0
- data/test/{tc_parser_context.rb → test_parser_context.rb} +42 -49
- data/test/{tc_properties.rb → test_properties.rb} +6 -7
- data/test/test_reader.rb +364 -0
- data/test/test_relaxng.rb +53 -0
- data/test/{tc_sax_parser.rb → test_sax_parser.rb} +44 -38
- data/test/test_schema.rb +231 -0
- data/test/test_suite.rb +38 -40
- data/test/{tc_traversal.rb → test_traversal.rb} +5 -6
- data/test/{tc_writer.rb → test_writer.rb} +468 -448
- data/test/{tc_xinclude.rb → test_xinclude.rb} +4 -5
- data/test/test_xml.rb +263 -0
- data/test/{tc_xpath.rb → test_xpath.rb} +31 -32
- data/test/{tc_xpath_context.rb → test_xpath_context.rb} +8 -9
- data/test/test_xpath_expression.rb +37 -0
- data/test/{tc_xpointer.rb → test_xpointer.rb} +16 -18
- metadata +122 -100
- data/lib/libxml/ns.rb +0 -22
- data/lib/libxml/properties.rb +0 -23
- data/lib/libxml/reader.rb +0 -29
- data/lib/libxml/xpath_object.rb +0 -16
- data/test/etc_doc_to_s.rb +0 -21
- data/test/ets_doc_file.rb +0 -17
- data/test/ets_doc_to_s.rb +0 -23
- data/test/ets_gpx.rb +0 -28
- data/test/ets_node_gc.rb +0 -23
- data/test/ets_test.xml +0 -2
- data/test/ets_tsr.rb +0 -11
- data/test/tc_deprecated_require.rb +0 -13
- data/test/tc_document_write.rb +0 -196
- data/test/tc_error.rb +0 -180
- data/test/tc_html_parser.rb +0 -153
- data/test/tc_html_parser_context.rb +0 -24
- data/test/tc_namespace.rb +0 -62
- data/test/tc_node_xlink.rb +0 -29
- data/test/tc_parser.rb +0 -381
- data/test/tc_reader.rb +0 -400
- data/test/tc_relaxng.rb +0 -54
- data/test/tc_schema.rb +0 -162
- data/test/tc_xml.rb +0 -226
- data/test/tc_xpath_expression.rb +0 -38
|
@@ -1,259 +1,214 @@
|
|
|
1
|
-
#include "ruby_libxml.h"
|
|
2
|
-
#include "ruby_xml_schema_type.h"
|
|
3
|
-
#include "ruby_xml_schema_element.h"
|
|
4
|
-
#include "ruby_xml_schema_attribute.h"
|
|
5
|
-
#include "ruby_xml_schema_facet.h"
|
|
6
|
-
|
|
7
|
-
#define UNBOUNDED 1 << 30
|
|
8
|
-
#define FREE_AND_NULL(str) if ((str) != NULL) { xmlFree((xmlChar *) (str)); str = NULL; }
|
|
9
|
-
|
|
10
|
-
VALUE cXMLSchemaType;
|
|
11
|
-
|
|
12
|
-
static void rxml_schema_type_free(xmlSchemaTypePtr xschema_type)
|
|
13
|
-
{
|
|
14
|
-
xschema_type = NULL;
|
|
15
|
-
xmlFree(xschema_type);
|
|
16
|
-
}
|
|
17
|
-
|
|
18
|
-
VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype)
|
|
19
|
-
{
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
|
|
56
|
-
|
|
57
|
-
|
|
58
|
-
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
|
|
62
|
-
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
78
|
-
|
|
79
|
-
|
|
80
|
-
|
|
81
|
-
|
|
82
|
-
|
|
83
|
-
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
87
|
-
}
|
|
88
|
-
|
|
89
|
-
|
|
90
|
-
|
|
91
|
-
|
|
92
|
-
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
|
|
110
|
-
|
|
111
|
-
|
|
112
|
-
|
|
113
|
-
|
|
114
|
-
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
122
|
-
|
|
123
|
-
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
127
|
-
|
|
128
|
-
|
|
129
|
-
|
|
130
|
-
|
|
131
|
-
|
|
132
|
-
|
|
133
|
-
|
|
134
|
-
|
|
135
|
-
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
|
|
145
|
-
|
|
146
|
-
|
|
147
|
-
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
|
|
151
|
-
|
|
152
|
-
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
|
|
156
|
-
|
|
157
|
-
|
|
158
|
-
|
|
159
|
-
|
|
160
|
-
|
|
161
|
-
|
|
162
|
-
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
172
|
-
|
|
173
|
-
|
|
174
|
-
|
|
175
|
-
|
|
176
|
-
|
|
177
|
-
|
|
178
|
-
|
|
179
|
-
|
|
180
|
-
|
|
181
|
-
|
|
182
|
-
|
|
183
|
-
|
|
184
|
-
|
|
185
|
-
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
191
|
-
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
{
|
|
195
|
-
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
|
|
200
|
-
|
|
201
|
-
|
|
202
|
-
|
|
203
|
-
|
|
204
|
-
|
|
205
|
-
|
|
206
|
-
|
|
207
|
-
|
|
208
|
-
|
|
209
|
-
|
|
210
|
-
|
|
211
|
-
|
|
212
|
-
|
|
213
|
-
|
|
214
|
-
|
|
215
|
-
xmlSchemaItemListPtr uses;
|
|
216
|
-
int i;
|
|
217
|
-
|
|
218
|
-
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
219
|
-
|
|
220
|
-
if (rb_iv_get(self, "@attributes") == Qnil) {
|
|
221
|
-
attributes = rb_ary_new();
|
|
222
|
-
rb_iv_set(self, "@attributes", attributes);
|
|
223
|
-
|
|
224
|
-
uses = xtype->attrUses;
|
|
225
|
-
|
|
226
|
-
if ((uses == NULL) || (uses->nbItems == 0))
|
|
227
|
-
return rb_iv_get(self, "@attributes");
|
|
228
|
-
|
|
229
|
-
for (i = 0; i < uses->nbItems; i++) {
|
|
230
|
-
use = (xmlSchemaAttributeUsePtr) uses->items[i];
|
|
231
|
-
rb_ary_push(attributes, rxml_wrap_schema_attribute(use));
|
|
232
|
-
}
|
|
233
|
-
}
|
|
234
|
-
|
|
235
|
-
return rb_iv_get(self, "@attributes");
|
|
236
|
-
}
|
|
237
|
-
|
|
238
|
-
|
|
239
|
-
void rxml_init_schema_type(void)
|
|
240
|
-
{
|
|
241
|
-
/* Add in infinity support for ruby 1.8.7 */
|
|
242
|
-
#if !defined(RUBY_VM) && defined(INFINITY)
|
|
243
|
-
ID infinityId = rb_intern("INFINITY");
|
|
244
|
-
if (rb_const_defined(rb_cFloat, infinityId) == Qfalse)
|
|
245
|
-
rb_define_const(rb_cFloat, "INFINITY", rb_float_new(INFINITY));
|
|
246
|
-
#endif
|
|
247
|
-
|
|
248
|
-
cXMLSchemaType = rb_define_class_under(cXMLSchema, "Type", rb_cObject);
|
|
249
|
-
|
|
250
|
-
rb_define_method(cXMLSchemaType, "namespace", rxml_schema_type_namespace, 0);
|
|
251
|
-
rb_define_method(cXMLSchemaType, "name", rxml_schema_type_name, 0);
|
|
252
|
-
rb_define_method(cXMLSchemaType, "elements", rxml_schema_type_elements, 0);
|
|
253
|
-
rb_define_method(cXMLSchemaType, "attributes", rxml_schema_type_attributes, 0);
|
|
254
|
-
rb_define_method(cXMLSchemaType, "base", rxml_schema_type_base, 0);
|
|
255
|
-
rb_define_method(cXMLSchemaType, "kind", rxml_schema_type_kind, 0);
|
|
256
|
-
rb_define_method(cXMLSchemaType, "node", rxml_schema_type_node, 0);
|
|
257
|
-
rb_define_method(cXMLSchemaType, "facets", rxml_schema_type_facets, 0);
|
|
258
|
-
rb_define_method(cXMLSchemaType, "annotation", rxml_schema_type_annot, 0);
|
|
259
|
-
}
|
|
1
|
+
#include "ruby_libxml.h"
|
|
2
|
+
#include "ruby_xml_schema_type.h"
|
|
3
|
+
#include "ruby_xml_schema_element.h"
|
|
4
|
+
#include "ruby_xml_schema_attribute.h"
|
|
5
|
+
#include "ruby_xml_schema_facet.h"
|
|
6
|
+
|
|
7
|
+
#define UNBOUNDED 1 << 30
|
|
8
|
+
#define FREE_AND_NULL(str) if ((str) != NULL) { xmlFree((xmlChar *) (str)); str = NULL; }
|
|
9
|
+
|
|
10
|
+
VALUE cXMLSchemaType;
|
|
11
|
+
|
|
12
|
+
static void rxml_schema_type_free(xmlSchemaTypePtr xschema_type)
|
|
13
|
+
{
|
|
14
|
+
xschema_type = NULL;
|
|
15
|
+
xmlFree(xschema_type);
|
|
16
|
+
}
|
|
17
|
+
|
|
18
|
+
VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype)
|
|
19
|
+
{
|
|
20
|
+
VALUE result;
|
|
21
|
+
|
|
22
|
+
if (!xtype)
|
|
23
|
+
rb_raise(rb_eArgError, "XML::Schema::Type required!");
|
|
24
|
+
|
|
25
|
+
result = Data_Wrap_Struct(cXMLSchemaType, NULL, rxml_schema_type_free, xtype);
|
|
26
|
+
|
|
27
|
+
rb_iv_set(result, "@name", QNIL_OR_STRING(xtype->name));
|
|
28
|
+
rb_iv_set(result, "@namespace", QNIL_OR_STRING(xtype->targetNamespace));
|
|
29
|
+
rb_iv_set(result, "@kind", INT2NUM(xtype->type));
|
|
30
|
+
|
|
31
|
+
return result;
|
|
32
|
+
}
|
|
33
|
+
|
|
34
|
+
static VALUE rxml_schema_type_base(VALUE self)
|
|
35
|
+
{
|
|
36
|
+
xmlSchemaTypePtr xtype;
|
|
37
|
+
|
|
38
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
39
|
+
|
|
40
|
+
return (xtype->baseType != xtype) ? rxml_wrap_schema_type(xtype->baseType) : Qnil;
|
|
41
|
+
}
|
|
42
|
+
|
|
43
|
+
static VALUE rxml_schema_type_node(VALUE self)
|
|
44
|
+
{
|
|
45
|
+
xmlSchemaTypePtr xtype;
|
|
46
|
+
|
|
47
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
48
|
+
|
|
49
|
+
return (xtype->node != NULL) ? rxml_node_wrap(xtype->node) : Qnil;
|
|
50
|
+
}
|
|
51
|
+
|
|
52
|
+
static VALUE rxml_schema_type_facets(VALUE self)
|
|
53
|
+
{
|
|
54
|
+
xmlSchemaTypePtr xtype;
|
|
55
|
+
xmlSchemaFacetPtr xfacet;
|
|
56
|
+
VALUE result = rb_ary_new();
|
|
57
|
+
VALUE facet;
|
|
58
|
+
|
|
59
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
60
|
+
|
|
61
|
+
xfacet = xtype->facets;
|
|
62
|
+
|
|
63
|
+
while (xfacet != NULL)
|
|
64
|
+
{
|
|
65
|
+
facet = rxml_wrap_schema_facet((xmlSchemaFacetPtr)xfacet);
|
|
66
|
+
rb_ary_push(result, facet);
|
|
67
|
+
xfacet = xfacet->next;
|
|
68
|
+
}
|
|
69
|
+
|
|
70
|
+
return result;
|
|
71
|
+
}
|
|
72
|
+
|
|
73
|
+
static VALUE rxml_schema_type_annot(VALUE self)
|
|
74
|
+
{
|
|
75
|
+
VALUE result = Qnil;
|
|
76
|
+
xmlSchemaTypePtr xtype;
|
|
77
|
+
|
|
78
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
79
|
+
|
|
80
|
+
if(xtype != NULL && xtype->annot != NULL && xtype->annot->content != NULL)
|
|
81
|
+
{
|
|
82
|
+
xmlChar *content = xmlNodeGetContent(xtype->annot->content);
|
|
83
|
+
if (content)
|
|
84
|
+
{
|
|
85
|
+
result = rxml_new_cstr(content, NULL);
|
|
86
|
+
xmlFree(content);
|
|
87
|
+
}
|
|
88
|
+
}
|
|
89
|
+
return result;
|
|
90
|
+
}
|
|
91
|
+
|
|
92
|
+
static void rxmlSchemaCollectElements(xmlSchemaParticlePtr xparticle, VALUE hash)
|
|
93
|
+
{
|
|
94
|
+
VALUE element;
|
|
95
|
+
xmlSchemaTreeItemPtr xterm;
|
|
96
|
+
|
|
97
|
+
if (xparticle == NULL)
|
|
98
|
+
return;
|
|
99
|
+
|
|
100
|
+
xterm = xparticle->children;
|
|
101
|
+
|
|
102
|
+
if (xterm != NULL)
|
|
103
|
+
{
|
|
104
|
+
switch (xterm->type)
|
|
105
|
+
{
|
|
106
|
+
case XML_SCHEMA_TYPE_ELEMENT:
|
|
107
|
+
element = rxml_wrap_schema_element((xmlSchemaElementPtr)xterm);
|
|
108
|
+
rb_iv_set(element, "@min", INT2NUM(xparticle->minOccurs));
|
|
109
|
+
|
|
110
|
+
if (xparticle->maxOccurs >= UNBOUNDED)
|
|
111
|
+
rb_iv_set(element, "@max", rb_const_get(rb_path2class("Float"), rb_intern("INFINITY")));
|
|
112
|
+
else
|
|
113
|
+
rb_iv_set(element, "@max", INT2NUM(xparticle->maxOccurs));
|
|
114
|
+
|
|
115
|
+
if (xparticle->annot != NULL)
|
|
116
|
+
{
|
|
117
|
+
xmlChar *content = xmlNodeGetContent(xparticle->annot->content);
|
|
118
|
+
|
|
119
|
+
if (content != NULL)
|
|
120
|
+
{
|
|
121
|
+
rb_iv_set(element, "@annotation", rb_str_new2((const char *) content));
|
|
122
|
+
xmlFree(content);
|
|
123
|
+
}
|
|
124
|
+
}
|
|
125
|
+
|
|
126
|
+
rb_hash_aset(hash, rb_str_new2((const char *) ((xmlSchemaElementPtr)xterm)->name), element);
|
|
127
|
+
break;
|
|
128
|
+
|
|
129
|
+
case XML_SCHEMA_TYPE_SEQUENCE:
|
|
130
|
+
break;
|
|
131
|
+
|
|
132
|
+
case XML_SCHEMA_TYPE_CHOICE:
|
|
133
|
+
break;
|
|
134
|
+
|
|
135
|
+
case XML_SCHEMA_TYPE_ALL:
|
|
136
|
+
break;
|
|
137
|
+
|
|
138
|
+
case XML_SCHEMA_TYPE_ANY:
|
|
139
|
+
break;
|
|
140
|
+
|
|
141
|
+
default:
|
|
142
|
+
return;
|
|
143
|
+
}
|
|
144
|
+
}
|
|
145
|
+
|
|
146
|
+
if (xterm &&
|
|
147
|
+
((xterm->type == XML_SCHEMA_TYPE_SEQUENCE) || (xterm->type == XML_SCHEMA_TYPE_CHOICE) || (xterm->type == XML_SCHEMA_TYPE_ALL)) &&
|
|
148
|
+
(xterm->children != NULL))
|
|
149
|
+
{
|
|
150
|
+
rxmlSchemaCollectElements((xmlSchemaParticlePtr)xterm->children, hash);
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
if (xparticle->next != NULL)
|
|
154
|
+
{
|
|
155
|
+
rxmlSchemaCollectElements((xmlSchemaParticlePtr)xparticle->next, hash);
|
|
156
|
+
}
|
|
157
|
+
}
|
|
158
|
+
|
|
159
|
+
static VALUE rxml_schema_type_elements(VALUE self)
|
|
160
|
+
{
|
|
161
|
+
VALUE result = rb_hash_new();
|
|
162
|
+
xmlSchemaTypePtr xtype;
|
|
163
|
+
|
|
164
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
165
|
+
rxmlSchemaCollectElements((xmlSchemaParticlePtr) xtype->subtypes, result);
|
|
166
|
+
|
|
167
|
+
return result;
|
|
168
|
+
}
|
|
169
|
+
|
|
170
|
+
static VALUE rxml_schema_type_attributes(VALUE self)
|
|
171
|
+
{
|
|
172
|
+
VALUE result = rb_ary_new();
|
|
173
|
+
xmlSchemaTypePtr xtype;
|
|
174
|
+
xmlSchemaAttributeUsePtr xuse;
|
|
175
|
+
xmlSchemaItemListPtr xuses;
|
|
176
|
+
int i;
|
|
177
|
+
|
|
178
|
+
Data_Get_Struct(self, xmlSchemaType, xtype);
|
|
179
|
+
xuses = xtype->attrUses;
|
|
180
|
+
|
|
181
|
+
if (xuses != NULL)
|
|
182
|
+
{
|
|
183
|
+
for (i = 0; i < xuses->nbItems; i++)
|
|
184
|
+
{
|
|
185
|
+
xuse = (xmlSchemaAttributeUsePtr)xuses->items[i];
|
|
186
|
+
rb_ary_push(result, rxml_wrap_schema_attribute(xuse));
|
|
187
|
+
}
|
|
188
|
+
}
|
|
189
|
+
|
|
190
|
+
return result;
|
|
191
|
+
}
|
|
192
|
+
|
|
193
|
+
void rxml_init_schema_type(void)
|
|
194
|
+
{
|
|
195
|
+
/* Add in infinity support for ruby 1.8.7 */
|
|
196
|
+
#if !defined(RUBY_VM) && defined(INFINITY)
|
|
197
|
+
ID infinityId = rb_intern("INFINITY");
|
|
198
|
+
if (rb_const_defined(rb_cFloat, infinityId) == Qfalse)
|
|
199
|
+
rb_define_const(rb_cFloat, "INFINITY", rb_float_new(INFINITY));
|
|
200
|
+
#endif
|
|
201
|
+
|
|
202
|
+
cXMLSchemaType = rb_define_class_under(cXMLSchema, "Type", rb_cObject);
|
|
203
|
+
|
|
204
|
+
rb_define_attr(cXMLSchemaType, "namespace", 1, 0);
|
|
205
|
+
rb_define_attr(cXMLSchemaType, "name", 1, 0);
|
|
206
|
+
rb_define_attr(cXMLSchemaType, "kind", 1, 0);
|
|
207
|
+
|
|
208
|
+
rb_define_method(cXMLSchemaType, "base", rxml_schema_type_base, 0);
|
|
209
|
+
rb_define_method(cXMLSchemaType, "node", rxml_schema_type_node, 0);
|
|
210
|
+
rb_define_method(cXMLSchemaType, "elements", rxml_schema_type_elements, 0);
|
|
211
|
+
rb_define_method(cXMLSchemaType, "attributes", rxml_schema_type_attributes, 0);
|
|
212
|
+
rb_define_method(cXMLSchemaType, "facets", rxml_schema_type_facets, 0);
|
|
213
|
+
rb_define_method(cXMLSchemaType, "annotation", rxml_schema_type_annot, 0);
|
|
214
|
+
}
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
#ifndef __RXML_SCHEMA_TYPE__
|
|
2
|
-
#define __RXML_SCHEMA_TYPE__
|
|
3
|
-
|
|
4
|
-
extern VALUE cXMLSchemaType;
|
|
5
|
-
|
|
6
|
-
VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype);
|
|
7
|
-
void rxml_init_schema_type(void);
|
|
8
|
-
|
|
9
|
-
#endif
|
|
1
|
+
#ifndef __RXML_SCHEMA_TYPE__
|
|
2
|
+
#define __RXML_SCHEMA_TYPE__
|
|
3
|
+
|
|
4
|
+
extern VALUE cXMLSchemaType;
|
|
5
|
+
|
|
6
|
+
VALUE rxml_wrap_schema_type(xmlSchemaTypePtr xtype);
|
|
7
|
+
void rxml_init_schema_type(void);
|
|
8
|
+
|
|
9
|
+
#endif
|
|
@@ -1,9 +1,9 @@
|
|
|
1
|
-
/* Don't nuke this block! It is used for automatically updating the
|
|
2
|
-
* versions below. VERSION = string formatting, VERNUM = numbered
|
|
3
|
-
* version for inline testing: increment both or none at all.*/
|
|
4
|
-
#define RUBY_LIBXML_VERSION "2.
|
|
5
|
-
#define RUBY_LIBXML_VERNUM
|
|
6
|
-
#define RUBY_LIBXML_VER_MAJ
|
|
7
|
-
#define RUBY_LIBXML_VER_MIN
|
|
8
|
-
#define RUBY_LIBXML_VER_MIC
|
|
9
|
-
#define RUBY_LIBXML_VER_PATCH 0
|
|
1
|
+
/* Don't nuke this block! It is used for automatically updating the
|
|
2
|
+
* versions below. VERSION = string formatting, VERNUM = numbered
|
|
3
|
+
* version for inline testing: increment both or none at all.*/
|
|
4
|
+
#define RUBY_LIBXML_VERSION "3.2.3"
|
|
5
|
+
#define RUBY_LIBXML_VERNUM 323
|
|
6
|
+
#define RUBY_LIBXML_VER_MAJ 3
|
|
7
|
+
#define RUBY_LIBXML_VER_MIN 2
|
|
8
|
+
#define RUBY_LIBXML_VER_MIC 3
|
|
9
|
+
#define RUBY_LIBXML_VER_PATCH 0
|