summaryrefslogtreecommitdiff
path: root/lib/rexml/parsers/sax2parser.rb
diff options
context:
space:
mode:
authorser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-09 02:41:33 +0000
committerser <ser@b2dd03c8-39d4-4d8f-98ff-823fe69b080e>2003-12-09 02:41:33 +0000
commite6636fe890ab7cf8f8f1b86ca54a3e10f98d43e6 (patch)
tree97264c7f6a6c1eb2af6909f8432a6631b4d2ccbb /lib/rexml/parsers/sax2parser.rb
parent31963249b96e11ea1df66be8a91f016af4364d14 (diff)
* Added the lower-case Shift-JIS files to the manifest. The upper-case ones
should be deprecated, but I need a Shift-JIS encoded XML file to test against, first. * Added support for maintaining external entity occurances in DTDs * Deprecated the use of Document::DECLARATION. The new default declaration can be gotten with XMLDecl::default() * Refactored the encoding support code. It should be more robust now, and fixes a few bugs. * The XPath string() function now deals with Element nodes properly. * Serialization with Output objects now works as would be expected. * Various code cleanups, some reducing the number of warnings that Ruby 1.8.x produces with REXML. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@5144 b2dd03c8-39d4-4d8f-98ff-823fe69b080e
Diffstat (limited to 'lib/rexml/parsers/sax2parser.rb')
-rw-r--r--lib/rexml/parsers/sax2parser.rb13
1 files changed, 8 insertions, 5 deletions
diff --git a/lib/rexml/parsers/sax2parser.rb b/lib/rexml/parsers/sax2parser.rb
index 2280b983a3..aab87caae4 100644
--- a/lib/rexml/parsers/sax2parser.rb
+++ b/lib/rexml/parsers/sax2parser.rb
@@ -1,3 +1,7 @@
+require 'rexml/parsers/baseparser'
+require 'rexml/parseexception'
+require 'rexml/namespace'
+
module REXML
module Parsers
class SAX2Parser
@@ -85,7 +89,7 @@ module REXML
if procs or listeners
# break out the namespace declarations
# The attributes live in event[2]
- nsdecl = event[2].find_all { |n, value| n =~ /^xmlns:/ }
+ nsdecl = event[2].find_all { |n, value| n =~ /^xmlns(:|$)/ }
nsdecl.collect! { |n, value| [ n[6..-1], value ] }
@namespace_stack.push({})
nsdecl.each do |n,v|
@@ -194,10 +198,9 @@ module REXML
end
def get_namespace( prefix )
- uri = @namespace_stack.find do |ns|
- not ns[prefix].nil?
- end
- uri[prefix] unless uri.nil?
+ uris = (@namespace_stack.find_all { |ns| not ns[prefix].nil? }) ||
+ (@namespace_stack.find { |ns| not ns[nil].nil? })
+ uris[-1][prefix] unless uris.nil? or 0 == uris.size
end
end
end