ace.provide("ace.XML"); (function() { // regexp must not have capturing parentheses // regexps are ordered -> the first match is used ace.XML.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 : ".+" } ] }; })();