## SYNTAX TEST "Packages/HTML/HTML.sublime-syntax"
<?xml version="1.0" encoding="utf-8"?>
## <- meta.tag.preprocessor punctuation.definition.tag.begin
##^^^entity.name.tag.xml
##                                   ^ punctuation.definition.tag.end

<?xml-model>
## <- meta.tag.preprocessor.xml.html punctuation.definition.tag.begin.html
##^^^^^^^^^^ meta.tag.preprocessor.xml.html
##^^^^^^^^^ entity.name.tag.xml.html
##         ^ punctuation.definition.tag.end.html

<?xml-model  href="schemas/xhtml-strict.xsd" ?>
## <- meta.tag.preprocessor.xml.html punctuation.definition.tag.begin.html
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.preprocessor.xml.html
##^^^^^^^^^ entity.name.tag.xml.html
##           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.href.html
##                                           ^^ punctuation.definition.tag.end.html

<!DOCTYPE html SYSTEM "html5.dtd" [ <!-- comment -->
## <- meta.tag.sgml.doctype punctuation.definition.tag.begin
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.sgml.doctype
##^^^^^^^ keyword.declaration.doctype
##        ^^^^ constant.language.doctype
##             ^^^^^^ keyword.content.external
##                    ^^^^^^^^^^^ string.quoted.double
##                                ^ meta.brackets meta.internal-subset punctuation.section.brackets.begin
##                                  ^^^^^^^^^^^^^^^^ comment.block
##                                  ^^^^ punctuation.definition.comment.begin
##                                               ^^^ punctuation.definition.comment.end
    <!ENTITY name "&#160;">;
##  ^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.sgml.doctype meta.brackets meta.internal-subset
]>
## <- meta.tag.sgml.doctype meta.brackets meta.internal-subset punctuation.section.brackets.end
<!doctype html system "html5.dtd">
## <- meta.tag.sgml.doctype punctuation.definition.tag.begin
##^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.sgml.doctype
##^^^^^^^ keyword.declaration.doctype
##        ^^^^ constant.language.doctype
##             ^^^^^^ keyword.content.external
##                    ^^^^^^^^^^^ string.quoted.double
##                               ^ punctuation.definition.tag.end
<html>
    <head>
        <title>Test HTML</title>

        <script> var i = 0; </script>
        ## ^^^^^ meta.tag - source
        ##      ^^^^^^^^^^^^ source.js.embedded.html - meta.tag
        ##                  ^^^^^^^^^ meta.tag - source

        <script> var i = 0; --> </script>
        ## ^^^^^ meta.tag - source
        ##      ^^^^^^^^^^^^ source.js.embedded.html - meta.tag
        ##                  ^^^^ - meta.tag - source
        ##                  ^^^ comment.block.html punctuation.definition.comment.end.html
        ##                      ^^^^^^^^^ meta.tag - source

        <script> <!-- var i = 0; </script>
        ## ^^^^^ meta.tag - source
        ##      ^^^^^ - meta.tag - source
        ##           ^^^^^^^^^^^^ source.js.embedded.html - meta.tag
        ##                       ^^^^^^^^^ meta.tag - source
        ##       ^^^^ punctuation.definition.comment.begin.html

        <script> <!-- var i = 0; --> </script>
        ## ^^^^^ meta.tag - source
        ##      ^^^^^ - meta.tag - source
        ##       ^^^^ punctuation.definition.comment.begin.html
        ##           ^^^^^^^^^^^^ source.js.embedded.html - meta.tag
        ##                       ^^^^ - meta.tag - source
        ##                       ^^^ comment.block.html punctuation.definition.comment.end.html
        ##                           ^^^^^^^^^ meta.tag - source

        <script>
            <!--
        ## ^^^^^ - meta.tag - source
        ##  ^^^^ comment.block.html punctuation.definition.comment.begin.html
        ##      ^ - source.js.embedded - meta.tag - comment
            var i = 0;
        ## ^^^^^^^^^^^^ source.js.embedded.html - meta.tag
            -->
        ##^^ - source - meta.tag - comment
        ##  ^^^^ - source - meta.tag
        ##  ^^^ comment.block.html punctuation.definition.comment.end.html
            var i = 0;
        ## ^^^^^^^^^^^^ - source
        </script>
        ## ^^^^^^ meta.tag - source

        <script> <!--
        ## ^^^^^ meta.tag.script.begin.html
        ## ^ entity.name.tag.script - source.js.embedded.html
        ##       ^^^^ comment.block.html punctuation.definition.comment.begin.html
            var foo = 100;
            ## <- source.js.embedded.html - source.js source.js
            var baz = function() {
                ## <- entity.name.function.js
            }

            (a --> b);
            ## ^^^ source.js.embedded.html meta.group.js keyword.operator
        --> </script>
        ## <- comment.block.html punctuation.definition.comment.end.html
        ##    ^^^^^^ entity.name.tag.script.html
        ##  ^^^^^^^^^ meta.tag.script.end.html - source.js.embedded.html
        ##           ^ - meta.tag

        <script type="text/babel">var foo</script>
        ## ^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.script.begin.html
        ##                        ^^^^^^^ source.js.embedded.html
        ##                               ^^^^^^^^^ meta.tag.script.end.html

        <script type="text/javascript"> <!--
        ##^^^^^^ meta.tag.script.begin.html - meta.tag meta.tag - meta.attribute-with-value - source
        ##      ^^^^^^^^^^^^^^^^^^^^^^ meta.tag.script.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value - source
        ##                            ^ meta.tag.script.begin.html - meta.tag meta.tag - meta.attribute-with-value - source
        ##                             ^^^^^^ - meta.tag  - source
        ## ^ entity.name.tag.script
        ##            ^ string.quoted.double.html
        ##                              ^^^^ comment.block.html punctuation.definition.comment.begin.html
            var foo = 100;
            var baz = function() {
                ## <- entity.name.function.js
            }

            (a --> b);
            ## ^^^ source.js.embedded.html meta.group.js keyword.operator
        --> </script>
        ## <- comment.block.html punctuation.definition.comment.end.html
        ##  ^^^^^^^^^ meta.tag.script.end.html - source
        ##    ^^^^^^ entity.name.tag.script.html
        ##           ^ - meta.tag

        <script
        type
        ## <- meta.tag.script.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
        ></script>

        <script
        type
        =
        ## <- meta.tag.script.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
        ></script>

        <script
        type
        =
        application/jAvAsCrIpT>
        ## <- meta.tag.script.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
            var foo = 100;
        ##  ^^^^^^^^^^^^^^^ source.js.embedded
        </script>
## <- - source.js.embedded
##^^^^^^ - source.js.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type=application/json>
            {
        ##  ^ source.json.embedded.html meta.mapping.json punctuation.section.mapping.begin.json
                "key": "value",
        ##      ^^^^^ source.json.embedded.html meta.mapping.key.json
        ##             ^^^^^^^ source.json.embedded.html meta.mapping.value.json
            }
        ##  ^ source.json.embedded.html meta.mapping.json punctuation.section.mapping.end.json
        </script>
## <- - source.json.embedded
##^^^^^^ - source.json.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type="application/ld+json">
            { "@id": {"key": "value" } }
        ##  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.json.embedded.html
        </script>
## <- - source.json.embedded
##^^^^^^ - source.json.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type="application/f̱oo+json">
            { "@id": {"key": "value" } }
        ##  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - source.json
        </script>
## <- - source.json.embedded
##^^^^^^ - source.json.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type="application/ld+json;charset=utf-8">
            { "@id": {"key": "value" } }
        ##  ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.json.embedded.html
        </script>
## <- - source.json.embedded
##^^^^^^ - source.json.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type="whatever+json">
            <![CDATA[
                {
        ##      ^ meta.tag.sgml.cdata.html source.json.embedded.html meta.mapping.json punctuation.section.mapping.begin.json
                    "key": "value",
        ##          ^^^^^ meta.tag.sgml.cdata.html source.json.embedded.html meta.mapping.key.json
        ##                 ^^^^^^^ meta.tag.sgml.cdata.html source.json.embedded.html meta.mapping.value.json
                }
        ##      ^ meta.tag.sgml.cdata.html source.json.embedded.html meta.mapping.json punctuation.section.mapping.end.json
            ]]>
        </script>
## <- - source.json.embedded
##^^^^^^ - source.json.embedded
##      ^^^^^^^^^ meta.tag.script.end.html

        <script type="importmap"> { "imports": {"circle": "https://example.com/shapes/circle.js" } }</script>
        ## <- meta.tag.script.begin.html punctuation.definition.tag.begin.html
        ##^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.script.begin.html
        ##                       ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.json.embedded.html
        ##                                                                                          ^^^^^^^^^ meta.tag.script.end.html

        <script type = "text/html"> <!--
        ##^^^^^^ meta.tag.script.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ##      ^^^^^^^^^^^^^^^^^^ meta.tag.script.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
        ##                        ^ meta.tag.script.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ## ^ entity.name.tag.script - text.html.embedded.html
        ##             ^ string.quoted.double.html - text.html.embedded.html
        ##                          ^^^^ comment.block.html punctuation
            comment -->
        ##  ^^^^^^^^^^^ comment.block.html
            <div></div>
        ##  ^^^^^^^^^^^ text.html.basic meta.tag.block.any
            <script type=text/javascript>
        ##  ^ text.html.basic - source.js.embedded.html
                function test() {}
        ##  ^ text.html.basic source.js.embedded.html - source.js source.js
            </script>
        ##  ^^^^^^^^^ text.html.basic meta.tag.script.end
        </script>
##     ^ text.html.basic - meta.tag
##      ^^^^^^^^^ text.html.basic meta.tag.script.end
##               ^ text.html.basic - meta.tag

        </script>
##     ^ text.html.basic - meta.tag
##      ^^^^^^^^^ text.html.basic meta.tag.script.end
##               ^ text.html.basic - meta.tag

        <script type = "text/html;charset=utf-8,foo=bar">
            <div></div>
        ##  ^^^^^^^^^^^ text.html.basic meta.tag.block.any
        </script>

        <script>
            <!-- i = 0;
##      ^^^^^^^^ - source
##          ^^^^ punctuation.definition.comment.begin.html
##              ^^^^^^^ source.js.embedded.html
            -->
##      ^^^^^^^^ - source
##          ^^^ comment.block.html punctuation.definition.comment.end.html
        </script>

        <script>

## <- source.js.embedded.html
## ^^^^^^^^^^^^^ source.js.embedded.html
        </script>

        <script>42</script >
##      ^^^^^^^^ meta.tag.script.begin
##              ^^ source.js.embedded.html - source.js source.js
##                ^^^^^^^^^^ meta.tag.script.end

        <script
        type
        =
        'other'
        >
            var foo = 100;
        ##  ^^^^^^^^^^^^^^^ - source.js
        </script
        ##^^^^^^ meta.tag.script.end.html entity.name.tag.script.html
        >
        ## <- meta.tag.script.end.html punctuation.definition.tag.end.html

        <!-- XHTML: wrap scripts in CDATA -->
        <script><![CDATA[var i = 0;]]></script>
        ## ^^^^^ meta.tag.script.begin.html - source
        ##      ^^^^^^^^^^^^^^^^^^^^^^ meta.tag.sgml.cdata.html
        ##                            ^^^^^^^^^ meta.tag.script.end.html
        ##      ^^^ punctuation.definition.tag.begin.html
        ##         ^^^^^ keyword.declaration.cdata.html
        ##              ^ punctuation.definition.tag.begin.html
        ##               ^^^^^^^^^^ source.js.embedded.html
        ##                         ^^^ punctuation.definition.tag.end.html

        <script>
            <![CDATA[
        ## ^ - meta.tag - punctuation - source
        ##  ^^^^^^^^^^ meta.tag.sgml.cdata.html
        ##  ^^^ punctuation.definition.tag.begin.html
        ##     ^^^^^ keyword.declaration.cdata.html
        ##          ^ punctuation.definition.tag.begin.html
                var i = 0;
        ##      ^^^^^^^^^^ meta.tag.sgml.cdata.html source.js.embedded.html
            ]]>
        ## ^ meta.tag.sgml.cdata.html source.js.embedded.html
        ##  ^^^ meta.tag.sgml.cdata.html punctuation.definition.tag.end.html
        ##     ^ - meta.tag - punctuation - source
        </script>

        <script type="text/html">
            <![CDATA[
        ## ^ - meta.tag - punctuation - source
        ##  ^^^^^^^^^ meta.tag.sgml.cdata.html - meta.string
        ##           ^ meta.tag.sgml.cdata.html meta.string.html
        ##  ^^^ punctuation.definition.tag.begin.html
        ##     ^^^^^ keyword.declaration.cdata.html
        ##          ^ punctuation.definition.tag.begin.html - string
        ##           ^ string.unquoted.cdata.html
                var i = 0;
        ##    ^^^^^^^^^^^^^ meta.tag.sgml.cdata.html meta.string.html string.unquoted.cdata.html
            ]]>
        ## ^ meta.tag.sgml.cdata.html string.unquoted.cdata.html
        ##  ^^^ meta.tag.sgml.cdata.html punctuation.definition.tag.end.html
        ##     ^ - meta.tag - punctuation - source
        </script>

        <script />
        ##        ^ - source.js.embedded.html
        ## ^ meta.tag.script entity.name.tag.script

        <style type="text/css"> h1 {} </style>
        ## ^^^^^^^^^^^^^^^^^^^^ meta.tag - comment - source
        ##                     ^^^^^^^ source.css.embedded.html - meta.tag - comment
        ##                            ^^^^^^^^ meta.tag - comment - source

        <style type="text/css"> <!-- h1 {} </style>
        ## ^^^^^^^^^^^^^^^^^^^^ meta.tag - comment - source
        ##                     ^ - meta.tag - comment - source
        ##                      ^^^^ comment.block.html punctuation.definition.comment.begin.html - source
        ##                          ^^^^^^^ source.css.embedded.html - meta.tag - comment
        ##                                 ^^^^^^^^ meta.tag - comment - source

        <style type="text/css"> h1 {} --> </style>
        ## ^^^^^^^^^^^^^^^^^^^^ meta.tag - comment - source
        ##                     ^^^^^^^ source.css.embedded.html - meta.tag - comment
        ##                            ^^^ comment.block.html punctuation.definition.comment.end.html - source
        ##                               ^ - meta.tag - comment - source
        ##                                ^^^^^^^^ meta.tag - comment - source

        <style type="text/css"> <!-- h1 {} --> </style>
        ##^^^^^ meta.tag.style.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ##     ^^^^^^^^^^^^^^^ meta.tag.style.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
        ##                    ^ meta.tag.style.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ##                     ^ - meta.tag - comment - source
        ##                      ^^^^ comment.block.html punctuation.definition.comment.begin.html - source
        ##                          ^^^^^^^ source.css.embedded.html - meta.tag - comment
        ##                                 ^^^ comment.block.html punctuation.definition.comment.end.html - source
        ##                                    ^ - meta.tag - comment - source
        ##                                     ^^^^^^^^ meta.tag - meta.tag meta.tag - comment - source

        <style type  =  "text/css"> <!-- h1 {} --> </style>
        ##^^^^^ meta.tag.style.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ##     ^^^^^^^^^^^^^^^^^^^ meta.tag.style.begin.html meta.attribute-with-value.type.html - meta.tag meta.tag - meta.attribute-with-value meta.attribute-with-value
        ##                        ^ meta.tag.style.begin.html - meta.tag meta.tag - meta.attribute-with-value
        ##                         ^ - meta.tag - comment - source
        ##                          ^^^^ comment.block.html punctuation.definition.comment.begin.html - source
        ##                              ^^^^^^^ source.css.embedded.html
        ##                                     ^^^ comment.block.html punctuation.definition.comment.end.html - source
        ##                                        ^ - meta.tag - comment - source
        ##                                         ^^^^^^^^ meta.tag - meta.tag meta.tag - comment - source

        <style>

## <- source.css.embedded.html
## ^^^^^^^^^^^^^ source.css.embedded.html
        </style>
## <- - source.css.embedded
##^^^^^^ - source.css.embedded
##      ^^^^^^^^ meta.tag.style.end.html

        <style type="text/css">
            <!--
        ## ^ - meta.tag - comment - source
        ##  ^^^^ comment.block.html punctuation.definition.comment.begin.html - source
        ##      ^ - comment - source
                h1 {}
        ##     ^^^^^^^ source.css.embedded.html
            -->
        ## ^ - comment - source
        ##  ^^^ comment.block.html punctuation.definition.comment.end.html - source
        ##     ^ - meta.tag - comment - source
        </style>
        ## ^^^^^ meta.tag - comment - source

        <style type="text/css"> <!--
        ## ^^^^^^^^^^^^^^^^^^^^ meta.tag.style.begin.html - source.css
        ##                     ^^^^^^ - meta.tag - source.css
        ## ^^^ entity.name.tag.style.html
        ##    ^ - entity
        ##     ^^^^ entity.other.attribute-name
        ##         ^ punctuation.separator.key-value.html
        ##          ^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##                    ^ punctuation.definition.tag.end.html
        ##                      ^^^^ comment.block.html punctuation.definition.comment.begin.html
            h2 {
## <- source.css.embedded.html - source.css source.css
        ##  ^^ entity.name.tag.html.css
        ##     ^ punctuation.section.block.begin.css
        ;      font-family: "Arial";
        ##     ^^^^^^^^^^^ meta.property-name.css support.type.property-name.css
        ##                ^ punctuation.separator.key-value.css
        ##                  ^^^^^^^ meta.property-value.css meta.string.css string.quoted.double.css
        ##                         ^ punctuation.terminator.rule.css
            }
        --> </style>
        ## <- comment.block.html punctuation.definition.comment.end.html
        ## ^ - source.css - meta.tag - comment
        ##  ^^^^^^^^ meta.tag.style.end.html - source.css
        ##  ^^ punctuation.definition.tag.begin.html
        ##    ^^^^^ entity.name.tag.style.html
        ##         ^ punctuation.definition.tag.end.html
        ##          ^ - meta.tag

        <style
        type
        =
        text/css>
            div {}
        ##  ^^^^^^ source.css.embedded - source.css source.css
        </style>

        <style
        type
        =
        text/css_>
            div {}
        ##  ^^^^^^ - source.css
        </style
        ##^^^^^ meta.tag.style.end.html entity.name.tag.style.html
        >
        ## <- meta.tag.style.end.html punctuation.definition.tag.end.html

        <!-- XHTML: wrap style in CDATA -->
        <style><![CDATA[h1 {}]]></style>
        ## ^^^^ meta.tag.style.begin.html - source
        ##     ^^^^^^^^^^^^^^^^^ meta.tag.sgml.cdata.html
        ##                      ^^^^^^^^ meta.tag.style.end.html
        ##     ^^^ punctuation.definition.tag.begin.html
        ##        ^^^^^ keyword.declaration.cdata.html
        ##             ^ punctuation.definition.tag.begin.html
        ##              ^^^^^ source.css.embedded.html
        ##                   ^^^ punctuation.definition.tag.end.html
        ##                      ^^ punctuation.definition.tag.begin.html
        ##                        ^^^^^ entity.name.tag.style.html
        ##                             ^ punctuation.definition.tag.end.html

        <style>
            <![CDATA[
        ## ^ - meta.tag - punctuation - source
        ##  ^^^^^^^^^^ meta.tag.sgml.cdata.html
        ##  ^^^ punctuation.definition.tag.begin.html
        ##     ^^^^^ keyword.declaration.cdata.html
        ##          ^ punctuation.definition.tag.begin.html
                h1 {}
        ##     ^^^^^^^ meta.tag.sgml.cdata.html source.css.embedded.html
            ]]>
        ## ^ meta.tag.sgml.cdata.html source.css.embedded.html
        ##  ^^^ meta.tag.sgml.cdata.html punctuation.definition.tag.end.html
        ##     ^ - meta.tag - punctuation - source
        </style>

        </style>
        ##^^^^^^ meta.tag.style.end.html
        ##^^^^^ entity.name.tag.style.html
        ##     ^ punctuation.definition.tag.end.html

        <style />
        ##       ^ - source.css.embedded.html
        ## ^ meta.tag.style entity.name.tag.style

    </head>
    <body>

     <![CDATA[<!DOCTYPE catalog plist "dtd">]]>
##   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.sgml.cdata
##   ^^^ punctuation.definition.tag.begin
##      ^^^^^ keyword.declaration.cdata
##           ^ punctuation.definition.tag.begin - string
##            ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.html string.unquoted.cdata
##                                          ^ - string
##                                          ^^^ punctuation.definition.tag.end
     <![CDATA[
##  ^ - meta.tag - punctuation - source
##   ^^^^^^^^^ meta.tag.sgml.cdata.html - meta.string
##            ^ meta.tag.sgml.cdata.html meta.string.html
##   ^^^ punctuation.definition.tag.begin.html
##      ^^^^^ keyword.declaration.cdata.html
##           ^ punctuation.definition.tag.begin.html - string
##            ^ string.unquoted.cdata.html
        <!DOCTYPE catalog plist "dtd">
##      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.string.html string.unquoted.cdata
    ]]>
##  ^^^ punctuation.definition.tag.end - meta.string - string

     <![CDATA[
        <![CDATA[ unparsed! ]]>
##      ^^^^^^^^^^^^^^^^^^^^ meta.string.html string.unquoted.cdata
##      ^^^ - punctuation.definition.tag.begin
##         ^^^^^ - keyword.declaration.cdata
##              ^ - punctuation.definition.tag.begin
##                          ^^^ punctuation.definition.tag.end
    ]]>
##  ^^^ - punctuation.definition.tag.end - illegal

    <code>]]></code>
##        ^^^ - punctuation.definition.tag.end - illegal

        <!-- Comment -->
##      ^^^^^^^^^^^^^^^^ comment.block.html
##      ^^^^ punctuation.definition.comment.begin.html
##                   ^^^ punctuation.definition.comment.end.html
##          ^^^^^^^^^ - punctuation

        <!----- hyphens - -- --- -->
##      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.block - invalid.illegal.bad-comments-or-CDATA

        <!-->-- hyphens <!-- --!> <!--->
##      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.block
##          ^ invalid.illegal.bad-comments-or-CDATA
##                      ^^^^ invalid.illegal.bad-comments-or-CDATA
##                           ^^^^ invalid.illegal.bad-comments-or-CDATA
##                                ^^^ invalid.illegal.bad-comments-or-CDATA

        <!--->- hyphens <!-   -!> <!-->
##      ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ comment.block
##          ^^ invalid.illegal.bad-comments-or-CDATA
##                      ^^^^^^^^^^^^^^^ - invalid.illegal.bad-comments-or-CDATA

        <!-- 1st comment -- >
##                       ^^^^ - punctuation
        <p>Is a comment</p>
##      ^^^^^^^^^^^^^^^^^^^ comment.block
        <!-- 2nd comment -->
##      ^^^^ invalid.illegal.bad-comments-or-CDATA
##                       ^^^ punctuation.definition.comment.end.html

        <script type=html/text/>
        ##     ^ - meta.attribute-with-value
        ##      ^^^^ entity.other.attribute-name
        ##      ^^^^^^^^^^^^^^ meta.attribute-with-value
        ##           ^^^^^^^^^ string.unquoted
        ##                    ^^ punctuation.definition.tag.end.html

        <img title/>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##   ^^^^^ meta.attribute-with-value
        ##        ^^ punctuation.definition.tag.end.html

        <img src=//>
        ##  ^ - meta.attribute-with-value
        ##   ^^^ entity.other.attribute-name
        ##   ^^^^^ meta.attribute-with-value
        ##       ^ meta.path.url.html meta.string.html string.unquoted.html
        ##        ^^ punctuation.definition.tag.end.html

        <img src=/f̱oo⏡/bar/baz//>
        ##  ^ - meta.attribute-with-value
        ##   ^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##       ^^^^^^^^^^^^^^^ meta.path.url.html meta.string.html string.unquoted.html
        ##                      ^^ punctuation.definition.tag.end.html

        <!-- Match utf-8 escapes (%2F) in src tags -->
        <img src=/f̱oo⏡/bar%2Fbaz/ />
        ##  ^ - meta.attribute-with-value
        ##   ^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##       ^^^^^^^^^^^^^^^^^ meta.path.url.html meta.string.html string.unquoted.html
        ##                ^ - constant.character.escape
        ##                 ^ constant.character.escape.url.html punctuation.definition.escape.html
        ##                  ^^ constant.character.escape.url.html - punctuation.definition
        ##                    ^ - constant.character.escape
        ##                        ^ - meta.attribute-with-value
        ##                         ^^ punctuation.definition.tag.end.html

        <!-- Match utf-8 escapes (%2F) in href tags -->
        <img href="/foo%2Fbar.com" />
        ##  ^ - meta.attribute-with-value
        ##   ^^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##        ^ meta.string.html string.quoted.double.html punctuation.definition.string.begin.html - meta.path
        ##         ^^^^^^^^^^^^^^ meta.path.url.html meta.string.html string.quoted.double.html
        ##             ^ constant.character.escape.url.html punctuation.definition.escape.html
        ##              ^^ constant.character.escape.url.html - punctuation.definition
        ##                       ^ meta.string.html string.quoted.double.html punctuation.definition.string.end.html - meta.path
        ##                        ^ - meta.attribute-with-value
        ##                         ^^ punctuation.definition.tag.end.html

        <!-- Don't match utf-8 escapes (%2F) in other than href/src tags -->
        <img title="http://foo%2Fbar.com" />
        ##  ^ - meta.attribute-with-value
        ##   ^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##         ^^^^^^^^^^^^^^^^^^^^^^ string.quoted.double - constant.character.escape - meta.path
        ##                               ^ - meta.attribute-with-value
        ##                                ^^ punctuation.definition.tag.end.html

        <img title=foo"/>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^ meta.attribute-with-value
        ##         ^^^^ string.unquoted.html
        ##            ^ invalid.illegal.attribute-value.html
        ##             ^^ punctuation.definition.tag.end.html

        <img title=/f̱oo⏡/"bar"/baz//>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##         ^^^^^^^^^^^^^^^^^ string.unquoted.html
        ##                ^ invalid.illegal.attribute-value.html
        ##                    ^ invalid.illegal.attribute-value.html
        ##                          ^^ punctuation.definition.tag.end.html

        <div title=description></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##   ^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##         ^^^^^^^^^^^ string.unquoted

<div
title="description"></div>
## <- entity.other.attribute-name

<div
title = "description"></div>
## <- entity.other.attribute-name
##    ^ punctuation.separator.key-value.html
##      ^^^^^^^^^^^^^ string

<div title=
    "description"></div>
##  ^^^^^^^^^^^^^ string

<div title
    ="description"></div>
##  ^ punctuation.separator.key-value
##   ^^^^^^^^^^^^^ string

<div title="description"
class="foo"></div>
## <- entity.other.attribute-name.class

        <div title='description'></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##         ^^^^^^^^^^^^^ meta.string.html string.quoted.single.html
        ##         ^ punctuation.definition.string.begin
        ##                     ^ punctuation.definition.string.end

        <div title="description"></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name
        ##         ^^^^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##         ^ punctuation.definition.string.begin
        ##                     ^ punctuation.definition.string.end

        <div id()=MyId></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^ entity.other.attribute-name.html
        ##   ^^^^^^^^^ meta.attribute-with-value - meta.attribute-with-value.id
        ##        ^^^^ string.unquoted - meta.toc-list.id

        <DIV ID=MYID></DIV>
        ##  ^ - meta.attribute-with-value
        ##   ^^ entity.other.attribute-name.id
        ##   ^^^^^^^ meta.attribute-with-value.id
        ##      ^^^^ meta.toc-list.id string.unquoted

        <div id=MyId></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^ entity.other.attribute-name.id
        ##   ^^^^^^^ meta.attribute-with-value.id
        ##      ^^^^ meta.toc-list.id meta.string.html string.unquoted

        <div id=My&#x49;d></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^ entity.other.attribute-name.id
        ##   ^^^^^^^^^^^^ meta.attribute-with-value.id
        ##      ^^^^^^^^^ meta.toc-list.id meta.string.html string.unquoted
        ##        ^^^^^^ constant.character.entity.hexadecimal

        <div id='MyId2'></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^ meta.attribute-with-value.id
        ##   ^^ entity.other.attribute-name.id
        ##      ^^^^^^^ meta.string.html string.quoted.single.html
        ##      ^ punctuation.definition.string.begin - meta.toc-list.id
        ##       ^^^^^ meta.toc-list.id
        ##            ^ punctuation.definition.string.end - meta.toc-list.id

        <div id="ElementID"></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^ meta.attribute-with-value.id
        ##   ^^ entity.other.attribute-name.id
        ##      ^^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##      ^ punctuation.definition.string.begin - meta.toc-list.id
        ##       ^^^^^^^^^ meta.toc-list.id
        ##                ^ punctuation.definition.string.end - meta.toc-list.id

        <div id=el-&foo;" bar&baz;></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^ entity.other.attribute-name.id
        ##   ^^^^^^^^^^^^ meta.attribute-with-value.id
        ##      ^^^^^^^^^ meta.toc-list.id meta.string.html string.unquoted
        ##         ^^^^^ constant.character.entity.named
        ##              ^ invalid.illegal.attribute-value.html
        ##               ^ - meta.attribute-with-value - entity - constant - string - punctuation
        ##                ^^^^^^^^ meta.attribute-with-value entity.other.attribute-name

        <div id='el-&foo;" bar&baz;'></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.id
        ##   ^^ entity.other.attribute-name.id
        ##      ^^^^^^^^^^^^^^^^^^^^ meta.string.html string.quoted.single.html
        ##      ^ punctuation.definition.string.begin - meta.toc-list.id
        ##       ^^^^^^^^^ meta.toc-list.id
        ##          ^^^^^ constant.character.entity
        ##                ^ - meta.toc-list.id
        ##                 ^^^^^^^^ meta.toc-list.id
        ##                    ^^^^^ constant.character.entity
        ##                         ^ punctuation.definition.string.end - meta.toc-list.id

        <div id="el-&foo;' bar&baz;"></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.id
        ##   ^^ entity.other.attribute-name.id
        ##      ^^^^^^^^^^^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##      ^ punctuation.definition.string.begin - meta.toc-list.id
        ##       ^^^^^^^^^ meta.toc-list.id
        ##          ^^^^^ constant.character.entity
        ##                ^ - meta.toc-list.id
        ##                 ^^^^^^^^ meta.toc-list.id
        ##                    ^^^^^ constant.character.entity
        ##                         ^ punctuation.definition.string.end - meta.toc-list.id

        <div class*=element-class></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^ entity.other.attribute-name.html
        ##   ^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value - meta.attribute-with-value.class
        ##          ^^^^^^^^^^^^^ string.unquoted - meta.class-name

        <DIV CLASS=ELEMENT-CLASS></DIV>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name.class
        ##   ^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##         ^^^^^^^^^^^^^ meta.class-name string.unquoted

        <div class=element-class></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name.class
        ##   ^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##         ^^^^^^^^^^^^^ meta.class-name meta.string.html string.unquoted.html

        <div class=element&#xAD;class></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name.class
        ##   ^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##         ^^^^^^^^^^^^^^^^^^ meta.class-name meta.string.html string.unquoted.html
        ##                ^^^^^^ constant.character.entity.hexadecimal

        <div class='element-class'></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##   ^^^^^ entity.other.attribute-name.class
        ##         ^^^^^^^^^^^^^^^ meta.string.html string.quoted.single.html
        ##         ^ punctuation.definition.string.begin - meta.class-name
        ##          ^^^^^^^^^^^^^ meta.class-name
        ##                       ^ punctuation.definition.string.end - meta.class-name

        <div class="element-class"></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##   ^^^^^ entity.other.attribute-name.class
        ##         ^^^^^^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##         ^ punctuation.definition.string.begin - meta.class-name
        ##          ^^^^^^^^^^^^^ meta.class-name
        ##                       ^ punctuation.definition.string.end - meta.class-name

        <div class=el-&foo;" bar&baz;></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^ entity.other.attribute-name.class
        ##   ^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##         ^^^^^^^^^ meta.class-name meta.string.html string.unquoted.html
        ##            ^^^^^ constant.character.entity.named
        ##                 ^ invalid.illegal.attribute-value.html
        ##                  ^ - meta.attribute-with-value - entity - constant - string - punctuation
        ##                   ^^^^^^^^ meta.attribute-with-value entity.other.attribute-name

        <div class='el-&foo;" bar&baz;'></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##   ^^^^^ entity.other.attribute-name.class
        ##         ^^^^^^^^^^^^^^^^^^^^ meta.string.html string.quoted.single.html
        ##         ^ punctuation.definition.string.begin - meta.class-name
        ##          ^^^^^^^^^ meta.class-name
        ##             ^^^^^ constant.character.entity
        ##                   ^ - meta.class-name
        ##                    ^^^^^^^^ meta.class-name
        ##                       ^^^^^ constant.character.entity
        ##                            ^ punctuation.definition.string.end - meta.class-name

        <div class="el-&foo;' bar&baz;"></div>
        ##  ^ - meta.attribute-with-value
        ##   ^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.class
        ##   ^^^^^ entity.other.attribute-name.class
        ##         ^^^^^^^^^^^^^^^^^^^^ meta.string.html string.quoted.double.html
        ##         ^ punctuation.definition.string.begin - meta.class-name
        ##          ^^^^^^^^^ meta.class-name
        ##             ^^^^^ constant.character.entity
        ##                   ^ - meta.class-name
        ##                    ^^^^^^^^ meta.class-name
        ##                       ^^^^^ constant.character.entity
        ##                            ^ punctuation.definition.string.end - meta.class-name

        <div style="width: 100%"></div>
        ##  ^ - meta.attribute-with-value.style
        ##   ^^^^^^^^^^^^^^^^^^^ - meta.attribute-with-value.style meta.attribute-with-value.style
        ##   ^^^^^^ meta.attribute-with-value.style.html - meta.string - string - source.css
        ##         ^ meta.attribute-with-value.style.html meta.string.html - source.css
        ##          ^^^^^^^^^^^ meta.attribute-with-value.style.html meta.string.html source.css.embedded.html - string
        ##                     ^ meta.attribute-with-value.style.html meta.string.html - source.css
        ##   ^^^^^ entity.other.attribute-name.style.html
        ##        ^ punctuation.separator.key-value.html
        ##         ^ string.quoted.double.html punctuation.definition.string.begin.html
        ##                     ^ string.quoted.double.html punctuation.definition.string.end.html
        ##          ^^^^^ meta.property-name.css support.type.property-name.css
        ##                 ^^^ meta.property-value.css meta.number.integer.decimal.css constant.numeric.value.css
        ##                    ^ meta.property-value.css meta.number.integer.decimal.css constant.numeric.suffix.css

        <div style='width: 100%;'></div>
        ##  ^ - meta.attribute-with-value.style
        ##   ^^^^^^^^^^^^^^^^^^^^ - meta.attribute-with-value.style meta.attribute-with-value.style
        ##   ^^^^^^ meta.attribute-with-value.style.html - meta.string - string - source.css
        ##         ^ meta.attribute-with-value.style.html meta.string.html - source.css
        ##          ^^^^^^^^^^^^ meta.attribute-with-value.style.html meta.string.html source.css.embedded.html - string
        ##                      ^ meta.attribute-with-value.style.html meta.string.html - source.css
        ##   ^^^^^ entity.other.attribute-name.style.html
        ##        ^ punctuation.separator.key-value.html
        ##         ^ string.quoted.single.html punctuation.definition.string.begin.html
        ##                      ^ string.quoted.single.html punctuation.definition.string.end.html
        ##          ^^^^^ meta.property-name.css support.type.property-name.css
        ##                 ^^^ meta.property-value.css meta.number.integer.decimal.css constant.numeric.value.css
        ##                    ^ meta.property-value.css meta.number.integer.decimal.css constant.numeric.suffix.css

        <tag attr otherattr attr-with-dashes attr_with_underscores attr.with.dot attr.with.dot.value="val"></tag>
        ##   ^ entity.other.attribute-name.html
        ##        ^ entity.other.attribute-name.html
        ##                  ^ entity.other.attribute-name.html
        ##                                   ^ entity.other.attribute-name.html
        ##                                                         ^^^^^^^^^^^^^ entity.other.attribute-name.html
        ##                                                                       ^^^^^^^^^^^^^^^^^^^ entity.other.attribute-name.html

        <tag "f'o`o<bar"="bar"></tag>
        ##   ^^^^^^^^^^^^^^^^^ meta.attribute-with-value.html
        ##   ^^^^^^^^^^^ entity.other.attribute-name.html
        ##   ^ invalid.illegal.attribute-name.html
        ##     ^ invalid.illegal.attribute-name.html
        ##       ^ invalid.illegal.attribute-name.html
        ##         ^ invalid.illegal.attribute-name.html
        ##             ^ invalid.illegal.attribute-name.html

        <tag *([&\=></tag>
        ##   ^^^^^^^ - invalid
        ##   ^^^^^ entity.other.attribute-name
        ##        ^ punctuation.separator.key-value

        <tag    foo	bar></tag>Mind the tab character!
        ##      ^^^ entity.other.attribute-name
        ##         ^ - entity.other.attribute-name
        ##          ^^^ entity.other.attribute-name

        <tag foo=a bar=b></tag>
        ##   ^^^ entity.other.attribute-name
        ##       ^ string.unquoted
        ##         ^^^ entity.other.attribute-name
        ##             ^ string.unquoted

        <a disabled onclick="setTimeout(function(){}, 100)">Test</a>
        ##^ - meta.attribute-with-value
        ## ^^^^^^^^ meta.attribute-with-value.html
        ##         ^ - meta.attribute-with-value.event
        ##          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.attribute-with-value meta.attribute-with-value - source.js source.js
        ##          ^^^^^^^^ meta.attribute-with-value.event - meta.string
        ##                  ^ meta.attribute-with-value.event.html meta.string.html
        ##                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.event.html meta.string.html
        ##                                                ^ meta.attribute-with-value.event.html meta.string.html
        ## ^^^^^^^^ entity.other.attribute-name
        ##                  ^ string.quoted.double.html punctuation.definition.string.begin.html - source.js
        ##                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.js.embedded.html - string
        ##                                                ^ string.quoted.double.html punctuation.definition.string.end.html - source.js
        ##                   ^ meta.function-call.js support.function

        <a disabled onclick='setTimeout(function(){}, 100)'>Test</a>
        ##^ - meta.attribute-with-value
        ## ^^^^^^^^ meta.attribute-with-value.html
        ##         ^ - meta.attribute-with-value.event
        ##          ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.attribute-with-value meta.attribute-with-value - source.js source.js
        ##          ^^^^^^^^ meta.attribute-with-value.event - meta.string
        ##                  ^ meta.attribute-with-value.event.html meta.string.html
        ##                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.attribute-with-value.event.html meta.string.html
        ##                                                ^ meta.attribute-with-value.event.html meta.string.html
        ## ^^^^^^^^ entity.other.attribute-name
        ##                  ^ string.quoted.single.html punctuation.definition.string.begin.html - source.js
        ##                   ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ source.js.embedded.html - string
        ##                                                ^ string.quoted.single.html punctuation.definition.string.end.html - source.js
        ##                   ^ meta.function-call.js support.function

        <article><span><othertag></othertag><othertag /></span></article>
        ## ^^^^^ entity.name.tag.block.any.html
        ##        ^^^^ entity.name.tag.inline.any.html
        ##              ^^^^^^^^ entity.name.tag.other.html
        ##                                           ^ - punctuation.definition.tag.end.html
        ##                                            ^^ meta.tag.other.html punctuation.definition.tag.end.html

        <slot name=""></slot>
        ## <- meta.tag.block.any.html punctuation.definition.tag.begin.html
        ##^^^^^^^^^^^^^^^^^^^ meta.tag.block.any.html
        ##^^^ entity.name.tag.block.any.html
        ##    ^^^^ meta.attribute-with-value.html entity.other.attribute-name.html
        ##        ^ meta.attribute-with-value.html punctuation.separator.key-value.html
        ##         ^^ meta.attribute-with-value.html meta.string.html string.quoted.double.html
        ##           ^ punctuation.definition.tag.end.html
        ##            ^^ punctuation.definition.tag.begin.html
        ##              ^^^^ entity.name.tag.block.any.html
        ##                  ^ punctuation.definition.tag.end.html

        <body·other attrib=1/>
        ## ^^^^^^^^ entity.name.tag.other.html
        ##          ^^^^^^ entity.other.attribute-name.html

        <xsl:tag></xsl:tag>
        ##^^^^^^ entity.name.tag.other.html
        ##         ^^^^^^^ entity.name.tag.other.html

        <t*([&/>
        ##^^^^ entity.name.tag.other.html
        ##    ^^ punctuation.definition.tag.end.html

        <t*℗[& *([&\="₦"></t*([&>
        ##^^^^ entity.name.tag.other.html
        ##^^^^^^^^^^^^^^^^^^^^^^^ - invalid
        ##     ^^^^^ entity.other.attribute-name.html
        ##          ^ punctuation.separator.key-value.html
        ##           ^^^ string.quoted.double.html
        ##              ^ punctuation.definition.tag.end.html
        ##               ^^ punctuation.definition.tag.begin.html
        ##                 ^^^^^ entity.name.tag.other.html
        ##                      ^ punctuation.definition.tag.end.html

        <form-custom-tag><div-custom-tag><span-custom-tag></span-custom-tag></div-custom-tag></form-custom-tag>
        ##^^^^^^^^^^^^^^ entity.name.tag.other.html
        ##                ^^^^^^^^^^^^^^ entity.name.tag.other.html
        ##                                ^^^^^^^^^^^^^^^ entity.name.tag.other.html
        ##                                                  ^^^^^^^^^^^^^^^ entity.name.tag.other.html
        ##                                                                    ^^^^^^^^^^^^^^ entity.name.tag.other.html

        <test-custom-tag/>
        ##^^^^^^^^^^^^^^^^ meta.tag.other.html - invalid
        ##              ^^ punctuation.definition.tag.end.html
        ##                ^ - meta.tag.other.html - punctuation.definition.tag.end.html

        <body-custom·tag₡name/>
        ## ^^^^^^^^^^^^^^^^^^ entity.name.tag.other.html - invalid

        <body.tag-custom.name/>
        ## ^^^^^^^^^^^^^^^^^^ entity.name.tag.other.html - invalid

        <svg:p d=M232.233,220/>
        ## ^^^ entity.name.tag.other.html - invalid
        ##     ^ entity.other.attribute-name.html
        ##      ^ punctuation.separator.key-value.html
        ##       ^^^^^^^^^^^^ meta.string.html string.unquoted.html
        ##                   ^^ punctuation.definition.tag.end.html

        <INVALID-custom-TAG></INVALID-CUSTOM-TAG>
        ## ^^^^^^^^^^^^^^^^ entity.name.tag.other.html
        ##                    ^^^^^^^^^^^^^^^^^^ entity.name.tag.other.html

        <body:tag-other.name/>
        ## ^^^^^^^^^^^^^^^^^ entity.name.tag.other.html - invalid

        <A{{template}} {{attr}}={{value}} />
        ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ meta.tag.other.html
        ## ^^^^^^^^^^^ entity.name.tag.other.html
        ##             ^^^^^^^^ entity.other.attribute-name.html
        ##                     ^ punctuation.separator.key-value.html
        ##                      ^^^^^^^^^ meta.string.html string.unquoted.html
        ##                                ^^ punctuation.definition.tag.end.html

        <!-- Note: Templating syntaxes must handle the following cases on their own! -->

        <{{template}} {{attr}}={{value}} />
        ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.tag

        <[[template]] [[attr]]=[[value]] />
        ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.tag

        <<?php echo $tagname ?> attr="<? echo value ?>" />
        ## ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^ - meta.tag

        <form name="formName" type="post">
        ## ^ entity.name.tag.block.form.html
        ## <- punctuation.definition.tag.begin.html
        ##                               ^ punctuation.definition.tag.end.html
            <label for="inputId">
            ## ^ entity.name.tag.inline.form.html
            ##     ^ entity.other.attribute-name.html
            ##        ^ punctuation.separator.key-value.html
            <input id="inputId" type="text" value="value">
            ## ^ entity.name.tag.inline.form.html
            ##                   ^ entity.other.attribute-name.html
            <textarea name="textareaName"></textarea>
            ## ^ entity.name.tag.inline.form.html
        </form>

        <table border="0" cellspacing="0" cellpadding="2" class="editor">
        ## ^ entity.name.tag.inline.table.html
            <thead>
            ## ^ entity.name.tag.inline.table.html
                <tr>
            ##   ^ entity.name.tag.inline.table.html
                    <th> </th>
                </tr>
            </thead>
            ## ^ entity.name.tag.inline.table.html
            <tfoot>
            ## ^ entity.name.tag.inline.table.html
                <tr>
                    <td> </td>
                    ##^ entity.name.tag.inline.table.html
                </tr>
            </tfoot>
            ## ^ entity.name.tag.inline.table.html
            <tbody>
                <tr>
                    <td> </td>
                </tr>
            </tbody>
        </table>

        &amp;
##      ^^^^^ constant.character.entity.named
##      ^ punctuation.definition.entity
##          ^ punctuation.terminator.entity

        &#123;
##      ^^^^^^ constant.character.entity.decimal
##      ^^ punctuation.definition.entity
##           ^ punctuation.terminator.entity

        &#x7f;
##      ^^^^^^ constant.character.entity.hexadecimal
##      ^^^ punctuation.definition.entity
##           ^ punctuation.terminator.entity

        &#X7F;
##      ^^^^^^ constant.character.entity.hexadecimal
##      ^^^ punctuation.definition.entity
##           ^ punctuation.terminator.entity

        &β;
##      ^^^ - constant.character.entity

        &#;
##      ^^^ - constant.character.entity

        &#x;
##      ^^^^ - constant.character.entity


        <a href="http://google%20api.com/?one=1&amp;two=2#anchor"></a>
        ##           ^^^ punctuation.separator.path.html
        ##                    ^^^ constant.character.escape.url
        ##                              ^^ punctuation.separator.path.html
        ##                                     ^^^^^ constant.character.entity - punctuation.separator
        ##                                               ^ punctuation.separator.path.html
        <a href="http://google.com/?one=1&two=2#anchor"></a>
        ##           ^^^ punctuation.separator.path.html
        ##                        ^^ punctuation.separator.path.html
        ##                               ^ punctuation.separator.path.html - constant.character.entity
        ##                                     ^ punctuation.separator.path.html

        <hr/><hr />
        ## ^^ meta.tag.block.any punctuation.definition.tag.end
        ##    ^^ entity.name.tag.block.any
        ##       ^^ punctuation.definition.tag.end

        # make sure to stop tag names before the next < to prevent php
        # and other syntaxes from breaking.
        <article<?php>
        ##^^^^^^ entity.name.tag.block.any.html
        ##      ^^^^^^ - entity.name.tag

        <_notag>
        ##^^^^^ - entity.name.tag
        ## <- meta.character.less-than.html

        <2notag>
        ##^^^^^ - entity.name.tag
        ## <- meta.character.less-than.html

        <
        ## <- meta.character.less-than.html

        <> < >
        ## <- meta.tag.incomplete.html invalid.illegal.incomplete.html punctuation.definition.tag.begin.html
         ## <- meta.tag.incomplete.html invalid.illegal.incomplete.html punctuation.definition.tag.end.html
        ##^ - meta.tag
        ## ^^^ meta.tag.incomplete.html invalid.illegal.incomplete.html
        ## ^ punctuation.definition.tag.begin.html
        ##   ^ punctuation.definition.tag.end.html
        ##    ^ - meta.tag

        </> < />
        ## <- meta.tag.incomplete.html invalid.illegal.incomplete.html punctuation.definition.tag.begin.html
         ## <- meta.tag.incomplete.html invalid.illegal.incomplete.html punctuation.definition.tag.end.html
          ## <- meta.tag.incomplete.html invalid.illegal.incomplete.html punctuation.definition.tag.end.html
        ## ^ - meta.tag
        ##  ^^^^ meta.tag.incomplete.html invalid.illegal.incomplete.html
        ##  ^ punctuation.definition.tag.begin.html
        ##    ^^ punctuation.definition.tag.end.html
        ##      ^ - meta.tag

    </body>
    # ^^^^ entity.name.tag.structure
</html>
