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