diff --git a/lib/oga/xml/lexer.rb b/lib/oga/xml/lexer.rb
index 655d36e..8021bdc 100644
--- a/lib/oga/xml/lexer.rb
+++ b/lib/oga/xml/lexer.rb
@@ -347,7 +347,7 @@ module Oga
# Called on the closing `>` of the open tag of an element.
#
def on_element_open_end
- if html? and HTML_VOID_ELEMENTS.include?(current_element)
+ if html? and HTML_VOID_ELEMENTS.include?(current_element.downcase)
add_token(:T_ELEM_END)
@elements.pop
end
diff --git a/spec/oga/xml/lexer/html_void_elements_spec.rb b/spec/oga/xml/lexer/html_void_elements_spec.rb
index aac509f..69fc97a 100644
--- a/spec/oga/xml/lexer/html_void_elements_spec.rb
+++ b/spec/oga/xml/lexer/html_void_elements_spec.rb
@@ -10,6 +10,14 @@ describe Oga::XML::Lexer do
]
end
+ example 'lex a upper case void element' do
+ lex(' ', :html => true).should == [
+ [:T_ELEM_START, nil, 1],
+ [:T_ELEM_NAME, "BR", 1],
+ [:T_ELEM_END, nil, 1]
+ ]
+ end
+
example 'lex text after a void element' do
lex('foo', :html => true).should == [
[:T_ELEM_START, nil, 1],
diff --git a/spec/oga/xml/parser/html_void_elements_spec.rb b/spec/oga/xml/parser/html_void_elements_spec.rb
index 9166746..24a661e 100644
--- a/spec/oga/xml/parser/html_void_elements_spec.rb
+++ b/spec/oga/xml/parser/html_void_elements_spec.rb
@@ -29,6 +29,20 @@ describe Oga::XML::Parser do
end
end
+ context 'void elements with different casing' do
+ before :all do
+ @node_uc = parse_html(' ').children[0]
+ end
+
+ example 'parse void elements with different casing' do
+ @node_uc.is_a?(Oga::XML::Element).should == true
+ end
+
+ example 'set the name of the void element to match casing' do
+ @node_uc.name.should == 'BR'
+ end
+ end
+
context 'void elements with attributes' do
before :all do
@node = parse('', :html => true).children[0]