--- 
name: XHTML 1.0 Strict
scopeName: text.html.xhtml.1-strict
repository: 
  tag-textarea: 
    endCaptures: 
      "1": 
        name: meta.tag.form.textarea.html
      "4": 
        name: entity.name.tag.form.textarea.html
    begin: (<(textarea)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.form.textarea.html
      "2": 
        name: entity.name.tag.form.textarea.html
    end: ((/>)|((textarea)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.form.textarea.html
      begin: (?<=[^/]>)
      end: (</(?=option))
      patterns: 
      - include: "#pcdata"
    - name: meta.tag.form.textarea.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-cols"
      - include: "#attribute-disabled"
      - include: "#attribute-name"
      - include: "#attribute-onchange"
      - include: "#attribute-onselect"
      - include: "#attribute-readonly"
      - include: "#attribute-rows"
      - include: "#attributes-group-common"
      - include: "#attributes-group-focus"
      - include: "#attributes-illegal_char"
  tag-h3: 
    captures: 
      "1": 
        name: meta.tag.block.h3.html
      "2": 
        name: entity.name.tag.block.h3.html
    begin: (<(h3)\b)
    end: ((h3)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h3.html
      begin: (?<=>)
      end: (</(?=h3))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h3.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  bad-tags: 
    patterns: 
    - name: invalid.illegal.invalid_placement
      captures: 
        "1": 
          name: invalid.deprecated.invalid_placement
      begin: </?(a|abbr|acronym|address|area|b|base|bdo|big|blockquote|body|br|button|caption|cite|code|col|colgroup|dd|del|dfn|div|dl|dt|em|fieldset|form|h[1-6]|head|hr|html|i|img|input|ins|kbd|label|legend|li|link|map|meta|noscript|object|ol|optgroup|option|p|param|pre|q|samp|script|select|small|span|strong|style|sub|sup|table|tbody|td|textarea|tfoot|th|thead|title|tr|tt|ul|var)\b
      end: ">"
    - name: invalid.illegal.unrecognized_tag
      captures: 
        "1": 
          name: invalid.deprecated.no_longer_valid
      begin: </?(basefont|center|dir|font|isindex|menu|s|strike|u)\b
      end: ">"
    - name: invalid.illegal.unrecognized_tag
      begin: <
      end: ">"
  attribute-archive: 
    name: meta.attribute-with-value.html
    begin: (archive)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-cols: 
    name: meta.attribute-with-value.html
    begin: (cols)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  xml-preprocessor: 
    name: meta.tag.preprocessor.xml.html
    captures: 
      "1": 
        name: entity.name.tag.xml.html
    begin: <\?([\w-]*)
    end: \?>
    patterns: 
    - name: meta.attribute-with-value.html
      captures: 
        "1": 
          name: entity.other.attribute-name.html
        "3": 
          name: string.quoted.double.html
        "4": 
          name: string.quoted.single.html
        "5": 
          name: string.unquoted.html
      match: ([\w-]*)=((".*?")|('.*?')|((\?(?!>)|[^"'>\s\?])+))
    comment: "Bug: Too general, needs to highlight errors better."
  tag-tt: 
    captures: 
      "1": 
        name: meta.tag.inline.tt.html
      "2": 
        name: entity.name.tag.inline.tt.html
    begin: (<(tt)\b)
    end: ((tt)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.tt.html
      begin: (?<=>)
      end: (</(?=tt))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.tt.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-style: 
    captures: 
      "1": 
        name: meta.tag.meta.style.html
      "2": 
        name: entity.name.tag.meta.style.html
    begin: (<(style)\b)
    end: ((style)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.meta.style.html
      begin: (?<=>)
      contentName: source.css.embedded.html
      end: (</(?=style))
      patterns: 
      - include: "#sgml-comment"
      - name: meta.scope.xml-cdata.html
        begin: <!\[CDATA\[
        end: "]]>"
        patterns: 
        - include: source.css
      - name: invalid.illegal.char_not_allowed
        match: <|>|]]>|--
      - include: "#entities"
      - include: source.css
    - name: meta.tag.meta.style.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-xml:space"
      - include: "#attribute-id"
      - include: "#attribute-title"
      - include: "#attribute-media"
      - include: "#attribute-type"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
    comment: "Bug: Invalid chars are sometimes picked up by the js syntax first."
  tag-h4: 
    captures: 
      "1": 
        name: meta.tag.block.h4.html
      "2": 
        name: entity.name.tag.block.h4.html
    begin: (<(h4)\b)
    end: ((h4)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h4.html
      begin: (?<=>)
      end: (</(?=h4))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h4.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-special.pre: 
    patterns: 
    - include: "#tag-br"
    - include: "#tag-span"
    - include: "#tag-bdo"
    - include: "#tag-map"
  attribute-codebase: 
    name: meta.attribute-with-value.html
    begin: (codebase)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-ol: 
    name: meta.section.html.ol.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.block.ol.html
      "2": 
        name: entity.name.tag.block.ol.html
    begin: (<(ol)\b)
    end: ((ol)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.ol.html
      begin: (?<=>)
      end: (</(?=ol))
      patterns: 
      - include: "#tag-li"
      - include: "#no-pcdata"
    - name: meta.tag.block.ol.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-i: 
    captures: 
      "1": 
        name: meta.tag.inline.i.html
      "2": 
        name: entity.name.tag.inline.i.html
    begin: (<(i)\b)
    end: ((i)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.i.html
      begin: (?<=>)
      end: (</(?=i))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.i.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-html: 
    name: meta.section.html.html.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.segment.html.html
      "2": 
        name: entity.name.tag.segment.html.html
    begin: (<(html)\b)
    end: ((html)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.segment.html.html
      begin: (?<=>)
      end: (</(?=html))
      patterns: 
      - include: "#tag-head"
      - include: "#tag-body"
      - include: "#no-pcdata"
    - name: meta.tag.segment.html.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-xmlns"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  tag-area: 
    endCaptures: 
      "1": 
        name: meta.tag.meta.area.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(area)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.meta.area.html
      "2": 
        name: entity.name.tag.meta.area.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.meta.area.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-alt"
      - include: "#attribute-coords"
      - include: "#attribute-href"
      - include: "#attribute-nohref"
      - include: "#attribute-shape"
      - include: "#attributes-group-common"
      - include: "#attributes-group-focus"
      - include: "#attributes-illegal_char"
  attribute-width: 
    name: meta.attribute-with-value.html
    begin: (width)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  attribute-size: 
    name: meta.attribute-with-value.html
    begin: (size)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-usemap: 
    name: meta.attribute-with-value.html
    begin: (usemap)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-thead: 
    captures: 
      "1": 
        name: meta.tag.block.thead.html
      "2": 
        name: entity.name.tag.block.thead.html
    begin: (<(thead)\b)
    end: ((thead)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.thead.html
      begin: (?<=>)
      end: (</(?=thead))
      patterns: 
      - include: "#tag-tr"
      - include: "#no-pcdata"
    - name: meta.tag.block.thead.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-h5: 
    captures: 
      "1": 
        name: meta.tag.block.h5.html
      "2": 
        name: entity.name.tag.block.h5.html
    begin: (<(h5)\b)
    end: ((h5)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h5.html
      begin: (?<=>)
      end: (</(?=h5))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h5.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-inline-master: 
    patterns: 
    - include: "#tag-group-inline"
    - include: "#tag-group-misc.inline"
    - include: "#pcdata"
  tag-col: 
    endCaptures: 
      "1": 
        name: meta.tag.block.col.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(col)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.col.html
      "2": 
        name: entity.name.tag.block.col.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.block.col.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-span"
      - include: "#attribute-valign"
      - include: "#attribute-width-multi"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-style: 
    name: meta.attribute-with-value.html
    begin: (style)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      contentName: source.css.embedded.html
      end: "\""
      patterns: 
      - include: source.css
    - name: string.quoted.single.html
      begin: (?<!"|')'
      contentName: source.css.embedded.html
      end: "'"
      patterns: 
      - include: source.css
  attribute-profile: 
    name: meta.attribute-with-value.html
    begin: (profile)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-disabled: 
    name: meta.attribute-with-value.html
    begin: (disabled)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')disabled(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')disabled(?="|')
      - include: "#values-generic-invalid"
  tag-h6: 
    captures: 
      "1": 
        name: meta.tag.block.h6.html
      "2": 
        name: entity.name.tag.block.h6.html
    begin: (<(h6)\b)
    end: ((h6)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h6.html
      begin: (?<=>)
      end: (</(?=h6))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h6.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-del: 
    captures: 
      "1": 
        name: meta.tag.inline.del.html
      "2": 
        name: entity.name.tag.inline.del.html
    begin: (<(del)\b)
    end: ((del)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.del.html
      begin: (?<=>)
      end: (</(?=del))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.inline.del.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-cite"
      - include: "#attribute-datetime"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-code: 
    captures: 
      "1": 
        name: meta.tag.inline.code.html
      "2": 
        name: entity.name.tag.inline.code.html
    begin: (<(code)\b)
    end: ((code)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.code.html
      begin: (?<=>)
      end: (</(?=code))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.code.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-marginheight: 
    name: meta.attribute-with-value.html
    begin: (marginheight)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-action: 
    name: meta.attribute-with-value.html
    begin: (action)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-xmlns: 
    name: meta.attribute-with-value.html
    begin: (xmlns)\s*=\s*(?=(["']).*?["'][^"'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')http://www.w3.org/1999/xhtml(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')http://www.w3.org/1999/xhtml(?="|')
      - include: "#values-generic-invalid"
  attribute-valign: 
    name: meta.attribute-with-value.html
    begin: (valign)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(top|middle|bottom|baseline)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(top|middle|bottom|baseline)(?="|')
      - include: "#values-generic-invalid"
  attribute-longdesc: 
    name: meta.attribute-with-value.html
    begin: (longdesc)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-ul: 
    name: meta.section.html.ul.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.block.ul.html
      "2": 
        name: entity.name.tag.block.ul.html
    begin: (<(ul)\b)
    end: ((ul)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.ul.html
      begin: (?<=>)
      end: (</(?=ul))
      patterns: 
      - include: "#tag-li"
      - include: "#no-pcdata"
    - name: meta.tag.block.ul.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-tbody: 
    captures: 
      "1": 
        name: meta.tag.block.tbody.html
      "2": 
        name: entity.name.tag.block.tbody.html
    begin: (<(tbody)\b)
    end: ((tbody)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.tbody.html
      begin: (?<=>)
      end: (</(?=tbody))
      patterns: 
      - include: "#tag-tr"
      - include: "#no-pcdata"
    - name: meta.tag.block.tbody.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-ins: 
    captures: 
      "1": 
        name: meta.tag.inline.ins.html
      "2": 
        name: entity.name.tag.inline.ins.html
    begin: (<(ins)\b)
    end: ((ins)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.ins.html
      begin: (?<=>)
      end: (</(?=ins))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.inline.ins.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-cite"
      - include: "#attribute-datetime"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-title: 
    name: meta.attribute-with-value.html
    begin: (title)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-valuetype: 
    name: meta.attribute-with-value.html
    begin: (valuetype)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(data|ref|object)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(data|ref|object)(?="|')
      - include: "#values-generic-invalid"
  attribute-http-equiv: 
    name: meta.attribute-with-value.html
    begin: (http-equiv)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    comment: "Bug: This may not take into account all possible characters in NMTOKEN."
  attribute-enctype: 
    name: meta.attribute-with-value.html
    begin: (enctype)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-cellpadding: 
    name: meta.attribute-with-value.html
    begin: (cellpadding)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  tag-acronym: 
    captures: 
      "1": 
        name: meta.tag.inline.acronym.html
      "2": 
        name: entity.name.tag.inline.acronym.html
    begin: (<(acronym)\b)
    end: ((acronym)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.acronym.html
      begin: (?<=>)
      end: (</(?=acronym))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.acronym.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-cite: 
    name: meta.attribute-with-value.html
    begin: (cite)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-meta: 
    endCaptures: 
      "1": 
        name: meta.tag.meta.meta.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(meta)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.meta.meta.html
      "2": 
        name: entity.name.tag.meta.meta.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.meta.meta.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-id"
      - include: "#attribute-content"
      - include: "#attribute-http-equiv"
      - include: "#attribute-name"
      - include: "#attribute-scheme"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  tag-dl: 
    name: meta.section.html.dl.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.block.dl.html
      "2": 
        name: entity.name.tag.block.dl.html
    begin: (<(dl)\b)
    end: ((dl)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.dl.html
      begin: (?<=>)
      end: (</(?=dl))
      patterns: 
      - include: "#tag-dt"
      - include: "#tag-dd"
      - include: "#no-pcdata"
    - name: meta.tag.block.dl.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-width-multi: 
    name: meta.attribute-with-value.html
    begin: (width)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}\*?|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}\*?|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  attributes-group-focus: 
    patterns: 
    - include: "#attribute-accesskey"
    - include: "#attribute-tabindex"
    - include: "#attribute-onfocus"
    - include: "#attribute-onblur"
  sgml-comment: 
    name: comment.block.html
    begin: <!--
    end: --\s*>
    patterns: 
    - name: invalid.deprecated.bad-comment-ending-token.html
      match: --(?!\s*>)
    comment: Does not allow the closing bracket to be on a diff line that the --, which as far as I can tell is legal.
  attribute-nohref: 
    name: meta.attribute-with-value.html
    begin: (nohref)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')nohref(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')nohref(?="|')
      - include: "#values-generic-invalid"
  attribute-onblur: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onblur)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-checked: 
    name: meta.attribute-with-value.html
    begin: (checked)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')checked(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')checked(?="|')
      - include: "#values-generic-invalid"
  tag-small: 
    captures: 
      "1": 
        name: meta.tag.inline.small.html
      "2": 
        name: entity.name.tag.inline.small.html
    begin: (<(small)\b)
    end: ((small)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.small.html
      begin: (?<=>)
      end: (</(?=small))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.small.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-script: 
    endCaptures: 
      "1": 
        name: meta.tag.block.script.html
      "4": 
        name: entity.name.tag.block.script.html
    begin: (<(script)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.script.html
      "2": 
        name: entity.name.tag.block.script.html
    end: ((/>)|((script)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.script.html
      begin: (?<=[^/]>)
      contentName: source.js.embedded.html
      end: (</(?=script))
      patterns: 
      - include: "#sgml-comment"
      - name: meta.scope.xml-cdata.html
        begin: <!\[CDATA\[
        end: "]]>"
        patterns: 
        - include: source.js
      - name: invalid.illegal.char_not_allowed
        match: <|>|]]>|--
      - include: "#entities"
      - include: source.js
    - name: meta.tag.block.script.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-xml:space"
      - include: "#attribute-id"
      - include: "#attribute-defer"
      - include: "#attribute-src"
      - include: "#attribute-type"
      - include: "#attribute-charset"
      - include: "#attributes-illegal_char"
    comment: "Bug: Invalid chars are sometimes picked up by the js syntax first."
  tag-form: 
    name: meta.section.html.form.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.block.form.html
      "2": 
        name: entity.name.tag.block.form.html
    begin: (<(form)\b)
    end: ((form)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.form.html
      begin: (?<=>)
      end: (</(?=form))
      patterns: 
      - include: "#tag-group-form.content"
      - include: "#no-pcdata"
    - name: meta.tag.block.form.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-accept"
      - include: "#attribute-accept-charset"
      - include: "#attribute-action"
      - include: "#attribute-method"
      - include: "#attribute-onreset"
      - include: "#attribute-onsubmit"
      - include: "#attribute-enctype"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-src: 
    name: meta.attribute-with-value.html
    begin: (src)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-defer: 
    name: meta.attribute-with-value.html
    begin: (defer)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')defer(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')defer(?="|')
      - include: "#values-generic-invalid"
  tag-p: 
    captures: 
      "1": 
        name: meta.tag.block.p.html
      "2": 
        name: entity.name.tag.block.p.html
    begin: (<(p)\b)
    end: ((p)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.p.html
      begin: (?<=>)
      end: (</(?=p))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.p.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-option: 
    endCaptures: 
      "1": 
        name: meta.tag.block.option.html
      "4": 
        name: entity.name.tag.block.option.html
    begin: (<(option)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.option.html
      "2": 
        name: entity.name.tag.block.option.html
    end: ((/>)|((option)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.option.html
      begin: (?<=[^/]>)
      end: (</(?=option))
      patterns: 
      - include: "#pcdata"
    - name: meta.tag.block.option.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-disabled"
      - include: "#attribute-label"
      - include: "#attribute-selected"
      - include: "#attribute-value"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-block: 
    patterns: 
    - include: "#tag-p"
    - include: "#tag-div"
    - include: "#tag-fieldset"
    - include: "#tag-table"
    - include: "#tag-group-heading"
    - include: "#tag-group-lists"
    - include: "#tag-group-blocktext"
  attribute-onload: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onload)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-name: 
    name: meta.attribute-with-value.html
    begin: (name)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: "[\\w\\-:.]+"
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: "[\\w\\-:.]+"
      - include: "#values-generic-invalid"
    comment: "Bug: This may not take into account all possible characters in NMTOKEN."
  sgml-declarations-preprocessor: 
    begin: (?=<!)
    applyEndPatternLast: "1"
    end: (?<=>)
    patterns: 
    - name: meta.tag.sgml.doctype.html
      captures: 
        "1": 
          name: entity.name.tag.doctype.html
      begin: <!(DOCTYPE\b)
      end: ">"
      patterns: 
      - name: string.quoted.double.doctype.identifiers-and-DTDs.html
        match: "\"[^\">]*\""
    - include: "#sgml-declarations"
  attribute-media: 
    name: meta.attribute-with-value.html
    begin: (media)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(screen|tty|tv|projection|handheld|print|braille|aural|all)(,\s*(screen|tty|tv|projection|handheld|print|braille|aural|all))*(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(screen|tty|tv|projection|handheld|print|braille|aural|all)(,\s*(screen|tty|tv|projection|handheld|print|braille|aural|all))*(?="|')
      - include: "#values-generic-invalid"
  tag-q: 
    captures: 
      "1": 
        name: meta.tag.inline.q.html
      "2": 
        name: entity.name.tag.inline.q.html
    begin: (<(q)\b)
    end: ((q)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.q.html
      begin: (?<=>)
      end: (</(?=q))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.q.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-cite"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-ismap: 
    name: meta.attribute-with-value.html
    begin: (ismap)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')ismap(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')ismap(?="|')
      - include: "#values-generic-invalid"
  attribute-value: 
    name: meta.attribute-with-value.html
    begin: (value)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-type: 
    name: meta.attribute-with-value.html
    begin: (type)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-marginwidth: 
    name: meta.attribute-with-value.html
    begin: (marginwidth)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  tag-table: 
    name: meta.section.html.table.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.block.table.html
      "2": 
        name: entity.name.tag.block.table.html
    begin: (<(table)\b)
    end: ((table)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.table.html
      begin: (?<=>)
      end: (</(?=table))
      patterns: 
      - include: "#tag-caption"
      - begin: (?<=</caption>)
        end: (?=<(?!/?caption))
        patterns: 
        - include: "#stray-char"
        - include: "#sgml-declarations"
      - begin: (?=<(?!/?table))
        end: (?=</table)
        patterns: 
        - begin: (?=<(colgroup|col))
          applyEndPatternLast: "1"
          end: (?=<)
          patterns: 
          - begin: (?=<colgroup)
            end: (?=<(?!colgroup|col))
            patterns: 
            - include: "#tag-colgroup"
            - include: "#stray-char"
            - include: "#sgml-declarations"
          - begin: (?=<col)
            end: (?=<(?!colgroup|col))
            patterns: 
            - include: "#tag-col"
            - include: "#stray-char"
            - include: "#sgml-declarations"
          comment: "Bug: This should use the generic invalid tag."
        - begin: (?=<(?!/?table))
          end: (?=</table)
          patterns: 
          - include: "#tag-thead"
          - begin: (?<=</thead>)
            end: (?=</table)
            patterns: 
            - include: "#tag-tfoot"
            - begin: (?<=</tfoot>)
              end: (?=</table)
              patterns: 
              - include: "#tag-tbody"
              - include: "#stray-char"
              - include: "#sgml-declarations"
            - begin: (?=<(?!/?table))
              end: (?=</table)
              patterns: 
              - include: "#tag-tbody"
              - include: "#stray-char"
              - include: "#sgml-declarations"
            - include: "#stray-char"
            - include: "#sgml-declarations"
          - begin: (?=<(?!/?table))
            end: (?=</table)
            patterns: 
            - include: "#tag-tfoot"
            - begin: (?<=</tfoot>)
              end: (?=</table)
              patterns: 
              - include: "#tag-tbody"
              - include: "#stray-char"
              - include: "#sgml-declarations"
            - begin: (?=<(?!/?table))
              end: (?=</table)
              patterns: 
              - begin: (?=<tbody)
                end: (?=</table)
                patterns: 
                - include: "#tag-tbody"
                - include: "#stray-char"
                - include: "#sgml-declarations"
              - begin: (?=<tr)
                end: (?=</table)
                patterns: 
                - include: "#tag-tr"
                - include: "#stray-char"
                - include: "#sgml-declarations"
              - include: "#stray-char"
              - include: "#sgml-declarations"
            - include: "#stray-char"
            - include: "#sgml-declarations"
          - include: "#stray-char"
          - include: "#sgml-declarations"
        - include: "#stray-char"
        - include: "#sgml-declarations"
      - include: "#no-pcdata"
    - name: meta.tag.block.table.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-border"
      - include: "#attribute-cellpadding"
      - include: "#attribute-cellspacing"
      - include: "#attribute-frame"
      - include: "#attribute-rules"
      - include: "#attribute-summary"
      - include: "#attribute-width"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-button.content: 
    patterns: 
    - include: "#tag-p"
    - include: "#tag-group-heading"
    - include: "#tag-div"
    - include: "#tag-group-lists"
    - include: "#tag-group-blocktext"
    - include: "#tag-table"
    - include: "#tag-group-special"
    - include: "#tag-group-fontstyle"
    - include: "#tag-group-phrase"
    - include: "#tag-group-misc"
    - include: "#pcdata"
  tag-big: 
    captures: 
      "1": 
        name: meta.tag.inline.big.html
      "2": 
        name: entity.name.tag.inline.big.html
    begin: (<(big)\b)
    end: ((big)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.big.html
      begin: (?<=>)
      end: (</(?=big))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.big.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-multiple: 
    name: meta.attribute-with-value.html
    begin: (multiple)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')multiple(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')multiple(?="|')
      - include: "#values-generic-invalid"
  attribute-datapagesize: 
    name: meta.attribute-with-value.html
    begin: (datapagesize)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-strong: 
    captures: 
      "1": 
        name: meta.tag.inline.strong.html
      "2": 
        name: entity.name.tag.inline.strong.html
    begin: (<(strong)\b)
    end: ((strong)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.strong.html
      begin: (?<=>)
      end: (</(?=strong))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.strong.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-char: 
    name: meta.attribute-with-value.html
    begin: (char)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[[:alnum:]](?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[[:alnum:]](?="|')
      - include: "#values-generic-invalid"
    comment: "Bug: Does not correctly represent the single Character attribute."
  stray-char: 
    name: invalid.illegal.character_data_not_allowed_here
    tooltip: Characters not allowed here, try adding a block level tag first.
    match: "[^<>\\s][^<>]*"
  attribute-height: 
    name: meta.attribute-with-value.html
    begin: (height)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  attribute-charoff: 
    name: meta.attribute-with-value.html
    begin: (charoff)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  attribute-span: 
    name: meta.attribute-with-value.html
    begin: (span)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-selected: 
    name: meta.attribute-with-value.html
    begin: (selected)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')selected(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')selected(?="|')
      - include: "#values-generic-invalid"
  values-generic-invalid: 
    patterns: 
    - name: invalid.illegal.incorrect-value.html
      match: (?<="|').*?(?="|')
  attribute-onfocus: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onfocus)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  tag-group-fontstyle: 
    patterns: 
    - include: "#tag-tt"
    - include: "#tag-i"
    - include: "#tag-b"
    - include: "#tag-big"
    - include: "#tag-small"
  tag-blockquote: 
    captures: 
      "1": 
        name: meta.tag.block.blockquote.html
      "2": 
        name: entity.name.tag.block.blockquote.html
    begin: (<(blockquote)\b)
    end: ((blockquote)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.blockquote.html
      begin: (?<=>)
      end: (</(?=blockquote))
      patterns: 
      - include: "#tag-group-block-master"
      - include: "#no-pcdata"
    - name: meta.tag.block.blockquote.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-cite"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-rel: 
    name: meta.attribute-with-value.html
    begin: (rel)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-accept-charset: 
    name: meta.attribute-with-value.html
    begin: (accept-charset)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-scope: 
    name: meta.attribute-with-value.html
    begin: (scope)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(row|col|rowgroup|colgroup)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(row|col|rowgroup|colgroup)(?="|')
      - include: "#values-generic-invalid"
  tag-group-flow: 
    patterns: 
    - include: "#tag-group-block"
    - include: "#tag-group-inline"
    - include: "#tag-group-misc"
    - include: "#tag-form"
    - include: "#pcdata"
  tag-button: 
    endCaptures: 
      "1": 
        name: meta.tag.form.button.html
      "4": 
        name: entity.name.tag.form.button.html
    begin: (<(button)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.form.button.html
      "2": 
        name: entity.name.tag.form.button.html
    end: ((/>)|((button)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.form.button.html
      begin: (?<=[^/]>)
      end: (</(?=button))
      patterns: 
      - include: "#tag-group-button.content"
    - name: meta.tag.form.button.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-disabled"
      - include: "#attribute-name"
      - include: "#attribute-type-button"
      - include: "#attribute-value"
      - include: "#attributes-group-common"
      - include: "#attributes-group-focus"
      - include: "#attributes-illegal_char"
  attributes-group-common: 
    patterns: 
    - include: "#attributes-group-core"
    - include: "#attributes-group-events"
    - include: "#attributes-group-i18n"
  tag-dt: 
    captures: 
      "1": 
        name: meta.tag.block.dt.html
      "2": 
        name: entity.name.tag.block.dt.html
    begin: (<(dt)\b)
    end: ((dt)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.dt.html
      begin: (?<=>)
      end: (</(?=dt))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.dt.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-colgroup: 
    endCaptures: 
      "1": 
        name: meta.tag.block.colgroup.html
      "4": 
        name: entity.name.tag.block.colgroup.html
    begin: (<(colgroup)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.colgroup.html
      "2": 
        name: entity.name.tag.block.colgroup.html
    end: ((/>)|((colgroup)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.colgroup.html
      begin: (?<=[^/]>)
      end: (</(?=colgroup))
      patterns: 
      - include: "#tag-col"
      - include: "#no-pcdata"
    - name: meta.tag.block.colgroup.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-span"
      - include: "#attribute-valign"
      - include: "#attribute-width-multi"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-tabindex: 
    name: meta.attribute-with-value.html
    begin: (tabindex)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attributes-group-core: 
    patterns: 
    - include: "#attribute-class"
    - include: "#attribute-id"
    - include: "#attribute-title"
    - include: "#attribute-style"
  tag-group-block-master: 
    patterns: 
    - include: "#tag-group-block"
    - include: "#tag-group-misc"
    - include: "#tag-form"
  tag-cite: 
    captures: 
      "1": 
        name: meta.tag.inline.cite.html
      "2": 
        name: entity.name.tag.inline.cite.html
    begin: (<(cite)\b)
    end: ((cite)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.cite.html
      begin: (?<=>)
      end: (</(?=cite))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.cite.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-onreset: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onreset)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-xml:lang: 
    name: meta.attribute-with-value.html
    begin: (xml:lang)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    comment: "Bug: This may not take into account all possible characters in NMTOKEN."
  tag-link: 
    endCaptures: 
      "1": 
        name: meta.tag.meta.link.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(link)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.meta.link.html
      "2": 
        name: entity.name.tag.meta.link.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.meta.link.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-charset"
      - include: "#attribute-href"
      - include: "#attribute-hreflang"
      - include: "#attribute-media"
      - include: "#attribute-rel"
      - include: "#attribute-rev"
      - include: "#attribute-type"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-img: 
    endCaptures: 
      "1": 
        name: meta.tag.object.img.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(img)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.object.img.html
      "2": 
        name: entity.name.tag.object.img.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.object.img.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-alt"
      - include: "#attribute-height"
      - include: "#attribute-usemap"
      - include: "#attribute-ismap"
      - include: "#attribute-longdesc"
      - include: "#attribute-src"
      - include: "#attribute-width"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-special: 
    patterns: 
    - include: "#tag-group-special.pre"
    - include: "#tag-object"
    - include: "#tag-img"
    - include: "#tag-h4"
    - include: "#tag-h5"
    - include: "#tag-h6"
  tag-group-lists: 
    patterns: 
    - include: "#tag-ul"
    - include: "#tag-ol"
    - include: "#tag-dl"
  attribute-hreflang: 
    name: meta.attribute-with-value.html
    begin: (hreflang)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    comment: "Bug: This may not take into account all possible characters in NMTOKEN."
  attributes-illegal_char: 
    name: invalid.illegal.unrecognized-character.html
    match: /(?!>)|[^\s/>]
  attribute-maxlength: 
    name: meta.attribute-with-value.html
    begin: (maxlength)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-abbr: 
    name: meta.attribute-with-value.html
    begin: (abbr)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-method: 
    name: meta.attribute-with-value.html
    begin: (method)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(get|post)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(get|post)(?="|')
      - include: "#values-generic-invalid"
  tag-group-heading: 
    patterns: 
    - include: "#tag-h1"
    - include: "#tag-h2"
    - include: "#tag-h3"
    - include: "#tag-h4"
    - include: "#tag-h5"
    - include: "#tag-h6"
  tag-dfn: 
    captures: 
      "1": 
        name: meta.tag.inline.dfn.html
      "2": 
        name: entity.name.tag.inline.dfn.html
    begin: (<(dfn)\b)
    end: ((dfn)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.dfn.html
      begin: (?<=>)
      end: (</(?=dfn))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.dfn.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-type-button: 
    name: meta.attribute-with-value.html
    begin: (type)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(button|submit|reset)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(button|submit|reset)(?="|')
      - include: "#values-generic-invalid"
  attribute-classid: 
    name: meta.attribute-with-value.html
    begin: (classid)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-charset: 
    name: meta.attribute-with-value.html
    begin: (charset)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-rules: 
    name: meta.attribute-with-value.html
    begin: (rules)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(none|groups|rows|cols|all)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(none|groups|rows|cols|all)(?="|')
      - include: "#values-generic-invalid"
  tag-noscript: 
    captures: 
      "1": 
        name: meta.tag.block.noscript.html
      "2": 
        name: entity.name.tag.block.noscript.html
    begin: (<(noscript)\b)
    end: ((noscript)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.noscript.html
      begin: (?<=>)
      end: (</(?=noscript))
      patterns: 
      - include: "#tag-group-block-master"
      - include: "#no-pcdata"
    - name: meta.tag.block.noscript.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-label: 
    captures: 
      "1": 
        name: meta.tag.inline.label.html
      "2": 
        name: entity.name.tag.inline.label.html
    begin: (<(label)\b)
    end: ((label)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.label.html
      begin: (?<=>)
      end: (</(?=label))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.label.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-accesskey"
      - include: "#attribute-for"
      - include: "#attribute-onblur"
      - include: "#attribute-onfocus"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-label: 
    name: meta.attribute-with-value.html
    begin: (label)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-summary: 
    name: meta.attribute-with-value.html
    begin: (summary)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-for: 
    name: meta.attribute-with-value.html
    begin: (for)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attributes-group-events: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onclick|ondblclick|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: (?<!"|')"
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: (?<!"|')'
        contentName: source.js.embedded.html
        end: "'"
  tag-sub: 
    captures: 
      "1": 
        name: meta.tag.inline.sub.html
      "2": 
        name: entity.name.tag.inline.sub.html
    begin: (<(sub)\b)
    end: ((sub)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.sub.html
      begin: (?<=>)
      end: (</(?=sub))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.sub.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-em: 
    captures: 
      "1": 
        name: meta.tag.inline.em.html
      "2": 
        name: entity.name.tag.inline.em.html
    begin: (<(em)\b)
    end: ((em)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.em.html
      begin: (?<=>)
      end: (</(?=em))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.em.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-onchange: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onchange)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-align: 
    name: meta.attribute-with-value.html
    begin: (align)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(left|center|right|justify|char)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(left|center|right|justify|char)(?="|')
      - include: "#values-generic-invalid"
  tag-td: 
    endCaptures: 
      "1": 
        name: meta.tag.block.td.html
      "4": 
        name: entity.name.tag.block.td.html
    begin: (<(td)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.td.html
      "2": 
        name: entity.name.tag.block.td.html
    end: ((/>)|((td)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.td.html
      begin: (?<=[^/]>)
      end: (</(?=td))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.block.td.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-abbr"
      - include: "#attribute-align"
      - include: "#attribute-axis"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-colspan"
      - include: "#attribute-headers"
      - include: "#attribute-rowspan"
      - include: "#attribute-scope"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-id: 
    name: meta.attribute-with-value.html
    begin: (id)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[a-zA-Z][a-zA-Z0-9\-_:.]*(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[a-zA-Z][a-zA-Z0-9\-_:.]*(?="|')
      - include: "#values-generic-invalid"
  attribute-declare: 
    name: meta.attribute-with-value.html
    begin: (declare)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')declare(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')declare(?="|')
      - include: "#values-generic-invalid"
  tag-var: 
    captures: 
      "1": 
        name: meta.tag.inline.var.html
      "2": 
        name: entity.name.tag.inline.var.html
    begin: (<(var)\b)
    end: ((var)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.var.html
      begin: (?<=>)
      end: (</(?=var))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.var.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-span: 
    captures: 
      "1": 
        name: meta.tag.inline.span.html
      "2": 
        name: entity.name.tag.inline.span.html
    begin: (<(span)\b)
    end: ((span)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.span.html
      begin: (?<=>)
      end: (</(?=span))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.span.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-kbd: 
    captures: 
      "1": 
        name: meta.tag.inline.kbd.html
      "2": 
        name: entity.name.tag.inline.kbd.html
    begin: (<(kbd)\b)
    end: ((kbd)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.kbd.html
      begin: (?<=>)
      end: (</(?=kbd))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.kbd.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-iframe: 
    captures: 
      "1": 
        name: meta.tag.block.iframe.html
      "2": 
        name: entity.name.tag.block.iframe.html
    begin: (<(iframe)\b)
    end: ((iframe)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.iframe.html
      begin: (?<=>)
      end: (</(?=iframe))
      patterns: 
      - include: "#tag-group-flow"
      - include: "#sgml-declarations"
      - include: "#entities"
    - name: meta.tag.block.iframe.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-frameborder"
      - include: "#attribute-height"
      - include: "#attribute-longdesc"
      - include: "#attribute-marginheight"
      - include: "#attribute-marginwidth"
      - include: "#attribute-scrolling"
      - include: "#attribute-src"
      - include: "#attribute-width"
      - include: "#attributes-group-core"
      - include: "#attributes-illegal_char"
  tag-caption: 
    captures: 
      "1": 
        name: meta.tag.block.caption.html
      "2": 
        name: entity.name.tag.block.caption.html
    begin: (<(caption)\b)
    end: ((caption)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.caption.html
        "2": 
          name: entity.name.tag.block.caption.html
      begin: (?<=>)
      end: (</(?=caption))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.caption.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-datetime: 
    name: meta.attribute-with-value.html
    begin: (datetime)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{4}-(0[1-9]|1[012])-((?!00|3[2-9])[0-3][0-9])T((?!2[4-9])[0-2][0-9]):[0-5][0-9]:[0-5][0-9](Z|[-+]((?!2[4-9])[0-2][0-9]):[0-5][0-9]))(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{4}-(0[1-9]|1[012])-((?!00|3[2-9])[0-3][0-9])T((?!2[4-9])[0-2][0-9]):[0-5][0-9]:[0-5][0-9](Z|[-+]((?!2[4-9])[0-2][0-9]):[0-5][0-9]))(?="|')
      - include: "#values-generic-invalid"
  tag-optgroup: 
    captures: 
      "1": 
        name: meta.tag.block.optgroup.html
      "2": 
        name: entity.name.tag.block.optgroup.html
    begin: (<(optgroup)\b)
    end: ((optgroup)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.optgroup.html
      begin: (?<=>)
      end: (</(?=optgroup))
      patterns: 
      - include: "#tag-option"
      - include: "#no-pcdata"
    - name: meta.tag.block.optgroup.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-disabled"
      - include: "#attribute-label"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-pre.content: 
    patterns: 
    - include: "#tag-a"
    - include: "#tag-group-fontstyle"
    - include: "#tag-group-phrase"
    - include: "#tag-group-special.pre"
    - include: "#tag-group-misc.inline"
    - include: "#tag-group-inline.forms"
    - include: "#pcdata"
  tag-group-misc: 
    patterns: 
    - include: "#tag-group-misc.inline"
    - include: "#tag-noscript"
  attribute-rev: 
    name: meta.attribute-with-value.html
    begin: (rev)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-group-a.content: 
    patterns: 
    - include: "#tag-group-special"
    - include: "#tag-group-fontstyle"
    - include: "#tag-group-phrase"
    - include: "#tag-group-inline.forms"
    - include: "#tag-group-misc.inline"
    - include: "#pcdata"
  tag-br: 
    endCaptures: 
      "1": 
        name: meta.tag.block.br.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(br)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.br.html
      "2": 
        name: entity.name.tag.block.br.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.block.br.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attributes-group-core"
      - include: "#attributes-illegal_char"
  attribute-readonly: 
    name: meta.attribute-with-value.html
    begin: (readonly)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')readonly(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')readonly(?="|')
      - include: "#values-generic-invalid"
  tag-th: 
    endCaptures: 
      "1": 
        name: meta.tag.block.th.html
      "4": 
        name: entity.name.tag.block.th.html
    begin: (<(th)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.th.html
      "2": 
        name: entity.name.tag.block.th.html
    end: ((/>)|((th)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.th.html
      begin: (?<=[^/]>)
      end: (</(?=th))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.block.th.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-abbr"
      - include: "#attribute-align"
      - include: "#attribute-axis"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-colspan"
      - include: "#attribute-headers"
      - include: "#attribute-rowspan"
      - include: "#attribute-scope"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-select: 
    captures: 
      "1": 
        name: meta.tag.form.select.html
      "2": 
        name: entity.name.tag.form.select.html
    begin: (<(select)\b)
    end: ((select)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.form.select.html
      begin: (?<=>)
      end: (</(?=select))
      patterns: 
      - include: "#tag-optgroup"
      - include: "#tag-option"
      - include: "#no-pcdata"
    - name: meta.tag.form.select.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-disabled"
      - include: "#attribute-multiple"
      - include: "#attribute-name"
      - include: "#attribute-onblur"
      - include: "#attribute-onfocus"
      - include: "#attribute-onchange"
      - include: "#attribute-size"
      - include: "#attribute-tabindex"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-map: 
    captures: 
      "1": 
        name: meta.tag.block.map.html
      "2": 
        name: entity.name.tag.block.map.html
    begin: (<(map)\b)
    end: ((map)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.map.html
      begin: (?<=>)
      end: (</(?=map))
      patterns: 
      - include: "#stray-char"
      - include: "#sgml-declarations"
      - begin: (?=<area)
        end: (?=</map)
        patterns: 
        - include: "#tag-area"
        - include: "#no-pcdata"
      - begin: (?=<(?!/?(map|area)))
        end: (?=</map)
        patterns: 
        - include: "#tag-group-misc"
        - include: "#tag-group-block"
        - include: "#tag-form"
        - include: "#no-pcdata"
    - name: meta.tag.block.map.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-class"
      - include: "#attribute-id"
      - include: "#attribute-style"
      - include: "#attribute-name"
      - include: "#attribute-title"
      - include: "#attributes-group-events"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  tag-head: 
    name: meta.section.html.head.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.segment.head.html
      "2": 
        name: entity.name.tag.segment.head.html
    begin: (<(head)\b)
    end: ((head)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.segment.head.html
      begin: (?<=>)
      end: (</(?=head))
      patterns: 
      - include: "#tag-title"
      - include: "#tag-base"
      - include: "#tag-meta"
      - include: "#tag-link"
      - include: "#tag-object"
      - include: "#tag-script"
      - include: "#tag-style"
      - include: "#no-pcdata"
    - name: meta.tag.segment.head.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-id"
      - include: "#attribute-profile"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  tag-group-blocktext: 
    patterns: 
    - include: "#tag-pre"
    - include: "#tag-hr"
    - include: "#tag-blockquote"
    - include: "#tag-address"
  attribute-frameborder: 
    name: meta.attribute-with-value.html
    begin: (frameborder)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[01](?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[01](?="|')
      - include: "#values-generic-invalid"
  attribute-codetype: 
    name: meta.attribute-with-value.html
    begin: (codetype)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-href: 
    name: meta.attribute-with-value.html
    begin: (href)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-lang: 
    name: meta.attribute-with-value.html
    begin: (lang)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: "[\\w\\-:]+"
      - include: "#values-generic-invalid"
    comment: "Bug: This may not take into account all possible characters in NMTOKEN."
  attribute-shape: 
    name: meta.attribute-with-value.html
    begin: (shape)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(rect|circle|poly|default)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(rect|circle|poly|default)(?="|')
      - include: "#values-generic-invalid"
  attribute-scrolling: 
    name: meta.attribute-with-value.html
    begin: (scrolling)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(yes|no|auto)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(yes|no|auto)(?="|')
      - include: "#values-generic-invalid"
  values-generic-valid: 
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - include: "#entities"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - include: "#entities"
  tag-tfoot: 
    captures: 
      "1": 
        name: meta.tag.block.tfoot.html
      "2": 
        name: entity.name.tag.block.tfoot.html
    begin: (<(tfoot)\b)
    end: ((tfoot)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.tfoot.html
      begin: (?<=>)
      end: (</(?=tfoot))
      patterns: 
      - include: "#tag-tr"
      - include: "#no-pcdata"
    - name: meta.tag.block.tfoot.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-xml:space: 
    name: meta.attribute-with-value.html
    begin: (xml:space)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')preserve(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')preserve(?="|')
      - include: "#values-generic-invalid"
  tag-hr: 
    endCaptures: 
      "1": 
        name: meta.tag.block.hr.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(hr)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.block.hr.html
      "2": 
        name: entity.name.tag.block.hr.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.block.hr.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-misc.inline: 
    patterns: 
    - include: "#tag-ins"
    - include: "#tag-del"
    - include: "#tag-script"
  tag-group-inline: 
    patterns: 
    - include: "#tag-a"
    - include: "#tag-group-special"
    - include: "#tag-group-fontstyle"
    - include: "#tag-group-phrase"
    - include: "#tag-group-inline.forms"
  tag-bdo: 
    captures: 
      "1": 
        name: meta.tag.block.bdo.html
      "2": 
        name: entity.name.tag.block.bdo.html
    begin: (<(bdo)\b)
    end: ((bdo)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.bdo.html
      begin: (?<=>)
      end: (</(?=bdo))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.bdo.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-dir"
      - include: "#attributes-group-core"
      - include: "#attributes-group-events"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  attribute-onsubmit: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onsubmit)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-data: 
    name: meta.attribute-with-value.html
    begin: (data)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-standby: 
    name: meta.attribute-with-value.html
    begin: (standby)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-accept: 
    name: meta.attribute-with-value.html
    begin: (accept)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-rows: 
    name: meta.attribute-with-value.html
    begin: (rows)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attributes-group-i18n: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (dir)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: (?<!"|')"
        end: "\""
        patterns: 
        - match: (?<="|')(ltr|rtl)(?="|')
        - include: "#values-generic-invalid"
      - name: string.quoted.single.html
        begin: (?<!"|')'
        end: "'"
        patterns: 
        - match: (?<="|')(ltr|rtl)(?="|')
        - include: "#values-generic-invalid"
    - include: "#attribute-xml:lang"
    - include: "#attribute-lang"
  tag-fieldset: 
    captures: 
      "1": 
        name: meta.tag.block.fieldset.html
      "2": 
        name: entity.name.tag.block.fieldset.html
    begin: (<(fieldset)\b)
    end: ((fieldset)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.fieldset.html
      begin: (?<=>)
      end: (</(?=fieldset))
      patterns: 
      - include: "#tag-legend"
      - include: "#tag-form"
      - include: "#tag-group-block"
      - include: "#tag-group-inline"
      - include: "#tag-group-misc"
      - include: "#pcdata"
    - name: meta.tag.block.fieldset.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-div: 
    captures: 
      "1": 
        name: meta.tag.block.div.html
      "2": 
        name: entity.name.tag.block.div.html
    begin: (<(div)\b)
    end: ((div)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.div.html
      begin: (?<=>)
      end: (</(?=div))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.block.div.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-body: 
    name: meta.section.html.body.xhtml.1-strict
    captures: 
      "1": 
        name: meta.tag.segment.body.html
      "2": 
        name: entity.name.tag.segment.body.html
    begin: (<(body)\b)
    end: ((body)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.segment.body.html
      begin: (?<=>)
      end: (</(?=body))
      patterns: 
      - include: "#tag-group-block-master"
      - include: "#no-pcdata"
    - name: meta.tag.segment.body.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-onload"
      - include: "#attribute-onunload"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  sgml-declarations: 
    begin: (?=<!)
    applyEndPatternLast: "1"
    end: (?<=>)
    patterns: 
    - name: meta.tag.sgml.empty.html
      match: <!\s*>
    - name: invalid.illegal.bad-comments-or-CDATA.html
      begin: <!(?!DOCTYPE|--|\[CDATA\[)
      end: ">"
    - name: meta.tag.preprocessor.server-side-includes.html
      captures: 
        "1": 
          name: support.function.server-side-include.html
      begin: <!--(#\s*(include|config|echo|exec|fsize|flastmod|printenv|set))
      end: -->
      patterns: 
      - name: meta.preprocessor.server-side-includes.html
        captures: 
          "1": 
            name: entity.other.attribute-name.html
          "3": 
            name: string.quoted.double.html
          "4": 
            name: string.quoted.single.html
          "5": 
            name: string.unquoted.html
        match: (errmsg|sizefmt|timefmt|var|encoding|cgi|cmd|file|virtual|value)=((".*?")|('.*?')|([^"'>\s]+))
    - include: "#sgml-comment"
    - name: meta.scope.xml-cdata.html
      begin: <!\[CDATA\[
      end: "]]>"
  attribute-cellspacing: 
    name: meta.attribute-with-value.html
    begin: (cellpadding)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')([0-9]{0,5}|[0-9]{0,4}%)(?="|')
      - include: "#values-generic-invalid"
  attribute-scheme: 
    name: meta.attribute-with-value.html
    begin: (scheme)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-class: 
    name: meta.attribute-with-value.html
    begin: (class)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-abbr: 
    captures: 
      "1": 
        name: meta.tag.inline.abbr.html
      "2": 
        name: entity.name.tag.inline.abbr.html
    begin: (<(abbr)\b)
    end: ((abbr)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.abbr.html
      begin: (?<=>)
      end: (</(?=abbr))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.abbr.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  no-pcdata: 
    patterns: 
    - include: "#sgml-declarations"
    - include: "#entities"
    - include: "#stray-char"
    - include: "#bad-tags"
  attribute-alt: 
    name: meta.attribute-with-value.html
    begin: (alt)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-a: 
    captures: 
      "1": 
        name: meta.tag.inline.a.html
      "2": 
        name: entity.name.tag.inline.a.html
    begin: (<(a)\b)
    end: ((a)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.a.html
      begin: (?<=>)
      end: (</(?=a))
      patterns: 
      - include: "#tag-group-a.content"
    - name: meta.tag.inline.a.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-charset"
      - include: "#attribute-href"
      - include: "#attribute-hreflang"
      - include: "#attribute-name"
      - include: "#attribute-rel"
      - include: "#attribute-rev"
      - include: "#attribute-target"
      - include: "#attribute-type"
      - include: "#attribute-shape"
      - include: "#attribute-coords"
      - include: "#attributes-group-common"
      - include: "#attributes-group-focus"
      - include: "#attributes-illegal_char"
  entities: 
    patterns: 
    - name: constant.character.entity.html
      match: "&([a-zA-Z]+|#[0-9]+|#x[0-9a-fA-F]+);"
    - name: invalid.illegal.bad-ampersand.html
      match: "&(?!([a-zA-Z]+|#[0-9]+|#x[0-9a-fA-F]+);)"
  attribute-axis: 
    name: meta.attribute-with-value.html
    begin: (axis)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-b: 
    captures: 
      "1": 
        name: meta.tag.inline.b.html
      "2": 
        name: entity.name.tag.inline.b.html
    begin: (<(b)\b)
    end: ((b)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.b.html
      begin: (?<=>)
      end: (</(?=b))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.b.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  pcdata: 
    patterns: 
    - include: "#sgml-declarations"
    - include: "#entities"
    - include: "#bad-tags"
  attribute-headers: 
    name: meta.attribute-with-value.html
    begin: (headers)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[a-zA-Z][a-zA-Z0-9\-_:.]*(\s+[a-zA-Z][a-zA-Z0-9\-_:.]*)*(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[a-zA-Z][a-zA-Z0-9\-_:.]*(\s+[a-zA-Z][a-zA-Z0-9\-_:.]*)*(?="|')
      - include: "#values-generic-invalid"
  tag-input: 
    endCaptures: 
      "1": 
        name: meta.tag.form.input.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(input)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.form.input.html
      "2": 
        name: entity.name.tag.form.input.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.form.input.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-accept"
      - include: "#attribute-alt"
      - include: "#attribute-checked"
      - include: "#attribute-disabled"
      - include: "#attribute-maxlength"
      - include: "#attribute-name"
      - include: "#attribute-onchange"
      - include: "#attribute-onselect"
      - include: "#attribute-readonly"
      - include: "#attribute-size"
      - include: "#attribute-src"
      - include: "#attribute-type-input"
      - include: "#attribute-usemap"
      - include: "#attribute-value"
      - include: "#attributes-group-common"
      - include: "#attributes-group-focus"
      - include: "#attributes-illegal_char"
  tag-group-inline.forms: 
    patterns: 
    - include: "#tag-input"
    - include: "#tag-select"
    - include: "#tag-textarea"
    - include: "#tag-label"
    - include: "#tag-button"
  tag-address: 
    captures: 
      "1": 
        name: meta.tag.block.address.html
      "2": 
        name: entity.name.tag.block.address.html
    begin: (<(address)\b)
    end: ((address)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.address.html
      begin: (?<=>)
      end: (</(?=address))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.address.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-onselect: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onselect)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  attribute-border: 
    name: meta.attribute-with-value.html
    begin: (border)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-colspan: 
    name: meta.attribute-with-value.html
    begin: (colspan)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-type-input: 
    name: meta.attribute-with-value.html
    begin: (type)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(text|password|checkbox|button|radio|submit|reset|file|hidden|image)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(text|password|checkbox|button|radio|submit|reset|file|hidden|image)(?="|')
      - include: "#values-generic-invalid"
  tag-li: 
    captures: 
      "1": 
        name: meta.tag.block.li.html
      "2": 
        name: entity.name.tag.block.li.html
    begin: (<(li)\b)
    end: ((li)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.li.html
      begin: (?<=>)
      end: (</(?=li))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.block.li.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-legend: 
    captures: 
      "1": 
        name: meta.tag.block.legend.html
      "2": 
        name: entity.name.tag.block.legend.html
    begin: (<(legend)\b)
    end: ((legend)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.legend.html
      begin: (?<=>)
      end: (</(?=legend))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.legend.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-accesskey"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-phrase: 
    patterns: 
    - include: "#tag-em"
    - include: "#tag-strong"
    - include: "#tag-dfn"
    - include: "#tag-code"
    - include: "#tag-q"
    - include: "#tag-samp"
    - include: "#tag-kbd"
    - include: "#tag-var"
    - include: "#tag-cite"
    - include: "#tag-abbr"
    - include: "#tag-acronym"
    - include: "#tag-sub"
    - include: "#tag-sup"
  tag-base: 
    endCaptures: 
      "1": 
        name: meta.tag.meta.base.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(base)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.meta.base.html
      "2": 
        name: entity.name.tag.meta.base.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.meta.base.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-id"
      - include: "#attribute-href"
      - include: "#attributes-illegal_char"
  attribute-accesskey: 
    name: meta.attribute-with-value.html
    begin: (accesskey)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[[:alnum:]](?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[[:alnum:]](?="|')
      - include: "#values-generic-invalid"
    comment: "Bug: Does not correctly represent the single Character attribute."
  attribute-rowspan: 
    name: meta.attribute-with-value.html
    begin: (rowspan)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')[0-9]+(?="|')
      - include: "#values-generic-invalid"
  attribute-frame: 
    name: meta.attribute-with-value.html
    begin: (frame)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - name: string.quoted.double.html
      begin: (?<!"|')"
      end: "\""
      patterns: 
      - match: (?<="|')(void|above|below|hsides|lhs|rhs|vsides|box|border)(?="|')
      - include: "#values-generic-invalid"
    - name: string.quoted.single.html
      begin: (?<!"|')'
      end: "'"
      patterns: 
      - match: (?<="|')(void|above|below|hsides|lhs|rhs|vsides|box|border)(?="|')
      - include: "#values-generic-invalid"
  attribute-target: 
    name: meta.attribute-with-value.html
    begin: (target)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  attribute-content: 
    name: meta.attribute-with-value.html
    begin: (content)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
  tag-sup: 
    captures: 
      "1": 
        name: meta.tag.inline.sup.html
      "2": 
        name: entity.name.tag.inline.sup.html
    begin: (<(sup)\b)
    end: ((sup)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.sup.html
      begin: (?<=>)
      end: (</(?=sup))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.sup.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-h1: 
    captures: 
      "1": 
        name: meta.tag.block.h1.html
      "2": 
        name: entity.name.tag.block.h1.html
    begin: (<(h1)\b)
    end: ((h1)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h1.html
      begin: (?<=>)
      end: (</(?=h1))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h1.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-group-form.content: 
    patterns: 
    - include: "#tag-group-block"
    - include: "#tag-group-misc"
  attribute-onunload: 
    patterns: 
    - name: meta.attribute-with-value.html
      begin: (onunload)\s*=\s*(?=(["']).*?["'])
      applyEndPatternLast: "1"
      beginCaptures: 
        "1": 
          name: entity.other.attribute-name.html
      end: ""
      patterns: 
      - name: string.quoted.double.html
        begin: "\""
        contentName: source.js.embedded.html
        end: "\""
      - name: string.quoted.single.html
        begin: "'"
        contentName: source.js.embedded.html
        end: "'"
  tag-tr: 
    captures: 
      "1": 
        name: meta.tag.block.tr.html
      "2": 
        name: entity.name.tag.block.tr.html
    begin: (<(tr)\b)
    end: ((tr)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.tr.html
      begin: (?<=>)
      end: (</(?=tr))
      patterns: 
      - include: "#tag-td"
      - include: "#tag-th"
      - include: "#no-pcdata"
    - name: meta.tag.block.tr.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-align"
      - include: "#attribute-char"
      - include: "#attribute-charoff"
      - include: "#attribute-valign"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-title: 
    captures: 
      "1": 
        name: meta.tag.block.title.html
      "2": 
        name: entity.name.tag.block.title.html
    begin: (<(title)\b)
    end: ((title)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.title.html
      begin: (?<=>)
      end: (</(?=title))
      patterns: 
      - include: "#pcdata"
    - name: meta.tag.block.title.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-id"
      - include: "#attributes-group-i18n"
      - include: "#attributes-illegal_char"
  tag-samp: 
    captures: 
      "1": 
        name: meta.tag.inline.samp.html
      "2": 
        name: entity.name.tag.inline.samp.html
    begin: (<(samp)\b)
    end: ((samp)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.inline.samp.html
      begin: (?<=>)
      end: (</(?=samp))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.inline.samp.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-pre: 
    captures: 
      "1": 
        name: meta.tag.block.pre.html
      "2": 
        name: entity.name.tag.block.pre.html
    begin: (<(pre)\b)
    end: ((pre)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.pre.html
      begin: (?<=>)
      end: (</(?=pre))
      patterns: 
      - include: "#tag-group-pre.content"
    - name: meta.tag.block.pre.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attribute-xml:space"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-param: 
    endCaptures: 
      "1": 
        name: meta.tag.meta.param.html
      "2": 
        name: invalid.illegal.terminator.html
    begin: (<(param)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.meta.param.html
      "2": 
        name: entity.name.tag.meta.param.html
    end: (/>|(>))
    patterns: 
    - name: meta.tag.meta.param.html
      begin: ""
      end: (?=/>|>)
      patterns: 
      - include: "#attribute-id"
      - include: "#attribute-name"
      - include: "#attribute-type"
      - include: "#attribute-value"
      - include: "#attribute-valuetype"
      - include: "#attributes-illegal_char"
  tag-object: 
    endCaptures: 
      "1": 
        name: meta.tag.object.object.html
      "4": 
        name: entity.name.tag.object.object.html
    begin: (<(object)\b)
    beginCaptures: 
      "1": 
        name: meta.tag.object.object.html
      "2": 
        name: entity.name.tag.object.object.html
    end: ((/>)|((object)>))
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.object.object.html
      begin: (?<=[^/]>)
      end: (</(?=object))
      patterns: 
      - include: "#tag-group-block"
      - include: "#tag-group-inline"
      - include: "#tag-group-misc"
      - include: "#tag-param"
      - include: "#tag-form"
      - include: "#pcdata"
    - name: meta.tag.object.object.html
      begin: ""
      end: ((?=/>)|>)
      patterns: 
      - include: "#attribute-classid"
      - include: "#attribute-codebase"
      - include: "#attribute-codetype"
      - include: "#attribute-data"
      - include: "#attribute-declare"
      - include: "#attribute-height"
      - include: "#attribute-name"
      - include: "#attribute-standby"
      - include: "#attribute-tabindex"
      - include: "#attribute-type"
      - include: "#attribute-usemap"
      - include: "#attribute-width"
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-h2: 
    captures: 
      "1": 
        name: meta.tag.block.h2.html
      "2": 
        name: entity.name.tag.block.h2.html
    begin: (<(h2)\b)
    end: ((h2)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.h2.html
      begin: (?<=>)
      end: (</(?=h2))
      patterns: 
      - include: "#tag-group-inline-master"
    - name: meta.tag.block.h2.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  tag-dd: 
    captures: 
      "1": 
        name: meta.tag.block.dd.html
      "2": 
        name: entity.name.tag.block.dd.html
    begin: (<(dd)\b)
    end: ((dd)>)
    patterns: 
    - endCaptures: 
        "1": 
          name: meta.tag.block.dd.html
      begin: (?<=>)
      end: (</(?=dd))
      patterns: 
      - include: "#tag-group-flow"
    - name: meta.tag.block.dd.html
      begin: ""
      end: ">"
      patterns: 
      - include: "#attributes-group-common"
      - include: "#attributes-illegal_char"
  attribute-coords: 
    name: meta.attribute-with-value.html
    begin: (coords)\s*=\s*(?=(["']).*?["'])
    applyEndPatternLast: "1"
    beginCaptures: 
      "1": 
        name: entity.other.attribute-name.html
    end: ""
    patterns: 
    - include: "#values-generic-valid"
uuid: 65A224BD-5EEF-4D5D-8630-D3EAD551B8F0
foldingStartMarker: (<(?i:(head|table|thead|tbody|tfoot|tr|div|fieldset|style|script|ul|ol|form|dl))\b.*?>|\{\{?(if|foreach|capture|literal|foreach|php|section|strip)|\{\s*$)
patterns: 
- include: "#xml-preprocessor"
- include: "#sgml-declarations-preprocessor"
- include: "#tag-html"
- include: "#stray-char"
foldingStopMarker: (</(?i:(head|table|thead|tbody|tfoot|tr|div|fieldset|style|script|ul|ol|form|dl))>|\{\{?/(if|foreach|capture|literal|foreach|php|section|strip)|(^|\s)\})
keyEquivalent: ^~X
