3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
7 <PROPERTY NAME="commentStart" VALUE="<!--" />
8 <PROPERTY NAME="commentEnd" VALUE="-->" />
11 <RULES IGNORE_CASE="TRUE">
13 <SPAN TYPE="COMMENT1">
14 <BEGIN><!--</BEGIN>
19 <SPAN_REGEXP TYPE="MARKUP" DELEGATE="JAVASCRIPT" HASH_CHAR="<">
20 <BEGIN><(?=SCRIPT\b)</BEGIN>
21 <END REGEXP="TRUE">(?i)(?=</SCRIPT\b)</END>
25 <SPAN_REGEXP TYPE="MARKUP" DELEGATE="CSS" HASH_CHAR="<">
26 <BEGIN><(?=STYLE\b)</BEGIN>
27 <END REGEXP="TRUE">(?i)(?=</STYLE\b)</END>
30 <!-- DTD instructions -->
31 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
37 <SPAN TYPE="MARKUP" DELEGATE="TAGS">
42 <!-- SGML character entities -->
43 <IMPORT DELEGATE="CHARACTER_ENTITIES" />
46 <RULES SET="TAGS" DEFAULT="MARKUP">
48 <SPAN_REGEXP AT_WORD_START="TRUE" TYPE="MARKUP" DELEGATE="css::PROPERTIES" HASH_CHAR="style">
49 <BEGIN>style\s*=\s*(["'])</BEGIN>
53 <!-- Javascript: delegate on* attributes to Javascript mode -->
54 <SPAN_REGEXP AT_WORD_START="TRUE" DELEGATE="javascript::MAIN" HASH_CHAR="on" TYPE="MARKUP">
55 <BEGIN>on[a-z]+\s*=\s*(["'])</BEGIN>
59 <!-- NOTE: no ESCAPE for quotes, at least for attributes; e.g onclick="alert(\"foo\");" is invalid! -->
60 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
64 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
69 <SEQ TYPE="OPERATOR">=</SEQ>
72 <!-- HTML/XHTML elements, taken from http://de.selfhtml.org/html/referenz/elemente.htm -->
73 <!-- updated to include html5 elements. Obsolete and deprecated elements
74 are still here for backward compatibility. -->
75 <KEYWORD1>a</KEYWORD1>
76 <KEYWORD1>abbr</KEYWORD1>
77 <KEYWORD1>acronym</KEYWORD1>
78 <KEYWORD1>address</KEYWORD1>
79 <KEYWORD1>applet</KEYWORD1>
80 <KEYWORD1>area</KEYWORD1>
81 <KEYWORD1>article</KEYWORD1>
82 <KEYWORD1>aside</KEYWORD1>
83 <KEYWORD1>audio</KEYWORD1>
84 <KEYWORD1>b</KEYWORD1>
85 <KEYWORD1>base</KEYWORD1>
86 <KEYWORD1>basefont</KEYWORD1>
87 <KEYWORD1>bdi</KEYWORD1>
88 <KEYWORD1>bdo</KEYWORD1>
89 <KEYWORD1>big</KEYWORD1>
90 <KEYWORD1>blockquote</KEYWORD1>
91 <KEYWORD1>body</KEYWORD1>
92 <KEYWORD1>br</KEYWORD1>
93 <KEYWORD1>button</KEYWORD1>
94 <KEYWORD1>canvas</KEYWORD1>
95 <KEYWORD1>caption</KEYWORD1>
96 <KEYWORD1>center</KEYWORD1>
97 <KEYWORD1>cite</KEYWORD1>
98 <KEYWORD1>code</KEYWORD1>
99 <KEYWORD1>col</KEYWORD1>
100 <KEYWORD1>colgroup</KEYWORD1>
101 <KEYWORD1>command</KEYWORD1>
102 <KEYWORD1>data</KEYWORD1>
103 <KEYWORD1>datalist</KEYWORD1>
104 <KEYWORD1>dd</KEYWORD1>
105 <KEYWORD1>del</KEYWORD1>
106 <KEYWORD1>details</KEYWORD1>
107 <KEYWORD1>dfn</KEYWORD1>
108 <KEYWORD1>dir</KEYWORD1>
109 <KEYWORD1>div</KEYWORD1>
110 <KEYWORD1>dl</KEYWORD1>
111 <KEYWORD1>dt</KEYWORD1>
112 <KEYWORD1>em</KEYWORD1>
113 <KEYWORD1>embed</KEYWORD1>
114 <KEYWORD1>fieldset</KEYWORD1>
115 <KEYWORD1>figcaption</KEYWORD1>
116 <KEYWORD1>figure</KEYWORD1>
117 <KEYWORD1>font</KEYWORD1>
118 <KEYWORD1>footer</KEYWORD1>
119 <KEYWORD1>form</KEYWORD1>
120 <KEYWORD1>frame</KEYWORD1>
121 <KEYWORD1>frameset</KEYWORD1>
122 <KEYWORD1>h1</KEYWORD1>
123 <KEYWORD1>h2</KEYWORD1>
124 <KEYWORD1>h3</KEYWORD1>
125 <KEYWORD1>h4</KEYWORD1>
126 <KEYWORD1>h5</KEYWORD1>
127 <KEYWORD1>h6</KEYWORD1>
128 <KEYWORD1>head</KEYWORD1>
129 <KEYWORD1>header</KEYWORD1>
130 <KEYWORD1>hgroup</KEYWORD1>
131 <KEYWORD1>hr</KEYWORD1>
132 <KEYWORD1>html</KEYWORD1>
133 <KEYWORD1>i</KEYWORD1>
134 <KEYWORD1>iframe</KEYWORD1>
135 <KEYWORD1>img</KEYWORD1>
136 <KEYWORD1>input</KEYWORD1>
137 <KEYWORD1>ins</KEYWORD1>
138 <KEYWORD1>isindex</KEYWORD1>
139 <KEYWORD1>kbd</KEYWORD1>
140 <KEYWORD1>keygen</KEYWORD1>
141 <KEYWORD1>label</KEYWORD1>
142 <KEYWORD1>legend</KEYWORD1>
143 <KEYWORD1>li</KEYWORD1>
144 <KEYWORD1>link</KEYWORD1>
145 <KEYWORD1>map</KEYWORD1>
146 <KEYWORD1>mark</KEYWORD1>
147 <KEYWORD1>menu</KEYWORD1>
148 <KEYWORD1>meta</KEYWORD1>
149 <KEYWORD1>meter</KEYWORD1>
150 <KEYWORD1>nav</KEYWORD1>
151 <KEYWORD1>noframes</KEYWORD1>
152 <KEYWORD1>noscript</KEYWORD1>
153 <KEYWORD1>object</KEYWORD1>
154 <KEYWORD1>ol</KEYWORD1>
155 <KEYWORD1>optgroup</KEYWORD1>
156 <KEYWORD1>option</KEYWORD1>
157 <KEYWORD1>output</KEYWORD1>
158 <KEYWORD1>p</KEYWORD1>
159 <KEYWORD1>param</KEYWORD1>
160 <KEYWORD1>path</KEYWORD1>
161 <KEYWORD1>pre</KEYWORD1>
162 <KEYWORD1>progress</KEYWORD1>
163 <KEYWORD1>q</KEYWORD1>
164 <KEYWORD1>rp</KEYWORD1>
165 <KEYWORD1>rt</KEYWORD1>
166 <KEYWORD1>ruby</KEYWORD1>
167 <KEYWORD1>s</KEYWORD1>
168 <KEYWORD1>samp</KEYWORD1>
169 <KEYWORD1>script</KEYWORD1>
170 <KEYWORD1>section</KEYWORD1>
171 <KEYWORD1>select</KEYWORD1>
172 <KEYWORD1>small</KEYWORD1>
173 <KEYWORD1>source</KEYWORD1>
174 <KEYWORD1>span</KEYWORD1>
175 <KEYWORD1>strike</KEYWORD1>
176 <KEYWORD1>strong</KEYWORD1>
177 <KEYWORD1>style</KEYWORD1>
178 <KEYWORD1>sub</KEYWORD1>
179 <KEYWORD1>summary</KEYWORD1>
180 <KEYWORD1>sup</KEYWORD1>
181 <KEYWORD1>svg</KEYWORD1>
182 <KEYWORD1>table</KEYWORD1>
183 <KEYWORD1>tbody</KEYWORD1>
184 <KEYWORD1>td</KEYWORD1>
185 <KEYWORD1>textarea</KEYWORD1>
186 <KEYWORD1>tfoot</KEYWORD1>
187 <KEYWORD1>th</KEYWORD1>
188 <KEYWORD1>thead</KEYWORD1>
189 <KEYWORD1>time</KEYWORD1>
190 <KEYWORD1>title</KEYWORD1>
191 <KEYWORD1>tr</KEYWORD1>
192 <KEYWORD1>track</KEYWORD1>
193 <KEYWORD1>tt</KEYWORD1>
194 <KEYWORD1>u</KEYWORD1>
195 <KEYWORD1>ul</KEYWORD1>
196 <KEYWORD1>var</KEYWORD1>
197 <KEYWORD1>video</KEYWORD1>
198 <KEYWORD1>wbr</KEYWORD1>
202 <!-- SCRIPT tag: Highlight tag and switch to language ruleset. -->
203 <RULES SET="JAVASCRIPT" DEFAULT="MARKUP">
204 <!--If the content of the TYPE attribute is recognized, switch to
205 language specific ruleset. -->
206 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="COFFEESCRIPT_TAG"
207 HASH_CHAR="type">type(?=\s*=\s*['"]?text/coffeescript)</SEQ_REGEXP>
208 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
209 HASH_CHAR="type">type(?=\s*=\s*['"]?text/vbscript)</SEQ_REGEXP>
210 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
211 HASH_CHAR="language">language(?=\s*=\s*['"]?vbscript)</SEQ_REGEXP>
212 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="PYTHON_SCRIPT_TAG"
213 HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/python)</SEQ_REGEXP>
214 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="RUBY_SCRIPT_TAG"
215 HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/ruby)</SEQ_REGEXP>
216 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XML_SCRIPT_TAG"
217 HASH_CHAR="type">type(?=\s*=\s*['"]?application/xml)</SEQ_REGEXP>
218 <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XQUERY_SCRIPT_TAG"
219 HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/xquery)</SEQ_REGEXP>
220 <!-- Switch to JavaScript ruleset after the tag. -->
221 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">></SEQ>
222 <!-- Import rules for highlighting. -->
223 <IMPORT DELEGATE="TAGS"/>
226 <!-- CoffeeScript -->
227 <RULES SET="COFFEESCRIPT_TAG" DEFAULT="MARKUP">
228 <SEQ TYPE="MARKUP" DELEGATE="coffeescript::MAIN">></SEQ>
229 <IMPORT DELEGATE="TAGS"/>
232 <!-- Python - provided by Gestalt -->
233 <RULES SET="PYTHON_SCRIPT_TAG" DEFAULT="MARKUP">
234 <SEQ TYPE="MARKUP" DELEGATE="python::MAIN">></SEQ>
235 <IMPORT DELEGATE="TAGS"/>
238 <!-- Ruby - provided by Gestalt -->
239 <RULES SET="RUBY_SCRIPT_TAG" DEFAULT="MARKUP">
240 <SEQ TYPE="MARKUP" DELEGATE="ruby::MAIN">></SEQ>
241 <IMPORT DELEGATE="TAGS"/>
244 <!-- VBScript - provided by Internet Explorer -->
245 <RULES SET="VBSCRIPT_TAG" DEFAULT="MARKUP">
246 <SEQ TYPE="MARKUP" DELEGATE="vbscript::MAIN">></SEQ>
247 <IMPORT DELEGATE="TAGS"/>
250 <!-- XML - for XAML, provided by Gestalt -->
251 <RULES SET="XML_SCRIPT_TAG" DEFAULT="MARKUP">
252 <SEQ TYPE="MARKUP" DELEGATE="xml::MAIN">></SEQ>
253 <IMPORT DELEGATE="TAGS"/>
256 <!-- XQUERY - provided by XQIB -->
257 <RULES SET="XQUERY_SCRIPT_TAG" DEFAULT="MARKUP">
258 <SEQ TYPE="MARKUP" DELEGATE="xq::MAIN">></SEQ>
259 <IMPORT DELEGATE="TAGS"/>
262 <!-- STYLE tag: Highlight tag and delegate to CSS mode. -->
263 <RULES SET="CSS" DEFAULT="MARKUP">
264 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">></SEQ>
265 <IMPORT DELEGATE="TAGS"/>
268 <RULES SET="ATTRIBUTE" DEFAULT="LITERAL1">
269 <IMPORT DELEGATE="CHARACTER_ENTITIES" />
272 <!-- SGML character entities - to be used with IMPORT tag -->
273 <RULES SET="CHARACTER_ENTITIES">
274 <SEQ_REGEXP TYPE="LITERAL2"
275 HASH_CHAR="&">&(#\d+|#x\p{XDigit}+|\p{Alnum}+);</SEQ_REGEXP>
276 <SEQ TYPE="INVALID">&</SEQ>