]> git.argeo.org Git - lgpl/argeo-commons.git/blob - org.argeo.cms/src/org/argeo/cms/acr/schemas/XMLSchema.dtd
Introduce CMS JShell
[lgpl/argeo-commons.git] / org.argeo.cms / src / org / argeo / cms / acr / schemas / XMLSchema.dtd
1 <!-- DTD for XML Schemas: Part 1: Structures
2 Public Identifier: "-//W3C//DTD XMLSCHEMA 200102//EN"
3 Official Location: http://www.w3.org/2001/XMLSchema.dtd -->
4 <!-- $Id: XMLSchema.dtd,v 1.31 2001/10/24 15:50:16 ht Exp $ -->
5 <!-- Note this DTD is NOT normative, or even definitive. --> <!--d-->
6 <!-- prose copy in the structures REC is the definitive version --> <!--d-->
7 <!-- (which shouldn't differ from this one except for this --> <!--d-->
8 <!-- comment and entity expansions, but just in case) --> <!--d-->
9 <!-- With the exception of cases with multiple namespace
10 prefixes for the XML Schema namespace, any XML document which is
11 not valid per this DTD given redefinitions in its internal subset of the
12 'p' and 's' parameter entities below appropriate to its namespace
13 declaration of the XML Schema namespace is almost certainly not
14 a valid schema. -->
15
16 <!-- The simpleType element and its constituent parts
17 are defined in XML Schema: Part 2: Datatypes -->
18 <!ENTITY % xs-datatypes PUBLIC 'datatypes' 'datatypes.dtd' >
19
20 <!ENTITY % p 'xs:'> <!-- can be overriden in the internal subset of a
21 schema document to establish a different
22 namespace prefix -->
23 <!ENTITY % s ':xs'> <!-- if %p is defined (e.g. as foo:) then you must
24 also define %s as the suffix for the appropriate
25 namespace declaration (e.g. :foo) -->
26 <!ENTITY % nds 'xmlns%s;'>
27
28 <!-- Define all the element names, with optional prefix -->
29 <!ENTITY % schema "%p;schema">
30 <!ENTITY % complexType "%p;complexType">
31 <!ENTITY % complexContent "%p;complexContent">
32 <!ENTITY % simpleContent "%p;simpleContent">
33 <!ENTITY % extension "%p;extension">
34 <!ENTITY % element "%p;element">
35 <!ENTITY % unique "%p;unique">
36 <!ENTITY % key "%p;key">
37 <!ENTITY % keyref "%p;keyref">
38 <!ENTITY % selector "%p;selector">
39 <!ENTITY % field "%p;field">
40 <!ENTITY % group "%p;group">
41 <!ENTITY % all "%p;all">
42 <!ENTITY % choice "%p;choice">
43 <!ENTITY % sequence "%p;sequence">
44 <!ENTITY % any "%p;any">
45 <!ENTITY % anyAttribute "%p;anyAttribute">
46 <!ENTITY % attribute "%p;attribute">
47 <!ENTITY % attributeGroup "%p;attributeGroup">
48 <!ENTITY % include "%p;include">
49 <!ENTITY % import "%p;import">
50 <!ENTITY % redefine "%p;redefine">
51 <!ENTITY % notation "%p;notation">
52
53 <!-- annotation elements -->
54 <!ENTITY % annotation "%p;annotation">
55 <!ENTITY % appinfo "%p;appinfo">
56 <!ENTITY % documentation "%p;documentation">
57
58 <!-- Customisation entities for the ATTLIST of each element type.
59 Define one of these if your schema takes advantage of the
60 anyAttribute='##other' in the schema for schemas -->
61
62 <!ENTITY % schemaAttrs ''>
63 <!ENTITY % complexTypeAttrs ''>
64 <!ENTITY % complexContentAttrs ''>
65 <!ENTITY % simpleContentAttrs ''>
66 <!ENTITY % extensionAttrs ''>
67 <!ENTITY % elementAttrs ''>
68 <!ENTITY % groupAttrs ''>
69 <!ENTITY % allAttrs ''>
70 <!ENTITY % choiceAttrs ''>
71 <!ENTITY % sequenceAttrs ''>
72 <!ENTITY % anyAttrs ''>
73 <!ENTITY % anyAttributeAttrs ''>
74 <!ENTITY % attributeAttrs ''>
75 <!ENTITY % attributeGroupAttrs ''>
76 <!ENTITY % uniqueAttrs ''>
77 <!ENTITY % keyAttrs ''>
78 <!ENTITY % keyrefAttrs ''>
79 <!ENTITY % selectorAttrs ''>
80 <!ENTITY % fieldAttrs ''>
81 <!ENTITY % includeAttrs ''>
82 <!ENTITY % importAttrs ''>
83 <!ENTITY % redefineAttrs ''>
84 <!ENTITY % notationAttrs ''>
85 <!ENTITY % annotationAttrs ''>
86 <!ENTITY % appinfoAttrs ''>
87 <!ENTITY % documentationAttrs ''>
88
89 <!ENTITY % complexDerivationSet "CDATA">
90 <!-- #all or space-separated list drawn from derivationChoice -->
91 <!ENTITY % blockSet "CDATA">
92 <!-- #all or space-separated list drawn from
93 derivationChoice + 'substitution' -->
94
95 <!ENTITY % mgs '%all; | %choice; | %sequence;'>
96 <!ENTITY % cs '%choice; | %sequence;'>
97 <!ENTITY % formValues '(qualified|unqualified)'>
98
99
100 <!ENTITY % attrDecls '((%attribute;| %attributeGroup;)*,(%anyAttribute;)?)'>
101
102 <!ENTITY % particleAndAttrs '((%mgs; | %group;)?, %attrDecls;)'>
103
104 <!-- This is used in part2 -->
105 <!ENTITY % restriction1 '((%mgs; | %group;)?)'>
106
107 %xs-datatypes;
108
109 <!-- the duplication below is to produce an unambiguous content model
110 which allows annotation everywhere -->
111 <!ELEMENT %schema; ((%include; | %import; | %redefine; | %annotation;)*,
112 ((%simpleType; | %complexType;
113 | %element; | %attribute;
114 | %attributeGroup; | %group;
115 | %notation; ),
116 (%annotation;)*)* )>
117 <!ATTLIST %schema;
118 targetNamespace %URIref; #IMPLIED
119 version CDATA #IMPLIED
120 %nds; %URIref; #FIXED 'http://www.w3.org/2001/XMLSchema'
121 xmlns CDATA #IMPLIED
122 finalDefault %complexDerivationSet; ''
123 blockDefault %blockSet; ''
124 id ID #IMPLIED
125 elementFormDefault %formValues; 'unqualified'
126 attributeFormDefault %formValues; 'unqualified'
127 xml:lang CDATA #IMPLIED
128 %schemaAttrs;>
129 <!-- Note the xmlns declaration is NOT in the Schema for Schemas,
130 because at the Infoset level where schemas operate,
131 xmlns(:prefix) is NOT an attribute! -->
132 <!-- The declaration of xmlns is a convenience for schema authors -->
133
134 <!-- The id attribute here and below is for use in external references
135 from non-schemas using simple fragment identifiers.
136 It is NOT used for schema-to-schema reference, internal or
137 external. -->
138
139 <!-- a type is a named content type specification which allows attribute
140 declarations-->
141 <!-- -->
142
143 <!ELEMENT %complexType; ((%annotation;)?,
144 (%simpleContent;|%complexContent;|
145 %particleAndAttrs;))>
146
147 <!ATTLIST %complexType;
148 name %NCName; #IMPLIED
149 id ID #IMPLIED
150 abstract %boolean; #IMPLIED
151 final %complexDerivationSet; #IMPLIED
152 block %complexDerivationSet; #IMPLIED
153 mixed (true|false) 'false'
154 %complexTypeAttrs;>
155
156 <!-- particleAndAttrs is shorthand for a root type -->
157 <!-- mixed is disallowed if simpleContent, overriden if complexContent
158 has one too. -->
159
160 <!-- If anyAttribute appears in one or more referenced attributeGroups
161 and/or explicitly, the intersection of the permissions is used -->
162
163 <!ELEMENT %complexContent; ((%annotation;)?, (%restriction;|%extension;))>
164 <!ATTLIST %complexContent;
165 mixed (true|false) #IMPLIED
166 id ID #IMPLIED
167 %complexContentAttrs;>
168
169 <!-- restriction should use the branch defined above, not the simple
170 one from part2; extension should use the full model -->
171
172 <!ELEMENT %simpleContent; ((%annotation;)?, (%restriction;|%extension;))>
173 <!ATTLIST %simpleContent;
174 id ID #IMPLIED
175 %simpleContentAttrs;>
176
177 <!-- restriction should use the simple branch from part2, not the
178 one defined above; extension should have no particle -->
179
180 <!ELEMENT %extension; ((%annotation;)?, (%particleAndAttrs;))>
181 <!ATTLIST %extension;
182 base %QName; #REQUIRED
183 id ID #IMPLIED
184 %extensionAttrs;>
185
186 <!-- an element is declared by either:
187 a name and a type (either nested or referenced via the type attribute)
188 or a ref to an existing element declaration -->
189
190 <!ELEMENT %element; ((%annotation;)?, (%complexType;| %simpleType;)?,
191 (%unique; | %key; | %keyref;)*)>
192 <!-- simpleType or complexType only if no type|ref attribute -->
193 <!-- ref not allowed at top level -->
194 <!ATTLIST %element;
195 name %NCName; #IMPLIED
196 id ID #IMPLIED
197 ref %QName; #IMPLIED
198 type %QName; #IMPLIED
199 minOccurs %nonNegativeInteger; #IMPLIED
200 maxOccurs CDATA #IMPLIED
201 nillable %boolean; #IMPLIED
202 substitutionGroup %QName; #IMPLIED
203 abstract %boolean; #IMPLIED
204 final %complexDerivationSet; #IMPLIED
205 block %blockSet; #IMPLIED
206 default CDATA #IMPLIED
207 fixed CDATA #IMPLIED
208 form %formValues; #IMPLIED
209 %elementAttrs;>
210 <!-- type and ref are mutually exclusive.
211 name and ref are mutually exclusive, one is required -->
212 <!-- In the absence of type AND ref, type defaults to type of
213 substitutionGroup, if any, else the ur-type, i.e. unconstrained -->
214 <!-- default and fixed are mutually exclusive -->
215
216 <!ELEMENT %group; ((%annotation;)?,(%mgs;)?)>
217 <!ATTLIST %group;
218 name %NCName; #IMPLIED
219 ref %QName; #IMPLIED
220 minOccurs %nonNegativeInteger; #IMPLIED
221 maxOccurs CDATA #IMPLIED
222 id ID #IMPLIED
223 %groupAttrs;>
224
225 <!ELEMENT %all; ((%annotation;)?, (%element;)*)>
226 <!ATTLIST %all;
227 minOccurs (1) #IMPLIED
228 maxOccurs (1) #IMPLIED
229 id ID #IMPLIED
230 %allAttrs;>
231
232 <!ELEMENT %choice; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
233 <!ATTLIST %choice;
234 minOccurs %nonNegativeInteger; #IMPLIED
235 maxOccurs CDATA #IMPLIED
236 id ID #IMPLIED
237 %choiceAttrs;>
238
239 <!ELEMENT %sequence; ((%annotation;)?, (%element;| %group;| %cs; | %any;)*)>
240 <!ATTLIST %sequence;
241 minOccurs %nonNegativeInteger; #IMPLIED
242 maxOccurs CDATA #IMPLIED
243 id ID #IMPLIED
244 %sequenceAttrs;>
245
246 <!-- an anonymous grouping in a model, or
247 a top-level named group definition, or a reference to same -->
248
249 <!-- Note that if order is 'all', group is not allowed inside.
250 If order is 'all' THIS group must be alone (or referenced alone) at
251 the top level of a content model -->
252 <!-- If order is 'all', minOccurs==maxOccurs==1 on element/any inside -->
253 <!-- Should allow minOccurs=0 inside order='all' . . . -->
254
255 <!ELEMENT %any; (%annotation;)?>
256 <!ATTLIST %any;
257 namespace CDATA '##any'
258 processContents (skip|lax|strict) 'strict'
259 minOccurs %nonNegativeInteger; '1'
260 maxOccurs CDATA '1'
261 id ID #IMPLIED
262 %anyAttrs;>
263
264 <!-- namespace is interpreted as follows:
265 ##any - - any non-conflicting WFXML at all
266
267 ##other - - any non-conflicting WFXML from namespace other
268 than targetNamespace
269
270 ##local - - any unqualified non-conflicting WFXML/attribute
271 one or - - any non-conflicting WFXML from
272 more URI the listed namespaces
273 references
274
275 ##targetNamespace ##local may appear in the above list,
276 with the obvious meaning -->
277
278 <!ELEMENT %anyAttribute; (%annotation;)?>
279 <!ATTLIST %anyAttribute;
280 namespace CDATA '##any'
281 processContents (skip|lax|strict) 'strict'
282 id ID #IMPLIED
283 %anyAttributeAttrs;>
284 <!-- namespace is interpreted as for 'any' above -->
285
286 <!-- simpleType only if no type|ref attribute -->
287 <!-- ref not allowed at top level, name iff at top level -->
288 <!ELEMENT %attribute; ((%annotation;)?, (%simpleType;)?)>
289 <!ATTLIST %attribute;
290 name %NCName; #IMPLIED
291 id ID #IMPLIED
292 ref %QName; #IMPLIED
293 type %QName; #IMPLIED
294 use (prohibited|optional|required) #IMPLIED
295 default CDATA #IMPLIED
296 fixed CDATA #IMPLIED
297 form %formValues; #IMPLIED
298 %attributeAttrs;>
299 <!-- type and ref are mutually exclusive.
300 name and ref are mutually exclusive, one is required -->
301 <!-- default for use is optional when nested, none otherwise -->
302 <!-- default and fixed are mutually exclusive -->
303 <!-- type attr and simpleType content are mutually exclusive -->
304
305 <!-- an attributeGroup is a named collection of attribute decls, or a
306 reference thereto -->
307 <!ELEMENT %attributeGroup; ((%annotation;)?,
308 (%attribute; | %attributeGroup;)*,
309 (%anyAttribute;)?) >
310 <!ATTLIST %attributeGroup;
311 name %NCName; #IMPLIED
312 id ID #IMPLIED
313 ref %QName; #IMPLIED
314 %attributeGroupAttrs;>
315
316 <!-- ref iff no content, no name. ref iff not top level -->
317
318 <!-- better reference mechanisms -->
319 <!ELEMENT %unique; ((%annotation;)?, %selector;, (%field;)+)>
320 <!ATTLIST %unique;
321 name %NCName; #REQUIRED
322 id ID #IMPLIED
323 %uniqueAttrs;>
324
325 <!ELEMENT %key; ((%annotation;)?, %selector;, (%field;)+)>
326 <!ATTLIST %key;
327 name %NCName; #REQUIRED
328 id ID #IMPLIED
329 %keyAttrs;>
330
331 <!ELEMENT %keyref; ((%annotation;)?, %selector;, (%field;)+)>
332 <!ATTLIST %keyref;
333 name %NCName; #REQUIRED
334 refer %QName; #REQUIRED
335 id ID #IMPLIED
336 %keyrefAttrs;>
337
338 <!ELEMENT %selector; ((%annotation;)?)>
339 <!ATTLIST %selector;
340 xpath %XPathExpr; #REQUIRED
341 id ID #IMPLIED
342 %selectorAttrs;>
343 <!ELEMENT %field; ((%annotation;)?)>
344 <!ATTLIST %field;
345 xpath %XPathExpr; #REQUIRED
346 id ID #IMPLIED
347 %fieldAttrs;>
348
349 <!-- Schema combination mechanisms -->
350 <!ELEMENT %include; (%annotation;)?>
351 <!ATTLIST %include;
352 schemaLocation %URIref; #REQUIRED
353 id ID #IMPLIED
354 %includeAttrs;>
355
356 <!ELEMENT %import; (%annotation;)?>
357 <!ATTLIST %import;
358 namespace %URIref; #IMPLIED
359 schemaLocation %URIref; #IMPLIED
360 id ID #IMPLIED
361 %importAttrs;>
362
363 <!ELEMENT %redefine; (%annotation; | %simpleType; | %complexType; |
364 %attributeGroup; | %group;)*>
365 <!ATTLIST %redefine;
366 schemaLocation %URIref; #REQUIRED
367 id ID #IMPLIED
368 %redefineAttrs;>
369
370 <!ELEMENT %notation; (%annotation;)?>
371 <!ATTLIST %notation;
372 name %NCName; #REQUIRED
373 id ID #IMPLIED
374 public CDATA #REQUIRED
375 system %URIref; #IMPLIED
376 %notationAttrs;>
377
378 <!-- Annotation is either application information or documentation -->
379 <!-- By having these here they are available for datatypes as well
380 as all the structures elements -->
381
382 <!ELEMENT %annotation; (%appinfo; | %documentation;)*>
383 <!ATTLIST %annotation; %annotationAttrs;>
384
385 <!-- User must define annotation elements in internal subset for this
386 to work -->
387 <!ELEMENT %appinfo; ANY> <!-- too restrictive -->
388 <!ATTLIST %appinfo;
389 source %URIref; #IMPLIED
390 id ID #IMPLIED
391 %appinfoAttrs;>
392 <!ELEMENT %documentation; ANY> <!-- too restrictive -->
393 <!ATTLIST %documentation;
394 source %URIref; #IMPLIED
395 id ID #IMPLIED
396 xml:lang CDATA #IMPLIED
397 %documentationAttrs;>
398
399 <!NOTATION XMLSchemaStructures PUBLIC
400 'structures' 'http://www.w3.org/2001/XMLSchema.xsd' >
401 <!NOTATION XML PUBLIC
402 'REC-xml-1998-0210' 'http://www.w3.org/TR/1998/REC-xml-19980210' >