1 <?xml version="1.0"?>
\r
3 <!DOCTYPE MODE SYSTEM "xmode.dtd">
\r
6 <MODE NAME="zpt" FILE="zpt.xml"
\r
7 FILE_NAME_GLOB="*.{pt,zpt}"/>
\r
12 <PROPERTY NAME="commentStart" VALUE="<!--" />
\r
13 <PROPERTY NAME="commentEnd" VALUE="-->" />
\r
15 <RULES IGNORE_CASE="TRUE">
\r
16 <!-- SGML comment -->
\r
17 <SPAN TYPE="COMMENT1">
\r
18 <BEGIN><!--</BEGIN>
\r
23 <SPAN TYPE="MARKUP" DELEGATE="JAVASCRIPT">
\r
24 <BEGIN><SCRIPT</BEGIN>
\r
25 <END></SCRIPT></END>
\r
29 <SPAN TYPE="MARKUP" DELEGATE="CSS">
\r
30 <BEGIN><STYLE</BEGIN>
\r
31 <END></STYLE></END>
\r
34 <!-- DTD instructions -->
\r
35 <SPAN TYPE="KEYWORD2" DELEGATE="xml::DTD-TAGS">
\r
36 <BEGIN><!</BEGIN>
\r
40 <!-- markup tags -->
\r
41 <SPAN TYPE="MARKUP" DELEGATE="TAGS">
\r
46 <!-- SGML entities -->
\r
47 <SPAN TYPE="LITERAL2" NO_WORD_BREAK="TRUE">
\r
48 <BEGIN>&</BEGIN>
\r
53 <!-- ESCAPE is not exactly right but it is needed to correctly
\r
54 handle JavaScript in on* parameters -->
\r
55 <RULES SET="TAGS" DEFAULT="MARKUP" ESCAPE="\">
\r
56 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
\r
61 <SPAN TYPE="LITERAL1" DELEGATE="ATTRIBUTE">
\r
66 <SEQ TYPE="OPERATOR">=</SEQ>
\r
70 <KEYWORD1>tal</KEYWORD1>
\r
71 <KEYWORD3>attributes</KEYWORD3>
\r
72 <KEYWORD3>define</KEYWORD3>
\r
73 <KEYWORD3>condition</KEYWORD3>
\r
74 <KEYWORD3>content</KEYWORD3>
\r
75 <KEYWORD3>omit-tag</KEYWORD3>
\r
76 <KEYWORD3>on-error</KEYWORD3>
\r
77 <KEYWORD3>repeat</KEYWORD3>
\r
78 <KEYWORD3>replace</KEYWORD3>
\r
81 <KEYWORD1>metal</KEYWORD1>
\r
82 <KEYWORD3>define-macro</KEYWORD3>
\r
83 <KEYWORD3>define-slot</KEYWORD3>
\r
84 <KEYWORD3>fill-slot</KEYWORD3>
\r
85 <KEYWORD3>use-macro</KEYWORD3>
\r
89 <RULES SET="ATTRIBUTE" DEFAULT="LITERAL1">
\r
90 <SEQ TYPE="OPERATOR">:</SEQ>
\r
91 <SEQ TYPE="OPERATOR">;</SEQ>
\r
92 <SEQ TYPE="OPERATOR">?</SEQ>
\r
93 <SEQ TYPE="OPERATOR">|</SEQ>
\r
94 <SEQ TYPE="LITERAL2">$$</SEQ>
\r
96 <SPAN TYPE="LITERAL4">
\r
101 <SPAN TYPE="LITERAL4">
\r
106 <SPAN TYPE="KEYWORD2" NO_LINE_BREAK="TRUE">
\r
110 <MARK_FOLLOWING TYPE="KEYWORD2">$</MARK_FOLLOWING>
\r
111 <!-- highligh python expressions -->
\r
113 <SEQ TYPE="LITERAL2" DELEGATE="python::MAIN"
\r
114 AT_LINE_START="FALSE">python:</SEQ>
\r
117 <!-- TALES expression types -->
\r
118 <KEYWORD4>exists</KEYWORD4>
\r
119 <KEYWORD4>nocall</KEYWORD4>
\r
120 <KEYWORD4>not</KEYWORD4>
\r
121 <KEYWORD4>path</KEYWORD4>
\r
122 <KEYWORD4>python</KEYWORD4>
\r
123 <KEYWORD4>string</KEYWORD4>
\r
124 <KEYWORD4>structure</KEYWORD4>
\r
126 <!-- built-in TALES variables -->
\r
127 <!-- NOTE: root, here, container, template,
\r
128 request, user, and modules are optional -->
\r
129 <LITERAL3>CONTEXTS</LITERAL3>
\r
130 <LITERAL3>attrs</LITERAL3>
\r
131 <LITERAL3>container</LITERAL3>
\r
132 <LITERAL3>default</LITERAL3>
\r
133 <LITERAL3>here</LITERAL3>
\r
134 <LITERAL3>modules</LITERAL3>
\r
135 <LITERAL3>nothing</LITERAL3>
\r
136 <LITERAL3>options</LITERAL3>
\r
137 <LITERAL3>repeat</LITERAL3>
\r
138 <LITERAL3>request</LITERAL3>
\r
139 <LITERAL3>root</LITERAL3>
\r
140 <LITERAL3>template</LITERAL3>
\r
141 <LITERAL3>user</LITERAL3>
\r
143 <!-- repeat variable attributes -->
\r
144 <LITERAL3>index</LITERAL3>
\r
145 <LITERAL3>number</LITERAL3>
\r
146 <LITERAL3>even</LITERAL3>
\r
147 <LITERAL3>odd</LITERAL3>
\r
148 <LITERAL3>start</LITERAL3>
\r
149 <LITERAL3>end</LITERAL3>
\r
150 <LITERAL3>first</LITERAL3>
\r
151 <LITERAL3>last</LITERAL3>
\r
152 <LITERAL3>length</LITERAL3>
\r
153 <LITERAL3>letter</LITERAL3>
\r
154 <LITERAL3>Letter</LITERAL3>
\r
155 <LITERAL3>roman</LITERAL3>
\r
156 <LITERAL3>Roman</LITERAL3>
\r
160 <RULES SET="JAVASCRIPT" DEFAULT="MARKUP" IGNORE_CASE="TRUE">
\r
161 <SEQ TYPE="MARKUP" DELEGATE="javascript::MAIN">></SEQ>
\r
162 <SEQ TYPE="MARKUP" DELEGATE="BACK_TO_HTML">SRC=</SEQ>
\r
165 <RULES SET="BACK_TO_HTML" DEFAULT="MARKUP">
\r
166 <SEQ TYPE="MARKUP" DELEGATE="zpt::MAIN">></SEQ>
\r
169 <RULES SET="CSS" DEFAULT="MARKUP">
\r
170 <SEQ TYPE="MARKUP" DELEGATE="css::MAIN">></SEQ>
\r