]> gitweb.factorcode.org Git - factor.git/blobdiff - basis/xmode/modes/html.xml
xmode.modes: updating with recent xmode files
[factor.git] / basis / xmode / modes / html.xml
index a5af6045db3bd1ef6e61d829d66f36cedb4b4f7c..88c319b969482b6b498c82e421febe0c31979dfd 100644 (file)
-<?xml version="1.0"?>\r
-\r
-<!DOCTYPE MODE SYSTEM "xmode.dtd">\r
-\r
-<MODE>\r
-       <PROPS>\r
-               <PROPERTY NAME="commentStart" VALUE="&lt;!--" />\r
-               <PROPERTY NAME="commentEnd" VALUE="--&gt;" />\r
-       </PROPS>\r
-\r
-       <RULES IGNORE_CASE="TRUE">\r
-               <!-- SGML comment -->\r
-               <SPAN TYPE="COMMENT1">\r
-                       <BEGIN>&lt;!--</BEGIN>\r
-                       <END>--&gt;</END>\r
-               </SPAN>\r
-\r
-               <!-- JavaScript -->\r
-               <SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">\r
-                       <BEGIN>&lt;SCRIPT</BEGIN>\r
-                       <END>&lt;/SCRIPT&gt;</END>\r
-               </SPAN>\r
-\r
-               <!-- stylesheet -->\r
-               <SPAN TYPE="MARKUP" DELEGATE="CSS">\r
-                       <BEGIN>&lt;STYLE</BEGIN>\r
-                       <END>&lt;/STYLE&gt;</END>\r
-               </SPAN>\r
-\r
-               <!-- DTD instructions -->\r
-               <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">\r
-                       <BEGIN>&lt;!</BEGIN>\r
-                       <END>&gt;</END>\r
-               </SPAN>\r
-\r
-               <!-- markup tags -->\r
-               <SPAN TYPE="MARKUP" DELEGATE="TAGS">\r
-                       <BEGIN>&lt;</BEGIN>\r
-                       <END>&gt;</END>\r
-               </SPAN>\r
-\r
-               <!-- SGML entities -->\r
-               <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">\r
-                       <BEGIN>&amp;</BEGIN>\r
-                       <END>;</END>\r
-               </SPAN>\r
-       </RULES>\r
-\r
-       <!-- ESCAPE is not exactly right but it is needed to correctly\r
-            handle JavaScript in on* parameters -->\r
-       <RULES SET="TAGS" DEFAULT="MARKUP" ESCAPE="\">\r
-               <SPAN TYPE="LITERAL1">\r
-                       <BEGIN>"</BEGIN>\r
-                       <END>"</END>\r
-               </SPAN>\r
-\r
-               <SPAN TYPE="LITERAL1">\r
-                       <BEGIN>'</BEGIN>\r
-                       <END>'</END>\r
-               </SPAN>\r
-\r
-               <SEQ TYPE="OPERATOR">=</SEQ>\r
-\r
-               <KEYWORDS>\r
-                       <!-- HTML/XHTML elements, taken from http://de.selfhtml.org/html/referenz/elemente.htm -->\r
-                       <KEYWORD1>fieldset</KEYWORD1>\r
-                       <KEYWORD1>a</KEYWORD1>\r
-                       <KEYWORD1>abbr</KEYWORD1>\r
-                       <KEYWORD1>acronym</KEYWORD1>\r
-                       <KEYWORD1>address</KEYWORD1>\r
-                       <KEYWORD1>applet</KEYWORD1>\r
-                       <KEYWORD1>area</KEYWORD1>\r
-                       <KEYWORD1>b</KEYWORD1>\r
-                       <KEYWORD1>base</KEYWORD1>\r
-                       <KEYWORD1>basefont</KEYWORD1>\r
-                       <KEYWORD1>bdo</KEYWORD1>\r
-                       <KEYWORD1>big</KEYWORD1>\r
-                       <KEYWORD1>blockquote</KEYWORD1>\r
-                       <KEYWORD1>body</KEYWORD1>\r
-                       <KEYWORD1>br</KEYWORD1>\r
-                       <KEYWORD1>button</KEYWORD1>\r
-                       <KEYWORD1>caption</KEYWORD1>\r
-                       <KEYWORD1>center</KEYWORD1>\r
-                       <KEYWORD1>cite</KEYWORD1>\r
-                       <KEYWORD1>code</KEYWORD1>\r
-                       <KEYWORD1>col</KEYWORD1>\r
-                       <KEYWORD1>colgroup</KEYWORD1>\r
-                       <KEYWORD1>dd</KEYWORD1>\r
-                       <KEYWORD1>del</KEYWORD1>\r
-                       <KEYWORD1>dfn</KEYWORD1>\r
-                       <KEYWORD1>dir</KEYWORD1>\r
-                       <KEYWORD1>div</KEYWORD1>\r
-                       <KEYWORD1>dl</KEYWORD1>\r
-                       <KEYWORD1>dt</KEYWORD1>\r
-                       <KEYWORD1>em</KEYWORD1>\r
-                       <KEYWORD1>fieldset</KEYWORD1>\r
-                       <KEYWORD1>font</KEYWORD1>\r
-                       <KEYWORD1>form</KEYWORD1>\r
-                       <KEYWORD1>frame</KEYWORD1>\r
-                       <KEYWORD1>frameset</KEYWORD1>\r
-                       <KEYWORD1>h1</KEYWORD1>\r
-                       <KEYWORD1>h2</KEYWORD1>\r
-                       <KEYWORD1>h3</KEYWORD1>\r
-                       <KEYWORD1>h4</KEYWORD1>\r
-                       <KEYWORD1>h5</KEYWORD1>\r
-                       <KEYWORD1>h6</KEYWORD1>\r
-                       <KEYWORD1>head</KEYWORD1>\r
-                       <KEYWORD1>hr</KEYWORD1>\r
-                       <KEYWORD1>html</KEYWORD1>\r
-                       <KEYWORD1>i</KEYWORD1>\r
-                       <KEYWORD1>iframe</KEYWORD1>\r
-                       <KEYWORD1>img</KEYWORD1>\r
-                       <KEYWORD1>input</KEYWORD1>\r
-                       <KEYWORD1>ins</KEYWORD1>\r
-                       <KEYWORD1>isindex</KEYWORD1>\r
-                       <KEYWORD1>kbd</KEYWORD1>\r
-                       <KEYWORD1>label</KEYWORD1>\r
-                       <KEYWORD1>legend</KEYWORD1>\r
-                       <KEYWORD1>li</KEYWORD1>\r
-                       <KEYWORD1>link</KEYWORD1>\r
-                       <KEYWORD1>map</KEYWORD1>\r
-                       <KEYWORD1>menu</KEYWORD1>\r
-                       <KEYWORD1>meta</KEYWORD1>\r
-                       <KEYWORD1>noframes</KEYWORD1>\r
-                       <KEYWORD1>noscript</KEYWORD1>\r
-                       <KEYWORD1>object</KEYWORD1>\r
-                       <KEYWORD1>ol</KEYWORD1>\r
-                       <KEYWORD1>optgroup</KEYWORD1>\r
-                       <KEYWORD1>option</KEYWORD1>\r
-                       <KEYWORD1>p</KEYWORD1>\r
-                       <KEYWORD1>param</KEYWORD1>\r
-                       <KEYWORD1>pre</KEYWORD1>\r
-                       <KEYWORD1>q</KEYWORD1>\r
-                       <KEYWORD1>s</KEYWORD1>\r
-                       <KEYWORD1>samp</KEYWORD1>\r
-                       <KEYWORD1>script</KEYWORD1>\r
-                       <KEYWORD1>select</KEYWORD1>\r
-                       <KEYWORD1>small</KEYWORD1>\r
-                       <KEYWORD1>span</KEYWORD1>\r
-                       <KEYWORD1>strike</KEYWORD1>\r
-                       <KEYWORD1>strong</KEYWORD1>\r
-                       <KEYWORD1>style</KEYWORD1>\r
-                       <KEYWORD1>sub</KEYWORD1>\r
-                       <KEYWORD1>sup</KEYWORD1>\r
-                       <KEYWORD1>table</KEYWORD1>\r
-                       <KEYWORD1>tbody</KEYWORD1>\r
-                       <KEYWORD1>td</KEYWORD1>\r
-                       <KEYWORD1>textarea</KEYWORD1>\r
-                       <KEYWORD1>tfoot</KEYWORD1>\r
-                       <KEYWORD1>th</KEYWORD1>\r
-                       <KEYWORD1>thead</KEYWORD1>\r
-                       <KEYWORD1>title</KEYWORD1>\r
-                       <KEYWORD1>tr</KEYWORD1>\r
-                       <KEYWORD1>tt</KEYWORD1>\r
-                       <KEYWORD1>u</KEYWORD1>\r
-                       <KEYWORD1>ul</KEYWORD1>\r
-                       <KEYWORD1>var</KEYWORD1>\r
-               </KEYWORDS>\r
-       </RULES>\r
-\r
-       <RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">\r
-               <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">&gt;</SEQ>\r
-               <!-- handle <SCRIPT SRC="..."> properly -->\r
-               <SEQ TYPE="MARKUP" DELEGATE="BACK_TO_HTML">SRC=</SEQ>\r
-       </RULES>\r
-\r
-       <RULES SET="BACK_TO_HTML" DEFAULT="MARKUP">\r
-               <SEQ TYPE="MARKUP" DELEGATE="html::MAIN">&gt;</SEQ>\r
-       </RULES>\r
-\r
-       <RULES SET="CSS" DEFAULT="MARKUP">\r
-               <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">&gt;</SEQ>\r
-       </RULES>\r
-</MODE>\r
+<?xml version="1.0"?>
+
+<!DOCTYPE MODE SYSTEM "xmode.dtd">
+
+<MODE>
+       <PROPS>
+               <PROPERTY NAME="commentStart" VALUE="&lt;!--" />
+               <PROPERTY NAME="commentEnd" VALUE="--&gt;" />
+       </PROPS>
+
+       <RULES IGNORE_CASE="TRUE">
+               <!-- SGML comment -->
+               <SPAN TYPE="COMMENT1">
+                       <BEGIN>&lt;!--</BEGIN>
+                       <END>--&gt;</END>
+               </SPAN>
+
+               <!-- JavaScript -->
+               <SPAN_REGEXP TYPE="MARKUP" DELEGATE="JAVASCRIPT" HASH_CHAR="&lt;">
+                       <BEGIN>&lt;(?=SCRIPT\b)</BEGIN>
+                       <END REGEXP="TRUE">(?i)(?=&lt;/SCRIPT\b)</END>
+               </SPAN_REGEXP>
+
+               <!-- stylesheet -->
+               <SPAN_REGEXP TYPE="MARKUP" DELEGATE="CSS" HASH_CHAR="&lt;">
+                       <BEGIN>&lt;(?=STYLE\b)</BEGIN>
+                       <END REGEXP="TRUE">(?i)(?=&lt;/STYLE\b)</END>
+               </SPAN_REGEXP>
+
+               <!-- DTD instructions -->
+               <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
+                       <BEGIN>&lt;!</BEGIN>
+                       <END>&gt;</END>
+               </SPAN>
+
+               <!-- markup tags -->
+               <SPAN TYPE="MARKUP" DELEGATE="TAGS">
+                       <BEGIN>&lt;</BEGIN>
+                       <END>&gt;</END>
+               </SPAN>
+
+               <!-- SGML character entities -->
+               <IMPORT DELEGATE="CHARACTER_ENTITIES" />
+       </RULES>
+
+       <RULES SET="TAGS" DEFAULT="MARKUP">
+               <!-- Inline CSS -->
+               <SPAN_REGEXP AT_WORD_START="TRUE" TYPE="MARKUP" DELEGATE="css::PROPERTIES" HASH_CHAR="style">
+                       <BEGIN>style\s*=\s*(["'])</BEGIN>
+                       <END>$1</END>
+               </SPAN_REGEXP>
+
+               <!-- Javascript: delegate on* attributes to Javascript mode -->
+               <SPAN_REGEXP AT_WORD_START="TRUE" DELEGATE="javascript::MAIN" HASH_CHAR="on" TYPE="MARKUP">
+                       <BEGIN>on[a-z]+\s*=\s*(["'])</BEGIN>
+                       <END>$1</END>
+               </SPAN_REGEXP>
+
+               <!-- NOTE: no ESCAPE for quotes, at least for attributes; e.g onclick="alert(\"foo\");" is invalid! -->
+               <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
+                       <BEGIN>"</BEGIN>
+                       <END>"</END>
+               </SPAN>
+               <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
+                       <BEGIN>'</BEGIN>
+                       <END>'</END>
+               </SPAN>
+
+               <SEQ TYPE="OPERATOR">=</SEQ>
+
+               <KEYWORDS>
+                       <!-- HTML/XHTML elements, taken from http://de.selfhtml.org/html/referenz/elemente.htm -->
+                       <!-- updated to include html5 elements. Obsolete and deprecated elements
+                       are still here for backward compatibility. -->
+                       <KEYWORD1>a</KEYWORD1>
+                       <KEYWORD1>abbr</KEYWORD1>
+                       <KEYWORD1>acronym</KEYWORD1>
+                       <KEYWORD1>address</KEYWORD1>
+                       <KEYWORD1>applet</KEYWORD1>
+                       <KEYWORD1>area</KEYWORD1>
+                       <KEYWORD1>article</KEYWORD1>
+                       <KEYWORD1>aside</KEYWORD1>
+                       <KEYWORD1>audio</KEYWORD1>
+                       <KEYWORD1>b</KEYWORD1>
+                       <KEYWORD1>base</KEYWORD1>
+                       <KEYWORD1>basefont</KEYWORD1>
+                       <KEYWORD1>bdi</KEYWORD1>
+                       <KEYWORD1>bdo</KEYWORD1>
+                       <KEYWORD1>big</KEYWORD1>
+                       <KEYWORD1>blockquote</KEYWORD1>
+                       <KEYWORD1>body</KEYWORD1>
+                       <KEYWORD1>br</KEYWORD1>
+                       <KEYWORD1>button</KEYWORD1>
+                       <KEYWORD1>canvas</KEYWORD1>
+                       <KEYWORD1>caption</KEYWORD1>
+                       <KEYWORD1>center</KEYWORD1>
+                       <KEYWORD1>cite</KEYWORD1>
+                       <KEYWORD1>code</KEYWORD1>
+                       <KEYWORD1>col</KEYWORD1>
+                       <KEYWORD1>colgroup</KEYWORD1>
+                       <KEYWORD1>command</KEYWORD1>
+                       <KEYWORD1>data</KEYWORD1>
+                       <KEYWORD1>datalist</KEYWORD1>
+                       <KEYWORD1>dd</KEYWORD1>
+                       <KEYWORD1>del</KEYWORD1>
+                       <KEYWORD1>details</KEYWORD1>
+                       <KEYWORD1>dfn</KEYWORD1>
+                       <KEYWORD1>dir</KEYWORD1>
+                       <KEYWORD1>div</KEYWORD1>
+                       <KEYWORD1>dl</KEYWORD1>
+                       <KEYWORD1>dt</KEYWORD1>
+                       <KEYWORD1>em</KEYWORD1>
+                       <KEYWORD1>embed</KEYWORD1>
+                       <KEYWORD1>fieldset</KEYWORD1>
+                       <KEYWORD1>figcaption</KEYWORD1>
+                       <KEYWORD1>figure</KEYWORD1>
+                       <KEYWORD1>font</KEYWORD1>
+                       <KEYWORD1>footer</KEYWORD1>
+                       <KEYWORD1>form</KEYWORD1>
+                       <KEYWORD1>frame</KEYWORD1>
+                       <KEYWORD1>frameset</KEYWORD1>
+                       <KEYWORD1>h1</KEYWORD1>
+                       <KEYWORD1>h2</KEYWORD1>
+                       <KEYWORD1>h3</KEYWORD1>
+                       <KEYWORD1>h4</KEYWORD1>
+                       <KEYWORD1>h5</KEYWORD1>
+                       <KEYWORD1>h6</KEYWORD1>
+                       <KEYWORD1>head</KEYWORD1>
+                       <KEYWORD1>header</KEYWORD1>
+                       <KEYWORD1>hgroup</KEYWORD1>
+                       <KEYWORD1>hr</KEYWORD1>
+                       <KEYWORD1>html</KEYWORD1>
+                       <KEYWORD1>i</KEYWORD1>
+                       <KEYWORD1>iframe</KEYWORD1>
+                       <KEYWORD1>img</KEYWORD1>
+                       <KEYWORD1>input</KEYWORD1>
+                       <KEYWORD1>ins</KEYWORD1>
+                       <KEYWORD1>isindex</KEYWORD1>
+                       <KEYWORD1>kbd</KEYWORD1>
+                       <KEYWORD1>keygen</KEYWORD1>
+                       <KEYWORD1>label</KEYWORD1>
+                       <KEYWORD1>legend</KEYWORD1>
+                       <KEYWORD1>li</KEYWORD1>
+                       <KEYWORD1>link</KEYWORD1>
+                       <KEYWORD1>map</KEYWORD1>
+                       <KEYWORD1>mark</KEYWORD1>
+                       <KEYWORD1>menu</KEYWORD1>
+                       <KEYWORD1>meta</KEYWORD1>
+                       <KEYWORD1>meter</KEYWORD1>
+                       <KEYWORD1>nav</KEYWORD1>
+                       <KEYWORD1>noframes</KEYWORD1>
+                       <KEYWORD1>noscript</KEYWORD1>
+                       <KEYWORD1>object</KEYWORD1>
+                       <KEYWORD1>ol</KEYWORD1>
+                       <KEYWORD1>optgroup</KEYWORD1>
+                       <KEYWORD1>option</KEYWORD1>
+                       <KEYWORD1>output</KEYWORD1>
+                       <KEYWORD1>p</KEYWORD1>
+                       <KEYWORD1>param</KEYWORD1>
+                       <KEYWORD1>path</KEYWORD1>
+                       <KEYWORD1>pre</KEYWORD1>
+                       <KEYWORD1>progress</KEYWORD1>
+                       <KEYWORD1>q</KEYWORD1>
+                       <KEYWORD1>rp</KEYWORD1>
+                       <KEYWORD1>rt</KEYWORD1>
+                       <KEYWORD1>ruby</KEYWORD1>
+                       <KEYWORD1>s</KEYWORD1>
+                       <KEYWORD1>samp</KEYWORD1>
+                       <KEYWORD1>script</KEYWORD1>
+                       <KEYWORD1>section</KEYWORD1>
+                       <KEYWORD1>select</KEYWORD1>
+                       <KEYWORD1>small</KEYWORD1>
+                       <KEYWORD1>source</KEYWORD1>
+                       <KEYWORD1>span</KEYWORD1>
+                       <KEYWORD1>strike</KEYWORD1>
+                       <KEYWORD1>strong</KEYWORD1>
+                       <KEYWORD1>style</KEYWORD1>
+                       <KEYWORD1>sub</KEYWORD1>
+                       <KEYWORD1>summary</KEYWORD1>
+                       <KEYWORD1>sup</KEYWORD1>
+                       <KEYWORD1>svg</KEYWORD1>
+                       <KEYWORD1>table</KEYWORD1>
+                       <KEYWORD1>tbody</KEYWORD1>
+                       <KEYWORD1>td</KEYWORD1>
+                       <KEYWORD1>textarea</KEYWORD1>
+                       <KEYWORD1>tfoot</KEYWORD1>
+                       <KEYWORD1>th</KEYWORD1>
+                       <KEYWORD1>thead</KEYWORD1>
+                       <KEYWORD1>time</KEYWORD1>
+                       <KEYWORD1>title</KEYWORD1>
+                       <KEYWORD1>tr</KEYWORD1>
+                       <KEYWORD1>track</KEYWORD1>
+                       <KEYWORD1>tt</KEYWORD1>
+                       <KEYWORD1>u</KEYWORD1>
+                       <KEYWORD1>ul</KEYWORD1>
+                       <KEYWORD1>var</KEYWORD1>
+                       <KEYWORD1>video</KEYWORD1>
+                       <KEYWORD1>wbr</KEYWORD1>
+               </KEYWORDS>
+       </RULES>
+
+       <!-- SCRIPT tag: Highlight tag and switch to language ruleset. -->
+       <RULES SET="JAVASCRIPT" DEFAULT="MARKUP">
+               <!--If the content of the TYPE attribute is recognized, switch to
+                       language specific ruleset. -->
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="COFFEESCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?text/coffeescript)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?text/vbscript)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="VBSCRIPT_TAG"
+                                       HASH_CHAR="language">language(?=\s*=\s*['"]?vbscript)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="PYTHON_SCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/python)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="RUBY_SCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/ruby)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XML_SCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?application/xml)</SEQ_REGEXP>
+               <SEQ_REGEXP TYPE="MARKUP" DELEGATE="XQUERY_SCRIPT_TAG"
+                                       HASH_CHAR="type">type(?=\s*=\s*['"]?\w+/xquery)</SEQ_REGEXP>
+               <!-- Switch to JavaScript ruleset after the tag. -->
+               <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">&gt;</SEQ>
+               <!-- Import rules for highlighting. -->
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- CoffeeScript -->
+       <RULES SET="COFFEESCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="coffeescript::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- Python - provided by Gestalt -->
+       <RULES SET="PYTHON_SCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="python::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- Ruby - provided by Gestalt -->
+       <RULES SET="RUBY_SCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="ruby::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- VBScript - provided by Internet Explorer -->
+       <RULES SET="VBSCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="vbscript::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- XML - for XAML, provided by Gestalt -->
+       <RULES SET="XML_SCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="xml::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- XQUERY - provided by XQIB -->
+       <RULES SET="XQUERY_SCRIPT_TAG" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="xq::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <!-- STYLE tag: Highlight tag and delegate to CSS mode. -->
+       <RULES SET="CSS" DEFAULT="MARKUP">
+               <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">&gt;</SEQ>
+               <IMPORT DELEGATE="TAGS"/>
+       </RULES>
+
+       <RULES SET="ATTRIBUTE" DEFAULT="LITERAL1">
+               <IMPORT DELEGATE="CHARACTER_ENTITIES" />
+       </RULES>
+
+       <!-- SGML character entities - to be used with IMPORT tag -->
+       <RULES SET="CHARACTER_ENTITIES">
+               <SEQ_REGEXP TYPE="LITERAL2"
+                                       HASH_CHAR="&amp;">&amp;(#\d+|#x\p{XDigit}+|\p{Alnum}+);</SEQ_REGEXP>
+               <SEQ TYPE="INVALID">&amp;</SEQ>
+       </RULES>
+</MODE>