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