diff --git a/src/HTML5/Parser/Tokenizer.php b/src/HTML5/Parser/Tokenizer.php
index feb9a66..c196d1a 100644
--- a/src/HTML5/Parser/Tokenizer.php
+++ b/src/HTML5/Parser/Tokenizer.php
@@ -507,7 +507,7 @@ protected function attribute(&$attributes)
$this->scanner->whitespace();
$val = $this->attributeValue();
- if ($isValidAttribute) {
+ if ($isValidAttribute && !array_key_exists($name, $attributes)) {
$attributes[$name] = $val;
}
diff --git a/test/HTML5/Parser/TokenizerTest.php b/test/HTML5/Parser/TokenizerTest.php
index 374896f..86401c7 100644
--- a/test/HTML5/Parser/TokenizerTest.php
+++ b/test/HTML5/Parser/TokenizerTest.php
@@ -705,6 +705,14 @@ public function testTagAttributes()
),
false,
),
+ // duplicate attributes must be ignored
+ '' => array(
+ 'foo',
+ array(
+ 'bar' => 'first',
+ ),
+ false,
+ ),
);
$this->isAllGood('startTag', 2, $good);