[FIX] allow text inside <label> tags
[odoo/odoo.git] / openerp / addons / base / rng / view.rng
1 <?xml version="1.0" encoding="UTF-8"?>
2 <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
3              xmlns:a="http://relaxng.org/ns/annotation/1.0"
4              datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
5     <!-- Handling of element overloading when inheriting from a base
6          template
7     -->
8     <rng:define name="overload">
9         <rng:optional>
10             <!--
11                 Alter matched element with content
12             -->
13             <rng:choice>
14                 <rng:attribute name="position">
15                     <rng:choice>
16                         <!-- Insert content before first child -->
17                         <rng:value>before</rng:value>
18                         <!-- Insert content after last child -->
19                         <rng:value>after</rng:value>
20                         <!-- Replace all children with content -->
21                         <rng:value>inside</rng:value>
22                         <!-- Replace matched element itself with content -->
23                         <rng:value>replace</rng:value>
24                     </rng:choice>
25                 </rng:attribute>
26                 <rng:group>
27                     <rng:attribute name="position">
28                         <!-- Edit element attributes -->
29                         <rng:value>attributes</rng:value>
30                     </rng:attribute>
31                     <rng:oneOrMore>
32                         <rng:element name="attribute">
33                             <rng:attribute name="name"><rng:text/></rng:attribute>
34                             <rng:text />
35                         </rng:element>
36                     </rng:oneOrMore>
37                 </rng:group>
38             </rng:choice>
39         </rng:optional>
40     </rng:define>
41
42     <rng:define name="access_rights">
43         <rng:optional>
44             <rng:attribute name="groups"/>
45         </rng:optional>
46     </rng:define>
47
48     <rng:define name="dashboard-column">
49         <rng:element name="column">
50             <rng:zeroOrMore>
51                 <rng:element name="action">
52                     <!-- Action identifier, used by clients to get the
53                          actual action from db -->
54                     <rng:attribute name="name"/>
55                     <!-- Displayed name of dashboard item (above idem) -->
56                     <rng:optional><rng:attribute name="string"/></rng:optional>
57                     <!-- Merged into the action descriptor's own
58                          context before executing the action -->
59                     <rng:optional><rng:attribute name="context"/></rng:optional>
60                     <!-- Added to the action descriptor's own domain
61                          before executing the action -->
62                     <rng:optional><rng:attribute name="domain"/></rng:optional>
63                     <!-- In case the action is an act_window,
64                          overrides its own @views. -->
65                     <rng:optional><rng:attribute name="view_mode"/></rng:optional>
66                     <!-- Add a 'Create' button in order to create a new resource of the action's model
67                          values :  [true|false|<ID of specific action view>]. -->
68                     <rng:optional><rng:attribute name="creatable"/></rng:optional>
69                 </rng:element>
70             </rng:zeroOrMore>
71         </rng:element>
72     </rng:define>
73     <rng:define name="dashboard">
74         <rng:choice>
75             <rng:element name="board">
76                 <a:documentation>
77                   New-style (6.1) dashboard definition
78                 </a:documentation>
79                 <rng:choice>
80                     <rng:group>
81                         <a:documentation>
82                           Single-column dashboard style
83                         </a:documentation>
84                         <rng:attribute name="style">
85                             <rng:value>1</rng:value>
86                         </rng:attribute>
87                         <rng:ref name="dashboard-column"/>
88                     </rng:group>
89                     <rng:group>
90                         <a:documentation>
91                           Three different 2-column dashboard styles:
92                           50|50, 33|66 and 66|33.
93                         </a:documentation>
94                         <rng:attribute name="style">
95                             <rng:choice>
96                                 <rng:value>1-1</rng:value>
97                                 <rng:value>1-2</rng:value>
98                                 <rng:value>2-1</rng:value>
99                             </rng:choice>
100                         </rng:attribute>
101                         <rng:ref name="dashboard-column"/>
102                         <rng:ref name="dashboard-column"/>
103                     </rng:group>
104                     <rng:group>
105                         <a:documentation>
106                           Three-column dashboard style: 33|33|33
107                         </a:documentation>
108                         <rng:attribute name="style">
109                             <rng:value>1-1-1</rng:value>
110                         </rng:attribute>
111                         <rng:ref name="dashboard-column"/>
112                         <rng:ref name="dashboard-column"/>
113                         <rng:ref name="dashboard-column"/>
114                     </rng:group>
115                 </rng:choice>
116             </rng:element>
117             <!--
118                 DEPRECATED old-style dashboards
119             -->
120             <rng:element>
121                 <rng:choice>
122                     <rng:name>hpaned</rng:name>
123                     <rng:name>vpaned</rng:name>
124                 </rng:choice>
125                 <rng:optional>
126                     <rng:attribute name="position">
127                         <rng:data type="int"/>
128                     </rng:attribute>
129                 </rng:optional>
130                 <rng:zeroOrMore>
131                     <rng:optional><rng:ref name="any"/></rng:optional>
132                     <rng:optional><rng:ref name="html"/></rng:optional>
133                 </rng:zeroOrMore>
134             </rng:element>
135         </rng:choice>
136     </rng:define>
137
138     <rng:define name="container">
139         <rng:optional><rng:attribute name="col"/></rng:optional>
140         <rng:zeroOrMore>
141             <rng:choice>
142                 <rng:ref name="notebook"/>
143                 <rng:ref name="field"/>
144                 <rng:ref name="group"/>
145                 <rng:ref name="button"/>
146                 <rng:ref name="label" />
147                 <rng:ref name="separator"/>
148                 <rng:ref name="image"/>
149                 <rng:ref name="form"/>
150                 <rng:ref name="dashboard"/>
151                 <rng:ref name="filter"/>
152                 <rng:ref name="html"/>
153                 <rng:element name="newline"><rng:empty/></rng:element>
154                 <rng:element name="properties"><rng:empty/></rng:element>
155             </rng:choice>
156         </rng:zeroOrMore>
157     </rng:define>
158
159     <rng:define name="form">
160         <rng:element name="form">
161             <rng:ref name="overload"/>
162             <rng:optional><rng:attribute name="string"/></rng:optional>
163             <rng:optional><rng:attribute name="type"/></rng:optional>
164             <rng:optional><rng:attribute name="link"/></rng:optional>
165             <rng:ref name="container"/>
166         </rng:element>
167     </rng:define>
168
169     <rng:define name="diagram">
170         <rng:element name="diagram">
171             <rng:optional><rng:attribute name="string"/></rng:optional>
172             <rng:ref name="node"/>
173             <rng:ref name="arrow"/>
174         </rng:element>
175     </rng:define>
176
177     <rng:define name="node">
178         <rng:element name="node">
179             <rng:attribute name="object"/>
180             <rng:optional><rng:attribute name="shape"/></rng:optional>
181             <rng:optional><rng:attribute name="bgcolor"/></rng:optional>
182             <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
183             <rng:oneOrMore>
184               <rng:ref name="field"/>
185             </rng:oneOrMore>
186         </rng:element>
187     </rng:define>
188
189     <rng:define name="arrow">
190         <rng:element name="arrow">
191             <rng:attribute name="object" />
192             <rng:attribute name="source" />
193             <rng:attribute name="destination" />
194             <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
195             <rng:optional><rng:attribute name="label"/></rng:optional>
196             <rng:oneOrMore>
197               <rng:ref name="field"/>
198             </rng:oneOrMore>
199         </rng:element>
200     </rng:define>
201
202     <rng:define name="kanban">
203         <rng:element name="kanban">
204             <rng:optional>
205                 <!-- group-by field to apply in the kanban view when no other
206                      grouping is selected in the search view -->
207                 <rng:attribute name="default_group_by" />
208             </rng:optional>
209             <rng:zeroOrMore>
210                 <rng:ref name="field"/>
211             </rng:zeroOrMore>
212             <rng:element name="templates">
213                 <rng:oneOrMore>
214                     <rng:ref name="any"/>
215                 </rng:oneOrMore>
216             </rng:element>
217         </rng:element>
218     </rng:define>
219
220     <rng:define name="tree">
221         <rng:element name="tree">
222             <rng:ref name="overload"/>
223             <rng:optional><rng:attribute name="string"/></rng:optional>
224             <rng:optional><rng:attribute name="colors"/></rng:optional>
225             <rng:optional><rng:attribute name="color"/></rng:optional>
226             <rng:optional>
227               <rng:attribute name="editable">
228                 <rng:choice>
229                   <rng:value>top</rng:value>
230                   <rng:value>bottom</rng:value>
231                 </rng:choice>
232               </rng:attribute>
233             </rng:optional>
234             <rng:optional><rng:attribute name="toolbar"/></rng:optional>
235             <rng:optional><rng:attribute name="link"/></rng:optional>
236             <rng:optional><rng:attribute name="type"/></rng:optional>
237             <rng:optional><rng:attribute name="limit"/></rng:optional>
238             <rng:optional><rng:attribute name="min_rows"/></rng:optional>
239             <rng:optional><rng:attribute name="on_write"/></rng:optional>
240             <rng:zeroOrMore>
241                 <rng:choice>
242                     <rng:ref name="field"/>
243                     <rng:ref name="separator"/>
244                     <rng:ref name="tree"/>
245                     <rng:ref name="group"/>
246                     <rng:ref name="button"/>
247                     <rng:ref name="filter"/>
248                     <rng:ref name="html"/>
249                     <rng:element name="newline"><rng:empty/></rng:element>
250                 </rng:choice>
251             </rng:zeroOrMore>
252         </rng:element>
253     </rng:define>
254
255     <rng:define name="search">
256         <rng:element name="search">
257             <rng:ref name="overload"/>
258             <rng:optional><rng:attribute name="string"/></rng:optional>
259             <rng:optional><rng:attribute name="col"/></rng:optional>
260             <rng:optional><rng:attribute name="type"/></rng:optional>
261             <rng:optional><rng:attribute name="link"/></rng:optional>
262             <rng:zeroOrMore>
263                 <rng:choice>
264                     <rng:ref name="field"/>
265                     <rng:ref name="group"/>
266                     <rng:ref name="separator"/>
267                     <rng:ref name="filter"/>
268                     <rng:ref name="search"/>
269                     <rng:element name="newline"><rng:empty/></rng:element>
270                     <rng:element name="properties"><rng:empty/></rng:element>
271                 </rng:choice>
272             </rng:zeroOrMore>
273         </rng:element>
274     </rng:define>
275
276     <rng:define name="image">
277         <rng:element name="image">
278             <rng:attribute name="name"/>
279         </rng:element>
280     </rng:define>
281
282     <rng:define name="html">
283         <rng:element name="html">
284             <rng:zeroOrMore>
285                     <rng:text/>
286                     <rng:ref name="any"/>
287             </rng:zeroOrMore>
288         </rng:element>
289     </rng:define>
290
291     <rng:define name="label">
292         <rng:element name="label">
293             <rng:ref name="overload"/>
294             <rng:optional><rng:attribute name="align"/></rng:optional>
295             <rng:optional><rng:attribute name="nolabel"/></rng:optional>
296             <rng:optional><rng:attribute name="colspan"/></rng:optional>
297             <rng:optional><rng:attribute name="string"/></rng:optional>
298             <rng:optional><rng:attribute name="angle"/></rng:optional>
299             <rng:optional><rng:attribute name="fill"/></rng:optional>
300             <rng:optional><rng:attribute name="help"/></rng:optional>
301             <rng:optional><rng:attribute name="width"/></rng:optional>
302             <rng:optional><rng:attribute name="wrap"/></rng:optional>
303             <rng:optional><rng:attribute name="name"/></rng:optional>
304             <rng:zeroOrMore>
305                 <rng:choice>
306                     <rng:text/>
307                     <rng:ref name="notebook"/>
308                     <rng:ref name="field"/>
309                     <rng:ref name="group"/>
310                     <rng:ref name="button"/>
311                     <rng:ref name="label" />
312                     <rng:ref name="separator"/>
313                     <rng:ref name="image"/>
314                     <rng:ref name="form"/>
315                     <rng:ref name="dashboard"/>
316                     <rng:ref name="filter"/>
317                     <rng:ref name="html"/>
318                     <rng:element name="newline"><rng:empty/></rng:element>
319                     <rng:element name="properties"><rng:empty/></rng:element>
320                 </rng:choice>
321             </rng:zeroOrMore>
322         </rng:element>
323     </rng:define>
324
325     <rng:define name="level">
326         <rng:element name="level">
327             <rng:optional><rng:attribute name="object"/></rng:optional>
328             <rng:optional><rng:attribute name="link"/></rng:optional>
329             <rng:optional><rng:attribute name="domain"/></rng:optional>
330             <rng:zeroOrMore>
331                 <rng:ref name="field"/>
332             </rng:zeroOrMore>
333             <rng:zeroOrMore>
334                 <rng:ref name="html"/>
335             </rng:zeroOrMore>
336         </rng:element>
337     </rng:define>
338
339     <rng:define name="gantt">
340         <rng:element name="gantt">
341             <rng:optional><rng:attribute name="mode">
342               <rng:choice>
343                  <rng:value>day</rng:value>
344                  <rng:value>3days</rng:value>
345                  <rng:value>week</rng:value>
346                  <rng:value>3weeks</rng:value>
347                  <rng:value>month</rng:value>
348                  <rng:value>3months</rng:value>
349                  <rng:value>year</rng:value>
350                  <rng:value>3years</rng:value>
351                  <rng:value>5years</rng:value>
352               </rng:choice></rng:attribute>
353             </rng:optional>
354             <rng:optional><rng:attribute name="color"/></rng:optional>
355             <rng:optional><rng:attribute name="date_delay"/></rng:optional>
356             <rng:optional><rng:attribute name="day_length"/></rng:optional>
357             <rng:optional><rng:attribute name="date_start"/></rng:optional>
358             <rng:optional><rng:attribute name="date_stop"/></rng:optional>
359             <rng:optional><rng:attribute name="date_string"/></rng:optional>
360             <rng:optional><rng:attribute name="string"/></rng:optional>
361             <rng:optional><rng:attribute name="default_group_by"/></rng:optional>
362             <rng:zeroOrMore>
363                 <rng:optional><rng:ref name="level"/></rng:optional>
364                 <rng:optional><rng:ref name="field"/></rng:optional>
365                 <rng:optional><rng:ref name="html"/></rng:optional>
366             </rng:zeroOrMore>
367         </rng:element>
368     </rng:define>
369
370     <rng:define name="any">
371         <rng:element>
372             <rng:anyName/>
373             <rng:zeroOrMore>
374                 <rng:choice>
375                     <rng:attribute>
376                         <rng:anyName/>
377                     </rng:attribute>
378                     <rng:text/>
379                     <rng:ref name="any"/>
380                 </rng:choice>
381             </rng:zeroOrMore>
382         </rng:element>
383     </rng:define>
384
385     <rng:define name="page">
386         <rng:element name="page">
387             <rng:ref name="overload"/>
388             <rng:ref name="access_rights"/>
389             <rng:optional><rng:attribute name="string"/></rng:optional>
390             <rng:optional><rng:attribute name="name"/></rng:optional>
391             <rng:optional><rng:attribute name="attrs"/></rng:optional>
392             <rng:optional><rng:attribute name="invisible"/></rng:optional>
393             <rng:zeroOrMore>
394                 <rng:choice>
395                     <rng:element name="newline"><rng:empty/></rng:element>
396                     <rng:element name="properties"><rng:empty/></rng:element>
397                     <rng:ref name="label" />
398                     <rng:ref name="field"/>
399                     <rng:ref name="group"/>
400                     <rng:ref name="separator"/>
401                     <rng:ref name="button"/>
402                     <rng:ref name="form" />
403                     <rng:ref name="page" />
404                     <rng:ref name="notebook"/>
405                     <rng:ref name="dashboard"/>
406                     <rng:ref name="filter"/>
407                     <rng:ref name="html"/>
408                 </rng:choice>
409             </rng:zeroOrMore>
410         </rng:element>
411     </rng:define>
412
413     <rng:define name="notebook">
414         <rng:element name="notebook">
415             <rng:ref name="overload"/>
416             <rng:optional><rng:attribute name="colspan"/></rng:optional>
417             <rng:optional>
418               <rng:attribute name="tabpos">
419                 <!-- position of the notebook's tabs bar, support is
420                      optional and implementation-dependent -->
421                 <rng:choice>
422                   <rng:value>up</rng:value>
423                   <rng:value>down</rng:value>
424                   <rng:value>left</rng:value>
425                   <rng:value>right</rng:value>
426                 </rng:choice>
427               </rng:attribute>
428             </rng:optional>
429             <rng:oneOrMore>
430                 <rng:ref name="page"/>
431             </rng:oneOrMore>
432         </rng:element>
433     </rng:define>
434
435     <rng:define name="separator">
436         <rng:element name="separator">
437             <rng:ref name="overload"/>
438             <rng:ref name="access_rights"/>
439             <rng:optional><rng:attribute name="name"/></rng:optional>
440             <rng:optional><rng:attribute name="colspan"/></rng:optional>
441             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
442             <rng:optional><rng:attribute name="string"/></rng:optional>
443             <rng:optional><rng:attribute name="col"/></rng:optional>
444             <rng:optional><rng:attribute name="select"/></rng:optional>
445             <rng:optional><rng:attribute name="orientation"/></rng:optional>
446             <rng:zeroOrMore>
447                 <rng:choice>
448                     <rng:ref name="separator"/>
449                     <rng:ref name="button"/>
450                     <rng:ref name="field"/>
451                     <rng:ref name="label" />
452                     <rng:ref name="group" />
453                     <rng:ref name="filter"/>
454                     <rng:ref name="html"/>
455                     <rng:element name="properties"><rng:empty/></rng:element>
456                     <rng:element name="newline"><rng:empty/></rng:element>
457                 </rng:choice>
458             </rng:zeroOrMore>
459         </rng:element>
460     </rng:define>
461
462     <rng:define name="xpath">
463         <rng:element name="xpath">
464             <rng:optional><rng:attribute name="expr"/></rng:optional>
465             <rng:ref name="overload"/>
466             <rng:zeroOrMore>
467                 <rng:choice>
468                     <rng:ref name="any"/>
469                     <rng:ref name="button"/>
470                     <rng:ref name="html"/>
471                 </rng:choice>
472             </rng:zeroOrMore>
473         </rng:element>
474     </rng:define>
475
476     <rng:define name="data">
477         <rng:element name="data">
478             <rng:zeroOrMore>
479                 <rng:choice>
480                     <rng:ref name="form"/>
481                     <rng:ref name="tree"/>
482                     <rng:ref name="field"/>
483                     <rng:ref name="label"/>
484                     <rng:ref name="separator"/>
485                     <rng:ref name="notebook"/>
486                     <rng:ref name="page"/>
487                     <rng:ref name="xpath"/>
488                     <rng:ref name="button"/>
489                     <rng:ref name="group"/>
490                     <rng:ref name="filter"/>
491                     <rng:ref name="graph"/>
492                     <rng:ref name="html"/>
493                     <rng:element name="newline"><rng:empty/></rng:element>
494                 </rng:choice>
495             </rng:zeroOrMore>
496         </rng:element>
497     </rng:define>
498
499     <rng:define name="field">
500         <rng:element name="field">
501             <rng:attribute name="name" />
502             <rng:ref name="overload"/>
503             <rng:ref name="access_rights"/>
504             <rng:optional><rng:attribute name="domain_filter"/></rng:optional>
505             <rng:optional><rng:attribute name="attrs"/></rng:optional>
506             <rng:optional><rng:attribute name="string"/></rng:optional>
507             <rng:optional><rng:attribute name="completion"/></rng:optional>
508             <rng:optional><rng:attribute name="width"/></rng:optional>
509             <rng:optional><rng:attribute name="type"/></rng:optional>
510             <rng:optional><rng:attribute name="ref"/></rng:optional>
511             <rng:optional><rng:attribute name="eval"/></rng:optional>
512             <rng:optional><rng:attribute name="search"/></rng:optional>
513             <rng:optional><rng:attribute name="model"/></rng:optional>
514             <rng:optional><rng:attribute name="use"/></rng:optional>
515             <rng:optional><rng:attribute name="on_change"/></rng:optional>
516             <rng:optional><rng:attribute name="domain"/></rng:optional>
517             <rng:optional><rng:attribute name="filter_domain"/></rng:optional>
518             <rng:optional><rng:attribute name="invisible"/></rng:optional>
519             <rng:optional><rng:attribute name="password"/></rng:optional>
520             <rng:optional><rng:attribute name="comparator"/></rng:optional>
521             <rng:optional><rng:attribute name="sum"/></rng:optional>
522             <rng:optional><rng:attribute name="bold"/></rng:optional>
523             <rng:optional><rng:attribute name="avg"/></rng:optional>
524             <rng:optional><rng:attribute name="select"/></rng:optional>
525             <rng:optional><rng:attribute name="group"/></rng:optional>
526             <rng:optional><rng:attribute name="operator"/></rng:optional>
527             <rng:optional><rng:attribute name="colspan"/></rng:optional>
528             <rng:optional><rng:attribute name="nolabel"/></rng:optional>
529             <rng:optional><rng:attribute name="default_get"/></rng:optional>
530             <rng:optional><rng:attribute name="required"/></rng:optional>
531             <rng:optional><rng:attribute name="readonly"/></rng:optional>
532             <rng:optional><rng:attribute name="view_mode"/></rng:optional>
533             <rng:optional><rng:attribute name="widget"/></rng:optional>
534             <rng:optional><rng:attribute name="context"/></rng:optional>
535             <rng:optional><rng:attribute name="states"/></rng:optional>
536             <rng:optional><rng:attribute name="digits"/></rng:optional>
537             <rng:optional><rng:attribute name="icon"/></rng:optional>
538             <rng:optional><rng:attribute name="mode"/></rng:optional>
539             <rng:optional><rng:attribute name="img_width"/></rng:optional>
540             <rng:optional><rng:attribute name="img_height"/></rng:optional>
541             <rng:optional><rng:attribute name="size"/></rng:optional>
542             <rng:optional><rng:attribute name="filename"/></rng:optional>
543             <rng:optional><rng:attribute name="height"/></rng:optional>
544             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
545             <rng:optional><rng:attribute name="align"/></rng:optional>
546             <rng:optional><rng:attribute name="selection"/></rng:optional>
547             <rng:optional><rng:attribute name="default_focus"/></rng:optional>
548             <rng:optional><rng:attribute name="filters"/></rng:optional>
549             <rng:optional><rng:attribute name="statusbar_visible"/></rng:optional>
550             <rng:optional><rng:attribute name="statusbar_colors"/></rng:optional>
551             <!-- Widget *static* options defined as an arbitrary JSON dict, with
552                  widget-dependent parameters. To be ignored if widget/client does
553                  not support them. -->
554             <rng:optional><rng:attribute name="options"/></rng:optional>
555             <rng:zeroOrMore>
556                 <rng:choice>
557                     <rng:ref name="diagram"/>
558                     <rng:ref name="kanban"/>
559                     <rng:ref name="form"/>
560                     <rng:ref name="data"/>
561                     <rng:ref name="tree"/>
562                     <rng:ref name="field"/>
563                     <rng:ref name="label"/>
564                     <rng:ref name="separator"/>
565                     <rng:ref name="xpath"/>
566                     <rng:ref name="button"/>
567                     <rng:ref name="group"/>
568                     <rng:ref name="graph"/>
569                     <rng:ref name="filter"/>
570                     <rng:ref name="notebook"/>
571                     <rng:ref name="html"/>
572                     <rng:element name="newline"><rng:empty/></rng:element>
573                 </rng:choice>
574             </rng:zeroOrMore>
575         </rng:element>
576     </rng:define>
577
578     <rng:define name="group">
579         <rng:element name="group">
580             <rng:ref name="overload"/>
581             <rng:ref name="access_rights"/>
582             <rng:optional><rng:attribute name="attrs"/></rng:optional>
583             <rng:optional><rng:attribute name="colspan"/></rng:optional>
584             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
585             <rng:optional><rng:attribute name="expand"/></rng:optional>
586             <rng:optional><rng:attribute name="states"/></rng:optional>
587             <rng:optional><rng:attribute name="string"/></rng:optional>
588             <rng:optional><rng:attribute name="fill"/></rng:optional>
589             <rng:optional><rng:attribute name="height"/></rng:optional>
590             <rng:optional><rng:attribute name="width"/></rng:optional>
591             <rng:optional><rng:attribute name="name"/></rng:optional>
592             <rng:optional><rng:attribute name="color" /></rng:optional>
593             <rng:ref name="container"/>
594         </rng:element>
595     </rng:define>
596
597     <rng:define name="calendar">
598         <rng:element name="calendar">
599             <rng:optional><rng:attribute name="string" /></rng:optional>
600             <rng:optional><rng:attribute name="color" /></rng:optional>
601             <rng:optional><rng:attribute name="date_start" /></rng:optional>
602             <rng:optional><rng:attribute name="date_stop" /></rng:optional>
603             <rng:optional><rng:attribute name="day_length" /></rng:optional>
604             <rng:optional><rng:attribute name="date_delay" /></rng:optional>
605             <rng:optional><rng:attribute name="type" /></rng:optional>
606             <rng:optional><rng:attribute name="mode" /></rng:optional>
607             <rng:oneOrMore>
608                 <rng:ref name="field"/>
609             </rng:oneOrMore>
610             <rng:zeroOrMore>
611                 <rng:ref name="html"/>
612             </rng:zeroOrMore>
613         </rng:element>
614     </rng:define>
615
616     <rng:define name="graph">
617         <rng:element name="graph">
618             <rng:optional><rng:attribute name="string" /></rng:optional>
619             <rng:optional><rng:attribute name="orientation" /></rng:optional>
620             <rng:optional><rng:attribute name="type" /></rng:optional>
621             <rng:optional><rng:attribute name="color"/></rng:optional>
622             <rng:oneOrMore>
623                 <rng:ref name="field"/>
624             </rng:oneOrMore>
625             <rng:zeroOrMore>
626                 <rng:ref name="html"/>
627             </rng:zeroOrMore>
628         </rng:element>
629     </rng:define>
630
631     <rng:define name="button">
632         <rng:element name="button">
633             <rng:ref name="overload"/>
634             <rng:ref name="access_rights"/>
635             <rng:optional><rng:attribute name="attrs"/></rng:optional>
636             <rng:optional><rng:attribute name="invisible"/></rng:optional>
637             <rng:optional><rng:attribute name="name" /></rng:optional>
638             <rng:optional><rng:attribute name="icon" /></rng:optional>
639             <rng:optional><rng:attribute name="string" /></rng:optional>
640             <rng:optional><rng:attribute name="states" /></rng:optional>
641             <rng:optional><rng:attribute name="type" /></rng:optional>
642             <rng:optional><rng:attribute name="special" /></rng:optional>
643             <rng:optional><rng:attribute name="align" /></rng:optional>
644             <rng:optional><rng:attribute name="colspan"/></rng:optional>
645             <rng:optional><rng:attribute name="target"/></rng:optional>
646             <rng:optional><rng:attribute name="readonly"/></rng:optional>
647             <rng:optional><rng:attribute name="context"/></rng:optional>
648             <rng:optional><rng:attribute name="confirm"/></rng:optional>
649             <rng:optional><rng:attribute name="help"/></rng:optional>
650             <rng:optional><rng:attribute name="default_focus"/></rng:optional>
651             <rng:zeroOrMore>
652                 <rng:choice>
653                     <rng:ref name="form" />
654                     <rng:ref name="field" />
655                     <rng:ref name="tree" />
656                     <rng:ref name="notebook" />
657                     <rng:ref name="graph" />
658                     <rng:ref name="calendar" />
659                     <rng:ref name="gantt" />
660                     <rng:ref name="xpath" />
661                     <rng:ref name="page" />
662                     <rng:ref name="separator"/>
663                     <rng:ref name="button"/>
664                     <rng:ref name="group"/>
665                     <rng:ref name="filter"/>
666                     <rng:ref name="html"/>
667                     <rng:element name="properties"><rng:empty/></rng:element>
668                     <rng:element name="newline"><rng:empty/></rng:element>
669                 </rng:choice>
670             </rng:zeroOrMore>
671
672         </rng:element>
673     </rng:define>
674
675     <rng:define name="filter">
676         <rng:element name="filter">
677             <rng:ref name="overload"/>
678             <rng:ref name="access_rights"/>
679             <rng:optional><rng:attribute name="attrs"/></rng:optional>
680             <rng:optional><rng:attribute name="name" /></rng:optional>
681             <rng:optional><rng:attribute name="separator" /></rng:optional>
682             <rng:optional><rng:attribute name="icon" /></rng:optional>
683             <rng:optional><rng:attribute name="string" /></rng:optional>
684             <rng:optional><rng:attribute name="type" /></rng:optional>
685             <rng:optional><rng:attribute name="align" /></rng:optional>
686             <rng:optional><rng:attribute name="colspan"/></rng:optional>
687             <rng:optional><rng:attribute name="readonly"/></rng:optional>
688             <rng:optional><rng:attribute name="context"/></rng:optional>
689             <rng:optional><rng:attribute name="help"/></rng:optional>
690             <rng:optional><rng:attribute name="domain"/></rng:optional>
691             <rng:zeroOrMore>
692                 <rng:choice>
693                     <rng:ref name="form" />
694                     <rng:ref name="field" />
695                     <rng:ref name="tree" />
696                     <rng:ref name="notebook" />
697                     <rng:ref name="graph" />
698                     <rng:ref name="calendar" />
699                     <rng:ref name="gantt" />
700                     <rng:ref name="xpath" />
701                     <rng:ref name="page" />
702                     <rng:ref name="separator"/>
703                     <rng:ref name="button"/>
704                     <rng:ref name="filter"/>
705                     <rng:ref name="html"/>
706                     <rng:element name="properties"><rng:empty/></rng:element>
707                     <rng:element name="newline"><rng:empty/></rng:element>
708                 </rng:choice>
709             </rng:zeroOrMore>
710
711         </rng:element>
712     </rng:define>
713
714     <rng:start>
715         <rng:choice>
716             <rng:ref name="diagram" />
717             <rng:ref name="kanban" />
718             <rng:ref name="form" />
719             <rng:ref name="search" />
720             <rng:ref name="group" />
721             <rng:ref name="field" />
722             <rng:ref name="tree" />
723             <rng:ref name="notebook" />
724             <rng:ref name="graph" />
725             <rng:ref name="calendar" />
726             <rng:ref name="data" />
727             <rng:ref name="gantt" />
728             <rng:ref name="xpath" />
729             <rng:ref name="page" />
730             <rng:ref name="separator"/>
731             <rng:ref name="button"/>
732             <rng:ref name="filter"/>
733             <rng:ref name="label" />
734             <rng:ref name="html"/>
735         </rng:choice>
736     </rng:start>
737 </rng:grammar>