{ "name": "XML", "scopeName": "text.xml", "patterns": [ { "name": "meta.tag.preprocessor.xml", "begin": "(\u003c\\?)\\s*([-_a-zA-Z0-9]+)", "end": "(\\?\u003e)", "patterns": [ { "name": "entity.other.attribute-name.xml", "match": " ([a-zA-Z-]+)" }, { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ], "captures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "entity.name.tag.xml" } } }, { "name": "meta.tag.sgml.doctype.xml", "begin": "(\u003c!)(DOCTYPE)\\s+([:a-zA-Z_][:a-zA-Z0-9_.-]*)", "end": "\\s*(\u003e)", "patterns": [ { "include": "#internalSubset" } ], "captures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "keyword.other.doctype.xml" }, "3": { "name": "variable.language.documentroot.xml" } } }, { "name": "comment.block.xml", "begin": "\u003c[!%]--", "end": "--%?\u003e", "captures": { "0": { "name": "punctuation.definition.comment.xml" } } }, { "name": "meta.tag.no-content.xml", "begin": "(\u003c)((?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+))(?=(\\s[^\u003e]*)?\u003e\u003c/\\2\u003e)", "end": "(\u003e(\u003c))/(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)(\u003e)", "patterns": [ { "include": "#tagStuff" } ], "beginCaptures": { "1": { "name": "punctuation.definition.tag.xml" }, "3": { "name": "entity.name.tag.namespace.xml" }, "4": { "name": "entity.name.tag.xml" }, "5": { "name": "punctuation.separator.namespace.xml" }, "6": { "name": "entity.name.tag.localname.xml" } }, "endCaptures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "meta.scope.between-tag-pair.xml" }, "3": { "name": "entity.name.tag.namespace.xml" }, "4": { "name": "entity.name.tag.xml" }, "5": { "name": "punctuation.separator.namespace.xml" }, "6": { "name": "entity.name.tag.localname.xml" }, "7": { "name": "punctuation.definition.tag.xml" } } }, { "name": "meta.tag.xml", "begin": "(\u003c/?)(?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9:]+)", "end": "(/?\u003e)", "patterns": [ { "include": "#tagStuff" } ], "captures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "entity.name.tag.namespace.xml" }, "3": { "name": "entity.name.tag.xml" }, "4": { "name": "punctuation.separator.namespace.xml" }, "5": { "name": "entity.name.tag.localname.xml" } } }, { "include": "#entity" }, { "include": "#bare-ampersand" }, { "name": "source.java-props.embedded.xml", "begin": "\u003c%@", "end": "%\u003e", "patterns": [ { "name": "keyword.other.page-props.xml", "match": "page|include|taglib" } ], "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.xml" } }, "endCaptures": { "0": { "name": "punctuation.section.embedded.end.xml" } } }, { "name": "source.java.embedded.xml", "begin": "\u003c%[!=]?(?!--)", "end": "(?!--)%\u003e", "patterns": [ { "include": "source.java" } ], "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.xml" } }, "endCaptures": { "0": { "name": "punctuation.section.embedded.end.xml" } } }, { "name": "string.unquoted.cdata.xml", "begin": "\u003c!\\[CDATA\\[", "end": "]]\u003e", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.xml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } } } ], "repository": { "EntityDecl": { "begin": "(\u003c!)(ENTITY)\\s+(%\\s+)?([:a-zA-Z_][:a-zA-Z0-9_.-]*)(\\s+(?:SYSTEM|PUBLIC)\\s+)?", "end": "(\u003e)", "patterns": [ { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ], "captures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "keyword.other.entity.xml" }, "3": { "name": "punctuation.definition.entity.xml" }, "4": { "name": "variable.language.entity.xml" }, "5": { "name": "keyword.other.entitytype.xml" } } }, "bare-ampersand": { "name": "invalid.illegal.bad-ampersand.xml", "match": "\u0026" }, "doublequotedString": { "name": "string.quoted.double.xml", "begin": "\"", "end": "\"", "patterns": [ { "include": "#entity" }, { "include": "#bare-ampersand" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.xml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } } }, "entity": { "name": "constant.character.entity.xml", "match": "(\u0026)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)", "captures": { "1": { "name": "punctuation.definition.constant.xml" }, "3": { "name": "punctuation.definition.constant.xml" } } }, "internalSubset": { "name": "meta.internalsubset.xml", "begin": "(\\[)", "end": "(\\])", "patterns": [ { "include": "#EntityDecl" }, { "include": "#parameterEntity" } ], "captures": { "1": { "name": "punctuation.definition.constant.xml" } } }, "parameterEntity": { "name": "constant.character.parameter-entity.xml", "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)", "captures": { "1": { "name": "punctuation.definition.constant.xml" }, "3": { "name": "punctuation.definition.constant.xml" } } }, "singlequotedString": { "name": "string.quoted.single.xml", "begin": "'", "end": "'", "patterns": [ { "include": "#entity" }, { "include": "#bare-ampersand" } ], "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.xml" } }, "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } } }, "tagStuff": { "patterns": [ { "match": " (?:([-_a-zA-Z0-9]+)((:)))?([-_a-zA-Z0-9]+)=", "captures": { "1": { "name": "entity.other.attribute-name.namespace.xml" }, "2": { "name": "entity.other.attribute-name.xml" }, "3": { "name": "punctuation.separator.namespace.xml" }, "4": { "name": "entity.other.attribute-name.localname.xml" } } }, { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ] } } }