1 <?xml version="1.0" encoding="UTF-8"?>
2 <rng:grammar xmlns:rng="http://relaxng.org/ns/structure/1.0"
3 datatypeLibrary="http://www.w3.org/2001/XMLSchema-datatypes">
4 <!-- Handling of element overloading when inheriting from a base
7 <rng:define name="overload">
10 Alter matched element with content
13 <rng:attribute name="position">
15 <!-- Insert content before first child -->
16 <rng:value>before</rng:value>
17 <!-- Insert content after last child -->
18 <rng:value>after</rng:value>
19 <!-- Replace all children with content -->
20 <rng:value>inside</rng:value>
21 <!-- Replace matched element itself with content -->
22 <rng:value>replace</rng:value>
26 <rng:attribute name="position">
27 <!-- Edit element attributes -->
28 <rng:value>attributes</rng:value>
31 <rng:element name="attribute">
32 <rng:attribute name="name"><rng:text/></rng:attribute>
41 <rng:define name="access_rights">
43 <rng:attribute name="groups"/>
49 <rng:define name="container">
50 <rng:optional><rng:attribute name="col"/></rng:optional>
53 <rng:ref name="notebook"/>
54 <rng:ref name="field"/>
55 <rng:ref name="group"/>
56 <rng:ref name="button"/>
57 <rng:ref name="hpaned" />
58 <rng:ref name="label" />
59 <rng:ref name="separator"/>
60 <rng:ref name="image"/>
61 <rng:ref name="form"/>
62 <rng:ref name="vpaned"/>
63 <rng:ref name="filter"/>
64 <rng:ref name="html"/>
65 <rng:element name="newline"><rng:empty/></rng:element>
66 <rng:element name="properties"><rng:empty/></rng:element>
71 <rng:define name="form">
72 <rng:element name="form">
73 <rng:ref name="overload"/>
74 <rng:optional><rng:attribute name="string"/></rng:optional>
75 <rng:optional><rng:attribute name="type"/></rng:optional>
76 <rng:optional><rng:attribute name="link"/></rng:optional>
77 <rng:ref name="container"/>
81 <rng:define name="diagram">
82 <rng:element name="diagram">
83 <rng:optional><rng:attribute name="string"/></rng:optional>
86 <rng:ref name="node"/>
87 <rng:ref name="arrow"/>
93 <rng:define name="node">
94 <rng:element name="node">
95 <rng:attribute name="object"/>
96 <rng:optional><rng:attribute name="shape"/></rng:optional>
97 <rng:optional><rng:attribute name="bgcolor"/></rng:optional>
98 <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
101 <rng:ref name="field"/>
107 <rng:define name="arrow">
108 <rng:element name="arrow">
109 <rng:attribute name="object" />
110 <rng:attribute name="source" />
111 <rng:attribute name="destination" />
112 <rng:optional><rng:attribute name="form_view_ref"/></rng:optional>
113 <rng:optional><rng:attribute name="label"/></rng:optional>
116 <rng:ref name="field"/>
122 <rng:define name="kanban">
123 <rng:element name="kanban">
126 <rng:ref name="template"/>
132 <rng:define name="template">
133 <rng:element name="template">
136 <rng:ref name="any"/>
142 <rng:define name="tree">
143 <rng:element name="tree">
144 <rng:ref name="overload"/>
145 <rng:optional><rng:attribute name="string"/></rng:optional>
146 <rng:optional><rng:attribute name="colors"/></rng:optional>
147 <rng:optional><rng:attribute name="color"/></rng:optional>
149 <rng:attribute name="editable">
151 <rng:value>top</rng:value>
152 <rng:value>bottom</rng:value>
156 <rng:optional><rng:attribute name="toolbar"/></rng:optional>
157 <rng:optional><rng:attribute name="link"/></rng:optional>
158 <rng:optional><rng:attribute name="type"/></rng:optional>
159 <rng:optional><rng:attribute name="limit"/></rng:optional>
160 <rng:optional><rng:attribute name="min_rows"/></rng:optional>
161 <rng:optional><rng:attribute name="on_write"/></rng:optional>
164 <rng:ref name="field"/>
165 <rng:ref name="separator"/>
166 <rng:ref name="tree"/>
167 <rng:ref name="group"/>
168 <rng:ref name="button"/>
169 <rng:ref name="filter"/>
170 <rng:ref name="html"/>
171 <rng:element name="newline"><rng:empty/></rng:element>
177 <rng:define name="search">
178 <rng:element name="search">
179 <rng:ref name="overload"/>
180 <rng:optional><rng:attribute name="string"/></rng:optional>
181 <rng:optional><rng:attribute name="col"/></rng:optional>
182 <rng:optional><rng:attribute name="type"/></rng:optional>
183 <rng:optional><rng:attribute name="link"/></rng:optional>
186 <rng:ref name="field"/>
187 <rng:ref name="group"/>
188 <rng:ref name="separator"/>
189 <rng:ref name="filter"/>
190 <rng:ref name="search"/>
191 <rng:element name="newline"><rng:empty/></rng:element>
192 <rng:element name="properties"><rng:empty/></rng:element>
198 <rng:define name="image">
199 <rng:element name="image">
200 <rng:attribute name="name"/>
204 <rng:define name="html">
205 <rng:element name="html">
208 <rng:ref name="any"/>
213 <rng:define name="label">
214 <rng:element name="label">
215 <rng:ref name="overload"/>
216 <rng:optional><rng:attribute name="align"/></rng:optional>
217 <rng:optional><rng:attribute name="nolabel"/></rng:optional>
218 <rng:optional><rng:attribute name="colspan"/></rng:optional>
219 <rng:optional><rng:attribute name="string"/></rng:optional>
220 <rng:optional><rng:attribute name="angle"/></rng:optional>
221 <rng:optional><rng:attribute name="fill"/></rng:optional>
222 <rng:optional><rng:attribute name="help"/></rng:optional>
223 <rng:optional><rng:attribute name="width"/></rng:optional>
224 <rng:optional><rng:attribute name="wrap"/></rng:optional>
227 <rng:ref name="notebook"/>
228 <rng:ref name="field"/>
229 <rng:ref name="group"/>
230 <rng:ref name="button"/>
231 <rng:ref name="hpaned" />
232 <rng:ref name="label" />
233 <rng:ref name="separator"/>
234 <rng:ref name="image"/>
235 <rng:ref name="form"/>
236 <rng:ref name="vpaned"/>
237 <rng:ref name="filter"/>
238 <rng:ref name="html"/>
239 <rng:element name="newline"><rng:empty/></rng:element>
240 <rng:element name="properties"><rng:empty/></rng:element>
246 <rng:define name="level">
247 <rng:element name="level">
248 <rng:optional><rng:attribute name="object"/></rng:optional>
249 <rng:optional><rng:attribute name="link"/></rng:optional>
250 <rng:optional><rng:attribute name="domain"/></rng:optional>
252 <rng:ref name="field"/>
255 <rng:ref name="html"/>
260 <rng:define name="gantt">
261 <rng:element name="gantt">
262 <rng:optional><rng:attribute name="mode">
264 <rng:value>day</rng:value>
265 <rng:value>3days</rng:value>
266 <rng:value>week</rng:value>
267 <rng:value>3weeks</rng:value>
268 <rng:value>month</rng:value>
269 <rng:value>3months</rng:value>
270 <rng:value>year</rng:value>
271 <rng:value>3years</rng:value>
272 <rng:value>5years</rng:value>
273 </rng:choice></rng:attribute>
275 <rng:optional><rng:attribute name="color"/></rng:optional>
276 <rng:optional><rng:attribute name="date_delay"/></rng:optional>
277 <rng:optional><rng:attribute name="day_length"/></rng:optional>
278 <rng:optional><rng:attribute name="date_start"/></rng:optional>
279 <rng:optional><rng:attribute name="date_stop"/></rng:optional>
280 <rng:optional><rng:attribute name="date_string"/></rng:optional>
281 <rng:optional><rng:attribute name="string"/></rng:optional>
283 <rng:optional><rng:ref name="level"/></rng:optional>
284 <rng:optional><rng:ref name="field"/></rng:optional>
285 <rng:optional><rng:ref name="html"/></rng:optional>
290 <rng:define name="hpaned">
291 <rng:element name="hpaned">
293 <rng:attribute name="position">
294 <rng:data type="int"/>
298 <rng:ref name="any" />
299 <rng:optional><rng:ref name="html"/></rng:optional>
304 <rng:define name="vpaned">
305 <rng:element name="vpaned">
307 <rng:attribute name="position">
308 <rng:data type="int"/>
312 <rng:optional><rng:ref name="any"/></rng:optional>
313 <rng:optional><rng:ref name="html"/></rng:optional>
318 <rng:define name="any">
327 <rng:ref name="any"/>
333 <rng:define name="page">
334 <rng:element name="page">
335 <rng:ref name="overload"/>
336 <rng:ref name="access_rights"/>
337 <rng:optional><rng:attribute name="string"/></rng:optional>
338 <rng:optional><rng:attribute name="name"/></rng:optional>
339 <rng:optional><rng:attribute name="attrs"/></rng:optional>
340 <rng:optional><rng:attribute name="invisible"/></rng:optional>
343 <rng:element name="newline"><rng:empty/></rng:element>
344 <rng:element name="properties"><rng:empty/></rng:element>
345 <rng:ref name="label" />
346 <rng:ref name="field"/>
347 <rng:ref name="group"/>
348 <rng:ref name="separator"/>
349 <rng:ref name="button"/>
350 <rng:ref name="form" />
351 <rng:ref name="page" />
352 <rng:ref name="notebook"/>
353 <rng:ref name="hpaned"/>
354 <rng:ref name="vpaned"/>
355 <rng:ref name="filter"/>
356 <rng:ref name="html"/>
362 <rng:define name="notebook">
363 <rng:element name="notebook">
364 <rng:ref name="overload"/>
365 <rng:optional><rng:attribute name="colspan"/></rng:optional>
366 <rng:optional><rng:attribute name="tabpos"/></rng:optional>
368 <rng:ref name="page"/>
373 <rng:define name="separator">
374 <rng:element name="separator">
375 <rng:ref name="overload"/>
376 <rng:ref name="access_rights"/>
377 <rng:optional><rng:attribute name="name"/></rng:optional>
378 <rng:optional><rng:attribute name="colspan"/></rng:optional>
379 <rng:optional><rng:attribute name="rowspan"/></rng:optional>
380 <rng:optional><rng:attribute name="string"/></rng:optional>
381 <rng:optional><rng:attribute name="col"/></rng:optional>
382 <rng:optional><rng:attribute name="select"/></rng:optional>
383 <rng:optional><rng:attribute name="orientation"/></rng:optional>
386 <rng:ref name="separator"/>
387 <rng:ref name="button"/>
388 <rng:ref name="field"/>
389 <rng:ref name="label" />
390 <rng:ref name="group" />
391 <rng:ref name="filter"/>
392 <rng:ref name="html"/>
393 <rng:element name="properties"><rng:empty/></rng:element>
394 <rng:element name="newline"><rng:empty/></rng:element>
400 <rng:define name="xpath">
401 <rng:element name="xpath">
402 <rng:optional><rng:attribute name="expr"/></rng:optional>
403 <rng:ref name="overload"/>
406 <rng:ref name="any"/>
407 <rng:ref name="button"/>
408 <rng:ref name="html"/>
414 <rng:define name="data">
415 <rng:element name="data">
418 <rng:ref name="form"/>
419 <rng:ref name="tree"/>
420 <rng:ref name="field"/>
421 <rng:ref name="label"/>
422 <rng:ref name="separator"/>
423 <rng:ref name="notebook"/>
424 <rng:ref name="page"/>
425 <rng:ref name="xpath"/>
426 <rng:ref name="button"/>
427 <rng:ref name="group"/>
428 <rng:ref name="filter"/>
429 <rng:ref name="graph"/>
430 <rng:ref name="html"/>
431 <rng:element name="newline"><rng:empty/></rng:element>
437 <rng:define name="field">
438 <rng:element name="field">
439 <rng:attribute name="name" />
440 <rng:ref name="overload"/>
441 <rng:ref name="access_rights"/>
442 <rng:optional><rng:attribute name="domain_filter"/></rng:optional>
443 <rng:optional><rng:attribute name="attrs"/></rng:optional>
444 <rng:optional><rng:attribute name="string"/></rng:optional>
445 <rng:optional><rng:attribute name="completion"/></rng:optional>
446 <rng:optional><rng:attribute name="width"/></rng:optional>
447 <rng:optional><rng:attribute name="type"/></rng:optional>
448 <rng:optional><rng:attribute name="ref"/></rng:optional>
449 <rng:optional><rng:attribute name="eval"/></rng:optional>
450 <rng:optional><rng:attribute name="search"/></rng:optional>
451 <rng:optional><rng:attribute name="model"/></rng:optional>
452 <rng:optional><rng:attribute name="use"/></rng:optional>
453 <rng:optional><rng:attribute name="on_change"/></rng:optional>
454 <rng:optional><rng:attribute name="domain"/></rng:optional>
455 <rng:optional><rng:attribute name="filter_domain"/></rng:optional>
456 <rng:optional><rng:attribute name="invisible"/></rng:optional>
457 <rng:optional><rng:attribute name="password"/></rng:optional>
458 <rng:optional><rng:attribute name="comparator"/></rng:optional>
459 <rng:optional><rng:attribute name="sum"/></rng:optional>
460 <rng:optional><rng:attribute name="bold"/></rng:optional>
461 <rng:optional><rng:attribute name="avg"/></rng:optional>
462 <rng:optional><rng:attribute name="select"/></rng:optional>
463 <rng:optional><rng:attribute name="group"/></rng:optional>
464 <rng:optional><rng:attribute name="operator"/></rng:optional>
465 <rng:optional><rng:attribute name="colspan"/></rng:optional>
466 <rng:optional><rng:attribute name="nolabel"/></rng:optional>
467 <rng:optional><rng:attribute name="default"/></rng:optional>
468 <rng:optional><rng:attribute name="default_get"/></rng:optional>
469 <rng:optional><rng:attribute name="required"/></rng:optional>
470 <rng:optional><rng:attribute name="readonly"/></rng:optional>
471 <rng:optional><rng:attribute name="view_mode"/></rng:optional>
472 <rng:optional><rng:attribute name="widget"/></rng:optional>
473 <rng:optional><rng:attribute name="context"/></rng:optional>
474 <rng:optional><rng:attribute name="states"/></rng:optional>
475 <rng:optional><rng:attribute name="digits"/></rng:optional>
476 <rng:optional><rng:attribute name="icon"/></rng:optional>
477 <rng:optional><rng:attribute name="mode"/></rng:optional>
478 <rng:optional><rng:attribute name="img_width"/></rng:optional>
479 <rng:optional><rng:attribute name="img_height"/></rng:optional>
480 <rng:optional><rng:attribute name="size"/></rng:optional>
481 <rng:optional><rng:attribute name="filename"/></rng:optional>
482 <rng:optional><rng:attribute name="fieldname"/></rng:optional>
483 <rng:optional><rng:attribute name="height"/></rng:optional>
484 <rng:optional><rng:attribute name="rowspan"/></rng:optional>
485 <rng:optional><rng:attribute name="align"/></rng:optional>
486 <rng:optional><rng:attribute name="selection"/></rng:optional>
487 <rng:optional><rng:attribute name="default_focus"/></rng:optional>
488 <rng:optional><rng:attribute name="filters"/></rng:optional>
491 <rng:ref name="diagram"/>
492 <rng:ref name="kanban"/>
493 <rng:ref name="form"/>
494 <rng:ref name="data"/>
495 <rng:ref name="tree"/>
496 <rng:ref name="field"/>
497 <rng:ref name="label"/>
498 <rng:ref name="separator"/>
499 <rng:ref name="xpath"/>
500 <rng:ref name="button"/>
501 <rng:ref name="group"/>
502 <rng:ref name="graph"/>
503 <rng:ref name="filter"/>
504 <rng:ref name="notebook"/>
505 <rng:ref name="html"/>
506 <rng:element name="newline"><rng:empty/></rng:element>
512 <rng:define name="group">
513 <rng:element name="group">
514 <rng:ref name="overload"/>
515 <rng:ref name="access_rights"/>
516 <rng:optional><rng:attribute name="attrs"/></rng:optional>
517 <rng:optional><rng:attribute name="colspan"/></rng:optional>
518 <rng:optional><rng:attribute name="rowspan"/></rng:optional>
519 <rng:optional><rng:attribute name="expand"/></rng:optional>
520 <rng:optional><rng:attribute name="states"/></rng:optional>
521 <rng:optional><rng:attribute name="string"/></rng:optional>
522 <rng:optional><rng:attribute name="fill"/></rng:optional>
523 <rng:optional><rng:attribute name="height"/></rng:optional>
524 <rng:optional><rng:attribute name="width"/></rng:optional>
525 <rng:optional><rng:attribute name="name"/></rng:optional>
526 <rng:optional><rng:attribute name="color" /></rng:optional>
527 <rng:ref name="container"/>
531 <rng:define name="calendar">
532 <rng:element name="calendar">
533 <rng:optional><rng:attribute name="string" /></rng:optional>
534 <rng:optional><rng:attribute name="color" /></rng:optional>
535 <rng:optional><rng:attribute name="date_start" /></rng:optional>
536 <rng:optional><rng:attribute name="date_stop" /></rng:optional>
537 <rng:optional><rng:attribute name="day_length" /></rng:optional>
538 <rng:optional><rng:attribute name="date_delay" /></rng:optional>
539 <rng:optional><rng:attribute name="type" /></rng:optional>
540 <rng:optional><rng:attribute name="mode" /></rng:optional>
542 <rng:ref name="field"/>
545 <rng:ref name="html"/>
550 <rng:define name="graph">
551 <rng:element name="graph">
552 <rng:optional><rng:attribute name="string" /></rng:optional>
553 <rng:optional><rng:attribute name="orientation" /></rng:optional>
554 <rng:optional><rng:attribute name="type" /></rng:optional>
555 <rng:optional><rng:attribute name="color"/></rng:optional>
557 <rng:ref name="field"/>
560 <rng:ref name="html"/>
565 <rng:define name="button">
566 <rng:element name="button">
567 <rng:ref name="overload"/>
568 <rng:ref name="access_rights"/>
569 <rng:optional><rng:attribute name="attrs"/></rng:optional>
570 <rng:optional><rng:attribute name="invisible"/></rng:optional>
571 <rng:optional><rng:attribute name="name" /></rng:optional>
572 <rng:optional><rng:attribute name="icon" /></rng:optional>
573 <rng:optional><rng:attribute name="string" /></rng:optional>
574 <rng:optional><rng:attribute name="states" /></rng:optional>
575 <rng:optional><rng:attribute name="type" /></rng:optional>
576 <rng:optional><rng:attribute name="special" /></rng:optional>
577 <rng:optional><rng:attribute name="align" /></rng:optional>
578 <rng:optional><rng:attribute name="colspan"/></rng:optional>
579 <rng:optional><rng:attribute name="target"/></rng:optional>
580 <rng:optional><rng:attribute name="readonly"/></rng:optional>
581 <rng:optional><rng:attribute name="context"/></rng:optional>
582 <rng:optional><rng:attribute name="confirm"/></rng:optional>
583 <rng:optional><rng:attribute name="help"/></rng:optional>
584 <rng:optional><rng:attribute name="default_focus"/></rng:optional>
587 <rng:ref name="form" />
588 <rng:ref name="field" />
589 <rng:ref name="tree" />
590 <rng:ref name="notebook" />
591 <rng:ref name="graph" />
592 <rng:ref name="calendar" />
593 <rng:ref name="gantt" />
594 <rng:ref name="xpath" />
595 <rng:ref name="page" />
596 <rng:ref name="separator"/>
597 <rng:ref name="button"/>
598 <rng:ref name="group"/>
599 <rng:ref name="filter"/>
600 <rng:ref name="html"/>
601 <rng:element name="properties"><rng:empty/></rng:element>
602 <rng:element name="newline"><rng:empty/></rng:element>
609 <rng:define name="filter">
610 <rng:element name="filter">
611 <rng:ref name="overload"/>
612 <rng:ref name="access_rights"/>
613 <rng:optional><rng:attribute name="attrs"/></rng:optional>
614 <rng:optional><rng:attribute name="name" /></rng:optional>
615 <rng:optional><rng:attribute name="separator" /></rng:optional>
616 <rng:optional><rng:attribute name="icon" /></rng:optional>
617 <rng:optional><rng:attribute name="string" /></rng:optional>
618 <rng:optional><rng:attribute name="type" /></rng:optional>
619 <rng:optional><rng:attribute name="align" /></rng:optional>
620 <rng:optional><rng:attribute name="colspan"/></rng:optional>
621 <rng:optional><rng:attribute name="readonly"/></rng:optional>
622 <rng:optional><rng:attribute name="context"/></rng:optional>
623 <rng:optional><rng:attribute name="help"/></rng:optional>
624 <rng:optional><rng:attribute name="domain"/></rng:optional>
625 <rng:optional><rng:attribute name="default"/></rng:optional>
628 <rng:ref name="form" />
629 <rng:ref name="field" />
630 <rng:ref name="tree" />
631 <rng:ref name="notebook" />
632 <rng:ref name="graph" />
633 <rng:ref name="calendar" />
634 <rng:ref name="gantt" />
635 <rng:ref name="xpath" />
636 <rng:ref name="page" />
637 <rng:ref name="separator"/>
638 <rng:ref name="button"/>
639 <rng:ref name="filter"/>
640 <rng:ref name="html"/>
641 <rng:element name="properties"><rng:empty/></rng:element>
642 <rng:element name="newline"><rng:empty/></rng:element>
651 <rng:ref name="diagram" />
652 <rng:ref name="kanban" />
653 <rng:ref name="form" />
654 <rng:ref name="search" />
655 <rng:ref name="group" />
656 <rng:ref name="field" />
657 <rng:ref name="tree" />
658 <rng:ref name="notebook" />
659 <rng:ref name="graph" />
660 <rng:ref name="calendar" />
661 <rng:ref name="data" />
662 <rng:ref name="gantt" />
663 <rng:ref name="xpath" />
664 <rng:ref name="page" />
665 <rng:ref name="separator"/>
666 <rng:ref name="button"/>
667 <rng:ref name="filter"/>
668 <rng:ref name="label" />
669 <rng:ref name="html"/>