'Expected DOCTYPE but got start tag <%s>', self::EXPECTED_DOCTYPE_BUT_GOT_END_TAG => 'Expected DOCTYPE but got end tag ', self::EXPECTED_DOCTYPE_BUT_GOT_CHARS => 'Expected DOCTYPE but got characters', self::EXPECTED_DOCTYPE_BUT_GOT_EOF => 'Expected DOCTYPE but got end-of-file', self::UNKNOWN_DOCTYPE => 'Unknown DOCTYPE', self::UNEXPECTED_DOCTYPE => 'Unexpected DOCTYPE', self::UNEXPECTED_START_TAG => 'Unexpected start tag <%s>', self::UNEXPECTED_END_TAG => 'Unexpected end tag ', self::NON_VOID_HTML_ELEMENT_START_TAG_WITH_TRAILING_SOLIDUS => 'Trailing solidus in non-void HTML element start tag <%s>', self::UNEXPECTED_START_TAG_IMPLIES_END_TAG => 'Unexpcted non-nesting start tag <%s> in nested context', self::UNEXPECTED_START_TAG_ALIAS => 'Start tag <%s> should be <%s>', self::UNEXPECTED_CHAR => 'Unexpected character data', self::UNEXPECTED_EOF => 'Unexpected end of file', self::UNEXPECTED_PARENT => 'Start tag <%s> not valid in parent <%s>', self::INVALID_NAMESPACE_ATTRIBUTE_VALUE => 'Invalid value for attribute "%s"; it must have value "%s" or be omitted', self::FOSTERED_START_TAG => 'Start tag <%s> moved to before table', self::FOSTERED_END_TAG => 'End tag moved to before table', self::FOSTERED_CHAR => 'Character moved to before table', self::UNEXPECTED_NULL_CHARACTER_OMIT => 'Unexpected null character; omitted from document', self::UNEXPECTED_NULL_CHARACTER_REPLACE => 'Unexpected null character; replacement character substituted', self::ENCODING_ERROR => 'Corrupt encoding near byte position %s', self::UNEXPECTED_NULL_CHARACTER => 'Unexpected null character', self::UNEXPECTED_QUESTION_MARK_INSTEAD_OF_TAG_NAME => 'Unexpected "?" character instead of tag name', self::EOF_BEFORE_TAG_NAME => 'End-of-file before tag name', self::INVALID_FIRST_CHARACTER_OF_TAG_NAME => 'Invalid first character "%s" of tag name', self::MISSING_END_TAG_NAME => 'Missing end-tag name', self::EOF_IN_TAG => 'End-of-file in tag', self::EOF_IN_SCRIPT_HTML_COMMENT_LIKE_TEXT => 'End-of-file in script (HTML comment-like) text', self::UNEXPECTED_EQUALS_SIGN_BEFORE_ATTRIBUTE_NAME => 'Unexpected equals sign before attribute name', self::DUPLICATE_ATTRIBUTE => 'Duplicate attribute "%s" in start tag', self::UNEXPECTED_CHARACTER_IN_ATTRIBUTE_NAME => 'Unexpected character "%s" in attribute name', self::MISSING_ATTRIBUTE_VALUE => 'Missing attribute value', self::UNEXPECTED_CHARACTER_IN_UNQUOTED_ATTRIBUTE_VALUE => 'Unexpected character "%s" in unquoted attribute value', self::MISSING_WHITESPACE_BETWEEN_ATTRIBUTES => 'Missing whitespace between attributes', self::UNEXPECTED_SOLIDUS_IN_TAG => 'Unexpected solidus in tag', self::CDATA_IN_HTML_CONTENT => 'CDATA in HTML content', self::INCORRECTLY_OPENED_COMMENT => 'Incorrectly opened comment', self::ABRUPT_CLOSING_OF_EMPTY_COMMENT => 'Abrupt closing of empty comment', self::EOF_IN_COMMENT => 'End-of-file in comment', self::NESTED_COMMENT => 'Nested comment', self::INCORRECTLY_CLOSED_COMMENT => 'Incorrectly closed comment', self::EOF_IN_DOCTYPE => 'End-of-file in DOCTYPE', self::MISSING_WHITESPACE_BEFORE_DOCTYPE_NAME => 'Missing whitespace before DOCTYPE name', self::MISSING_DOCTYPE_NAME => 'Missing DOCTYPE name', self::INVALID_CHARACTER_SEQUENCE_AFTER_DOCTYPE_NAME => 'Invalid character sequence after DOCTYPE name', self::MISSING_WHITESPACE_AFTER_DOCTYPE_PUBLIC_KEYWORD => 'Missing whitespace after DOCTYPE "PUBLIC" keyword', self::MISSING_DOCTYPE_PUBLIC_IDENTIFIER => 'Missing DOCTYPE "PUBLIC" identifier', self::MISSING_QUOTE_BEFORE_DOCTYPE_PUBLIC_IDENTIFIER => 'Missing quote before DOCTYPE "PUBLIC" identifier', self::ABRUPT_DOCTYPE_PUBLIC_IDENTIFIER => 'Abrupt DOCTYPE "PUBLIC" identifier', self::MISSING_WHITESPACE_BETWEEN_DOCTYPE_PUBLIC_AND_SYSTEM_IDENTIFIERS => 'Missing whitespace between DOCTYPE "PUBLIC" and "SYSTEM" identifiers', self::MISSING_WHITESPACE_AFTER_DOCTYPE_SYSTEM_KEYWORD => 'Missing whitespace after DOCTYPE "SYSTEM" keyword', self::MISSING_DOCTYPE_SYSTEM_IDENTIFIER => 'Missing DOCTYPE "SYSTEM" identifier', self::MISSING_QUOTE_BEFORE_DOCTYPE_SYSTEM_IDENTIFIER => 'Missing quote before DOCTYPE "SYSTEM" identifier', self::ABRUPT_DOCTYPE_SYSTEM_IDENTIFIER => 'Abrupt DOCTYPE "SYSTEM" identifier', self::UNEXPECTED_CHARACTER_AFTER_DOCTYPE_SYSTEM_IDENTIFIER => 'Unexpected character "%s" after DOCTYPE "SYSTEM" identifier', self::EOF_IN_CDATA => 'End-of-file in CDATA section', self::END_TAG_WITH_ATTRIBUTES => 'End-tag with attributes', self::END_TAG_WITH_TRAILING_SOLIDUS => 'End-tag with trailing solidus', self::MISSING_SEMICOLON_AFTER_CHARACTER_REFERENCE => 'Missing semicolon after character reference', self::UNKNOWN_NAMED_CHARACTER_REFERENCE => 'Unknown named character reference "%s"', self::ABSENCE_OF_DIGITS_IN_NUMERIC_CHARACTER_REFERENCE => 'Absence of digits in character reference', self::NULL_CHARACTER_REFERENCE => 'Null character reference', self::CHARACTER_REFERENCE_OUTSIDE_UNICODE_RANGE => 'Character reference outside Unicode range', self::SURROGATE_CHARACTER_REFERENCE => 'Surrogate character rereference', self::NONCHARACTER_CHARACTER_REFERENCE => 'Non-character character reference', self::CONTROL_CHARACTER_REFERENCE => 'Control-character character reference', self::SURROGATE_IN_INPUT_STREAM => 'Surrogate character in input stream', self::NONCHARACTER_IN_INPUT_STREAM => 'Non-character character in input stream', self::CONTROL_CHARACTER_IN_INPUT_STREAM => 'Control character in input stream', ]; public const REPORT_OFFSETS = [ self::INCORRECTLY_OPENED_COMMENT => 1, self::SURROGATE_CHARACTER_REFERENCE => 1, self::CHARACTER_REFERENCE_OUTSIDE_UNICODE_RANGE => 1, self::NONCHARACTER_CHARACTER_REFERENCE => 1, self::ABSENCE_OF_DIGITS_IN_NUMERIC_CHARACTER_REFERENCE => 1, self::NULL_CHARACTER_REFERENCE => 1, self::MISSING_SEMICOLON_AFTER_CHARACTER_REFERENCE => 1, self::CONTROL_CHARACTER_REFERENCE => 1, self::UNKNOWN_NAMED_CHARACTER_REFERENCE => 1, ]; public $errors = []; }