xmlparser 0.6.81

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 (52) hide show
  1. data/MANIFEST +112 -0
  2. data/README +697 -0
  3. data/README.ja +789 -0
  4. data/Rakefile +34 -0
  5. data/ext/encoding.h +91 -0
  6. data/ext/xmlparser/mkrf_conf.rb +28 -0
  7. data/ext/xmlparser/xmlparser.c +2226 -0
  8. data/lib/sax.rb +1 -0
  9. data/lib/saxdriver.rb +1 -0
  10. data/lib/wget.rb +47 -0
  11. data/lib/xml/dom/builder-ja.rb +58 -0
  12. data/lib/xml/dom/builder.rb +310 -0
  13. data/lib/xml/dom/core.rb +3276 -0
  14. data/lib/xml/dom/digest.rb +94 -0
  15. data/lib/xml/dom/visitor.rb +182 -0
  16. data/lib/xml/dom2/attr.rb +213 -0
  17. data/lib/xml/dom2/cdatasection.rb +76 -0
  18. data/lib/xml/dom2/characterdata.rb +177 -0
  19. data/lib/xml/dom2/comment.rb +81 -0
  20. data/lib/xml/dom2/core.rb +19 -0
  21. data/lib/xml/dom2/document.rb +317 -0
  22. data/lib/xml/dom2/documentfragment.rb +82 -0
  23. data/lib/xml/dom2/documenttype.rb +102 -0
  24. data/lib/xml/dom2/dombuilder.rb +277 -0
  25. data/lib/xml/dom2/dombuilderfilter.rb +12 -0
  26. data/lib/xml/dom2/domentityresolver.rb +13 -0
  27. data/lib/xml/dom2/domentityresolverimpl.rb +37 -0
  28. data/lib/xml/dom2/domexception.rb +95 -0
  29. data/lib/xml/dom2/domimplementation.rb +61 -0
  30. data/lib/xml/dom2/dominputsource.rb +29 -0
  31. data/lib/xml/dom2/element.rb +533 -0
  32. data/lib/xml/dom2/entity.rb +110 -0
  33. data/lib/xml/dom2/entityreference.rb +107 -0
  34. data/lib/xml/dom2/namednodemap.rb +138 -0
  35. data/lib/xml/dom2/node.rb +587 -0
  36. data/lib/xml/dom2/nodelist.rb +231 -0
  37. data/lib/xml/dom2/notation.rb +86 -0
  38. data/lib/xml/dom2/processinginstruction.rb +155 -0
  39. data/lib/xml/dom2/text.rb +128 -0
  40. data/lib/xml/dom2/xpath.rb +398 -0
  41. data/lib/xml/encoding-ja.rb +42 -0
  42. data/lib/xml/parser.rb +13 -0
  43. data/lib/xml/parserns.rb +236 -0
  44. data/lib/xml/sax.rb +353 -0
  45. data/lib/xml/saxdriver.rb +370 -0
  46. data/lib/xml/xpath.rb +3284 -0
  47. data/lib/xml/xpath.ry +2352 -0
  48. data/lib/xmldigest.rb +1 -0
  49. data/lib/xmltree.rb +1 -0
  50. data/lib/xmltreebuilder.rb +1 -0
  51. data/lib/xmltreevisitor.rb +1 -0
  52. metadata +111 -0
@@ -0,0 +1,76 @@
1
+ ## -*- Ruby -*-
2
+ ## XML::DOM
3
+ ## 1998-2001 by yoshidam
4
+ ##
5
+
6
+ require 'xml/dom2/text'
7
+
8
+ module XML
9
+ module DOM
10
+
11
+ =begin
12
+ == Class XML::DOM::CDATASection
13
+
14
+ === superclass
15
+ Text
16
+
17
+ =end
18
+ class CDATASection<Text
19
+ =begin
20
+ === Class Methods
21
+
22
+ --- CDATASection.new(text = nil)
23
+
24
+ creates a new CDATASection.
25
+ =end
26
+ def initialize(text = nil)
27
+ super(text)
28
+ raise "parameter error" if !text
29
+ end
30
+
31
+ =begin
32
+ === Methods
33
+
34
+ --- CDATASection#nodeType
35
+
36
+ [DOM]
37
+ returns the nodeType.
38
+ =end
39
+ ## [DOM]
40
+ def nodeType
41
+ CDATA_SECTION_NODE
42
+ end
43
+
44
+ =begin
45
+ --- CDATASection#nodeName
46
+
47
+ [DOM]
48
+ returns the nodeName.
49
+ =end
50
+ ## [DOM]
51
+ def nodeName
52
+ "#cdata-section"
53
+ end
54
+
55
+ =begin
56
+ --- CDATASection#to_s
57
+
58
+ returns the string representation of the CDATASection.
59
+ =end
60
+ def to_s
61
+ "<![CDATA[#{@value}]]>"
62
+ end
63
+
64
+ =begin
65
+ --- CDATASection#dump(depth = 0)
66
+
67
+ dumps the CDATASection.
68
+ =end
69
+ def dump(depth = 0)
70
+ print ' ' * depth * 2
71
+ print "<![CDATA[#{@value.inspect}]]>\n"
72
+ end
73
+
74
+ end
75
+ end
76
+ end
@@ -0,0 +1,177 @@
1
+ ## -*- Ruby -*-
2
+ ## XML::DOM
3
+ ## 1998-2001 by yoshidam
4
+ ##
5
+
6
+ require 'xml/dom2/node'
7
+ require 'xml/dom2/domexception'
8
+
9
+ module XML
10
+ module DOM
11
+
12
+ =begin
13
+ == Class XML::DOM::CharacterData
14
+
15
+ === superclass
16
+ Node
17
+
18
+ =end
19
+ class CharacterData<Node
20
+
21
+ =begin
22
+ === Class Methods
23
+
24
+ --- CharacterData.new(text)
25
+
26
+ creates a new CharacterData.
27
+ =end
28
+ ## new(text)
29
+ ## text: String
30
+ def initialize(text = nil)
31
+ super()
32
+ raise "parameter error" if !text
33
+ @value = text
34
+ end
35
+
36
+ =begin
37
+ === Methods
38
+
39
+ --- CharacterData#data()
40
+
41
+ [DOM]
42
+ returns the character data of the node.
43
+ =end
44
+ ## [DOM]
45
+ def data
46
+ @value.dup
47
+ end
48
+
49
+ =begin
50
+ --- CharacterData#data=(p)
51
+
52
+ [DOM]
53
+ set the character data of the node.
54
+ =end
55
+ ## [DOM]
56
+ def data=(p)
57
+ @value = p
58
+ end
59
+
60
+ =begin
61
+ --- CharacterData#length()
62
+
63
+ [DOM]
64
+ returns length of this CharacterData.
65
+ =end
66
+ ## [DOM]
67
+ def length
68
+ @value.length
69
+ end
70
+
71
+ =begin
72
+ --- CharacterData#substringData(start, count)
73
+
74
+ [DOM]
75
+ extracts a range of data from the node.
76
+ =end
77
+ ## [DOM]
78
+ def substringData(start, count)
79
+ if start < 0 || start > @value.length || count < 0
80
+ raise DOMException.new(DOMException::INDEX_SIZE_ERR)
81
+ end
82
+ ## if the sum of start and count > length,
83
+ ## return all characters to the end of the value.
84
+ @value[start, count]
85
+ end
86
+
87
+ =begin
88
+ --- CharacterData#appendData(str)
89
+
90
+ [DOM]
91
+ append the string to the end of the character data.
92
+ =end
93
+ ## [DOM]
94
+ def appendData(str)
95
+ @value << str
96
+ end
97
+
98
+ =begin
99
+ --- CharacterData#insertData(offset, str)
100
+
101
+ [DOM]
102
+ insert a string at the specified character offset.
103
+ =end
104
+ ## [DOM]
105
+ def insertData(offset, str)
106
+ if offset < 0 || offset > @value.length
107
+ raise DOMException.new(DOMException::INDEX_SIZE_ERR)
108
+ end
109
+ @value[offset, 0] = str
110
+ end
111
+
112
+ =begin
113
+ --- CharacterData#deleteData(offset, count)
114
+
115
+ [DOM]
116
+ removes a range of characters from the node.
117
+ =end
118
+ ## [DOM]
119
+ def deleteData(offset, count)
120
+ if offset < 0 || offset > @value.length || count < 0
121
+ raise DOMException.new(DOMException::INDEX_SIZE_ERR)
122
+ end
123
+ @value[offset, count] = ''
124
+ end
125
+
126
+ =begin
127
+ --- CharacterData#replaceData(offset, count, str)
128
+
129
+ [DOM]
130
+ replaces the characters starting at the specified character offset
131
+ with specified string.
132
+ =end
133
+ ## [DOM]
134
+ def replaceData(offset, count, str)
135
+ if offset < 0 || offset > @value.length || count < 0
136
+ raise DOMException.new(DOMException::INDEX_SIZE_ERR)
137
+ end
138
+ @value[offset, count] = str
139
+ end
140
+
141
+ =begin
142
+ --- CharacterData#cloneData(deep = true)
143
+
144
+ [DOM]
145
+ returns the copy of the CharacterData.
146
+ =end
147
+ ## [DOM]
148
+ def cloneNode(deep = true)
149
+ super(deep, @value.dup)
150
+ end
151
+
152
+ =begin
153
+ --- CharacterData#nodeValue
154
+
155
+ [DOM]
156
+ return nodevalue.
157
+
158
+ =end
159
+ ## [DOM]
160
+ def nodeValue
161
+ @value
162
+ end
163
+
164
+ =begin
165
+ --- CharacterData#nodeValue=(p)
166
+
167
+ [DOM]
168
+ set nodevalue as p.
169
+ =end
170
+ ## [DOM]
171
+ def nodeValue=(p)
172
+ @value = p
173
+ end
174
+
175
+ end
176
+ end
177
+ end
@@ -0,0 +1,81 @@
1
+ ## -*- Ruby -*-
2
+ ## XML::DOM
3
+ ## 1998-2001 by yoshidam
4
+ ##
5
+
6
+ require 'xml/dom2/characterdata'
7
+
8
+ module XML
9
+ module DOM
10
+
11
+ =begin
12
+ == Class XML::DOM::Comment
13
+
14
+ === superclass
15
+ CharacterData
16
+
17
+ =end
18
+ class Comment<CharacterData
19
+
20
+ =begin
21
+ === Class Methods
22
+
23
+ --- Comment.new(text)
24
+
25
+ creates a new Comment.
26
+ =end
27
+ ## new(text)
28
+ ## text: String
29
+ def initialize(text = nil)
30
+ super(text)
31
+ raise "parameter error" if !text
32
+ end
33
+
34
+ =begin
35
+ === Methods
36
+
37
+ --- Comment#nodeType
38
+
39
+ [DOM]
40
+ returns the nodeType.
41
+ =end
42
+ ## [DOM]
43
+ def nodeType
44
+ COMMENT_NODE
45
+ end
46
+
47
+ =begin
48
+ --- Comment#nodeName
49
+
50
+ [DOM]
51
+ returns the nodeName.
52
+ =end
53
+ ## [DOM]
54
+ def nodeName
55
+ "#comment"
56
+ end
57
+
58
+ =begin
59
+ --- Comment#to_s
60
+
61
+ returns the string representation of the Comment.
62
+ =end
63
+ def to_s
64
+ ret = "<!--#{@value}-->"
65
+ ret << "\n" if parentNode.nodeType == DOCUMENT_NODE
66
+ ret
67
+ end
68
+
69
+ =begin
70
+ --- Comment#dump(depth =0)
71
+
72
+ dumps the Comment.
73
+ =end
74
+ def dump(depth = 0)
75
+ print ' ' * depth * 2
76
+ print "<!--#{@value.inspect}-->\n"
77
+ end
78
+
79
+ end
80
+ end
81
+ end
@@ -0,0 +1,19 @@
1
+ require 'xml/dom2/domexception'
2
+ require 'xml/dom2/domimplementation'
3
+ require 'xml/dom2/documentfragment'
4
+ require 'xml/dom2/document'
5
+ require 'xml/dom2/node'
6
+ require 'xml/dom2/nodelist'
7
+ require 'xml/dom2/namednodemap'
8
+ require 'xml/dom2/characterdata'
9
+ require 'xml/dom2/attr'
10
+ require 'xml/dom2/element'
11
+ require 'xml/dom2/text'
12
+ require 'xml/dom2/comment'
13
+
14
+ require 'xml/dom2/cdatasection'
15
+ require 'xml/dom2/documenttype'
16
+ require 'xml/dom2/notation'
17
+ require 'xml/dom2/entity'
18
+ require 'xml/dom2/entityreference'
19
+ require 'xml/dom2/processinginstruction'
@@ -0,0 +1,317 @@
1
+ ## -*- Ruby -*-
2
+ ## XML::DOM
3
+ ## 1998-2001 by yoshidam
4
+ ##
5
+
6
+ require 'xml/dom2/node'
7
+ require 'xml/dom2/nodelist'
8
+ require 'xml/dom2/domexception'
9
+
10
+ require 'xml/dom2/documentfragment'
11
+ require 'xml/dom2/attr'
12
+ require 'xml/dom2/element'
13
+ require 'xml/dom2/text'
14
+ require 'xml/dom2/comment'
15
+ require 'xml/dom2/cdatasection'
16
+ require 'xml/dom2/entityreference'
17
+ require 'xml/dom2/processinginstruction'
18
+ require 'xml/dom2/domimplementation'
19
+
20
+
21
+ module XML
22
+ module DOM
23
+
24
+ =begin
25
+ == Class XML::DOM::Document
26
+
27
+ === superclass
28
+ Node
29
+
30
+ =end
31
+ class Document<Node
32
+ =begin
33
+ === Class Methods
34
+ --- Document.new(*children)
35
+
36
+ creates a new Document.
37
+ =end
38
+
39
+ ## new([child1, child2, ...]) or
40
+ ## new(child1, child2, ...)
41
+ ## child?: String or Node
42
+ def initialize(*children)
43
+ super(*children)
44
+ end
45
+
46
+ =begin
47
+ === Methods
48
+
49
+ --- Document#nodeType
50
+
51
+ [DOM]
52
+ returns the nodeType.
53
+ =end
54
+ ## [DOM]
55
+ def nodeType
56
+ DOCUMENT_NODE
57
+ end
58
+
59
+ =begin
60
+ --- Document#nodeName
61
+
62
+ [DOM]
63
+ returns the nodeName.
64
+ =end
65
+ ## [DOM]
66
+ def nodeName
67
+ "#document"
68
+ end
69
+
70
+ =begin
71
+ --- Document#documentElement
72
+
73
+ [DOM]
74
+ returns root element of the Docuemnt.
75
+ =end
76
+ ## [DOM]
77
+ def documentElement
78
+ @children.each do |child|
79
+ if child.nodeType == ELEMENT_NODE
80
+ return child
81
+ end
82
+ end if @children
83
+ nil
84
+ end
85
+
86
+ =begin
87
+ --- Document#doctype
88
+
89
+ [DOM]
90
+ returns DTD associated with this document.
91
+ =end
92
+ ## [DOM]
93
+ def doctype
94
+ @children.each do |child|
95
+ if child.nodeType == DOCUMENT_TYPE_NODE
96
+ return child
97
+ end
98
+ end if @children
99
+ nil
100
+ end
101
+
102
+ =begin
103
+ --- Document#getElementsByTagName(tagname)
104
+
105
+ [DOM]
106
+ returns a NodeList of all the Elements with a given tag name.
107
+ =end
108
+ ## [DOM] (but this is not "live")
109
+ def getElementsByTagName(tagname)
110
+ ret = NodeList.new
111
+ @children.each do |node|
112
+ if node.nodeType == ELEMENT_NODE
113
+ if tagname == '*' || node.nodeName == tagname
114
+ ret << node
115
+ end
116
+ ret << node.getElementsByTagName(tagname)
117
+ end
118
+ end if @children
119
+ ret
120
+ end
121
+
122
+ =begin
123
+ --- Document#createElement(tagName)
124
+
125
+ [DOM]
126
+ creates a Element.
127
+ =end
128
+ ## [DOM]
129
+ def createElement(tagName)
130
+ ret = Element.new(tagName)
131
+ ret.ownerDocument = self
132
+ ret
133
+ end
134
+
135
+ =begin
136
+ --- Document#createTextNode(data)
137
+
138
+ [DOM]
139
+ creates a TextNode.
140
+ =end
141
+ ## [DOM]
142
+ def createTextNode(data)
143
+ ret = Text.new(data)
144
+ ret.ownerDocument = self
145
+ ret
146
+ end
147
+
148
+ =begin
149
+ --- Document#createCDATASection(data)
150
+
151
+ [DOM]
152
+ creates a CDATASection.
153
+ =end
154
+ ## [DOM]
155
+ def createCDATASection(data)
156
+ ret = CDATASection.new(data)
157
+ ret.ownerDocument = self
158
+ ret
159
+ end
160
+
161
+ =begin
162
+ --- Document#createComment(data)
163
+
164
+ [DOM]
165
+ create a Comment.
166
+ =end
167
+ ## [DOM]
168
+ def createComment(data)
169
+ ret = Comment.new(data)
170
+ ret.ownerDocument = self
171
+ ret
172
+ end
173
+
174
+ =begin
175
+ --- Document#createProcessingInstruction(target, data)
176
+
177
+ [DOM]
178
+ create a ProcessingInstruction.
179
+ =end
180
+ ## [DOM]
181
+ def createProcessingInstruction(target, data)
182
+ ret = ProcessingInstruction.new(target, data)
183
+ ret.ownerDocument = self
184
+ ret
185
+ end
186
+
187
+ =begin
188
+ --- Document#createAttribute(name)
189
+
190
+ [DOM]
191
+ create a Attribute.
192
+ =end
193
+ ## [DOM]
194
+ def createAttribute(name)
195
+ ret = Attr.new(name)
196
+ ret.ownerDocument = self
197
+ ret
198
+ end
199
+
200
+ =begin
201
+ --- Document#createEntityReference(name)
202
+
203
+ [DOM]
204
+ create a EntityReference.
205
+ =end
206
+ ## [DOM]
207
+ def createEntityReference(name)
208
+ ret = EntityReference.new(name)
209
+ ret.ownerDocument = self
210
+ ret
211
+ end
212
+
213
+ =begin
214
+ --- Document#createDocumentFragment()
215
+
216
+ [DOM]
217
+ create a DocumentFragment.
218
+ =end
219
+ ## [DOM]
220
+ def createDocumentFragment
221
+ ret = DocumentFragment.new
222
+ ret.ownerDocument = self
223
+ ret
224
+ end
225
+
226
+ ## [DOM]
227
+ def implementation
228
+ return @implemantation if @implemantation
229
+ ## singleton
230
+ @implemantation = DOMImplementation.instance
231
+ end
232
+
233
+ def implementation=(impl)
234
+ @implemantation = impl
235
+ end
236
+
237
+ ## [DOM2]
238
+ def importNode(impnode, deep)
239
+ ## [NOT IMPLEMENTED]
240
+ raise "not implemented"
241
+ end
242
+
243
+ =begin
244
+ --- Document#createElementNS(nsuri, qname)
245
+
246
+ [DOM2]
247
+ creates a Element with namespace.
248
+ =end
249
+ ## [DOM2]
250
+ def createElementNS(nsuri, qname)
251
+ ret = Element.new([nsuri, qname])
252
+ ret.ownerDocument = self
253
+ ret
254
+ end
255
+
256
+ XMLNSNS = 'http://www.w3.org/2000/xmlns/'
257
+ ## [DOM2]
258
+ def createAttributeNS(nsuri, qname)
259
+ nsuri = XMLNSNS if qname == 'xmlns' or qname =~ /^xmlns:/u
260
+ ret = Attr.new([nsuri, qname])
261
+ ret.ownerDocument = self
262
+ ret
263
+ end
264
+
265
+ ## [DOM2]
266
+ def getElementsByTagNameNS(nsuri, localname)
267
+ ret = NodeList.new
268
+ @children.each do |node|
269
+ if node.nodeType == ELEMENT_NODE
270
+ if (localname == '*' || node.localname == localname) and
271
+ (nsuri == '*' || node.namespaceURI == nsuri)
272
+ ret << node
273
+ end
274
+ ret << node.getElementsByTagNameNS(nsuri, localname)
275
+ end
276
+ end if @children
277
+ ret
278
+ end
279
+
280
+ ## [DOM2]
281
+ def getElementById(elementId)
282
+ ## [NOT IMPLEMENTED]
283
+ raise "not implemented"
284
+ end
285
+
286
+ def _checkNode(node)
287
+ unless node.nodeType == ELEMENT_NODE ||
288
+ node.nodeType == PROCESSING_INSTRUCTION_NODE ||
289
+ node.nodeType == COMMENT_NODE ||
290
+ node.nodeType == DOCUMENT_TYPE_NODE
291
+ raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
292
+ end
293
+
294
+ if node.nodeType == ELEMENT_NODE
295
+ @children.each do |n|
296
+ if n.nodeType == ELEMENT_NODE
297
+ raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
298
+ end
299
+ end
300
+ end
301
+
302
+ if node.nodeType == DOCUMENT_TYPE_NODE
303
+ @children.each do |n|
304
+ if n.nodeType == DOCUMENT_TYPE_NODE
305
+ raise DOMException.new(DOMException::HIERARCHY_REQUEST_ERR)
306
+ end
307
+ end
308
+ end
309
+ end
310
+
311
+ def _getNamespaces(parentNamespaces = {}, all = false)
312
+ { nil => nil }
313
+ end
314
+
315
+ end
316
+ end
317
+ end