adding all of botlist, initial add
[botlist.git] / botclient / xul / xulschema / xulstructure.xml
blob2b54ae85141fe2cc97d1a447611b6a74d2f468e3
1 <?xml version="1.0" encoding="UTF-8"?>
2 <!--
3    ***** BEGIN LICENSE BLOCK *****
4    Version: MPL 1.1
5    
6    The contents of this file are subject to the Mozilla Public License Version
7    1.1 (the "License"); you may not use this file except in compliance with
8    the License. You may obtain a copy of the License at
9    http://www.mozilla.org/MPL/
10    
11    Software distributed under the License is distributed on an "AS IS" basis,
12    WITHOUT WARRANTY OF ANY KIND, either express or implied. See the License
13    for the specific language governing rights and limitations under the
14    License.
15    
16    The Original Code is the XUL Schema.
17    
18    The Initial Developer of the Original Code is Nickolay Ponomarev.
19    Portions created by the Initial Developer are Copyright (C) 2005
20    the Initial Developer. All Rights Reserved.
21    
22    Contributor(s):
23      Franklin de Graaf (original XULMaker's XUL Schema)
24      Nickolay Ponomarev <asqueella@gmail.com>
25    
26    ***** END LICENSE BLOCK *****
27 -->
29 <!--
30    This file specifies types and possible children for XUL elements. It is used 
31    in XUL Schema generation.
33    It is based on XUL Schema by Franklin de Graaf, which is 
34    (C) 2003 X-Power Computing Group Inc.
35    Franklin generously permitted this to be based on his schema.
37    Please see http://mozilla.doslash.org/xulschema for more information.
38  -->
39 <elements xmlns:xs="http://www.w3.org/2001/XMLSchema">
40   <!-- ================================================================================= -->
41   <!-- Informational elements                                                            -->
42   <!-- ================================================================================= -->
43   <type name="Info">
44     <element name="broadcasterset">
45       <zeroOrMore>
46         <element ref="broadcaster"/>
47       </zeroOrMore>
48     </element>
49     <!-- ================================================================================= -->
50     <element name="commandset">
51       <zeroOrMore>
52         <element ref="command"/>
53       </zeroOrMore>
54     </element>
55     <!-- ================================================================================= -->
56     <element name="keyset">
57       <zeroOrMore>
58         <element ref="key"/>
59       </zeroOrMore>
60     </element>
61     <!-- ================================================================================= -->
62     <element name="popupset">
63       <zeroOrMore>
64         <element ref="popup"/>
65         <element ref="menupopup"/>
66       </zeroOrMore>
67     </element>
68     <!-- ================================================================================= -->
69     <element name="stringbundleset">
70       <zeroOrMore>
71         <element ref="stringbundle"/>
72       </zeroOrMore>
73     </element>
74     <!-- ================================================================================= -->
75     <element name="broadcaster"/>
76     <element name="command"/>
77     <element name="key"/>
78     <element name="observes"/>
79     <element name="stringbundle"/>
80     <element name="script"/>
81   </type>
82   <!-- ================================================================================= -->
83   <!-- Generic container elements                                                        -->
84   <!-- ================================================================================= -->
85   <type name="GenericContainer">
86     <element name="arrowscrollbox"/>
87     <element name="bbox"/>
88     <element name="box"/>
89     <element name="caption"/>
90     <element name="column"/>
91     <element name="deck"/>
92     <element name="hbox"/>
93     <element name="row"/>
94     <element name="scrollbox"/>
95     <element name="stack"/>
96     <element name="statusbarpanel"/>
97     <element name="tabpanel"/>
98     <element name="toolbaritem"/>
99     <element name="vbox"/>
100     <element name="wizardpage"/>
101     <!-- XXX description should be mixed="true" -->
102     <element name="description"/>
103   </type>
104   <!-- ================================================================================= -->
105   <!-- "Box" elements that can't have any children                                       -->
106   <!-- ================================================================================= -->
107   <type name="Box">
108     <element name="autorepeatbutton"/>
109     <element name="browser"/>
110     <element name="checkbox"/>
111     <element name="colorpicker"/>
112     <element name="dialogheader"/>
113     <element name="editor"/>
114     <element name="iframe"/>
115     <element name="image"/>
116     <element name="label"/>
117     <element name="progressmeter"/>
118     <element name="tabbrowser"/>
119     <element name="textbox"/>
120     <element name="resizer"/>
121     <element name="separator"/>
122     <element name="spacer"/>
123     <element name="splitter"/>
124     <element name="titlebar"/>
125     <element name="tooltip"/>
126     <element name="textnode"/>
127     <element name="listcol"/>
128     <element name="listheader"/>
129     <element name="menuitem"/>
130     <element name="menuseparator"/>
131     <element name="menulist"/>
132     <element name="radio"/>
133     <element name="scrollbarbutton"/>
134     <element name="slider"/>
135     <element name="thumb"/>
136     <element name="tab"/>
137     <!-- xxx is it a box? -->
138     <element name="toolbarbutton"/>
139     <element name="toolbarseparator"/>
140     <element name="toolbarspacer"/>
141     <element name="toolbarspring"/>
142     <element name="treecell"/>
143     <element name="treecol"/>
144     <element name="treeseparator"/>
145   </type>
146   <!-- ================================================================================= -->
147   <!-- XUL Templates-related elements. Consider removing them altogether?                -->
148   <!-- ================================================================================= -->
149   <type name="RDF">
150     <element name="action"/>
151     <element name="binding"/>
152     <element name="bindings"/>
153     <element name="conditions"/>
154     <element name="content"/>
155     <element name="member"/>
156     <element name="rule"/>
157     <element name="template"/>
158     <element name="triple"/>
159   </type>
160   <!-- ================================================================================= -->
161   <!-- Various container elements                                                        -->
162   <!-- ================================================================================= -->
163   <type name="Container">
164     <element name="columns">
165       <zeroOrMore>
166         <element ref="column"/>
167         <element ref="splitter"/>
168       </zeroOrMore>
169     </element>
170     <element name="grid">
171       <choice>
172         <element ref="columns"/>
173         <element ref="rows"/>
174       </choice>
175     </element>
176     <element name="groupbox">
177       <zeroOrMore>
178         <element ref="caption"/>
179         <group ref="BoxContainer"/>
180         <group ref="Widget"/>
181       </zeroOrMore>
182     </element>
183     <element name="listbox">
184       <sequence>
185         <element ref="listcols" minOccurs="1"/>
186         <element ref="listhead" minOccurs="0"/>
187         <element ref="listitem" minOccurs="1" maxOccurs="unbounded"/>
188       </sequence>
189     </element>
190     <element name="listitem">
191       <choice>
192         <!-- xxx? -->
193         <element ref="listcell" minOccurs="1" maxOccurs="unbounded"/>
194         <group ref="BoxContainer"/>
195         <group ref="Widget"/>
196       </choice>
197     </element>
198     <element name="menubar">
199       <zeroOrMore>
200         <element ref="menu"/>
201       </zeroOrMore>
202     </element>
203     <element name="menupopup">
204       <zeroOrMore>
205         <element ref="menu"/>
206         <element ref="menuitem"/>
207         <element ref="menuseparator"/>
208       </zeroOrMore>
209     </element>
210     <!-- xul.css says <popup> is deprecated :| -->
211     <element name="popup">
212       <zeroOrMore>
213         <element ref="menu"/>
214         <element ref="menuitem"/>
215         <element ref="menuseparator"/>
216       </zeroOrMore>
217     </element>
218     <element name="radiogroup">
219       <oneOrMore>
220         <element ref="radio"/>
221         <group ref="BoxContainer"/>
222         <group ref="Widget"/>
223       </oneOrMore>
224     </element>
225     <element name="rows">
226       <oneOrMore>
227         <element ref="row"/>
228       </oneOrMore>
229     </element>
230     <element name="statusbar">
231       <oneOrMore>
232         <element ref="statusbarpanel"/>
233       </oneOrMore>
234     </element>
235     <element name="tabbox">
236       <all>
237         <element ref="tabs"/>
238         <element ref="tabpanels"/>
239       </all>
240     </element>
241     <element name="tabs">
242       <oneOrMore>
243         <element ref="tab"/>
244         <!-- number of tab elements must equal the number of tabpanel elements -->
245       </oneOrMore>
246     </element>
247     <element name="toolbar">
248       <zeroOrMore>
249         <element ref="toolbaritem"/>
250         <element ref="toolbarseparator"/>
251         <element ref="toolbarspacer"/>
252         <element ref="toolbarspring"/>
253         <group ref="BoxContainer"/>
254         <group ref="Widget"/>
255       </zeroOrMore>
256     </element>
257     <element name="toolbox">
258       <sequence>
259         <!-- xxx -->
260         <element ref="toolbarpalette" minOccurs="0"/>
261         <element ref="toolbarset" minOccurs="0"/>
262         <group ref="BoxContainer"/>
263         <group ref="Widget"/>
264       </sequence>
265     </element>
266     <element name="treecols">
267       <oneOrMore>
268         <element ref="treecol"/>
269         <element ref="splitter"/>
270       </oneOrMore>
271     </element>
272   </type>
273   <!-- ============================================================== -->
274   <type name="Box">
275     <element name="button">
276       <optional>
277         <element ref="image"/>
278       </optional>
279     </element>
280     <element name="listcell">
281       <!--group ref="BoxContainers"/-->
282     </element>
283     <element name="listcols">
284       <oneOrMore>
285         <element ref="listcol"/>
286       </oneOrMore>
287       <!--attributeGroup ref="Container"/-->
288     </element>
289     <element name="listhead">
290       <oneOrMore>
291         <element ref="listheader"/>
292       </oneOrMore>
293     </element>
294     <element name="menu">
295       <optional>
296         <element ref="menupopup"/>
297       </optional>
298     </element>
299     <element name="scrollbar">
300       <zeroOrMore>
301         <element ref="scrollbarbutton"/>
302         <element ref="slider"/>
303         <element ref="thumb"/>
304       </zeroOrMore>
305     </element>
306     <element name="tabpanels">
307       <oneOrMore>
308         <element ref="tabpanel"/>
309         <!-- number of tabpanel elements must equal the number of tab elements -->
310       </oneOrMore>
311     </element>
312     <!-- xxx is this true? -->
313     <element name="toolbarpalette">
314       <zeroOrMore>
315         <element ref="toolbarbutton"/>
316         <element ref="toolbaritem"/>
317       </zeroOrMore>
318     </element>
319     <element name="toolbarset">
320       <zeroOrMore>
321         <element ref="toolbar"/>
322       </zeroOrMore>
323     </element>
324     <element name="tree">
325       <sequence>
326         <element ref="treecols" minOccurs="0" maxOccurs="1"/>
327         <element ref="treechildren" minOccurs="0" maxOccurs="1"/>
328       </sequence>
329     </element>
330     <element name="treechildren">
331       <oneOrMore>
332         <element ref="treeitem"/>
333         <element ref="treeseparator"/>
334       </oneOrMore>
335     </element>
336     <element name="treeitem">
337       <sequence>
338         <element ref="treerow" minOccurs="1" maxOccurs="unbounded"/>
339         <element ref="treechildren" minOccurs="0" maxOccurs="1"/>
340       </sequence>
341     </element>
342     <element name="treerow">
343       <sequence>
344         <element ref="treecell" minOccurs="1" maxOccurs="unbounded"/>
345       </sequence>
346     </element>
347   </type>
348   <!-- Define some element types -->
349   <definetype name="XUL">
350     <attributeGroup ref="XUL"/>
351   </definetype>
352   <definetype name="RDF"/>
353   <definetype name="TopLevel"/>
354   <definetype name="Info" derive="XUL"/>
355   <definetype name="Box" derive="XUL">
356     <attributeGroup ref="Box"/>
357   </definetype>
358   <!-- base type for containers -->
359   <definetype name="Container" derive="Box">
360     <attributeGroup ref="Container"/>
361   </definetype>
362   <!-- for containers that have standart content - xxx better name -->
363   <definetype name="GenericContainer" derive="Container">
364     <zeroOrMore>
365       <group ref="BoxContainer"/>
366       <group ref="Widget"/>
367     </zeroOrMore>
368   </definetype>
369   <!--
370   **********************************************************************************
371   TopLevel
372   **********************************************************************************
373   -->
374   <type name="TopLevel">
375     <element name="dialog">
376       <zeroOrMore>
377         <!-- dialogheader in fact may be in many places -->
378         <element ref="dialogheader"/>
379         <group ref="InfoContainer"/>
380         <group ref="BoxContainer"/>
381         <group ref="Widget"/>
382       </zeroOrMore>
383       <attributeGroup ref="XUL"/>
384       <attributeGroup ref="Box"/>
385       <attributeGroup ref="Container"/>
386       <attributeGroup ref="EventHandler"/>
387     </element>
388     <!-- ================================================================================= -->
389     <element name="overlay">
390       <sequence>
391         <any namespace="##targetNamespace" maxOccurs="unbounded" processContents="lax"/>
392       </sequence>
393       <attributeGroup ref="Id"/>
394       <attributeGroup ref="EventHandler"/>
395     </element>
396     <!-- ================================================================================= -->
397     <element name="page">
398       <zeroOrMore>
399         <group ref="InfoContainer"/>
400         <group ref="BoxContainer"/>
401         <group ref="Widget"/>
402       </zeroOrMore>
403       <attributeGroup ref="XUL"/>
404       <attributeGroup ref="Box"/>
405       <attributeGroup ref="Container"/>
406       <attributeGroup ref="EventHandler"/>
407     </element>
408     <!-- ================================================================================= -->
409     <element name="window">
410       <zeroOrMore>
411         <!-- XXX figure out what's with resizer -->
412         <element ref="resizer"/>
413         <group ref="InfoContainer"/>
414         <group ref="BoxContainer"/>
415         <group ref="Widget"/>
416       </zeroOrMore>
417       <attributeGroup ref="XUL"/>
418       <attributeGroup ref="Box"/>
419       <attributeGroup ref="Container"/>
420       <attributeGroup ref="EventHandler"/>
421     </element>
422     <!-- ================================================================================= -->
423     <element name="wizard">
424       <sequence>
425         <zeroOrMore>
426           <element ref="wizardpage"/>
427           <group ref="InfoContainer"/>
428           <group ref="BoxContainer"/>
429           <group ref="Widget"/>
430         </zeroOrMore>
431       </sequence>
432       <attributeGroup ref="XUL"/>
433       <attributeGroup ref="Box"/>
434       <attributeGroup ref="Container"/>
435       <attributeGroup ref="EventHandler"/>
436     </element>
437   </type>
438   <!-- ********************************************************************************* -->
439   <!--                                                                                   -->
440   <!--                  Basic element groups                                             -->
441   <!--                                                                                   -->
442   <!-- ********************************************************************************* -->
443   <!-- 
444   This is a group of top-level elements that may be root elements of a XUL document. 
445   -->
446   <group name="TopLevel">
447     <choice>
448       <element ref="dialog"/>
449       <element ref="overlay"/>
450       <element ref="page"/>
451       <element ref="window"/>
452       <element ref="wizard"/>
453     </choice>
454   </group>
455   <!-- 
456   This is a group of invisible container elements, which appear as children of a root element.
457   -->
458   <group name="InfoContainer">
459     <choice>
460       <element ref="broadcasterset"/>
461       <element ref="commandset"/>
462       <element ref="keyset"/>
463       <element ref="popupset"/>
464       <element ref="script"/>
465       <element ref="stringbundleset"/>
466       <!-- xxx this is from xul.css, do we need to include this? 
467       element ref="data"/-->
468     </choice>
469   </group>
470   <!-- 
471   This is a group of "generic" or "top level" box containers. "Generic" in the sense that
472   they may be children of elements derived from GenericContainer *xxx this is uncluear*
473   For example, "tabs" is not a "generic" element, because it can only be a child 
474   of "tabbox". 
475   
476   This group of elements always appear in a context where any one of the elements from this 
477   group may appear in any order any number of times.
478   -->
479   <group name="BoxContainer">
480     <choice>
481       <element ref="arrowscrollbox"/>
482       <element ref="bbox"/>
483       <element ref="box"/>
484       <element ref="deck"/>
485       <element ref="grid"/>
486       <element ref="groupbox"/>
487       <element ref="hbox"/>
488       <element ref="menubar"/>
489       <!-- XXX does popup really belong here? -->
490       <element ref="popup"/>
491       <element ref="radiogroup"/>
492       <element ref="scrollbox"/>
493       <element ref="stack"/>
494       <element ref="statusbar"/>
495       <element ref="tabbox"/>
496       <!-- XXX doesn't work yet? 
497       element ref="tabbrowser"/-->
498       <element ref="toolbar"/>
499       <element ref="toolbox"/>
500       <element ref="tooltip"/>
501       <element ref="tree"/>
502       <element ref="vbox"/>
503     </choice>
504   </group>
505   <!-- 
506   Widgets Group 
507   
508   Widget elements may appear in "generic" Box Container Elements and in any one of the
509   specific (non-generic) terminal box container elements.
510   Specific terminal box container elements include: tab, tabpanel listcell, treecell, etc.
511   Although its not a widget, we include the template element here because a template may
512   occur anywhere where a widget may occur.
513   -->
514   <group name="Widget">
515     <choice>
516       <element ref="browser"/>
517       <element ref="button"/>
518       <element ref="checkbox"/>
519       <element ref="colorpicker"/>
520       <element ref="description"/>
521       <element ref="iframe"/>
522       <element ref="label"/>
523       <element ref="listbox"/>
524       <element ref="menulist"/>
525       <element ref="spacer"/>
526       <element ref="splitter"/>
527       <element ref="template"/>
528       <element ref="textbox"/>
529       <element ref="titlebar"/>
530       <element ref="toolbarbutton"/>
531     </choice>
532   </group>
533   <!-- ********************************************************************************* -->
534   <!--                                                                                   -->
535   <!--              Fix us please                                                        -->
536   <!--                                                                                   -->
537   <!-- ********************************************************************************* -->
538   <!-- These are elements that are not defined in the XUL reference -->
539   <defineelement name="autorepeatbutton"/>
540   <defineelement name="scrollbarbutton"/>
541   <defineelement name="slider"/>
542   <defineelement name="thumb"/>
543 </elements>