22d6ee12a88c919f22a3e2cd4f43d6bd1c9a020d
[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:element>
188     </rng:define>
189
190     <rng:define name="node">
191         <rng:element name="node">
192             <rng:attribute name="object"/>
193             <rng:optional><rng:attribute name="shape"/></rng:optional>
194             <rng:optional><rng:attribute name="bgcolor"/></rng:optional>
195             <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
196             <rng:oneOrMore>
197               <rng:ref name="field"/>
198             </rng:oneOrMore>
199         </rng:element>
200     </rng:define>
201
202     <rng:define name="arrow">
203         <rng:element name="arrow">
204             <rng:attribute name="object" />
205             <rng:attribute name="source" />
206             <rng:attribute name="destination" />
207             <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
208             <rng:optional><rng:attribute name="label"/></rng:optional>
209             <rng:oneOrMore>
210               <rng:ref name="field"/>
211             </rng:oneOrMore>
212         </rng:element>
213     </rng:define>
214
215     <rng:define name="kanban">
216         <rng:element name="kanban">
217             <rng:optional>
218                 <!-- group-by field to apply in the kanban view when no other
219                      grouping is selected in the search view -->
220                 <rng:attribute name="default_group_by" />
221             </rng:optional>
222             <rng:optional><rng:attribute name="create" /></rng:optional>
223             <rng:optional><rng:attribute name="quick_create" /></rng:optional>
224             <rng:zeroOrMore>
225                 <rng:ref name="field"/>
226             </rng:zeroOrMore>
227             <rng:element name="templates">
228                 <rng:oneOrMore>
229                     <rng:ref name="any"/>
230                 </rng:oneOrMore>
231             </rng:element>
232         </rng:element>
233     </rng:define>
234
235     <rng:define name="tree">
236         <rng:element name="tree">
237             <rng:ref name="overload"/>
238             <rng:optional><rng:attribute name="string"/></rng:optional>
239             <rng:optional><rng:attribute name="colors"/></rng:optional>
240             <rng:optional><rng:attribute name="fonts"/></rng:optional>
241             <rng:optional>
242               <rng:attribute name="editable">
243                 <rng:choice>
244                   <rng:value>top</rng:value>
245                   <rng:value>bottom</rng:value>
246                 </rng:choice>
247               </rng:attribute>
248             </rng:optional>
249             <rng:optional>
250               <rng:attribute name="toolbar">
251                 <rng:choice>
252                   <rng:value>1</rng:value>
253                   <rng:value>True</rng:value>
254                 </rng:choice>
255               </rng:attribute>
256             </rng:optional>
257             <rng:optional><rng:attribute name="on_write"/></rng:optional>
258             <rng:zeroOrMore>
259                 <rng:choice>
260                     <rng:ref name="field"/>
261                     <rng:ref name="separator"/>
262                     <rng:ref name="tree"/>
263                     <rng:ref name="group"/>
264                     <rng:ref name="button"/>
265                     <rng:ref name="filter"/>
266                     <rng:ref name="html"/>
267                     <rng:element name="newline"><rng:empty/></rng:element>
268                 </rng:choice>
269             </rng:zeroOrMore>
270         </rng:element>
271     </rng:define>
272
273     <rng:define name="search">
274         <rng:element name="search">
275             <rng:ref name="overload"/>
276             <rng:optional><rng:attribute name="string"/></rng:optional>
277             <rng:zeroOrMore>
278                 <rng:choice>
279                     <rng:ref name="field"/>
280                     <rng:ref name="group"/>
281                     <rng:ref name="separator"/>
282                     <rng:ref name="filter"/>
283                     <rng:ref name="search"/>
284                     <rng:element name="newline"><rng:empty/></rng:element>
285                     <rng:element name="properties"><rng:empty/></rng:element>
286                 </rng:choice>
287             </rng:zeroOrMore>
288         </rng:element>
289     </rng:define>
290
291     <rng:define name="image">
292         <rng:element name="image">
293             <rng:attribute name="name"/>
294         </rng:element>
295     </rng:define>
296
297     <rng:define name="html">
298         <rng:element name="html">
299             <rng:zeroOrMore>
300                     <rng:text/>
301                     <rng:ref name="any"/>
302             </rng:zeroOrMore>
303         </rng:element>
304     </rng:define>
305
306     <rng:define name="label">
307         <rng:element name="label">
308             <rng:ref name="overload"/>
309             <rng:ref name="access_rights"/>
310             <rng:ref name="modifiable"/>
311             <rng:optional><rng:attribute name="invisible"/></rng:optional>
312             <rng:optional><rng:attribute name="align"/></rng:optional>
313             <rng:optional><rng:attribute name="nolabel"/></rng:optional>
314             <rng:optional><rng:attribute name="colspan"/></rng:optional>
315             <rng:optional><rng:attribute name="string"/></rng:optional>
316             <rng:optional><rng:attribute name="angle"/></rng:optional>
317             <rng:optional><rng:attribute name="fill"/></rng:optional>
318             <rng:optional><rng:attribute name="help"/></rng:optional>
319             <rng:optional><rng:attribute name="width"/></rng:optional>
320             <rng:optional><rng:attribute name="wrap"/></rng:optional>
321             <rng:optional><rng:attribute name="name"/></rng:optional>
322             <rng:optional>
323                 <!-- @for: allows to explicitely link a label to a field -->
324                 <rng:attribute name="for"/>
325             </rng:optional>
326             <rng:zeroOrMore>
327                 <rng:choice>
328                     <rng:text/>
329                     <rng:ref name="notebook"/>
330                     <rng:ref name="field"/>
331                     <rng:ref name="group"/>
332                     <rng:ref name="button"/>
333                     <rng:ref name="label" />
334                     <rng:ref name="separator"/>
335                     <rng:ref name="image"/>
336                     <rng:ref name="form"/>
337                     <rng:ref name="dashboard"/>
338                     <rng:ref name="filter"/>
339                     <rng:ref name="html"/>
340                     <rng:element name="newline"><rng:empty/></rng:element>
341                     <rng:element name="properties"><rng:empty/></rng:element>
342                 </rng:choice>
343             </rng:zeroOrMore>
344         </rng:element>
345     </rng:define>
346
347     <rng:define name="level">
348         <rng:element name="level">
349             <rng:optional><rng:attribute name="object"/></rng:optional>
350             <rng:optional><rng:attribute name="link"/></rng:optional>
351             <rng:optional><rng:attribute name="domain"/></rng:optional>
352             <rng:zeroOrMore>
353                 <rng:ref name="field"/>
354             </rng:zeroOrMore>
355             <rng:zeroOrMore>
356                 <rng:ref name="html"/>
357             </rng:zeroOrMore>
358         </rng:element>
359     </rng:define>
360
361     <rng:define name="gantt">
362         <rng:element name="gantt">
363             <rng:optional><rng:attribute name="mode">
364               <rng:choice>
365                  <rng:value>day</rng:value>
366                  <rng:value>3days</rng:value>
367                  <rng:value>week</rng:value>
368                  <rng:value>3weeks</rng:value>
369                  <rng:value>month</rng:value>
370                  <rng:value>3months</rng:value>
371                  <rng:value>year</rng:value>
372                  <rng:value>3years</rng:value>
373                  <rng:value>5years</rng:value>
374               </rng:choice></rng:attribute>
375             </rng:optional>
376             <rng:optional><rng:attribute name="color"/></rng:optional>
377             <rng:optional><rng:attribute name="date_delay"/></rng:optional>
378             <rng:optional><rng:attribute name="day_length"/></rng:optional>
379             <rng:optional><rng:attribute name="date_start"/></rng:optional>
380             <rng:optional><rng:attribute name="date_stop"/></rng:optional>
381             <rng:optional><rng:attribute name="date_string"/></rng:optional>
382             <rng:optional><rng:attribute name="string"/></rng:optional>
383             <rng:optional><rng:attribute name="default_group_by"/></rng:optional>
384             <rng:zeroOrMore>
385                 <rng:optional><rng:ref name="level"/></rng:optional>
386                 <rng:optional><rng:ref name="field"/></rng:optional>
387                 <rng:optional><rng:ref name="html"/></rng:optional>
388             </rng:zeroOrMore>
389         </rng:element>
390     </rng:define>
391
392     <rng:define name="any">
393         <rng:element>
394             <rng:anyName/>
395             <rng:zeroOrMore>
396                 <rng:choice>
397                     <rng:attribute>
398                         <rng:anyName/>
399                     </rng:attribute>
400                     <rng:text/>
401                     <rng:ref name="any"/>
402                 </rng:choice>
403             </rng:zeroOrMore>
404         </rng:element>
405     </rng:define>
406
407     <rng:define name="page">
408         <rng:element name="page">
409             <rng:ref name="overload"/>
410             <rng:ref name="access_rights"/>
411             <rng:ref name="modifiable"/>
412             <rng:optional><rng:attribute name="string"/></rng:optional>
413             <rng:optional><rng:attribute name="name"/></rng:optional>
414             <rng:optional><rng:attribute name="attrs"/></rng:optional>
415             <rng:optional><rng:attribute name="invisible"/></rng:optional>
416             <rng:zeroOrMore>
417                 <rng:choice>
418                     <rng:element name="newline"><rng:empty/></rng:element>
419                     <rng:element name="properties"><rng:empty/></rng:element>
420                     <rng:ref name="label" />
421                     <rng:ref name="field"/>
422                     <rng:ref name="group"/>
423                     <rng:ref name="separator"/>
424                     <rng:ref name="button"/>
425                     <rng:ref name="form" />
426                     <rng:ref name="page" />
427                     <rng:ref name="notebook"/>
428                     <rng:ref name="dashboard"/>
429                     <rng:ref name="filter"/>
430                     <rng:ref name="html"/>
431                 </rng:choice>
432             </rng:zeroOrMore>
433         </rng:element>
434     </rng:define>
435
436     <rng:define name="notebook">
437         <rng:element name="notebook">
438             <rng:ref name="overload"/>
439             <rng:optional><rng:attribute name="colspan"/></rng:optional>
440             <rng:optional>
441               <rng:attribute name="tabpos">
442                 <!-- position of the notebook's tabs bar, support is
443                      optional and implementation-dependent -->
444                 <rng:choice>
445                   <rng:value>up</rng:value>
446                   <rng:value>down</rng:value>
447                   <rng:value>left</rng:value>
448                   <rng:value>right</rng:value>
449                 </rng:choice>
450               </rng:attribute>
451             </rng:optional>
452             <rng:oneOrMore>
453                 <rng:ref name="page"/>
454             </rng:oneOrMore>
455         </rng:element>
456     </rng:define>
457
458     <rng:define name="separator">
459         <rng:element name="separator">
460             <rng:ref name="overload"/>
461             <rng:ref name="access_rights"/>
462             <rng:ref name="modifiable"/>
463             <rng:optional><rng:attribute name="invisible"/></rng:optional>
464             <rng:optional><rng:attribute name="name"/></rng:optional>
465             <rng:optional><rng:attribute name="colspan"/></rng:optional>
466             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
467             <rng:optional><rng:attribute name="string"/></rng:optional>
468             <rng:optional><rng:attribute name="col"/></rng:optional>
469             <rng:optional><rng:attribute name="select"/></rng:optional>
470             <rng:optional><rng:attribute name="orientation"/></rng:optional>
471             <rng:zeroOrMore>
472                 <rng:choice>
473                     <rng:ref name="separator"/>
474                     <rng:ref name="button"/>
475                     <rng:ref name="field"/>
476                     <rng:ref name="label" />
477                     <rng:ref name="group" />
478                     <rng:ref name="filter"/>
479                     <rng:ref name="html"/>
480                     <rng:element name="properties"><rng:empty/></rng:element>
481                     <rng:element name="newline"><rng:empty/></rng:element>
482                 </rng:choice>
483             </rng:zeroOrMore>
484         </rng:element>
485     </rng:define>
486
487     <rng:define name="xpath">
488         <rng:element name="xpath">
489             <rng:optional><rng:attribute name="expr"/></rng:optional>
490             <rng:ref name="overload"/>
491             <rng:zeroOrMore>
492                 <rng:choice>
493                     <rng:ref name="any"/>
494                     <rng:ref name="button"/>
495                     <rng:ref name="html"/>
496                 </rng:choice>
497             </rng:zeroOrMore>
498         </rng:element>
499     </rng:define>
500
501     <rng:define name="data">
502         <rng:element name="data">
503             <rng:zeroOrMore>
504                 <rng:choice>
505                     <rng:ref name="form"/>
506                     <rng:ref name="tree"/>
507                     <rng:ref name="field"/>
508                     <rng:ref name="label"/>
509                     <rng:ref name="separator"/>
510                     <rng:ref name="notebook"/>
511                     <rng:ref name="page"/>
512                     <rng:ref name="xpath"/>
513                     <rng:ref name="button"/>
514                     <rng:ref name="group"/>
515                     <rng:ref name="filter"/>
516                     <rng:ref name="graph"/>
517                     <rng:ref name="html"/>
518                     <rng:element name="newline"><rng:empty/></rng:element>
519                 </rng:choice>
520             </rng:zeroOrMore>
521         </rng:element>
522     </rng:define>
523
524     <rng:define name="field">
525         <rng:element name="field">
526             <rng:attribute name="name" />
527             <rng:ref name="overload"/>
528             <rng:ref name="access_rights"/>
529             <rng:ref name="modifiable"/>
530             <rng:optional><rng:attribute name="domain_filter"/></rng:optional>
531             <rng:optional><rng:attribute name="attrs"/></rng:optional>
532             <rng:optional><rng:attribute name="string"/></rng:optional>
533             <rng:optional><rng:attribute name="completion"/></rng:optional>
534             <rng:optional><rng:attribute name="width"/></rng:optional>
535             <rng:optional><rng:attribute name="type"/></rng:optional>
536             <rng:optional><rng:attribute name="ref"/></rng:optional>
537             <rng:optional><rng:attribute name="eval"/></rng:optional>
538             <rng:optional><rng:attribute name="search"/></rng:optional>
539             <rng:optional><rng:attribute name="model"/></rng:optional>
540             <rng:optional><rng:attribute name="use"/></rng:optional>
541             <rng:optional><rng:attribute name="on_change"/></rng:optional>
542             <rng:optional><rng:attribute name="domain"/></rng:optional>
543             <rng:optional><rng:attribute name="filter_domain"/></rng:optional>
544             <rng:optional><rng:attribute name="invisible"/></rng:optional>
545             <rng:optional><rng:attribute name="password"/></rng:optional>
546             <rng:optional><rng:attribute name="comparator"/></rng:optional>
547             <rng:optional><rng:attribute name="sum"/></rng:optional>
548             <rng:optional><rng:attribute name="bold"/></rng:optional>
549             <rng:optional><rng:attribute name="avg"/></rng:optional>
550             <rng:optional><rng:attribute name="select"/></rng:optional>
551             <rng:optional><rng:attribute name="group"/></rng:optional>
552             <rng:optional><rng:attribute name="operator"/></rng:optional>
553             <rng:optional><rng:attribute name="colspan"/></rng:optional>
554             <rng:optional><rng:attribute name="nolabel"/></rng:optional>
555             <rng:optional><rng:attribute name="default_get"/></rng:optional>
556             <rng:optional><rng:attribute name="required"/></rng:optional>
557             <rng:optional><rng:attribute name="readonly"/></rng:optional>
558             <rng:optional><rng:attribute name="view_mode"/></rng:optional>
559             <rng:optional><rng:attribute name="widget"/></rng:optional>
560             <rng:optional><rng:attribute name="context"/></rng:optional>
561             <rng:optional><rng:attribute name="states"/></rng:optional>
562             <rng:optional><rng:attribute name="digits"/></rng:optional>
563             <rng:optional><rng:attribute name="icon"/></rng:optional>
564             <rng:optional><rng:attribute name="mode"/></rng:optional>
565             <rng:optional><rng:attribute name="img_width"/></rng:optional>
566             <rng:optional><rng:attribute name="img_height"/></rng:optional>
567             <rng:optional><rng:attribute name="size"/></rng:optional>
568             <rng:optional><rng:attribute name="filename"/></rng:optional>
569             <rng:optional><rng:attribute name="height"/></rng:optional>
570             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
571             <rng:optional><rng:attribute name="align"/></rng:optional>
572             <rng:optional><rng:attribute name="selection"/></rng:optional>
573             <rng:optional><rng:attribute name="default_focus"/></rng:optional>
574             <rng:optional><rng:attribute name="filters"/></rng:optional>
575             <rng:optional><rng:attribute name="statusbar_visible"/></rng:optional>
576             <rng:optional><rng:attribute name="statusbar_colors"/></rng:optional>
577             <!-- Widget *static* options defined as an arbitrary JSON dict, with
578                  widget-dependent parameters. To be ignored if widget/client does
579                  not support them. -->
580             <rng:optional><rng:attribute name="options"/></rng:optional>
581             <rng:optional><rng:attribute name="placeholder"/></rng:optional>
582             <rng:zeroOrMore>
583                 <rng:choice>
584                     <rng:ref name="diagram"/>
585                     <rng:ref name="kanban"/>
586                     <rng:ref name="form"/>
587                     <rng:ref name="data"/>
588                     <rng:ref name="tree"/>
589                     <rng:ref name="field"/>
590                     <rng:ref name="label"/>
591                     <rng:ref name="separator"/>
592                     <rng:ref name="xpath"/>
593                     <rng:ref name="button"/>
594                     <rng:ref name="group"/>
595                     <rng:ref name="graph"/>
596                     <rng:ref name="filter"/>
597                     <rng:ref name="notebook"/>
598                     <rng:ref name="html"/>
599                     <rng:element name="newline"><rng:empty/></rng:element>
600                 </rng:choice>
601             </rng:zeroOrMore>
602         </rng:element>
603     </rng:define>
604
605     <rng:define name="group">
606         <rng:element name="group">
607             <rng:ref name="overload"/>
608             <rng:ref name="access_rights"/>
609             <rng:ref name="modifiable"/>
610             <rng:optional><rng:attribute name="attrs"/></rng:optional>
611             <rng:optional><rng:attribute name="colspan"/></rng:optional>
612             <rng:optional><rng:attribute name="rowspan"/></rng:optional>
613             <rng:optional><rng:attribute name="expand"/></rng:optional>
614             <rng:optional><rng:attribute name="states"/></rng:optional>
615             <rng:optional><rng:attribute name="string"/></rng:optional>
616             <rng:optional><rng:attribute name="fill"/></rng:optional>
617             <rng:optional><rng:attribute name="height"/></rng:optional>
618             <rng:optional><rng:attribute name="width"/></rng:optional>
619             <rng:optional><rng:attribute name="name"/></rng:optional>
620             <rng:optional><rng:attribute name="color" /></rng:optional>
621             <rng:optional><rng:attribute name="invisible"/></rng:optional>
622             <rng:ref name="container"/>
623         </rng:element>
624     </rng:define>
625
626     <rng:define name="calendar">
627         <rng:element name="calendar">
628             <rng:optional><rng:attribute name="string" /></rng:optional>
629             <rng:optional><rng:attribute name="color" /></rng:optional>
630             <rng:optional><rng:attribute name="date_start" /></rng:optional>
631             <rng:optional><rng:attribute name="date_stop" /></rng:optional>
632             <rng:optional><rng:attribute name="day_length" /></rng:optional>
633             <rng:optional><rng:attribute name="date_delay" /></rng:optional>
634             <rng:optional><rng:attribute name="type" /></rng:optional>
635             <rng:optional><rng:attribute name="mode" /></rng:optional>
636             <rng:oneOrMore>
637                 <rng:ref name="field"/>
638             </rng:oneOrMore>
639             <rng:zeroOrMore>
640                 <rng:ref name="html"/>
641             </rng:zeroOrMore>
642         </rng:element>
643     </rng:define>
644
645     <rng:define name="graph">
646         <rng:element name="graph">
647             <rng:optional><rng:attribute name="string" /></rng:optional>
648             <rng:optional><rng:attribute name="orientation" /></rng:optional>
649             <rng:optional><rng:attribute name="type" /></rng:optional>
650             <rng:optional><rng:attribute name="color"/></rng:optional>
651             <rng:oneOrMore>
652                 <rng:ref name="field"/>
653             </rng:oneOrMore>
654             <rng:zeroOrMore>
655                 <rng:ref name="html"/>
656             </rng:zeroOrMore>
657         </rng:element>
658     </rng:define>
659
660     <rng:define name="button">
661         <rng:element name="button">
662             <rng:ref name="overload"/>
663             <rng:ref name="access_rights"/>
664             <rng:ref name="modifiable"/>
665             <rng:optional><rng:attribute name="attrs"/></rng:optional>
666             <rng:optional><rng:attribute name="invisible"/></rng:optional>
667             <rng:optional><rng:attribute name="name" /></rng:optional>
668             <rng:optional><rng:attribute name="icon" /></rng:optional>
669             <rng:optional><rng:attribute name="string" /></rng:optional>
670             <rng:optional><rng:attribute name="states" /></rng:optional>
671             <rng:optional><rng:attribute name="type" /></rng:optional>
672             <rng:optional><rng:attribute name="special" /></rng:optional>
673             <rng:optional><rng:attribute name="align" /></rng:optional>
674             <rng:optional><rng:attribute name="colspan"/></rng:optional>
675             <rng:optional><rng:attribute name="target"/></rng:optional>
676             <rng:optional><rng:attribute name="readonly"/></rng:optional>
677             <rng:optional><rng:attribute name="context"/></rng:optional>
678             <rng:optional><rng:attribute name="confirm"/></rng:optional>
679             <rng:optional><rng:attribute name="help"/></rng:optional>
680             <rng:optional><rng:attribute name="default_focus"/></rng:optional>
681             <rng:zeroOrMore>
682                 <rng:choice>
683                     <rng:ref name="form" />
684                     <rng:ref name="field" />
685                     <rng:ref name="tree" />
686                     <rng:ref name="notebook" />
687                     <rng:ref name="graph" />
688                     <rng:ref name="calendar" />
689                     <rng:ref name="gantt" />
690                     <rng:ref name="xpath" />
691                     <rng:ref name="page" />
692                     <rng:ref name="separator"/>
693                     <rng:ref name="button"/>
694                     <rng:ref name="group"/>
695                     <rng:ref name="filter"/>
696                     <rng:ref name="html"/>
697                     <rng:element name="properties"><rng:empty/></rng:element>
698                     <rng:element name="newline"><rng:empty/></rng:element>
699                 </rng:choice>
700             </rng:zeroOrMore>
701
702         </rng:element>
703     </rng:define>
704
705     <rng:define name="filter">
706         <rng:element name="filter">
707             <rng:ref name="overload"/>
708             <rng:ref name="access_rights"/>
709             <rng:ref name="modifiable"/>
710             <rng:optional><rng:attribute name="attrs"/></rng:optional>
711             <rng:optional><rng:attribute name="invisible"/></rng:optional>
712             <rng:optional><rng:attribute name="name" /></rng:optional>
713             <rng:optional><rng:attribute name="separator" /></rng:optional>
714             <rng:optional><rng:attribute name="icon" /></rng:optional>
715             <rng:optional><rng:attribute name="string" /></rng:optional>
716             <rng:optional><rng:attribute name="type" /></rng:optional>
717             <rng:optional><rng:attribute name="align" /></rng:optional>
718             <rng:optional><rng:attribute name="colspan"/></rng:optional>
719             <rng:optional><rng:attribute name="readonly"/></rng:optional>
720             <rng:optional><rng:attribute name="context"/></rng:optional>
721             <rng:optional><rng:attribute name="help"/></rng:optional>
722             <rng:optional><rng:attribute name="domain"/></rng:optional>
723             <rng:zeroOrMore>
724                 <rng:choice>
725                     <rng:ref name="form" />
726                     <rng:ref name="field" />
727                     <rng:ref name="tree" />
728                     <rng:ref name="notebook" />
729                     <rng:ref name="graph" />
730                     <rng:ref name="calendar" />
731                     <rng:ref name="gantt" />
732                     <rng:ref name="xpath" />
733                     <rng:ref name="page" />
734                     <rng:ref name="separator"/>
735                     <rng:ref name="button"/>
736                     <rng:ref name="filter"/>
737                     <rng:ref name="html"/>
738                     <rng:element name="properties"><rng:empty/></rng:element>
739                     <rng:element name="newline"><rng:empty/></rng:element>
740                 </rng:choice>
741             </rng:zeroOrMore>
742
743         </rng:element>
744     </rng:define>
745
746     <rng:start>
747         <rng:choice>
748             <rng:ref name="diagram" />
749             <rng:ref name="kanban" />
750             <rng:ref name="form" />
751             <rng:ref name="search" />
752             <rng:ref name="group" />
753             <rng:ref name="field" />
754             <rng:ref name="tree" />
755             <rng:ref name="notebook" />
756             <rng:ref name="graph" />
757             <rng:ref name="calendar" />
758             <rng:ref name="data" />
759             <rng:ref name="gantt" />
760             <rng:ref name="xpath" />
761             <rng:ref name="page" />
762             <rng:ref name="separator"/>
763             <rng:ref name="button"/>
764             <rng:ref name="filter"/>
765             <rng:ref name="label" />
766             <rng:ref name="html"/>
767         </rng:choice>
768     </rng:start>
769 </rng:grammar>