summaryrefslogtreecommitdiff
path: root/src/HTML5/Parser
diff options
context:
space:
mode:
authorAsmir Mustafic <[email protected]>2016-08-17 20:18:58 +0200
committerAsmir Mustafic <[email protected]>2016-08-17 20:18:58 +0200
commit5851989629b8dfe390b69d6bc509358183c3e6b4 (patch)
tree97177a0308bb3d8673e7a8694682cb47e7bc16cf /src/HTML5/Parser
parent9da7ec0397ebb0e91139b76f4d248ba09cc0c778 (diff)
In XML mode, tags are case sensitive
Fixes #114
Diffstat (limited to 'src/HTML5/Parser')
-rw-r--r--src/HTML5/Parser/Tokenizer.php14
1 files changed, 11 insertions, 3 deletions
diff --git a/src/HTML5/Parser/Tokenizer.php b/src/HTML5/Parser/Tokenizer.php
index 301addf..02b2aff 100644
--- a/src/HTML5/Parser/Tokenizer.php
+++ b/src/HTML5/Parser/Tokenizer.php
@@ -43,6 +43,10 @@ class Tokenizer
protected $textMode = 0; // TEXTMODE_NORMAL;
protected $untilTag = null;
+ const CONFORMANT_XML = 'xml';
+ const CONFORMANT_HTML = 'html';
+ protected $mode = self::CONFORMANT_HTML;
+
const WHITE = "\t\n\f ";
/**
@@ -57,11 +61,13 @@ class Tokenizer
* @param \Masterminds\HTML5\Parser\EventHandler $eventHandler
* An event handler, initialized and ready to receive
* events.
+ * @param string $mode
*/
- public function __construct($scanner, $eventHandler)
+ public function __construct($scanner, $eventHandler, $mode = self::CONFORMANT_HTML)
{
$this->scanner = $scanner;
$this->events = $eventHandler;
+ $this->mode = $mode;
}
/**
@@ -335,7 +341,8 @@ class Tokenizer
return $this->bogusComment('</');
}
- $name = strtolower($this->scanner->charsUntil("\n\f \t>"));
+ $name = $this->scanner->charsUntil("\n\f \t>");
+ $name = $this->mode === self::CONFORMANT_XML ? $name: strtolower($name);
// Trash whitespace.
$this->scanner->whitespace();
@@ -362,7 +369,8 @@ class Tokenizer
}
// We know this is at least one char.
- $name = strtolower($this->scanner->charsWhile(":_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz"));
+ $name = $this->scanner->charsWhile(":_-0123456789ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz");
+ $name = $this->mode === self::CONFORMANT_XML ? $name : strtolower($name);
$attributes = array();
$selfClose = false;