ace.provide("ace.mode.XmlHighlightRules"); ace.mode.XmlHighlightRules = function() { // regexp must not have capturing parentheses // regexps are ordered -> the first match is used this._rules = { start : [ { token : "text", regex : "<\\!\\[CDATA\\[", next : "cdata" }, { token : "xml_pe", regex : "<\\?.*?\\?>" }, { token : "comment", regex : "<\\!--", next : "comment" }, { token : "text", // opening tag regex : "<\\/?", next : "tag" }, { token : "text", regex : "\\s+" }, { token : "text", regex : "[^<]+" } ], tag : [ { token : "text", regex : ">", next : "start" }, { token : "keyword", regex : "[-_a-zA-Z0-9:]+" }, { token : "text", regex : "\\s+" }, { token : "string", regex : '".*?"' }, { token : "string", regex : "'.*?'" } ], cdata : [ { token : "text", regex : "\\]\\]>", next : "start" }, { token : "text", regex : "\\s+" }, { token : "text", regex : ".+" } ], comment : [ { token : "comment", regex : ".*?-->", next : "start" }, { token : "comment", regex : ".+" } ] }; }; ace.mode.XmlHighlightRules.prototype.getRules = function() { return this._rules; };