1<?xml version="1.0" encoding="UTF-8"?>
2<!--                                                                        -->
3<!-- Copyright 2008 Google Inc.                                             -->
4<!-- Licensed under the Apache License, Version 2.0 (the "License"); you    -->
5<!-- may not use this file except in compliance with the License. You may   -->
6<!-- may obtain a copy of the License at                                    -->
7<!--                                                                        -->
8<!-- http://www.apache.org/licenses/LICENSE-2.0                             -->
9<!--                                                                        -->
10<!-- Unless required by applicable law or agreed to in writing, software    -->
11<!-- distributed under the License is distributed on an "AS IS" BASIS,      -->
12<!-- WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or        -->
13<!-- implied. License for the specific language governing permissions and   -->
14<!-- limitations under the License.                                         -->
15
16<!-- The module root element -->
17<!ELEMENT module (inherits | source | public | super-source | entry-point |
18  stylesheet | script | servlet | replace-with | generate-with |
19  define-property | extend-property | set-property | set-property-fallback |
20  clear-configuration-property | define-configuration-property |
21  extend-configuration-property | set-configuration-property |
22  property-provider | define-linker | add-linker | collapse-all-properties |
23  collapse-property)*>
24<!ATTLIST module
25	rename-to CDATA #IMPLIED
26>
27<!-- Inherit the contents of another module -->
28<!ELEMENT inherits EMPTY>
29<!ATTLIST inherits
30	name CDATA #REQUIRED
31>
32<!-- Specify the source path, relative to the classpath location of the module descriptor -->
33<!ELEMENT source (include | exclude)*>
34<!ATTLIST source
35	path CDATA #REQUIRED
36	includes CDATA #IMPLIED
37	excludes CDATA #IMPLIED
38	defaultexcludes (yes | no) "yes"
39	casesensitive (true | false) "true"
40>
41<!-- Specify the public resource path, relative to the classpath location of the module descriptor -->
42<!ELEMENT public (include | exclude)*>
43<!ATTLIST public
44	path CDATA #REQUIRED
45	includes CDATA #IMPLIED
46	excludes CDATA #IMPLIED
47	defaultexcludes (yes | no) "yes"
48	casesensitive (true | false) "true"
49>
50<!-- Specify a source path that rebases subpackages into the root namespace -->
51<!ELEMENT super-source (include | exclude)*>
52<!ATTLIST super-source
53	path CDATA #REQUIRED
54	includes CDATA #IMPLIED
55	excludes CDATA #IMPLIED
56	defaultexcludes (yes | no) "yes"
57	casesensitive (true | false) "true"
58>
59<!ELEMENT include EMPTY>
60<!ATTLIST include
61	name CDATA #REQUIRED
62>
63<!ELEMENT exclude EMPTY>
64<!ATTLIST exclude
65	name CDATA #REQUIRED
66>
67
68<!-- Define a module entry point -->
69<!ELEMENT entry-point EMPTY>
70<!ATTLIST entry-point
71	class CDATA #REQUIRED
72>
73
74<!-- Preload a stylesheet before executing the GWT application -->
75<!ELEMENT stylesheet EMPTY>
76<!ATTLIST stylesheet
77	src CDATA #REQUIRED
78>
79<!-- Preload an external JavaScript file before executing the GWT application -->
80<!ELEMENT script (#PCDATA)>
81<!ATTLIST script
82	src CDATA #REQUIRED
83>
84<!-- Map a named servlet class to a module-relative path in hosted mode -->
85<!ELEMENT servlet EMPTY>
86<!ATTLIST servlet
87	path CDATA #REQUIRED
88	class CDATA #REQUIRED
89>
90
91<!-- Adds a Linker to the compilation process -->
92<!ELEMENT add-linker EMPTY>
93<!-- A comma-separated list of linker names -->
94<!ATTLIST add-linker
95	name CDATA #REQUIRED
96>
97
98<!-- Defines a Linker type to package compiler output -->
99<!ELEMENT define-linker EMPTY>
100<!ATTLIST define-linker
101	class CDATA #REQUIRED
102	name CDATA #REQUIRED
103>
104
105<!--                 ^^^ Commonly-used elements ^^^                -->
106<!--                VVV Deferred binding elements VVV              -->
107
108<!-- All possible predicates -->
109<!ENTITY % predicates "when-property-is | when-type-assignable | when-type-is | all | any | none">
110<!-- Define a property and allowable values (comma-separated identifiers) -->
111<!ELEMENT define-property EMPTY>
112<!ATTLIST define-property
113	name CDATA #REQUIRED
114	values CDATA #REQUIRED
115>
116<!-- Define a configuration property -->
117<!ELEMENT define-configuration-property EMPTY>
118<!ATTLIST define-configuration-property
119	name CDATA #REQUIRED
120	is-multi-valued CDATA #REQUIRED
121>
122<!-- Set the value of a previously-defined property -->
123<!ELEMENT set-property (%predicates;)*>
124<!ATTLIST set-property
125	name CDATA #REQUIRED
126	value CDATA #REQUIRED
127>
128<!-- Set the value of a previously-defined property -->
129<!ELEMENT set-property-fallback EMPTY>
130<!ATTLIST set-property-fallback
131	name CDATA #REQUIRED
132	value CDATA #REQUIRED
133>
134<!-- Set the value of a configuration property -->
135<!ELEMENT set-configuration-property EMPTY>
136<!ATTLIST set-configuration-property
137	name CDATA #REQUIRED
138	value CDATA #REQUIRED
139>
140<!-- Add additional allowable values to a property -->
141<!ELEMENT extend-property EMPTY>
142<!ATTLIST extend-property
143	name CDATA #REQUIRED
144	values CDATA #REQUIRED
145	fallback-value CDATA #IMPLIED
146>
147<!-- Collapse property values to produce soft permutations -->
148<!ELEMENT collapse-property EMPTY>
149<!ATTLIST collapse-property
150	name CDATA #REQUIRED
151	values CDATA #REQUIRED
152>
153<!-- Collapse all deferred-binding properties to produce a single permutation -->
154<!ELEMENT collapse-all-properties EMPTY>
155<!ATTLIST collapse-all-properties
156	value (true | false) "true"
157>
158<!-- Add additional allowable values to a configuration property -->
159<!ELEMENT extend-configuration-property EMPTY>
160<!ATTLIST extend-configuration-property
161	name CDATA #REQUIRED
162	value CDATA #REQUIRED
163>
164<!-- Remove all allowable values from a configuration property -->
165<!ELEMENT clear-configuration-property EMPTY>
166<!ATTLIST clear-configuration-property
167	name CDATA #REQUIRED
168>
169<!-- Define a JavaScript fragment that will return the value for the named property at runtime -->
170<!ELEMENT property-provider (#PCDATA)>
171<!ATTLIST property-provider
172	name CDATA #REQUIRED
173	generator CDATA #IMPLIED
174>
175<!-- Deferred binding assignment to substitute a named class -->
176<!ELEMENT replace-with (%predicates;)*>
177<!ATTLIST replace-with
178	class CDATA #REQUIRED
179>
180<!-- Deferred binding assignment to substitute a generated class -->
181<!ELEMENT generate-with (%predicates;)*>
182<!ATTLIST generate-with
183	class CDATA #REQUIRED
184>
185<!-- Deferred binding predicate that is true when a named property has a given value-->
186<!ELEMENT when-property-is EMPTY>
187<!ATTLIST when-property-is
188	name CDATA #REQUIRED
189	value CDATA #REQUIRED
190>
191<!-- Deferred binding predicate that is true for types in the type system that are assignable to the specified type -->
192<!ELEMENT when-type-assignable EMPTY>
193<!ATTLIST when-type-assignable
194	class CDATA #REQUIRED
195>
196<!-- Deferred binding predicate that is true for exactly one type in the type system -->
197<!ELEMENT when-type-is EMPTY>
198<!ATTLIST when-type-is
199	class CDATA #REQUIRED
200>
201<!-- Predicate that ANDs all child conditions -->
202<!ELEMENT all (%predicates;)*>
203<!-- Predicate that ORs all child conditions -->
204<!ELEMENT any (%predicates;)*>
205<!-- Predicate that NANDs all child conditions -->
206<!ELEMENT none (%predicates;)*>
207