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