PageRenderTime 48ms CodeModel.GetById 16ms RepoModel.GetById 0ms app.codeStats 0ms

/jEdit/tags/jedit-4-2-pre14/modes/xsl.xml

#
XML | 435 lines | 309 code | 44 blank | 82 comment | 0 complexity | 5abd106091bc493cabdb64e583aed1c6 MD5 | raw file
Possible License(s): BSD-3-Clause, AGPL-1.0, Apache-2.0, LGPL-2.0, LGPL-3.0, GPL-2.0, CC-BY-SA-3.0, LGPL-2.1, GPL-3.0, MPL-2.0-no-copyleft-exception, IPL-1.0
  1. <?xml version="1.0"?>
  2. <!DOCTYPE MODE SYSTEM "xmode.dtd"><!--
  3. ======================================================================
  4. Edit mode for XSLT 1.0 and XSLT 2.0
  5. ======================================================================
  6. Token types:
  7. COMMENT1 XML comments
  8. COMMENT2 XPath 2.0 comments - top or nested within COMMENT3
  9. COMMENT3 XPath 2.0 comments - nested within COMMENT2
  10. COMMENT4 Default task names used in Task List
  11. DIGIT Digits
  12. FUNCTION Functions
  13. INVALID -
  14. KEYWORD1 XSLT element names
  15. KEYWORD2 XSLT attribute names
  16. KEYWORD3 Attribute values
  17. KEYWORD4 Axes specifiers
  18. LABEL Namespace prefixes
  19. LITERAL1 String literals
  20. LITERAL2 Parameter and variable references
  21. LITERAL3 Entity references and processing instructions
  22. LITERAL4 DTD constructs and CDATA sections
  23. MARKUP Result elements and extension elements
  24. OPERATOR XPath 2.0 keywords + some other stuff
  25. ======================================================================
  26. -->
  27. <MODE>
  28. <PROPS>
  29. <PROPERTY NAME="commentStart" VALUE="&lt;!--"/>
  30. <PROPERTY NAME="commentEnd" VALUE="--&gt;"/>
  31. </PROPS>
  32. <RULES HIGHLIGHT_DIGITS="FALSE" IGNORE_CASE="FALSE">
  33. <!-- XML comments -->
  34. <SPAN DELEGATE="TASKS" TYPE="COMMENT1">
  35. <BEGIN>&lt;!--</BEGIN>
  36. <END>--&gt;</END>
  37. </SPAN>
  38. <!-- Assume 'xsl' prefix for XSLT elements -->
  39. <SPAN_REGEXP HASH_CHAR="&lt;" DELEGATE="XSLTAGS" TYPE="KEYWORD2">
  40. <BEGIN>&lt;(?=xsl:)</BEGIN>
  41. <END>&gt;</END>
  42. </SPAN_REGEXP>
  43. <SPAN_REGEXP HASH_CHAR="&lt;" DELEGATE="XSLTAGS" TYPE="KEYWORD2">
  44. <BEGIN>&lt;(?=/xsl:)</BEGIN>
  45. <END>&gt;</END>
  46. </SPAN_REGEXP>
  47. <!-- CDATA marked sections. Reuse common xml mode -->
  48. <SPAN TYPE="KEYWORD2" DELEGATE="xml::CDATA">
  49. <BEGIN>&lt;![CDATA[</BEGIN>
  50. <END>]]&gt;</END>
  51. </SPAN>
  52. <!-- DTD constructs. Reuse common xml mode -->
  53. <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
  54. <BEGIN>&lt;!</BEGIN>
  55. <END>&gt;</END>
  56. </SPAN>
  57. <!-- Entity references -->
  58. <SPAN TYPE="LITERAL3" NO_WORD_BREAK="TRUE">
  59. <BEGIN>&amp;</BEGIN>
  60. <END>;</END>
  61. </SPAN>
  62. <!-- Processing instructions -->
  63. <SPAN TYPE="LITERAL3">
  64. <BEGIN>&lt;?</BEGIN>
  65. <END>?&gt;</END>
  66. </SPAN>
  67. <!-- Result elements and extension elements -->
  68. <SPAN DELEGATE="TAGS" TYPE="MARKUP">
  69. <BEGIN>&lt;</BEGIN>
  70. <END>&gt;</END>
  71. </SPAN>
  72. </RULES>
  73. <!-- XML comments -->
  74. <RULES DEFAULT="COMMENT1" IGNORE_CASE="FALSE" SET="TASKS">
  75. <!-- Default task names used in Task List -->
  76. <KEYWORDS>
  77. <COMMENT4>DEBUG:</COMMENT4>
  78. <COMMENT4>DONE:</COMMENT4>
  79. <COMMENT4>FIXME:</COMMENT4>
  80. <COMMENT4>IDEA:</COMMENT4>
  81. <COMMENT4>NOTE:</COMMENT4>
  82. <COMMENT4>QUESTION:</COMMENT4>
  83. <COMMENT4>TODO:</COMMENT4>
  84. <COMMENT4>XXX</COMMENT4>
  85. <COMMENT4>???</COMMENT4>
  86. </KEYWORDS>
  87. </RULES>
  88. <!-- Result elements and extension elements -->
  89. <RULES DEFAULT="MARKUP" HIGHLIGHT_DIGITS="FALSE" NO_WORD_SEP=".-_:" SET="TAGS">
  90. <!-- Highlight all AVTs in result attribute values. -->
  91. <SPAN TYPE="MARKUP" DELEGATE="AVT">
  92. <BEGIN>"</BEGIN>
  93. <END>"</END>
  94. </SPAN>
  95. <SPAN TYPE="MARKUP" DELEGATE="AVT">
  96. <BEGIN>'</BEGIN>
  97. <END>'</END>
  98. </SPAN>
  99. <!-- Namespace declarations -->
  100. <SEQ TYPE="OPERATOR">xmlns:</SEQ>
  101. <!-- Default namespace declaration. Not really used in XSLT -->
  102. <SEQ TYPE="OPERATOR">xmlns</SEQ>
  103. <!-- Namespace prefixes -->
  104. <MARK_PREVIOUS EXCLUDE_MATCH="FALSE" TYPE="LABEL">:</MARK_PREVIOUS>
  105. </RULES>
  106. <!-- AVTs -->
  107. <RULES DEFAULT="KEYWORD3" HIGHLIGHT_DIGITS="FALSE" NO_WORD_SEP=".-_:" SET="AVT">
  108. <!-- Literal curly braces ({}) must be written as {{ or }} -->
  109. <SEQ>{{</SEQ>
  110. <SEQ>}}</SEQ><!-- Does nothing. Is overridden by the SPAN below. -->
  111. <!-- The AVT itself -->
  112. <SPAN DELEGATE="XPATH" TYPE="OPERATOR">
  113. <BEGIN>{</BEGIN>
  114. <END>}</END>
  115. </SPAN>
  116. <!-- Entity references -->
  117. <SPAN TYPE="LITERAL3" NO_WORD_BREAK="TRUE">
  118. <BEGIN>&amp;</BEGIN>
  119. <END>;</END>
  120. </SPAN>
  121. </RULES>
  122. <!-- XSLT tags -->
  123. <RULES DEFAULT="KEYWORD2" HIGHLIGHT_DIGITS="FALSE" NO_WORD_SEP=".-_:" SET="XSLTAGS">
  124. <!-- If we spot something that looks like an AVT, assume it is. Lazy, I know... -->
  125. <SPAN TYPE="KEYWORD2" DELEGATE="AVT">
  126. <BEGIN>"</BEGIN>
  127. <END>"</END>
  128. </SPAN>
  129. <SPAN TYPE="KEYWORD2" DELEGATE="AVT">
  130. <BEGIN>'</BEGIN>
  131. <END>'</END>
  132. </SPAN>
  133. <!-- XSLT attributes that contains XPath expressions or match patterns -->
  134. <!-- count -->
  135. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="c" DELEGATE="XPATH">
  136. <BEGIN>count[[:space:]]*=[[:space:]]*"</BEGIN>
  137. <END>"</END>
  138. </SPAN_REGEXP>
  139. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="c" DELEGATE="XPATH">
  140. <BEGIN>count[[:space:]]*=[[:space:]]*'</BEGIN>
  141. <END>'</END>
  142. </SPAN_REGEXP>
  143. <!-- from -->
  144. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="f" DELEGATE="XPATH">
  145. <BEGIN>from[[:space:]]*=[[:space:]]*"</BEGIN>
  146. <END>"</END>
  147. </SPAN_REGEXP>
  148. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="f" DELEGATE="XPATH">
  149. <BEGIN>from[[:space:]]*=[[:space:]]*'</BEGIN>
  150. <END>'</END>
  151. </SPAN_REGEXP>
  152. <!-- group-adjacent -->
  153. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  154. <BEGIN>group-adjacent[[:space:]]*=[[:space:]]*"</BEGIN>
  155. <END>"</END>
  156. </SPAN_REGEXP>
  157. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  158. <BEGIN>group-adjacent[[:space:]]*=[[:space:]]*'</BEGIN>
  159. <END>'</END>
  160. </SPAN_REGEXP>
  161. <!-- group-by -->
  162. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  163. <BEGIN>group-by[[:space:]]*=[[:space:]]*"</BEGIN>
  164. <END>"</END>
  165. </SPAN_REGEXP>
  166. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  167. <BEGIN>group-by[[:space:]]*=[[:space:]]*'</BEGIN>
  168. <END>'</END>
  169. </SPAN_REGEXP>
  170. <!-- group-ending-with -->
  171. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  172. <BEGIN>group-ending-with[[:space:]]*=[[:space:]]*"</BEGIN>
  173. <END>"</END>
  174. </SPAN_REGEXP>
  175. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  176. <BEGIN>group-ending-with[[:space:]]*=[[:space:]]*'</BEGIN>
  177. <END>'</END>
  178. </SPAN_REGEXP>
  179. <!-- group-starting-with -->
  180. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  181. <BEGIN>group-starting-with[[:space:]]*=[[:space:]]*"</BEGIN>
  182. <END>"</END>
  183. </SPAN_REGEXP>
  184. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="g" DELEGATE="XPATH">
  185. <BEGIN>group-starting-with[[:space:]]*=[[:space:]]*'</BEGIN>
  186. <END>'</END>
  187. </SPAN_REGEXP>
  188. <!-- match -->
  189. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="m" DELEGATE="XPATH">
  190. <BEGIN>match[[:space:]]*=[[:space:]]*"</BEGIN>
  191. <END>"</END>
  192. </SPAN_REGEXP>
  193. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="m" DELEGATE="XPATH">
  194. <BEGIN>match[[:space:]]*=[[:space:]]*'</BEGIN>
  195. <END>'</END>
  196. </SPAN_REGEXP>
  197. <!-- select -->
  198. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="s" DELEGATE="XPATH">
  199. <BEGIN>select[[:space:]]*=[[:space:]]*"</BEGIN>
  200. <END>"</END>
  201. </SPAN_REGEXP>
  202. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="s" DELEGATE="XPATH">
  203. <BEGIN>select[[:space:]]*=[[:space:]]*'</BEGIN>
  204. <END>'</END>
  205. </SPAN_REGEXP>
  206. <!-- test -->
  207. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="t" DELEGATE="XPATH">
  208. <BEGIN>test[[:space:]]*=[[:space:]]*"</BEGIN>
  209. <END>"</END>
  210. </SPAN_REGEXP>
  211. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="t" DELEGATE="XPATH">
  212. <BEGIN>test[[:space:]]*=[[:space:]]*'</BEGIN>
  213. <END>'</END>
  214. </SPAN_REGEXP>
  215. <!-- use -->
  216. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="u" DELEGATE="XPATH">
  217. <BEGIN>use[[:space:]]*=[[:space:]]*"</BEGIN>
  218. <END>"</END>
  219. </SPAN_REGEXP>
  220. <SPAN_REGEXP TYPE="KEYWORD2" HASH_CHAR="u" DELEGATE="XPATH">
  221. <BEGIN>use[[:space:]]*=[[:space:]]*'</BEGIN>
  222. <END>'</END>
  223. </SPAN_REGEXP>
  224. <!-- Namespace declarations -->
  225. <SEQ TYPE="OPERATOR">xmlns:</SEQ>
  226. <!-- Default namespace declaration. Not really used in XSLT -->
  227. <SEQ TYPE="OPERATOR">xmlns</SEQ>
  228. <!-- Namespace prefixes -->
  229. <MARK_PREVIOUS EXCLUDE_MATCH="FALSE" TYPE="LABEL">:</MARK_PREVIOUS>
  230. <!-- XSLT 2.0 element names -->
  231. <KEYWORDS>
  232. <KEYWORD1>analyze-string</KEYWORD1>
  233. <KEYWORD1>apply-imports</KEYWORD1>
  234. <KEYWORD1>apply-templates</KEYWORD1>
  235. <KEYWORD1>attribute</KEYWORD1>
  236. <KEYWORD1>attribute-set</KEYWORD1>
  237. <KEYWORD1>call-template</KEYWORD1>
  238. <KEYWORD1>character-map</KEYWORD1>
  239. <KEYWORD1>choose</KEYWORD1>
  240. <KEYWORD1>comment</KEYWORD1>
  241. <KEYWORD1>copy</KEYWORD1>
  242. <KEYWORD1>copy-of</KEYWORD1>
  243. <KEYWORD1>date-format</KEYWORD1>
  244. <KEYWORD1>decimal-format</KEYWORD1>
  245. <KEYWORD1>element</KEYWORD1>
  246. <KEYWORD1>fallback</KEYWORD1>
  247. <KEYWORD1>for-each</KEYWORD1>
  248. <KEYWORD1>for-each-group</KEYWORD1>
  249. <KEYWORD1>function</KEYWORD1>
  250. <KEYWORD1>if</KEYWORD1>
  251. <KEYWORD1>import</KEYWORD1>
  252. <KEYWORD1>import-schema</KEYWORD1>
  253. <KEYWORD1>include</KEYWORD1>
  254. <KEYWORD1>key</KEYWORD1>
  255. <KEYWORD1>matching-substring</KEYWORD1>
  256. <KEYWORD1>message</KEYWORD1>
  257. <KEYWORD1>namespace</KEYWORD1>
  258. <KEYWORD1>namespace-alias</KEYWORD1>
  259. <KEYWORD1>next-match</KEYWORD1>
  260. <KEYWORD1>non-matching-substring</KEYWORD1>
  261. <KEYWORD1>number</KEYWORD1>
  262. <KEYWORD1>otherwise</KEYWORD1>
  263. <KEYWORD1>output</KEYWORD1>
  264. <KEYWORD1>output-character</KEYWORD1>
  265. <KEYWORD1>param</KEYWORD1>
  266. <KEYWORD1>preserve-space</KEYWORD1>
  267. <KEYWORD1>processing-instruction</KEYWORD1>
  268. <KEYWORD1>result-document</KEYWORD1>
  269. <KEYWORD1>sequence</KEYWORD1>
  270. <KEYWORD1>sort</KEYWORD1>
  271. <KEYWORD1>sort-key</KEYWORD1>
  272. <KEYWORD1>strip-space</KEYWORD1>
  273. <KEYWORD1>stylesheet</KEYWORD1>
  274. <KEYWORD1>template</KEYWORD1>
  275. <KEYWORD1>text</KEYWORD1>
  276. <KEYWORD1>transform</KEYWORD1>
  277. <KEYWORD1>value-of</KEYWORD1>
  278. <KEYWORD1>variable</KEYWORD1>
  279. <KEYWORD1>when</KEYWORD1>
  280. <KEYWORD1>with-param</KEYWORD1>
  281. </KEYWORDS>
  282. </RULES>
  283. <RULES DEFAULT="KEYWORD3" HIGHLIGHT_DIGITS="TRUE" DIGIT_RE="[[:digit:]]+([[:punct:]][[:digit:]]+)?" NO_WORD_SEP=".-_" SET="XPATH">
  284. <!-- String literals -->
  285. <SPAN TYPE="LITERAL1">
  286. <BEGIN>"</BEGIN>
  287. <END>"</END>
  288. </SPAN>
  289. <SPAN TYPE="LITERAL1">
  290. <BEGIN>'</BEGIN>
  291. <END>'</END>
  292. </SPAN>
  293. <!-- XPath comments -->
  294. <SPAN TYPE="COMMENT2" DELEGATE="XPATHCOMMENT2">
  295. <BEGIN>(:</BEGIN>
  296. <END>:)</END>
  297. </SPAN>
  298. <!-- Axes specifiers -->
  299. <MARK_PREVIOUS TYPE="KEYWORD4" EXCLUDE_MATCH="FALSE">::</MARK_PREVIOUS>
  300. <!-- Abbreviated 'attribute::' -->
  301. <SEQ TYPE="KEYWORD4">@</SEQ>
  302. <!-- XPath 2.0 operators + some other stuff -->
  303. <!-- Comparison expressions -->
  304. <SEQ TYPE="OPERATOR">=</SEQ>
  305. <SEQ TYPE="OPERATOR">!=</SEQ>
  306. <SEQ TYPE="OPERATOR">&gt;</SEQ>
  307. <SEQ TYPE="OPERATOR">&amp;gt;</SEQ><!-- Treat as operator -->
  308. <SEQ TYPE="OPERATOR">&amp;lt;</SEQ><!-- Treat as operator -->
  309. <!-- Optional occurrence indicator -->
  310. <SEQ TYPE="OPERATOR">?</SEQ>
  311. <!-- Addition operator, one-or-more occurrence indicator-->
  312. <SEQ TYPE="OPERATOR">+</SEQ>
  313. <!-- Multiplication operator, zero-or-more occurrence indicator, node test -->
  314. <SEQ TYPE="OPERATOR">*</SEQ>
  315. <!-- Path expression step separator -->
  316. <SEQ TYPE="OPERATOR">/</SEQ>
  317. <!-- Union operator -->
  318. <SEQ TYPE="OPERATOR">|</SEQ>
  319. <!-- Sequence expression item separator -->
  320. <SEQ TYPE="OPERATOR">,</SEQ>
  321. <!-- Predicates -->
  322. <SPAN TYPE="OPERATOR" DELEGATE="XPATH">
  323. <BEGIN>[</BEGIN>
  324. <END>]</END>
  325. </SPAN>
  326. <!-- Entity references -->
  327. <SPAN TYPE="LITERAL3" NO_WORD_BREAK="TRUE">
  328. <BEGIN>&amp;</BEGIN>
  329. <END>;</END>
  330. </SPAN>
  331. <!-- Namespace prefixes -->
  332. <MARK_PREVIOUS TYPE="LABEL" EXCLUDE_MATCH="FALSE">:</MARK_PREVIOUS>
  333. <!-- Functions -->
  334. <MARK_PREVIOUS TYPE="FUNCTION" EXCLUDE_MATCH="TRUE">(</MARK_PREVIOUS>
  335. <!-- Variables -->
  336. <MARK_FOLLOWING TYPE="LITERAL2">$</MARK_FOLLOWING>
  337. <!-- XPath 2.0 keywords + some other stuff -->
  338. <KEYWORDS>
  339. <!-- Keywords -->
  340. <OPERATOR>and</OPERATOR>
  341. <OPERATOR>as</OPERATOR>
  342. <OPERATOR>castable</OPERATOR>
  343. <OPERATOR>div</OPERATOR>
  344. <OPERATOR>else</OPERATOR>
  345. <OPERATOR>eq</OPERATOR>
  346. <OPERATOR>every</OPERATOR>
  347. <OPERATOR>except</OPERATOR>
  348. <OPERATOR>for</OPERATOR>
  349. <OPERATOR>ge</OPERATOR>
  350. <OPERATOR>gt</OPERATOR>
  351. <OPERATOR>idiv</OPERATOR>
  352. <OPERATOR>if</OPERATOR>
  353. <OPERATOR>in</OPERATOR>
  354. <OPERATOR>instance</OPERATOR>
  355. <OPERATOR>intersect</OPERATOR>
  356. <OPERATOR>is</OPERATOR>
  357. <OPERATOR>isnot</OPERATOR>
  358. <OPERATOR>le</OPERATOR>
  359. <OPERATOR>lt</OPERATOR>
  360. <OPERATOR>mod</OPERATOR>
  361. <OPERATOR>nillable</OPERATOR>
  362. <OPERATOR>ne</OPERATOR>
  363. <OPERATOR>of</OPERATOR>
  364. <OPERATOR>or</OPERATOR>
  365. <OPERATOR>return</OPERATOR>
  366. <OPERATOR>satisfies</OPERATOR>
  367. <OPERATOR>some</OPERATOR>
  368. <OPERATOR>then</OPERATOR>
  369. <OPERATOR>to</OPERATOR>
  370. <OPERATOR>treat</OPERATOR>
  371. <OPERATOR>union</OPERATOR>
  372. <!-- Subtraction operator -->
  373. <OPERATOR>-</OPERATOR>
  374. </KEYWORDS>
  375. </RULES>
  376. <!-- XPath comments - top or nested within COMMENT3 -->
  377. <RULES DEFAULT="COMMENT2" SET="XPATHCOMMENT2">
  378. <SPAN TYPE="COMMENT3" DELEGATE="XPATHCOMMENT3">
  379. <BEGIN>(:</BEGIN>
  380. <END>:)</END>
  381. </SPAN>
  382. </RULES>
  383. <!-- XPath comments - nested within COMMENT2 -->
  384. <RULES DEFAULT="COMMENT3" SET="XPATHCOMMENT3">
  385. <SPAN TYPE="COMMENT2" DELEGATE="XPATHCOMMENT2">
  386. <BEGIN>(:</BEGIN>
  387. <END>:)</END>
  388. </SPAN>
  389. </RULES>
  390. </MODE>