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