{ "scopeName": "text.xml", "name": "XML", "fileTypes": [ "aiml", "atom", "axml", "bpmn", "config", "cpt", "csl", "csproj", "csproj.user", "dae", "dia", "dita", "ditamap", "dtml", "fodg", "fodp", "fods", "fodt", "fsproj", "fxml", "gir", "glade", "gpx", "graphml", "icls", "iml", "isml", "jmx", "jsp", "kml", "kst", "launch", "menu", "mxml", "nunit", "nuspec", "opml", "owl", "pom", "ppj", "proj", "pt", "pubxml", "pubxml.user", "rdf", "rng", "rss", "sdf", "shproj", "siml", "sld", "storyboard", "StyleCop", "svg", "targets", "tld", "vbox", "vbox-prev", "vbproj", "vbproj.user", "vcproj", "vcproj.filters", "vcxproj", "vcxproj.filters", "wixmsp", "wixmst", "wixobj", "wixout", "wsdl", "wxs", "xaml", "xbl", "xib", "xlf", "xliff", "xml", "xpdl", "xsd", "xul", "ui" ], "firstLineMatch": "(?x)\n# XML declaration\n(?:\n ^ <\\? xml\n\n # VersionInfo\n \\s+ version\n \\s* = \\s*\n (['\"])\n 1 \\. [0-9]+\n \\1\n\n # EncodingDecl\n (?:\n \\s+ encoding\n \\s* = \\s*\n\n # EncName\n (['\"])\n [A-Za-z]\n [-A-Za-z0-9._]*\n \\2\n )?\n\n # SDDecl\n (?:\n \\s+ standalone\n \\s* = \\s*\n (['\"])\n (?:yes|no)\n \\3\n )?\n\n \\s* \\?>\n)\n|\n# Modeline\n(?i:\n # Emacs\n -\\*-(?:\\s*(?=[^:;\\s]+\\s*-\\*-)|(?:.*?[;\\s]|(?<=-\\*-))mode\\s*:\\s*)\n xml\n (?=[\\s;]|(?]?\\d+|m)?|\\sex)(?=:(?=\\s*set?\\s[^\\n:]+:)|:(?!\\s*set?\\s))(?:(?:\\s|\\s*:\\s*)\\w*(?:\\s*=(?:[^\\n\\\\\\s]|\\\\.)*)?)*[\\s:](?:filetype|ft|syntax)\\s*=\n xml\n (?=\\s|:|$)\n)", "patterns": [ { "begin": "(<\\?)\\s*([-_a-zA-Z0-9]+)", "captures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "entity.name.tag.xml" } }, "end": "(\\?>)", "name": "meta.tag.preprocessor.xml", "patterns": [ { "match": " ([a-zA-Z-]+)", "name": "entity.other.attribute-name.xml" }, { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ] }, { "begin": "()", "name": "meta.tag.sgml.doctype.xml", "patterns": [ { "include": "#internalSubset" } ] }, { "include": "#comments" }, { "begin": "(<)((?:([-_a-zA-Z0-9]+)(:))?([-_a-zA-Z0-9:]+))(?=(\\s[^>]*)?>)", "beginCaptures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "entity.name.tag.xml" }, "3": { "name": "entity.name.tag.namespace.xml" }, "4": { "name": "punctuation.separator.namespace.xml" }, "5": { "name": "entity.name.tag.localname.xml" } }, "end": "(>)()", "endCaptures": { "1": { "name": "punctuation.definition.tag.xml" }, "2": { "name": "punctuation.definition.tag.xml" }, "3": { "name": "entity.name.tag.xml" }, "4": { "name": "entity.name.tag.namespace.xml" }, "5": { "name": "punctuation.separator.namespace.xml" }, "6": { "name": "entity.name.tag.localname.xml" }, "7": { "name": "punctuation.definition.tag.xml" } }, "name": "meta.tag.no-content.xml", "patterns": [ { "include": "#tagStuff" } ] }, { "begin": "()", "name": "meta.tag.xml", "patterns": [ { "include": "#tagStuff" } ] }, { "include": "#entity" }, { "include": "#bare-ampersand" }, { "begin": "<%@", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.xml" } }, "end": "%>", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.xml" } }, "name": "source.java-props.embedded.xml", "patterns": [ { "match": "page|include|taglib", "name": "keyword.other.page-props.xml" } ] }, { "begin": "<%[!=]?(?!--)", "beginCaptures": { "0": { "name": "punctuation.section.embedded.begin.xml" } }, "end": "(?!--)%>", "endCaptures": { "0": { "name": "punctuation.section.embedded.end.xml" } }, "name": "source.java.embedded.xml", "patterns": [ { "include": "source.java" } ] }, { "begin": "", "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } }, "name": "string.unquoted.cdata.xml" } ], "repository": { "EntityDecl": { "begin": "()", "patterns": [ { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ] }, "bare-ampersand": { "match": "&", "name": "invalid.illegal.bad-ampersand.xml" }, "doublequotedString": { "begin": "\"", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.xml" } }, "end": "\"", "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } }, "name": "string.quoted.double.xml", "patterns": [ { "include": "#entity" }, { "include": "#bare-ampersand" } ] }, "entity": { "captures": { "1": { "name": "punctuation.definition.constant.xml" }, "3": { "name": "punctuation.definition.constant.xml" } }, "match": "(&)([:a-zA-Z_][:a-zA-Z0-9_.-]*|#[0-9]+|#x[0-9a-fA-F]+)(;)", "name": "constant.character.entity.xml" }, "internalSubset": { "begin": "(\\[)", "captures": { "1": { "name": "punctuation.definition.constant.xml" } }, "end": "(\\])", "name": "meta.internalsubset.xml", "patterns": [ { "include": "#EntityDecl" }, { "include": "#parameterEntity" }, { "include": "#comments" } ] }, "parameterEntity": { "captures": { "1": { "name": "punctuation.definition.constant.xml" }, "3": { "name": "punctuation.definition.constant.xml" } }, "match": "(%)([:a-zA-Z_][:a-zA-Z0-9_.-]*)(;)", "name": "constant.character.parameter-entity.xml" }, "singlequotedString": { "begin": "'", "beginCaptures": { "0": { "name": "punctuation.definition.string.begin.xml" } }, "end": "'", "endCaptures": { "0": { "name": "punctuation.definition.string.end.xml" } }, "name": "string.quoted.single.xml", "patterns": [ { "include": "#entity" }, { "include": "#bare-ampersand" } ] }, "tagStuff": { "patterns": [ { "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" } }, "match": "(?:^|\\s+)(?:([-\\w.]+)((:)))?([-\\w.:]+)\\s*=" }, { "include": "#doublequotedString" }, { "include": "#singlequotedString" } ] }, "comments": { "patterns": [ { "begin": "<%--", "captures": { "0": { "name": "punctuation.definition.comment.xml" }, "end": "--%>", "name": "comment.block.xml" } }, { "begin": "", "name": "comment.block.xml", "patterns": [ { "begin": "--(?!>)", "captures": { "0": { "name": "invalid.illegal.bad-comments-or-CDATA.xml" } } } ] } ] } } }