]> gitweb.factorcode.org Git - factor.git/blob - basis/xmode/modes/xq.xml
b49dc68f2e40c282b4b5b7d8346cfbc22e2e6ec0
[factor.git] / basis / xmode / modes / xq.xml
1 <?xml version="1.0"?>\r
2 \r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">\r
4 \r
5 <MODE>\r
6         <PROPS>\r
7                 <PROPERTY NAME="commentStart" VALUE="&lt;!--" />\r
8                 <PROPERTY NAME="commentEnd" VALUE="--&gt;" />\r
9                 <PROPERTY NAME="commentStart" VALUE="(:" />\r
10                 <PROPERTY NAME="commentEnd" VALUE=":)" />\r
11                 <PROPERTY NAME="wordBreakChars" VALUE=":,+=&lt;&gt;/?^&amp;*" />\r
12 \r
13                 <!-- Auto indent -->\r
14                 <!-- <PROPERTY NAME="indentOpenBrackets" VALUE="{" /> -->\r
15                 <!-- <PROPERTY NAME="indentCloseBrackets" VALUE="}" /> -->\r
16                 <PROPERTY NAME="indentNextLine"\r
17                         VALUE="\s*(((if)\s*\(|else\s*|else\s+if\s*\(|for\s*\(.*\))[^{;]*)" />\r
18                 <!-- set this to 'true' if you want to use GNU coding style -->\r
19                 <PROPERTY NAME="doubleBracketIndent" VALUE="false" />\r
20                 <PROPERTY NAME="lineUpClosingBracket" VALUE="true" />\r
21         </PROPS>\r
22         <RULES>\r
23                 <!-- SGML comment -->\r
24                 <SPAN TYPE="COMMENT1">\r
25                         <BEGIN>&lt;!--</BEGIN>\r
26                         <END>--&gt;</END>\r
27                 </SPAN>\r
28 \r
29 \r
30                 <!-- DTD Entity declarations -->\r
31                 <SPAN TYPE="KEYWORD2" DELEGATE="ENTITY-TAGS">\r
32                         <BEGIN>&lt;!ENTITY</BEGIN>\r
33                         <END>&gt;</END>\r
34                 </SPAN>\r
35 \r
36                 <!-- CDATA sections -->\r
37                 <SPAN TYPE="KEYWORD2" DELEGATE="CDATA">\r
38                         <BEGIN>&lt;![CDATA[</BEGIN>\r
39                         <END>]]&gt;</END>\r
40                 </SPAN>\r
41 \r
42                 <!-- DTD instructions -->\r
43                 <SPAN TYPE="KEYWORD2" DELEGATE="DTD-TAGS">\r
44                         <BEGIN>&lt;!</BEGIN>\r
45                         <END>&gt;</END>\r
46                 </SPAN>\r
47 \r
48                 <!-- PI directives -->\r
49                 <SPAN TYPE="KEYWORD3">\r
50                         <BEGIN>&lt;?</BEGIN>\r
51                         <END>&gt;</END>\r
52                 </SPAN>\r
53 \r
54                 <!-- markup tags -->\r
55                 <SPAN_REGEXP HASH_CHAR="&lt;" TYPE="MARKUP" DELEGATE="TAGS">\r
56                         <BEGIN><![CDATA[<[a-zA-Z/]\w*]]></BEGIN>\r
57                         <END>&gt;</END>\r
58                 </SPAN_REGEXP>\r
59 \r
60                 <!-- SGML entities -->\r
61                 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">\r
62                         <BEGIN>&amp;</BEGIN>\r
63                         <END>;</END>\r
64                 </SPAN>\r
65         </RULES>\r
66 \r
67         <RULES SET="TAGS" DEFAULT="MARKUP" NO_WORD_SEP="-_">\r
68                 <!-- SGML comment -->\r
69                 <SPAN TYPE="COMMENT1">\r
70                         <BEGIN>&lt;!--</BEGIN>\r
71                         <END>--&gt;</END>\r
72                 </SPAN>\r
73 \r
74                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
75                         <BEGIN>"</BEGIN>\r
76                         <END>"</END>\r
77                 </SPAN>\r
78 \r
79                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
80                         <BEGIN>'</BEGIN>\r
81                         <END>'</END>\r
82                 </SPAN>\r
83 \r
84 \r
85                 <SEQ TYPE="MARKUP">/</SEQ>\r
86                 <MARK_PREVIOUS TYPE="LABEL" MATCH_TYPE="OPERATOR">:</MARK_PREVIOUS>\r
87         </RULES>\r
88 \r
89         <RULES SET="DTD-TAGS" DEFAULT="KEYWORD2" IGNORE_CASE="FALSE">\r
90                 <!-- SGML comment -->\r
91                 <SPAN TYPE="COMMENT1">\r
92                         <BEGIN>&lt;!--</BEGIN>\r
93                         <END>--&gt;</END>\r
94                 </SPAN>\r
95 \r
96                 <!-- SGML comment -->\r
97                 <SPAN TYPE="COMMENT1">\r
98                         <BEGIN>--</BEGIN>\r
99                         <END>--</END>\r
100                 </SPAN>\r
101 \r
102                 <!-- Parameter entities -->\r
103                 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">\r
104                         <BEGIN>%</BEGIN>\r
105                         <END>;</END>\r
106                 </SPAN>\r
107 \r
108                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
109                         <BEGIN>"</BEGIN>\r
110                         <END>"</END>\r
111                 </SPAN>\r
112 \r
113                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
114                         <BEGIN>'</BEGIN>\r
115                         <END>'</END>\r
116                 </SPAN>\r
117 \r
118                 <!-- This appears in some SGML documents -->\r
119                 <SPAN TYPE="KEYWORD2" DELEGATE="MAIN">\r
120                         <BEGIN>[</BEGIN>\r
121                         <END>]</END>\r
122                 </SPAN>\r
123 \r
124                 <SEQ TYPE="OPERATOR">(</SEQ>\r
125                 <SEQ TYPE="OPERATOR">)</SEQ>\r
126                 <SEQ TYPE="OPERATOR">|</SEQ>\r
127                 <SEQ TYPE="OPERATOR">?</SEQ>\r
128                 <SEQ TYPE="OPERATOR">*</SEQ>\r
129                 <SEQ TYPE="OPERATOR">+</SEQ>\r
130                 <SEQ TYPE="OPERATOR">,</SEQ>\r
131 \r
132                 <KEYWORDS>\r
133                         <KEYWORD1>CDATA</KEYWORD1>\r
134                         <KEYWORD1>EMPTY</KEYWORD1>\r
135                         <KEYWORD1>INCLUDE</KEYWORD1>\r
136                         <KEYWORD1>IGNORE</KEYWORD1>\r
137                         <KEYWORD1>NDATA</KEYWORD1>\r
138                         <KEYWORD1>#IMPLIED</KEYWORD1>\r
139                         <KEYWORD1>#PCDATA</KEYWORD1>\r
140                         <KEYWORD1>#REQUIRED</KEYWORD1>\r
141                 </KEYWORDS>\r
142         </RULES>\r
143 \r
144         <RULES SET="ENTITY-TAGS" DEFAULT="KEYWORD2">\r
145                 <!-- SGML comment -->\r
146                 <SPAN TYPE="COMMENT1">\r
147                         <BEGIN>&lt;!--</BEGIN>\r
148                         <END>--&gt;</END>\r
149                 </SPAN>\r
150 \r
151                 <!-- SGML comment -->\r
152                 <SPAN TYPE="COMMENT1">\r
153                         <BEGIN>--</BEGIN>\r
154                         <END>--</END>\r
155                 </SPAN>\r
156 \r
157                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
158                         <BEGIN>"</BEGIN>\r
159                         <END>"</END>\r
160                 </SPAN>\r
161 \r
162                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
163                         <BEGIN>'</BEGIN>\r
164                         <END>'</END>\r
165                 </SPAN>\r
166 \r
167                 <SEQ TYPE="OPERATOR">=</SEQ>\r
168 \r
169                 <SEQ TYPE="OPERATOR">%</SEQ>\r
170 \r
171                 <KEYWORDS>\r
172                         <KEYWORD1>SYSTEM</KEYWORD1>\r
173                 </KEYWORDS>\r
174         </RULES>\r
175 \r
176         <RULES SET="CDATA" DEFAULT="COMMENT2">\r
177                 <!-- no rules -->\r
178         </RULES>\r
179 \r
180         <RULES ESCAPE="\"\r
181                 IGNORE_CASE="FALSE"\r
182                 HIGHLIGHT_DIGITS="TRUE"\r
183                 DIGIT_RE="(0x\p{XDigit}+[lL]?|\d+(e\d*)?[lLdDfF]?)">\r
184 \r
185                 <!-- XQuery style comment -->\r
186                 <SPAN TYPE="COMMENT1">\r
187                         <BEGIN>(:</BEGIN>\r
188                         <END>:)</END>\r
189                 </SPAN>\r
190 \r
191                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
192                         <BEGIN>"</BEGIN>\r
193                         <END>"</END>\r
194                 </SPAN>\r
195                 <SPAN TYPE="LITERAL1" NO_LINE_BREAK="TRUE">\r
196                         <BEGIN>'</BEGIN>\r
197                         <END>'</END>\r
198                 </SPAN>\r
199 \r
200                 <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>\r
201 \r
202 \r
203 \r
204                 <!-- Function calls -->\r
205                 <MARK_PREVIOUS TYPE="FUNCTION" MATCH_TYPE="OPERATOR">(</MARK_PREVIOUS>\r
206                 <SEQ TYPE="OPERATOR">)</SEQ>\r
207 \r
208                 <SEQ TYPE="OPERATOR">,</SEQ>\r
209 \r
210                 <SEQ TYPE="OPERATOR">=</SEQ>\r
211                 <SEQ TYPE="OPERATOR">!=</SEQ>\r
212                 <SEQ TYPE="OPERATOR">&gt;</SEQ>\r
213                 <SEQ TYPE="OPERATOR">&gt;=</SEQ>\r
214                 <SEQ TYPE="OPERATOR">&lt;</SEQ>\r
215                 <SEQ TYPE="OPERATOR">&lt;=</SEQ>\r
216 \r
217                 <SEQ TYPE="OPERATOR">&lt;&lt;</SEQ>\r
218                 <SEQ TYPE="OPERATOR">&gt;&gt;</SEQ>\r
219 \r
220                 <SEQ TYPE="OPERATOR">+</SEQ>\r
221 <!--\r
222                 <SEQ TYPE="OPERATOR">-</SEQ>\r
223  -->\r
224                 <SEQ TYPE="OPERATOR">*</SEQ>\r
225 \r
226                 <!-- unary -/+ ? -->\r
227 \r
228                 <SEQ TYPE="OPERATOR">|</SEQ>\r
229 \r
230                 <SEQ TYPE="OPERATOR">/</SEQ>\r
231                 <SEQ TYPE="OPERATOR">//</SEQ>\r
232 \r
233                 <SEQ TYPE="OPERATOR">}</SEQ>\r
234                 <SEQ TYPE="OPERATOR">{</SEQ>\r
235 \r
236                 <KEYWORDS>\r
237                         <OPERATOR>some</OPERATOR>\r
238                         <OPERATOR>every</OPERATOR>\r
239 \r
240                         <OPERATOR>or</OPERATOR>\r
241                         <OPERATOR>and</OPERATOR>\r
242 \r
243                         <OPERATOR>instance of</OPERATOR>\r
244 \r
245                         <OPERATOR>treat as</OPERATOR>\r
246 \r
247                         <OPERATOR>castable as</OPERATOR>\r
248 \r
249                         <OPERATOR>cast as</OPERATOR>\r
250 \r
251                         <OPERATOR>eq</OPERATOR>\r
252                         <OPERATOR>ne</OPERATOR>\r
253                         <OPERATOR>lt</OPERATOR>\r
254                         <OPERATOR>gt</OPERATOR>\r
255                         <OPERATOR>ge</OPERATOR>\r
256                         <OPERATOR>is</OPERATOR>\r
257 \r
258                         <OPERATOR>to</OPERATOR>\r
259 \r
260                         <OPERATOR>div</OPERATOR>\r
261                         <OPERATOR>idiv</OPERATOR>\r
262                         <OPERATOR>mod</OPERATOR>\r
263 \r
264                         <OPERATOR>union</OPERATOR>\r
265 \r
266                         <OPERATOR>intersect</OPERATOR>\r
267                         <OPERATOR>except</OPERATOR>\r
268 \r
269                         <KEYWORD1>return</KEYWORD1>\r
270                         <KEYWORD1>for</KEYWORD1>\r
271                         <KEYWORD1>in</KEYWORD1>\r
272                         <KEYWORD1>to</KEYWORD1>\r
273                         <KEYWORD1>at</KEYWORD1>\r
274 \r
275                         <KEYWORD1>let</KEYWORD1>\r
276                         <KEYWORD1>:=</KEYWORD1>\r
277 \r
278                         <KEYWORD1>where</KEYWORD1>\r
279 \r
280                         <KEYWORD1>stable</KEYWORD1>\r
281                         <KEYWORD1>order</KEYWORD1>\r
282                         <KEYWORD1>by</KEYWORD1>\r
283 \r
284                         <LITERAL2>ascending</LITERAL2>\r
285                         <LITERAL2>descending</LITERAL2>\r
286 \r
287                         <LITERAL2>greatest</LITERAL2>\r
288                         <LITERAL2>least</LITERAL2>\r
289                         <LITERAL2>collation</LITERAL2>\r
290 \r
291                         <KEYWORD3>typeswitch</KEYWORD3>\r
292                         <KEYWORD3>default</KEYWORD3>\r
293 \r
294                         <KEYWORD1>cast</KEYWORD1>\r
295                         <KEYWORD1>as</KEYWORD1>\r
296                         <KEYWORD1>if</KEYWORD1>\r
297                         <KEYWORD1>then</KEYWORD1>\r
298                         <KEYWORD1>else</KEYWORD1>\r
299 \r
300                         <LITERAL2>true</LITERAL2>\r
301                         <LITERAL2>false</LITERAL2>\r
302 \r
303                         <KEYWORD3>xquery</KEYWORD3>\r
304                         <KEYWORD3>version</KEYWORD3>\r
305 \r
306                         <KEYWORD3>declare</KEYWORD3>\r
307                         <KEYWORD3>function</KEYWORD3>\r
308                         <KEYWORD3>library</KEYWORD3>\r
309                         <KEYWORD3>variable</KEYWORD3>\r
310                         <KEYWORD3>module</KEYWORD3>\r
311                         <KEYWORD3>namespace</KEYWORD3>\r
312                         <KEYWORD3>local</KEYWORD3>\r
313 \r
314                         <KEYWORD3>validate</KEYWORD3>\r
315                         <KEYWORD3>import</KEYWORD3>\r
316                         <KEYWORD3>schema</KEYWORD3>\r
317                         <KEYWORD3>validation</KEYWORD3>\r
318                         <KEYWORD3>collection</KEYWORD3>\r
319 \r
320                         <KEYWORD3>ancestor</KEYWORD3>\r
321                         <KEYWORD3>descendant</KEYWORD3>\r
322                         <KEYWORD3>self</KEYWORD3>\r
323                         <KEYWORD3>parent</KEYWORD3>\r
324                         <KEYWORD3>child</KEYWORD3>\r
325                         <KEYWORD3>self</KEYWORD3>\r
326                         <KEYWORD3>descendant-or-self</KEYWORD3>\r
327                         <KEYWORD3>ancestor-or-self</KEYWORD3>\r
328                         <KEYWORD3>preceding-sibling</KEYWORD3>\r
329                         <KEYWORD3>following-sibling</KEYWORD3>\r
330                         <KEYWORD3>following</KEYWORD3>\r
331                         <KEYWORD3>preceding</KEYWORD3>\r
332 \r
333                         <KEYWORD4>xs:integer</KEYWORD4>\r
334                         <KEYWORD4>xs:decimal</KEYWORD4>\r
335                         <KEYWORD4>xs:double</KEYWORD4>\r
336                         <KEYWORD4>xs:string</KEYWORD4>\r
337                         <KEYWORD4>xs:date</KEYWORD4>\r
338                         <KEYWORD4>xs:time</KEYWORD4>\r
339                         <KEYWORD4>xs:dateTime</KEYWORD4>\r
340                         <KEYWORD4>xs:boolean</KEYWORD4>\r
341 \r
342                         <KEYWORD4>item</KEYWORD4>\r
343                         <KEYWORD4>element</KEYWORD4>\r
344                         <KEYWORD4>attribute</KEYWORD4>\r
345                         <KEYWORD4>comment</KEYWORD4>\r
346                         <KEYWORD4>document</KEYWORD4>\r
347                         <KEYWORD4>document-node</KEYWORD4>\r
348                         <KEYWORD4>node</KEYWORD4>\r
349                         <KEYWORD4>empty</KEYWORD4>\r
350 \r
351                         <FUNCTION>zero-or-one</FUNCTION>\r
352                         <FUNCTION>avg</FUNCTION>\r
353                         <FUNCTION>base-uri</FUNCTION>\r
354                         <FUNCTION>boolean</FUNCTION>\r
355                         <FUNCTION>ceiling</FUNCTION>\r
356                         <FUNCTION>codepoints-to-string</FUNCTION>\r
357                         <FUNCTION>collection</FUNCTION>\r
358                         <FUNCTION>compare</FUNCTION>\r
359                         <FUNCTION>concat</FUNCTION>\r
360                         <FUNCTION>contains</FUNCTION>\r
361                         <FUNCTION>count</FUNCTION>\r
362                         <FUNCTION>current-date</FUNCTION>\r
363                         <FUNCTION>current-dateTime</FUNCTION>\r
364                         <FUNCTION>current-time</FUNCTION>\r
365                         <FUNCTION>data</FUNCTION>\r
366                         <FUNCTION>day-from-date</FUNCTION>\r
367                         <FUNCTION>day-from-dateTime</FUNCTION>\r
368                         <FUNCTION>days-from-duration</FUNCTION>\r
369                         <FUNCTION>deep-equal</FUNCTION>\r
370                         <FUNCTION>distinct-values</FUNCTION>\r
371                         <FUNCTION>doc</FUNCTION>\r
372                         <FUNCTION>adjust-time-to-timezone</FUNCTION>\r
373                         <FUNCTION>adjust-dateTime-to-timezone</FUNCTION>\r
374                         <FUNCTION>string-length</FUNCTION>\r
375                         <FUNCTION>string-join</FUNCTION>\r
376                         <FUNCTION>string</FUNCTION>\r
377                         <FUNCTION>starts-with</FUNCTION>\r
378                         <FUNCTION>seconds-from-time</FUNCTION>\r
379                         <FUNCTION>seconds-from-duration</FUNCTION>\r
380                         <FUNCTION>seconds-from-dateTime</FUNCTION>\r
381                         <FUNCTION>round-half-to-even</FUNCTION>\r
382                         <FUNCTION>round</FUNCTION>\r
383                         <FUNCTION>root</FUNCTION>\r
384                         <FUNCTION>reverse</FUNCTION>\r
385                         <FUNCTION>replace</FUNCTION>\r
386                         <FUNCTION>remove</FUNCTION>\r
387                         <FUNCTION>prefix-from-QName</FUNCTION>\r
388                         <FUNCTION>position</FUNCTION>\r
389                         <FUNCTION>one-or-more</FUNCTION>\r
390                         <FUNCTION>number</FUNCTION>\r
391                         <FUNCTION>QName</FUNCTION>\r
392                         <FUNCTION>abs</FUNCTION>\r
393                         <FUNCTION>adjust-date-to-timezone</FUNCTION>\r
394                         <FUNCTION>doc-available</FUNCTION>\r
395                         <FUNCTION>doctype</FUNCTION>\r
396                         <FUNCTION>document</FUNCTION>\r
397                         <FUNCTION>last</FUNCTION>\r
398                         <FUNCTION>local-name</FUNCTION>\r
399                         <FUNCTION>local-name-from-QName</FUNCTION>\r
400                         <FUNCTION>lower-case</FUNCTION>\r
401                         <FUNCTION>match-all</FUNCTION>\r
402                         <FUNCTION>match-any</FUNCTION>\r
403                         <FUNCTION>matches</FUNCTION>\r
404                         <FUNCTION>max</FUNCTION>\r
405                         <FUNCTION>min</FUNCTION>\r
406                         <FUNCTION>minutes-from-dateTime</FUNCTION>\r
407                         <FUNCTION>minutes-from-duration</FUNCTION>\r
408                         <FUNCTION>minutes-from-time</FUNCTION>\r
409                         <FUNCTION>month-from-date</FUNCTION>\r
410                         <FUNCTION>month-from-dateTime</FUNCTION>\r
411                         <FUNCTION>name</FUNCTION>\r
412                         <FUNCTION>namespace-uri</FUNCTION>\r
413                         <FUNCTION>namespace-uri-for-prefix</FUNCTION>\r
414                         <FUNCTION>namespace-uri-from-QName</FUNCTION>\r
415                         <FUNCTION>node-name</FUNCTION>\r
416                         <FUNCTION>normalize-space</FUNCTION>\r
417                         <FUNCTION>lang</FUNCTION>\r
418                         <FUNCTION>item-at</FUNCTION>\r
419                         <FUNCTION>document-uri</FUNCTION>\r
420                         <FUNCTION>empty</FUNCTION>\r
421                         <FUNCTION>encode-for-uri</FUNCTION>\r
422                         <FUNCTION>ends-with</FUNCTION>\r
423                         <FUNCTION>error</FUNCTION>\r
424                         <FUNCTION>escape-html-uri</FUNCTION>\r
425                         <FUNCTION>escape-uri</FUNCTION>\r
426                         <FUNCTION>exactly-one</FUNCTION>\r
427                         <FUNCTION>exists</FUNCTION>\r
428                         <FUNCTION>false</FUNCTION>\r
429                         <FUNCTION>floor</FUNCTION>\r
430                         <FUNCTION>hours-from-dateTime</FUNCTION>\r
431                         <FUNCTION>hours-from-duration</FUNCTION>\r
432                         <FUNCTION>hours-from-time</FUNCTION>\r
433                         <FUNCTION>id</FUNCTION>\r
434                         <FUNCTION>implicit-timezone</FUNCTION>\r
435                         <FUNCTION>in-scope-prefixes</FUNCTION>\r
436                         <FUNCTION>index-of</FUNCTION>\r
437                         <FUNCTION>insert-before</FUNCTION>\r
438                         <FUNCTION>iri-to-uri</FUNCTION>\r
439                         <FUNCTION>string-pad</FUNCTION>\r
440                         <FUNCTION>string-to-codepoints</FUNCTION>\r
441                         <FUNCTION>sum</FUNCTION>\r
442                         <FUNCTION>timezone-from-date</FUNCTION>\r
443                         <FUNCTION>timezone-from-dateTime</FUNCTION>\r
444                         <FUNCTION>timezone-from-time</FUNCTION>\r
445                         <FUNCTION>not</FUNCTION>\r
446                         <FUNCTION>tokenize</FUNCTION>\r
447                         <FUNCTION>translate</FUNCTION>\r
448                         <FUNCTION>true</FUNCTION>\r
449                         <FUNCTION>unordered</FUNCTION>\r
450                         <FUNCTION>upper-case</FUNCTION>\r
451                         <FUNCTION>xcollection</FUNCTION>\r
452                         <FUNCTION>year-from-date</FUNCTION>\r
453                         <FUNCTION>year-from-dateTime</FUNCTION>\r
454                         <FUNCTION>substring-before</FUNCTION>\r
455                         <FUNCTION>subsequence</FUNCTION>\r
456                         <FUNCTION>substring</FUNCTION>\r
457                         <FUNCTION>substring-after</FUNCTION>\r
458 \r
459                 </KEYWORDS>\r
460         </RULES>\r
461 \r
462 </MODE>\r