soap2r 1.5.8

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 (161) hide show
  1. data/bin/wsdl2ruby.rb +137 -0
  2. data/bin/xsd2ruby.rb +90 -0
  3. data/lib/soap/attachment.rb +108 -0
  4. data/lib/soap/attrproxy.rb +34 -0
  5. data/lib/soap/baseData.rb +1094 -0
  6. data/lib/soap/element.rb +277 -0
  7. data/lib/soap/encodingstyle/aspDotNetHandler.rb +207 -0
  8. data/lib/soap/encodingstyle/handler.rb +120 -0
  9. data/lib/soap/encodingstyle/literalHandler.rb +195 -0
  10. data/lib/soap/encodingstyle/soapHandler.rb +559 -0
  11. data/lib/soap/filter.rb +13 -0
  12. data/lib/soap/filter/filterchain.rb +51 -0
  13. data/lib/soap/filter/handler.rb +31 -0
  14. data/lib/soap/filter/streamhandler.rb +29 -0
  15. data/lib/soap/generator.rb +299 -0
  16. data/lib/soap/header/handler.rb +61 -0
  17. data/lib/soap/header/handlerset.rb +70 -0
  18. data/lib/soap/header/mappinghandler.rb +47 -0
  19. data/lib/soap/header/simplehandler.rb +44 -0
  20. data/lib/soap/httpconfigloader.rb +141 -0
  21. data/lib/soap/mapping.rb +12 -0
  22. data/lib/soap/mapping/encodedregistry.rb +537 -0
  23. data/lib/soap/mapping/factory.rb +388 -0
  24. data/lib/soap/mapping/literalregistry.rb +391 -0
  25. data/lib/soap/mapping/mapping.rb +576 -0
  26. data/lib/soap/mapping/registry.rb +295 -0
  27. data/lib/soap/mapping/rubytypeFactory.rb +446 -0
  28. data/lib/soap/mapping/schemadefinition.rb +170 -0
  29. data/lib/soap/mapping/typeMap.rb +106 -0
  30. data/lib/soap/mapping/wsdlencodedregistry.rb +211 -0
  31. data/lib/soap/mapping/wsdlliteralregistry.rb +248 -0
  32. data/lib/soap/marshal.rb +59 -0
  33. data/lib/soap/mimemessage.rb +241 -0
  34. data/lib/soap/nestedexception.rb +42 -0
  35. data/lib/soap/netHttpClient.rb +241 -0
  36. data/lib/soap/ns.rb +34 -0
  37. data/lib/soap/parser.rb +252 -0
  38. data/lib/soap/processor.rb +66 -0
  39. data/lib/soap/property.rb +319 -0
  40. data/lib/soap/proxy.rb +14 -0
  41. data/lib/soap/rpc/cgistub.rb +247 -0
  42. data/lib/soap/rpc/driver.rb +221 -0
  43. data/lib/soap/rpc/element.rb +374 -0
  44. data/lib/soap/rpc/httpserver.rb +142 -0
  45. data/lib/soap/rpc/methodDef.rb +68 -0
  46. data/lib/soap/rpc/proxy.rb +572 -0
  47. data/lib/soap/rpc/router.rb +662 -0
  48. data/lib/soap/rpc/rpc.rb +25 -0
  49. data/lib/soap/rpc/soaplet.rb +200 -0
  50. data/lib/soap/rpc/standaloneServer.rb +43 -0
  51. data/lib/soap/soap.rb +151 -0
  52. data/lib/soap/streamHandler.rb +301 -0
  53. data/lib/soap/wsdlDriver.rb +164 -0
  54. data/lib/wsdl/binding.rb +65 -0
  55. data/lib/wsdl/data.rb +64 -0
  56. data/lib/wsdl/definitions.rb +236 -0
  57. data/lib/wsdl/documentation.rb +32 -0
  58. data/lib/wsdl/import.rb +80 -0
  59. data/lib/wsdl/importer.rb +38 -0
  60. data/lib/wsdl/info.rb +50 -0
  61. data/lib/wsdl/message.rb +54 -0
  62. data/lib/wsdl/operation.rb +151 -0
  63. data/lib/wsdl/operationBinding.rb +240 -0
  64. data/lib/wsdl/param.rb +93 -0
  65. data/lib/wsdl/parser.rb +164 -0
  66. data/lib/wsdl/part.rb +52 -0
  67. data/lib/wsdl/port.rb +66 -0
  68. data/lib/wsdl/portType.rb +75 -0
  69. data/lib/wsdl/service.rb +61 -0
  70. data/lib/wsdl/soap/address.rb +40 -0
  71. data/lib/wsdl/soap/binding.rb +49 -0
  72. data/lib/wsdl/soap/body.rb +58 -0
  73. data/lib/wsdl/soap/cgiStubCreator.rb +92 -0
  74. data/lib/wsdl/soap/classDefCreator.rb +433 -0
  75. data/lib/wsdl/soap/classDefCreatorSupport.rb +240 -0
  76. data/lib/wsdl/soap/classNameCreator.rb +54 -0
  77. data/lib/wsdl/soap/clientSkeltonCreator.rb +104 -0
  78. data/lib/wsdl/soap/complexType.rb +173 -0
  79. data/lib/wsdl/soap/data.rb +42 -0
  80. data/lib/wsdl/soap/definitions.rb +200 -0
  81. data/lib/wsdl/soap/driverCreator.rb +118 -0
  82. data/lib/wsdl/soap/element.rb +33 -0
  83. data/lib/wsdl/soap/encodedMappingRegistryCreator.rb +73 -0
  84. data/lib/wsdl/soap/fault.rb +56 -0
  85. data/lib/wsdl/soap/header.rb +86 -0
  86. data/lib/wsdl/soap/headerfault.rb +56 -0
  87. data/lib/wsdl/soap/literalMappingRegistryCreator.rb +115 -0
  88. data/lib/wsdl/soap/mappingRegistryCreator.rb +58 -0
  89. data/lib/wsdl/soap/mappingRegistryCreatorSupport.rb +376 -0
  90. data/lib/wsdl/soap/methodDefCreator.rb +199 -0
  91. data/lib/wsdl/soap/operation.rb +112 -0
  92. data/lib/wsdl/soap/servantSkeltonCreator.rb +89 -0
  93. data/lib/wsdl/soap/servletStubCreator.rb +104 -0
  94. data/lib/wsdl/soap/standaloneServerStubCreator.rb +100 -0
  95. data/lib/wsdl/soap/wsdl2ruby.rb +217 -0
  96. data/lib/wsdl/types.rb +44 -0
  97. data/lib/wsdl/wsdl.rb +24 -0
  98. data/lib/wsdl/xmlSchema/all.rb +24 -0
  99. data/lib/wsdl/xmlSchema/annotation.rb +34 -0
  100. data/lib/wsdl/xmlSchema/any.rb +61 -0
  101. data/lib/wsdl/xmlSchema/anyAttribute.rb +48 -0
  102. data/lib/wsdl/xmlSchema/attribute.rb +104 -0
  103. data/lib/wsdl/xmlSchema/attributeGroup.rb +68 -0
  104. data/lib/wsdl/xmlSchema/choice.rb +58 -0
  105. data/lib/wsdl/xmlSchema/complexContent.rb +97 -0
  106. data/lib/wsdl/xmlSchema/complexExtension.rb +119 -0
  107. data/lib/wsdl/xmlSchema/complexRestriction.rb +104 -0
  108. data/lib/wsdl/xmlSchema/complexType.rb +193 -0
  109. data/lib/wsdl/xmlSchema/content.rb +95 -0
  110. data/lib/wsdl/xmlSchema/data.rb +116 -0
  111. data/lib/wsdl/xmlSchema/element.rb +153 -0
  112. data/lib/wsdl/xmlSchema/enumeration.rb +36 -0
  113. data/lib/wsdl/xmlSchema/fractiondigits.rb +37 -0
  114. data/lib/wsdl/xmlSchema/group.rb +100 -0
  115. data/lib/wsdl/xmlSchema/import.rb +53 -0
  116. data/lib/wsdl/xmlSchema/importHandler.rb +45 -0
  117. data/lib/wsdl/xmlSchema/importer.rb +102 -0
  118. data/lib/wsdl/xmlSchema/include.rb +48 -0
  119. data/lib/wsdl/xmlSchema/length.rb +37 -0
  120. data/lib/wsdl/xmlSchema/list.rb +48 -0
  121. data/lib/wsdl/xmlSchema/maxexclusive.rb +37 -0
  122. data/lib/wsdl/xmlSchema/maxinclusive.rb +37 -0
  123. data/lib/wsdl/xmlSchema/maxlength.rb +37 -0
  124. data/lib/wsdl/xmlSchema/minexclusive.rb +37 -0
  125. data/lib/wsdl/xmlSchema/mininclusive.rb +37 -0
  126. data/lib/wsdl/xmlSchema/minlength.rb +37 -0
  127. data/lib/wsdl/xmlSchema/parser.rb +167 -0
  128. data/lib/wsdl/xmlSchema/pattern.rb +36 -0
  129. data/lib/wsdl/xmlSchema/ref.rb +33 -0
  130. data/lib/wsdl/xmlSchema/schema.rb +178 -0
  131. data/lib/wsdl/xmlSchema/sequence.rb +54 -0
  132. data/lib/wsdl/xmlSchema/simpleContent.rb +69 -0
  133. data/lib/wsdl/xmlSchema/simpleExtension.rb +62 -0
  134. data/lib/wsdl/xmlSchema/simpleRestriction.rb +132 -0
  135. data/lib/wsdl/xmlSchema/simpleType.rb +87 -0
  136. data/lib/wsdl/xmlSchema/totaldigits.rb +37 -0
  137. data/lib/wsdl/xmlSchema/union.rb +35 -0
  138. data/lib/wsdl/xmlSchema/unique.rb +34 -0
  139. data/lib/wsdl/xmlSchema/whitespace.rb +37 -0
  140. data/lib/wsdl/xmlSchema/xsd2ruby.rb +174 -0
  141. data/lib/xsd/charset.rb +193 -0
  142. data/lib/xsd/codegen.rb +12 -0
  143. data/lib/xsd/codegen/classdef.rb +208 -0
  144. data/lib/xsd/codegen/commentdef.rb +34 -0
  145. data/lib/xsd/codegen/gensupport.rb +273 -0
  146. data/lib/xsd/codegen/methoddef.rb +70 -0
  147. data/lib/xsd/codegen/moduledef.rb +208 -0
  148. data/lib/xsd/datatypes.rb +1466 -0
  149. data/lib/xsd/datatypes1999.rb +20 -0
  150. data/lib/xsd/iconvcharset.rb +39 -0
  151. data/lib/xsd/mapping.rb +68 -0
  152. data/lib/xsd/namedelements.rb +132 -0
  153. data/lib/xsd/ns.rb +182 -0
  154. data/lib/xsd/qname.rb +79 -0
  155. data/lib/xsd/xmlparser.rb +76 -0
  156. data/lib/xsd/xmlparser/libxmlparser.rb +115 -0
  157. data/lib/xsd/xmlparser/parser.rb +100 -0
  158. data/lib/xsd/xmlparser/rexmlparser.rb +58 -0
  159. data/lib/xsd/xmlparser/xmlparser.rb +50 -0
  160. data/lib/xsd/xmlparser/xmlscanner.rb +149 -0
  161. metadata +224 -0
@@ -0,0 +1,76 @@
1
+ # XSD4R - XML Instance parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/xmlparser/parser'
10
+
11
+
12
+ module XSD
13
+
14
+
15
+ module XMLParser
16
+ def create_parser(host, opt)
17
+ XSD::XMLParser::Parser.create_parser(host, opt)
18
+ end
19
+ module_function :create_parser
20
+
21
+ # $1 is necessary.
22
+ NSParseRegexp = Regexp.new('^xmlns:?(.*)$', nil, 'NONE')
23
+
24
+ def filter_ns(ns, attrs)
25
+ ns_updated = false
26
+ if attrs.nil? or attrs.empty?
27
+ return [ns, attrs]
28
+ end
29
+ newattrs = {}
30
+ attrs.each do |key, value|
31
+ if NSParseRegexp =~ key
32
+ unless ns_updated
33
+ ns = ns.clone_ns
34
+ ns_updated = true
35
+ end
36
+ # tag == '' means 'default namespace'
37
+ # value == '' means 'no default namespace'
38
+ tag = $1 || ''
39
+ ns.assign(value, tag)
40
+ else
41
+ newattrs[key] = value
42
+ end
43
+ end
44
+ return [ns, newattrs]
45
+ end
46
+ module_function :filter_ns
47
+ end
48
+
49
+
50
+ end
51
+
52
+
53
+ # Try to load XML processor.
54
+ loaded = false
55
+ [
56
+ 'xsd/xmlparser/libxmlparser',
57
+ 'xsd/xmlparser/xmlparser',
58
+ 'xsd/xmlparser/xmlscanner',
59
+ 'xsd/xmlparser/rexmlparser',
60
+ ].each do |lib|
61
+ begin
62
+ require lib
63
+ # XXX: for a workaround of rubygems' require inconsistency
64
+ # XXX: MUST BE REMOVED IN THE FUTURE
65
+ name = lib.sub(/^.*\//, '')
66
+ raise LoadError unless XSD::XMLParser.constants.find { |c|
67
+ c.to_s.downcase == name
68
+ }
69
+ loaded = true
70
+ break
71
+ rescue LoadError
72
+ end
73
+ end
74
+ unless loaded
75
+ raise RuntimeError.new("XML processor module not found.")
76
+ end
@@ -0,0 +1,115 @@
1
+ # XSD4R - XMLParser XML parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/xmlparser'
10
+ require 'xml/libxml'
11
+
12
+
13
+ module XSD
14
+ module XMLParser
15
+
16
+
17
+ class LibXMLParser < XSD::XMLParser::Parser
18
+ include XML::SaxParser::Callbacks
19
+
20
+ def do_parse(string_or_readable)
21
+ if string_or_readable.respond_to?(:read)
22
+ string = string_or_readable.read
23
+ else
24
+ string = string_or_readable
25
+ end
26
+ # XMLParser passes a String in utf-8.
27
+ @charset = 'utf-8'
28
+ @parser = XML::SaxParser.new
29
+ @parser.callbacks = self
30
+ @parser.string = string
31
+ @parser.parse
32
+ end
33
+
34
+ ENTITY_REF_MAP = {
35
+ 'lt' => '<',
36
+ 'gt' => '>',
37
+ 'amp' => '&',
38
+ 'quot' => '"',
39
+ 'apos' => '\''
40
+ }
41
+
42
+ #def on_internal_subset(name, external_id, system_id)
43
+ # nil
44
+ #end
45
+
46
+ #def on_is_standalone()
47
+ # nil
48
+ #end
49
+
50
+ #def on_has_internal_subset()
51
+ # nil
52
+ #end
53
+
54
+ #def on_has_external_subset()
55
+ # nil
56
+ #end
57
+
58
+ #def on_start_document()
59
+ # nil
60
+ #end
61
+
62
+ #def on_end_document()
63
+ # nil
64
+ #end
65
+
66
+ def on_start_element(name, attr_hash)
67
+ start_element(name, attr_hash)
68
+ end
69
+
70
+ def on_end_element(name)
71
+ end_element(name)
72
+ end
73
+
74
+ def on_reference(name)
75
+ characters(ENTITY_REF_MAP[name])
76
+ end
77
+
78
+ def on_characters(chars)
79
+ characters(chars)
80
+ end
81
+
82
+ #def on_processing_instruction(target, data)
83
+ # nil
84
+ #end
85
+
86
+ #def on_comment(msg)
87
+ # nil
88
+ #end
89
+
90
+ def on_parser_warning(msg)
91
+ warn(msg)
92
+ end
93
+
94
+ def on_parser_error(msg)
95
+ raise ParseError.new(msg)
96
+ end
97
+
98
+ def on_parser_fatal_error(msg)
99
+ raise ParseError.new(msg)
100
+ end
101
+
102
+ def on_cdata_block(cdata)
103
+ characters(cdata)
104
+ end
105
+
106
+ def on_external_subset(name, external_id, system_id)
107
+ nil
108
+ end
109
+
110
+ add_factory(self)
111
+ end
112
+
113
+
114
+ end
115
+ end
@@ -0,0 +1,100 @@
1
+ # XSD4R - XML Instance parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/qname'
10
+ require 'xsd/ns'
11
+ require 'xsd/charset'
12
+
13
+
14
+ module XSD
15
+ module XMLParser
16
+
17
+
18
+ class Parser
19
+ class ParseError < Error; end
20
+ class FormatDecodeError < ParseError; end
21
+ class UnknownElementError < FormatDecodeError; end
22
+ class UnknownAttributeError < FormatDecodeError; end
23
+ class UnexpectedElementError < FormatDecodeError; end
24
+ class ElementConstraintError < FormatDecodeError; end
25
+ class ParserError < ParseError; end
26
+
27
+ @@parser_factory = nil
28
+
29
+ def self.factory
30
+ @@parser_factory
31
+ end
32
+
33
+ def self.create_parser(host, opt = {})
34
+ unless @@parser_factory
35
+ raise ParserError.new("illegal XML parser configuration")
36
+ end
37
+ @@parser_factory.new(host, opt)
38
+ end
39
+
40
+ def self.add_factory(factory)
41
+ if $DEBUG
42
+ puts "Set #{ factory } as XML processor."
43
+ end
44
+ @@parser_factory = factory
45
+ end
46
+
47
+ public
48
+
49
+ attr_accessor :charset
50
+
51
+ def initialize(host, opt = {})
52
+ @host = host
53
+ @charset = opt[:charset] || nil
54
+ end
55
+
56
+ def parse(string_or_readable)
57
+ @textbuf = ''
58
+ prologue
59
+ do_parse(string_or_readable)
60
+ epilogue
61
+ end
62
+
63
+ private
64
+
65
+ def do_parse(string_or_readable)
66
+ raise ParserError.new(
67
+ 'Method do_parse must be defined in derived class.')
68
+ end
69
+
70
+ def start_element(name, attrs)
71
+ @host.start_element(name, attrs)
72
+ end
73
+
74
+ def characters(text)
75
+ @host.characters(text)
76
+ end
77
+
78
+ def end_element(name)
79
+ @host.end_element(name)
80
+ end
81
+
82
+ def prologue
83
+ end
84
+
85
+ def epilogue
86
+ end
87
+
88
+ def xmldecl_encoding=(charset)
89
+ if @charset.nil?
90
+ @charset = charset
91
+ else
92
+ # Definition in a stream (like HTTP) has a priority.
93
+ p "encoding definition: #{ charset } is ignored." if $DEBUG
94
+ end
95
+ end
96
+ end
97
+
98
+
99
+ end
100
+ end
@@ -0,0 +1,58 @@
1
+ # XSD4R - REXMLParser XML parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/xmlparser'
10
+ require 'rexml/streamlistener'
11
+ require 'rexml/document'
12
+
13
+
14
+ module XSD
15
+ module XMLParser
16
+
17
+
18
+ class REXMLParser < XSD::XMLParser::Parser
19
+ include REXML::StreamListener
20
+
21
+ def do_parse(string_or_readable)
22
+ source = nil
23
+ source = REXML::SourceFactory.create_from(string_or_readable)
24
+ source.encoding = charset if charset
25
+ # Listener passes a String in utf-8.
26
+ @charset = 'utf-8'
27
+ REXML::Document.parse_stream(source, self)
28
+ end
29
+
30
+ def epilogue
31
+ end
32
+
33
+ def tag_start(name, attrs)
34
+ start_element(name, attrs)
35
+ end
36
+
37
+ def tag_end(name)
38
+ end_element(name)
39
+ end
40
+
41
+ def text(text)
42
+ characters(text)
43
+ end
44
+
45
+ def cdata(content)
46
+ characters(content)
47
+ end
48
+
49
+ def xmldecl(version, encoding, standalone)
50
+ # Version should be checked.
51
+ end
52
+
53
+ add_factory(self)
54
+ end
55
+
56
+
57
+ end
58
+ end
@@ -0,0 +1,50 @@
1
+ # XSD4R - XMLParser XML parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/xmlparser'
10
+ require 'xml/parser'
11
+
12
+
13
+ module XSD
14
+ module XMLParser
15
+
16
+
17
+ class XMLParser < XSD::XMLParser::Parser
18
+ class Listener < XML::Parser
19
+ begin
20
+ require 'xml/encoding-ja'
21
+ include XML::Encoding_ja
22
+ rescue LoadError
23
+ # uconv may not be installed.
24
+ end
25
+ end
26
+
27
+ def do_parse(string_or_readable)
28
+ # XMLParser passes a String in utf-8.
29
+ @charset = 'utf-8'
30
+ @parser = Listener.new
31
+ @parser.parse(string_or_readable) do |type, name, data|
32
+ case type
33
+ when XML::Parser::START_ELEM
34
+ start_element(name, data)
35
+ when XML::Parser::END_ELEM
36
+ end_element(name)
37
+ when XML::Parser::CDATA
38
+ characters(data)
39
+ else
40
+ raise FormatDecodeError.new("Unexpected XML: #{ type }/#{ name }/#{ data }.")
41
+ end
42
+ end
43
+ end
44
+
45
+ add_factory(self)
46
+ end
47
+
48
+
49
+ end
50
+ end
@@ -0,0 +1,149 @@
1
+ # XSD4R - XMLScan XML parser library.
2
+ # Copyright (C) 2000-2007 NAKAMURA, Hiroshi <nahi@ruby-lang.org>.
3
+
4
+ # This program is copyrighted free software by NAKAMURA, Hiroshi. You can
5
+ # redistribute it and/or modify it under the same terms of Ruby's license;
6
+ # either the dual license version in 2003, or any later version.
7
+
8
+
9
+ require 'xsd/xmlparser'
10
+ require 'xmlscan/scanner'
11
+
12
+
13
+ module XSD
14
+ module XMLParser
15
+
16
+
17
+ class XMLScanner < XSD::XMLParser::Parser
18
+ include XMLScan::Visitor
19
+
20
+ def do_parse(string_or_readable)
21
+ @attrs = {}
22
+ @curattr = nil
23
+ @scanner = XMLScan::XMLScanner.new(self)
24
+ @scanner.kcode = XSD::Charset.charset_str(charset) if charset
25
+ @scanner.parse(string_or_readable)
26
+ end
27
+
28
+ def scanner_kcode=(charset)
29
+ @scanner.kcode = XSD::Charset.charset_str(charset) if charset
30
+ self.xmldecl_encoding = charset
31
+ end
32
+
33
+ ENTITY_REF_MAP = {
34
+ 'lt' => '<',
35
+ 'gt' => '>',
36
+ 'amp' => '&',
37
+ 'quot' => '"',
38
+ 'apos' => '\''
39
+ }
40
+
41
+ def parse_error(msg)
42
+ raise ParseError.new(msg)
43
+ end
44
+
45
+ def wellformed_error(msg)
46
+ raise NotWellFormedError.new(msg)
47
+ end
48
+
49
+ def valid_error(msg)
50
+ raise NotValidError.new(msg)
51
+ end
52
+
53
+ def warning(msg)
54
+ warn(msg)
55
+ end
56
+
57
+ # def on_xmldecl; end
58
+
59
+ def on_xmldecl_version(str)
60
+ # 1.0 expected.
61
+ end
62
+
63
+ def on_xmldecl_encoding(str)
64
+ self.scanner_kcode = str
65
+ end
66
+
67
+ # def on_xmldecl_standalone(str); end
68
+
69
+ # def on_xmldecl_other(name, value); end
70
+
71
+ # def on_xmldecl_end; end
72
+
73
+ # def on_doctype(root, pubid, sysid); end
74
+
75
+ # def on_prolog_space(str); end
76
+
77
+ # def on_comment(str); end
78
+
79
+ # def on_pi(target, pi); end
80
+
81
+ def on_chardata(str)
82
+ characters(str)
83
+ end
84
+
85
+ def on_cdata(str)
86
+ characters(str)
87
+ end
88
+
89
+ def on_etag(name)
90
+ end_element(name)
91
+ end
92
+
93
+ def on_entityref(ref)
94
+ characters(ENTITY_REF_MAP[ref])
95
+ end
96
+
97
+ def on_charref(code)
98
+ characters([code].pack('U'))
99
+ end
100
+
101
+ def on_charref_hex(code)
102
+ on_charref(code)
103
+ end
104
+
105
+ # def on_start_document; end
106
+
107
+ # def on_end_document; end
108
+
109
+ def on_stag(name)
110
+ @attrs = {}
111
+ end
112
+
113
+ def on_attribute(name)
114
+ @attrs[name] = @curattr = ''
115
+ end
116
+
117
+ def on_attr_value(str)
118
+ @curattr << str
119
+ end
120
+
121
+ def on_attr_entityref(ref)
122
+ @curattr << ENTITY_REF_MAP[ref]
123
+ end
124
+
125
+ def on_attr_charref(code)
126
+ @curattr << [code].pack('U')
127
+ end
128
+
129
+ def on_attr_charref_hex(code)
130
+ on_attr_charref(code)
131
+ end
132
+
133
+ # def on_attribute_end(name); end
134
+
135
+ def on_stag_end_empty(name)
136
+ on_stag_end(name)
137
+ on_etag(name)
138
+ end
139
+
140
+ def on_stag_end(name)
141
+ start_element(name, @attrs)
142
+ end
143
+
144
+ add_factory(self)
145
+ end
146
+
147
+
148
+ end
149
+ end