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