Hide dump_notes() again.
[libdcp.git] / xsd / XMLSchema.xsd
1 <?xml version='1.0' encoding='UTF-8'?>
2 <!-- XML Schema schema for XML Schemas: Part 1: Structures -->
3 <!-- Note this schema is NOT the normative structures schema. -->
4 <!-- The prose copy in the structures REC is the normative -->
5 <!-- version (which shouldn't differ from this one except for -->
6 <!-- this comment and entity expansions, but just in case -->
7 <!DOCTYPE xs:schema PUBLIC "-//W3C//DTD XMLSCHEMA 200102//EN" "XMLSchema.dtd" [
8
9 <!-- provide ID type information even for parsers which only read the
10      internal subset -->
11 <!ATTLIST xs:schema          id  ID  #IMPLIED>
12 <!ATTLIST xs:complexType     id  ID  #IMPLIED>
13 <!ATTLIST xs:complexContent  id  ID  #IMPLIED>
14 <!ATTLIST xs:simpleContent   id  ID  #IMPLIED>
15 <!ATTLIST xs:extension       id  ID  #IMPLIED>
16 <!ATTLIST xs:element         id  ID  #IMPLIED>
17 <!ATTLIST xs:group           id  ID  #IMPLIED> 
18 <!ATTLIST xs:all             id  ID  #IMPLIED>
19 <!ATTLIST xs:choice          id  ID  #IMPLIED>
20 <!ATTLIST xs:sequence        id  ID  #IMPLIED>
21 <!ATTLIST xs:any             id  ID  #IMPLIED>
22 <!ATTLIST xs:anyAttribute    id  ID  #IMPLIED>
23 <!ATTLIST xs:attribute       id  ID  #IMPLIED>
24 <!ATTLIST xs:attributeGroup  id  ID  #IMPLIED>
25 <!ATTLIST xs:unique          id  ID  #IMPLIED>
26 <!ATTLIST xs:key             id  ID  #IMPLIED>
27 <!ATTLIST xs:keyref          id  ID  #IMPLIED>
28 <!ATTLIST xs:selector        id  ID  #IMPLIED>
29 <!ATTLIST xs:field           id  ID  #IMPLIED>
30 <!ATTLIST xs:include         id  ID  #IMPLIED>
31 <!ATTLIST xs:import          id  ID  #IMPLIED>
32 <!ATTLIST xs:redefine        id  ID  #IMPLIED>
33 <!ATTLIST xs:notation        id  ID  #IMPLIED>
34 <!--
35      keep this schema XML1.0 DTD valid
36   -->
37         <!ENTITY % schemaAttrs 'xmlns:hfp CDATA #IMPLIED'>
38
39         <!ELEMENT hfp:hasFacet EMPTY>
40         <!ATTLIST hfp:hasFacet
41                 name NMTOKEN #REQUIRED>
42
43         <!ELEMENT hfp:hasProperty EMPTY>
44         <!ATTLIST hfp:hasProperty
45                 name NMTOKEN #REQUIRED
46                 value CDATA #REQUIRED>
47 <!--
48         Make sure that processors that do not read the external
49         subset will know about the various IDs we declare
50   -->
51         <!ATTLIST xs:simpleType id ID #IMPLIED>
52         <!ATTLIST xs:maxExclusive id ID #IMPLIED>
53         <!ATTLIST xs:minExclusive id ID #IMPLIED>
54         <!ATTLIST xs:maxInclusive id ID #IMPLIED>
55         <!ATTLIST xs:minInclusive id ID #IMPLIED>
56         <!ATTLIST xs:totalDigits id ID #IMPLIED>
57         <!ATTLIST xs:fractionDigits id ID #IMPLIED>
58         <!ATTLIST xs:length id ID #IMPLIED>
59         <!ATTLIST xs:minLength id ID #IMPLIED>
60         <!ATTLIST xs:maxLength id ID #IMPLIED>
61         <!ATTLIST xs:enumeration id ID #IMPLIED>
62         <!ATTLIST xs:pattern id ID #IMPLIED>
63         <!ATTLIST xs:appinfo id ID #IMPLIED>
64         <!ATTLIST xs:documentation id ID #IMPLIED>
65         <!ATTLIST xs:list id ID #IMPLIED>
66         <!ATTLIST xs:union id ID #IMPLIED>
67         ]>
68 <xs:schema targetNamespace="http://www.w3.org/2001/XMLSchema" blockDefault="#all" elementFormDefault="qualified" version="1.0" xmlns:xs="http://www.w3.org/2001/XMLSchema" xml:lang="EN" xmlns:hfp="http://www.w3.org/2001/XMLSchema-hasFacetAndProperty">
69  <xs:annotation>
70   <xs:documentation>
71     Part 1 version: Id: structures.xsd,v 1.2 2004/01/15 11:34:25 ht Exp 
72     Part 2 version: Id: datatypes.xsd,v 1.3 2004/01/23 18:11:13 ht Exp 
73   </xs:documentation>
74  </xs:annotation>
75
76  <xs:annotation>
77    <xs:documentation source="http://www.w3.org/TR/2004/PER-xmlschema-1-20040318/structures.html">
78    The schema corresponding to this document is normative,
79    with respect to the syntactic constraints it expresses in the
80    XML Schema language.  The documentation (within &lt;documentation> elements)
81    below, is not normative, but rather highlights important aspects of
82    the W3C Recommendation of which this is a part</xs:documentation>
83  </xs:annotation>
84
85  <xs:annotation>
86    <xs:documentation>
87    The simpleType element and all of its members are defined
88       towards the end of this schema document</xs:documentation>
89  </xs:annotation>
90
91  <xs:import namespace="http://www.w3.org/XML/1998/namespace" schemaLocation="http://www.w3.org/2001/xml.xsd">
92    <xs:annotation>
93      <xs:documentation>
94        Get access to the xml: attribute groups for xml:lang
95        as declared on 'schema' and 'documentation' below
96      </xs:documentation>
97    </xs:annotation>
98  </xs:import>
99
100  <xs:complexType name="openAttrs">
101    <xs:annotation>
102      <xs:documentation>
103        This type is extended by almost all schema types
104        to allow attributes from other namespaces to be
105        added to user schemas.
106      </xs:documentation>
107    </xs:annotation>
108    <xs:complexContent>
109      <xs:restriction base="xs:anyType">
110        <xs:anyAttribute namespace="##other" processContents="lax"/>
111      </xs:restriction>
112    </xs:complexContent>
113  </xs:complexType>
114
115  <xs:complexType name="annotated">
116    <xs:annotation>
117      <xs:documentation>
118        This type is extended by all types which allow annotation
119        other than &lt;schema&gt; itself
120      </xs:documentation>
121    </xs:annotation>
122    <xs:complexContent>
123      <xs:extension base="xs:openAttrs">
124        <xs:sequence>
125          <xs:element ref="xs:annotation" minOccurs="0"/>
126        </xs:sequence>
127        <xs:attribute name="id" type="xs:ID"/>
128      </xs:extension>
129    </xs:complexContent>
130  </xs:complexType>
131
132  <xs:group name="schemaTop">
133   <xs:annotation>
134    <xs:documentation>
135    This group is for the
136    elements which occur freely at the top level of schemas.
137    All of their types are based on the "annotated" type by extension.</xs:documentation>
138   </xs:annotation>
139   <xs:choice>
140    <xs:group ref="xs:redefinable"/>
141    <xs:element ref="xs:element"/>
142    <xs:element ref="xs:attribute"/>
143    <xs:element ref="xs:notation"/>
144   </xs:choice>
145  </xs:group>
146  
147  <xs:group name="redefinable">
148   <xs:annotation>
149    <xs:documentation>
150    This group is for the
151    elements which can self-redefine (see &lt;redefine> below).</xs:documentation>
152   </xs:annotation>
153   <xs:choice>
154    <xs:element ref="xs:simpleType"/>
155    <xs:element ref="xs:complexType"/>
156    <xs:element ref="xs:group"/>
157    <xs:element ref="xs:attributeGroup"/>
158   </xs:choice>
159  </xs:group>
160
161  <xs:simpleType name="formChoice">
162   <xs:annotation>
163    <xs:documentation>
164    A utility type, not for public use</xs:documentation>
165   </xs:annotation>
166   <xs:restriction base="xs:NMTOKEN">
167    <xs:enumeration value="qualified"/>
168    <xs:enumeration value="unqualified"/>
169   </xs:restriction>
170  </xs:simpleType>
171
172  <xs:simpleType name="reducedDerivationControl">
173   <xs:annotation>
174    <xs:documentation>
175    A utility type, not for public use</xs:documentation>
176   </xs:annotation>
177   <xs:restriction base="xs:derivationControl">
178    <xs:enumeration value="extension"/>
179    <xs:enumeration value="restriction"/>
180   </xs:restriction>
181  </xs:simpleType>
182
183  <xs:simpleType name="derivationSet">
184   <xs:annotation>
185    <xs:documentation>
186    A utility type, not for public use</xs:documentation>
187    <xs:documentation>
188    #all or (possibly empty) subset of {extension, restriction}</xs:documentation>
189   </xs:annotation>
190   <xs:union>
191    <xs:simpleType>    
192     <xs:restriction base="xs:token">
193      <xs:enumeration value="#all"/>
194     </xs:restriction>
195    </xs:simpleType>
196    <xs:simpleType>
197     <xs:list itemType="xs:reducedDerivationControl"/>
198    </xs:simpleType>
199   </xs:union>
200  </xs:simpleType>
201
202  <xs:simpleType name="typeDerivationControl">
203   <xs:annotation>
204    <xs:documentation>
205    A utility type, not for public use</xs:documentation>
206   </xs:annotation>
207   <xs:restriction base="xs:derivationControl">
208    <xs:enumeration value="extension"/>
209    <xs:enumeration value="restriction"/>
210    <xs:enumeration value="list"/>
211    <xs:enumeration value="union"/>
212   </xs:restriction>
213  </xs:simpleType>
214
215   <xs:simpleType name="fullDerivationSet">
216   <xs:annotation>
217    <xs:documentation>
218    A utility type, not for public use</xs:documentation>
219    <xs:documentation>
220    #all or (possibly empty) subset of {extension, restriction, list, union}</xs:documentation>
221   </xs:annotation>
222   <xs:union>
223    <xs:simpleType>    
224     <xs:restriction base="xs:token">
225      <xs:enumeration value="#all"/>
226     </xs:restriction>
227    </xs:simpleType>
228    <xs:simpleType>
229     <xs:list itemType="xs:typeDerivationControl"/>
230    </xs:simpleType>
231   </xs:union>
232  </xs:simpleType>
233
234  <xs:element name="schema" id="schema">
235   <xs:annotation>
236     <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-schema"/>
237   </xs:annotation>
238   <xs:complexType>
239    <xs:complexContent>
240     <xs:extension base="xs:openAttrs">
241      <xs:sequence>
242       <xs:choice minOccurs="0" maxOccurs="unbounded">
243        <xs:element ref="xs:include"/>
244        <xs:element ref="xs:import"/>
245        <xs:element ref="xs:redefine"/>
246        <xs:element ref="xs:annotation"/>
247       </xs:choice>
248       <xs:sequence minOccurs="0" maxOccurs="unbounded">
249        <xs:group ref="xs:schemaTop"/>
250        <xs:element ref="xs:annotation" minOccurs="0" maxOccurs="unbounded"/>
251       </xs:sequence>
252      </xs:sequence>
253      <xs:attribute name="targetNamespace" type="xs:anyURI"/>
254      <xs:attribute name="version" type="xs:token"/>
255      <xs:attribute name="finalDefault" type="xs:fullDerivationSet" use="optional" default=""/>
256      <xs:attribute name="blockDefault" type="xs:blockSet" use="optional" default=""/>
257      <xs:attribute name="attributeFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
258      <xs:attribute name="elementFormDefault" type="xs:formChoice" use="optional" default="unqualified"/>
259      <xs:attribute name="id" type="xs:ID"/>
260      <xs:attribute ref="xml:lang"/>
261     </xs:extension>
262    </xs:complexContent>
263   </xs:complexType>
264
265   <xs:key name="element">
266    <xs:selector xpath="xs:element"/>
267    <xs:field xpath="@name"/>
268   </xs:key>
269
270   <xs:key name="attribute">
271    <xs:selector xpath="xs:attribute"/>
272    <xs:field xpath="@name"/>
273   </xs:key>
274
275   <xs:key name="type">
276    <xs:selector xpath="xs:complexType|xs:simpleType"/>
277    <xs:field xpath="@name"/>
278   </xs:key>
279  
280   <xs:key name="group">
281    <xs:selector xpath="xs:group"/>
282    <xs:field xpath="@name"/>
283   </xs:key>
284  
285   <xs:key name="attributeGroup">
286    <xs:selector xpath="xs:attributeGroup"/>
287    <xs:field xpath="@name"/>
288   </xs:key>
289  
290   <xs:key name="notation">
291    <xs:selector xpath="xs:notation"/>
292    <xs:field xpath="@name"/>
293   </xs:key>
294
295   <xs:key name="identityConstraint">
296    <xs:selector xpath=".//xs:key|.//xs:unique|.//xs:keyref"/>
297    <xs:field xpath="@name"/>
298   </xs:key>
299
300  </xs:element>
301
302  <xs:simpleType name="allNNI">
303   <xs:annotation><xs:documentation>
304    for maxOccurs</xs:documentation></xs:annotation>
305   <xs:union memberTypes="xs:nonNegativeInteger">
306    <xs:simpleType>
307     <xs:restriction base="xs:NMTOKEN">
308      <xs:enumeration value="unbounded"/>
309     </xs:restriction>
310    </xs:simpleType>
311   </xs:union>
312  </xs:simpleType>
313
314  <xs:attributeGroup name="occurs">
315   <xs:annotation><xs:documentation>
316    for all particles</xs:documentation></xs:annotation>
317   <xs:attribute name="minOccurs" type="xs:nonNegativeInteger" use="optional" default="1"/>
318   <xs:attribute name="maxOccurs" type="xs:allNNI" use="optional" default="1"/>
319  </xs:attributeGroup>
320
321  <xs:attributeGroup name="defRef">
322   <xs:annotation><xs:documentation>
323    for element, group and attributeGroup,
324    which both define and reference</xs:documentation></xs:annotation>
325   <xs:attribute name="name" type="xs:NCName"/>
326   <xs:attribute name="ref" type="xs:QName"/>
327  </xs:attributeGroup>
328
329  <xs:group name="typeDefParticle">
330   <xs:annotation>
331     <xs:documentation>
332    'complexType' uses this</xs:documentation></xs:annotation>
333   <xs:choice>
334    <xs:element name="group" type="xs:groupRef"/>
335    <xs:element ref="xs:all"/>
336    <xs:element ref="xs:choice"/>
337    <xs:element ref="xs:sequence"/>
338   </xs:choice>
339  </xs:group>
340  
341  
342
343  <xs:group name="nestedParticle">
344   <xs:choice>
345    <xs:element name="element" type="xs:localElement"/>
346    <xs:element name="group" type="xs:groupRef"/>
347    <xs:element ref="xs:choice"/>
348    <xs:element ref="xs:sequence"/>
349    <xs:element ref="xs:any"/>
350   </xs:choice>
351  </xs:group>
352  
353  <xs:group name="particle">
354   <xs:choice>
355    <xs:element name="element" type="xs:localElement"/>
356    <xs:element name="group" type="xs:groupRef"/>
357    <xs:element ref="xs:all"/>
358    <xs:element ref="xs:choice"/>
359    <xs:element ref="xs:sequence"/>
360    <xs:element ref="xs:any"/>
361   </xs:choice>
362  </xs:group>
363  
364  <xs:complexType name="attribute">
365   <xs:complexContent>
366    <xs:extension base="xs:annotated">
367     <xs:sequence>
368      <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
369     </xs:sequence>
370     <xs:attributeGroup ref="xs:defRef"/>
371     <xs:attribute name="type" type="xs:QName"/>
372     <xs:attribute name="use" use="optional" default="optional">
373      <xs:simpleType>
374       <xs:restriction base="xs:NMTOKEN">
375        <xs:enumeration value="prohibited"/>
376        <xs:enumeration value="optional"/>
377        <xs:enumeration value="required"/>
378       </xs:restriction>
379      </xs:simpleType>
380     </xs:attribute>
381     <xs:attribute name="default" type="xs:string"/>
382     <xs:attribute name="fixed" type="xs:string"/>
383     <xs:attribute name="form" type="xs:formChoice"/>
384    </xs:extension>
385   </xs:complexContent>
386  </xs:complexType>
387  
388  <xs:complexType name="topLevelAttribute">
389   <xs:complexContent>
390    <xs:restriction base="xs:attribute">
391     <xs:sequence>
392      <xs:element ref="xs:annotation" minOccurs="0"/>
393      <xs:element name="simpleType" minOccurs="0" type="xs:localSimpleType"/>
394     </xs:sequence>
395     <xs:attribute name="ref" use="prohibited"/>
396     <xs:attribute name="form" use="prohibited"/>
397     <xs:attribute name="use" use="prohibited"/>
398     <xs:attribute name="name" use="required" type="xs:NCName"/>
399     <xs:anyAttribute namespace="##other" processContents="lax"/>
400    </xs:restriction>
401   </xs:complexContent>
402  </xs:complexType>
403
404  <xs:group name="attrDecls">
405   <xs:sequence>
406    <xs:choice minOccurs="0" maxOccurs="unbounded">
407     <xs:element name="attribute" type="xs:attribute"/>
408     <xs:element name="attributeGroup" type="xs:attributeGroupRef"/>
409    </xs:choice>
410    <xs:element ref="xs:anyAttribute" minOccurs="0"/>
411   </xs:sequence>
412  </xs:group>
413
414  <xs:element name="anyAttribute" type="xs:wildcard" id="anyAttribute">
415   <xs:annotation>
416    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-anyAttribute"/>
417   </xs:annotation>
418  </xs:element>
419
420  <xs:group name="complexTypeModel">
421   <xs:choice>
422       <xs:element ref="xs:simpleContent"/>
423       <xs:element ref="xs:complexContent"/>
424       <xs:sequence>
425        <xs:annotation>
426         <xs:documentation>
427    This branch is short for
428    &lt;complexContent>
429    &lt;restriction base="xs:anyType">
430    ...
431    &lt;/restriction>
432    &lt;/complexContent></xs:documentation>
433        </xs:annotation>
434        <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
435        <xs:group ref="xs:attrDecls"/>
436       </xs:sequence>
437   </xs:choice>
438  </xs:group>
439
440  <xs:complexType name="complexType" abstract="true">
441   <xs:complexContent>
442    <xs:extension base="xs:annotated">
443     <xs:group ref="xs:complexTypeModel"/>
444     <xs:attribute name="name" type="xs:NCName">
445      <xs:annotation>
446       <xs:documentation>
447       Will be restricted to required or forbidden</xs:documentation>
448      </xs:annotation>
449     </xs:attribute>
450     <xs:attribute name="mixed" type="xs:boolean" use="optional" default="false">
451      <xs:annotation>
452       <xs:documentation>
453       Not allowed if simpleContent child is chosen.
454       May be overriden by setting on complexContent child.</xs:documentation>
455     </xs:annotation>
456     </xs:attribute>
457     <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
458     <xs:attribute name="final" type="xs:derivationSet"/>
459     <xs:attribute name="block" type="xs:derivationSet"/>
460    </xs:extension>
461   </xs:complexContent>
462  </xs:complexType>
463  
464  <xs:complexType name="topLevelComplexType">
465   <xs:complexContent>
466    <xs:restriction base="xs:complexType">
467     <xs:sequence>
468      <xs:element ref="xs:annotation" minOccurs="0"/>
469      <xs:group ref="xs:complexTypeModel"/>
470     </xs:sequence>
471     <xs:attribute name="name" type="xs:NCName" use="required"/>
472     <xs:anyAttribute namespace="##other" processContents="lax"/>
473    </xs:restriction>
474   </xs:complexContent>
475  </xs:complexType>
476  
477  <xs:complexType name="localComplexType">
478   <xs:complexContent>
479    <xs:restriction base="xs:complexType">
480     <xs:sequence>
481      <xs:element ref="xs:annotation" minOccurs="0"/>
482      <xs:group ref="xs:complexTypeModel"/>
483     </xs:sequence>
484     <xs:attribute name="name" use="prohibited"/>
485     <xs:attribute name="abstract" use="prohibited"/>
486     <xs:attribute name="final" use="prohibited"/>
487     <xs:attribute name="block" use="prohibited"/>
488     <xs:anyAttribute namespace="##other" processContents="lax"/>
489    </xs:restriction>
490   </xs:complexContent>
491  </xs:complexType>
492  
493  <xs:complexType name="restrictionType">
494   <xs:complexContent>
495    <xs:extension base="xs:annotated">
496     <xs:sequence>
497      <xs:choice minOccurs="0">
498       <xs:group ref="xs:typeDefParticle"/>
499       <xs:group ref="xs:simpleRestrictionModel"/>
500      </xs:choice>
501      <xs:group ref="xs:attrDecls"/>
502     </xs:sequence>
503     <xs:attribute name="base" type="xs:QName" use="required"/>
504    </xs:extension>
505   </xs:complexContent>       
506  </xs:complexType>
507
508  <xs:complexType name="complexRestrictionType">
509   <xs:complexContent>
510    <xs:restriction base="xs:restrictionType">
511     <xs:sequence>
512      <xs:element ref="xs:annotation" minOccurs="0"/>
513      <xs:choice minOccurs="0">
514       <xs:annotation>
515        <xs:documentation>This choice is added simply to
516                    make this a valid restriction per the REC</xs:documentation>
517       </xs:annotation>
518       <xs:group ref="xs:typeDefParticle"/>
519      </xs:choice>
520      <xs:group ref="xs:attrDecls"/>
521     </xs:sequence>
522     <xs:anyAttribute namespace="##other" processContents="lax"/>
523    </xs:restriction>
524   </xs:complexContent>       
525  </xs:complexType>
526
527  <xs:complexType name="extensionType">
528   <xs:complexContent>
529    <xs:extension base="xs:annotated">
530     <xs:sequence>
531      <xs:group ref="xs:typeDefParticle" minOccurs="0"/>
532      <xs:group ref="xs:attrDecls"/>
533     </xs:sequence>
534     <xs:attribute name="base" type="xs:QName" use="required"/>
535    </xs:extension>
536   </xs:complexContent>       
537  </xs:complexType>
538
539  <xs:element name="complexContent" id="complexContent">
540   <xs:annotation>
541    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexContent"/>
542   </xs:annotation>
543   <xs:complexType>
544    <xs:complexContent>
545     <xs:extension base="xs:annotated">
546      <xs:choice>
547       <xs:element name="restriction" type="xs:complexRestrictionType"/>
548       <xs:element name="extension" type="xs:extensionType"/>
549      </xs:choice>     
550      <xs:attribute name="mixed" type="xs:boolean">
551       <xs:annotation>
552        <xs:documentation>
553        Overrides any setting on complexType parent.</xs:documentation>
554       </xs:annotation>
555     </xs:attribute>
556     </xs:extension>
557    </xs:complexContent>
558   </xs:complexType>
559  </xs:element>
560
561  <xs:complexType name="simpleRestrictionType">
562   <xs:complexContent>
563    <xs:restriction base="xs:restrictionType">
564     <xs:sequence>
565      <xs:element ref="xs:annotation" minOccurs="0"/>
566      <xs:choice minOccurs="0">
567       <xs:annotation>
568        <xs:documentation>This choice is added simply to
569                    make this a valid restriction per the REC</xs:documentation>
570       </xs:annotation>
571       <xs:group ref="xs:simpleRestrictionModel"/>
572      </xs:choice>
573      <xs:group ref="xs:attrDecls"/>
574     </xs:sequence>
575     <xs:anyAttribute namespace="##other" processContents="lax"/>
576    </xs:restriction>
577   </xs:complexContent>
578  </xs:complexType>
579
580  <xs:complexType name="simpleExtensionType">
581   <xs:complexContent>
582    <xs:restriction base="xs:extensionType">
583     <xs:sequence>
584      <xs:annotation>
585       <xs:documentation>
586       No typeDefParticle group reference</xs:documentation>
587      </xs:annotation>
588      <xs:element ref="xs:annotation" minOccurs="0"/>
589      <xs:group ref="xs:attrDecls"/>
590     </xs:sequence>
591     <xs:anyAttribute namespace="##other" processContents="lax"/>
592    </xs:restriction>
593   </xs:complexContent>
594  </xs:complexType>
595
596  <xs:element name="simpleContent" id="simpleContent">
597   <xs:annotation>
598    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-simpleContent"/>
599   </xs:annotation>
600   <xs:complexType>
601    <xs:complexContent>
602     <xs:extension base="xs:annotated">
603      <xs:choice>
604       <xs:element name="restriction" type="xs:simpleRestrictionType"/>
605       <xs:element name="extension" type="xs:simpleExtensionType"/>
606      </xs:choice>
607     </xs:extension>
608    </xs:complexContent>
609   </xs:complexType>
610  </xs:element>
611  
612  <xs:element name="complexType" type="xs:topLevelComplexType" id="complexType">
613   <xs:annotation>
614    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-complexType"/>
615   </xs:annotation>
616  </xs:element>
617
618
619   <xs:simpleType name="blockSet">
620    <xs:annotation>
621     <xs:documentation>
622     A utility type, not for public use</xs:documentation>
623     <xs:documentation>
624     #all or (possibly empty) subset of {substitution, extension,
625     restriction}</xs:documentation>
626    </xs:annotation>
627    <xs:union>
628     <xs:simpleType>    
629      <xs:restriction base="xs:token">
630       <xs:enumeration value="#all"/>
631      </xs:restriction>
632     </xs:simpleType>
633     <xs:simpleType>
634      <xs:list>
635       <xs:simpleType>
636        <xs:restriction base="xs:derivationControl">
637         <xs:enumeration value="extension"/>
638         <xs:enumeration value="restriction"/>
639         <xs:enumeration value="substitution"/>
640        </xs:restriction>
641       </xs:simpleType>
642      </xs:list>
643     </xs:simpleType>
644    </xs:union>  
645   </xs:simpleType>
646
647  <xs:complexType name="element" abstract="true">
648   <xs:annotation>
649    <xs:documentation>
650    The element element can be used either
651    at the top level to define an element-type binding globally,
652    or within a content model to either reference a globally-defined
653    element or type or declare an element-type binding locally.
654    The ref form is not allowed at the top level.</xs:documentation>
655   </xs:annotation>
656
657   <xs:complexContent>
658    <xs:extension base="xs:annotated">
659     <xs:sequence>
660      <xs:choice minOccurs="0">
661       <xs:element name="simpleType" type="xs:localSimpleType"/>
662       <xs:element name="complexType" type="xs:localComplexType"/>
663      </xs:choice>
664      <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
665     </xs:sequence>
666     <xs:attributeGroup ref="xs:defRef"/>
667     <xs:attribute name="type" type="xs:QName"/>
668     <xs:attribute name="substitutionGroup" type="xs:QName"/>
669     <xs:attributeGroup ref="xs:occurs"/>
670     <xs:attribute name="default" type="xs:string"/>
671     <xs:attribute name="fixed" type="xs:string"/>
672     <xs:attribute name="nillable" type="xs:boolean" use="optional" default="false"/>
673     <xs:attribute name="abstract" type="xs:boolean" use="optional" default="false"/>
674     <xs:attribute name="final" type="xs:derivationSet"/>
675     <xs:attribute name="block" type="xs:blockSet"/>
676     <xs:attribute name="form" type="xs:formChoice"/>
677    </xs:extension>
678   </xs:complexContent>
679  </xs:complexType>
680  
681  <xs:complexType name="topLevelElement">
682   <xs:complexContent>
683    <xs:restriction base="xs:element">
684     <xs:sequence>
685      <xs:element ref="xs:annotation" minOccurs="0"/>
686      <xs:choice minOccurs="0">
687       <xs:element name="simpleType" type="xs:localSimpleType"/>
688       <xs:element name="complexType" type="xs:localComplexType"/>
689      </xs:choice>
690      <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
691     </xs:sequence>
692     <xs:attribute name="ref" use="prohibited"/>
693     <xs:attribute name="form" use="prohibited"/>
694     <xs:attribute name="minOccurs" use="prohibited"/>
695     <xs:attribute name="maxOccurs" use="prohibited"/>
696     <xs:attribute name="name" use="required" type="xs:NCName"/>
697     <xs:anyAttribute namespace="##other" processContents="lax"/>
698    </xs:restriction>
699   </xs:complexContent>
700  </xs:complexType>
701  
702  <xs:complexType name="localElement">
703   <xs:complexContent>
704    <xs:restriction base="xs:element">
705     <xs:sequence>
706      <xs:element ref="xs:annotation" minOccurs="0"/>
707      <xs:choice minOccurs="0">
708       <xs:element name="simpleType" type="xs:localSimpleType"/>
709       <xs:element name="complexType" type="xs:localComplexType"/>
710      </xs:choice>
711      <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
712     </xs:sequence>
713     <xs:attribute name="substitutionGroup" use="prohibited"/>
714     <xs:attribute name="final" use="prohibited"/>
715     <xs:attribute name="abstract" use="prohibited"/>
716     <xs:anyAttribute namespace="##other" processContents="lax"/>
717    </xs:restriction>
718   </xs:complexContent>
719  </xs:complexType>
720
721  <xs:element name="element" type="xs:topLevelElement" id="element">
722   <xs:annotation>
723    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-element"/>
724   </xs:annotation>
725  </xs:element>
726
727  <xs:complexType name="group" abstract="true">
728   <xs:annotation>
729    <xs:documentation>
730    group type for explicit groups, named top-level groups and
731    group references</xs:documentation>
732   </xs:annotation>
733   <xs:complexContent>
734    <xs:extension base="xs:annotated">
735     <xs:group ref="xs:particle" minOccurs="0" maxOccurs="unbounded"/>
736     <xs:attributeGroup ref="xs:defRef"/>
737     <xs:attributeGroup ref="xs:occurs"/>
738    </xs:extension>
739   </xs:complexContent>
740  </xs:complexType>
741  
742  <xs:complexType name="realGroup">
743   <xs:complexContent>
744    <xs:restriction base="xs:group">
745     <xs:sequence>
746      <xs:element ref="xs:annotation" minOccurs="0"/>
747      <xs:choice minOccurs="0" maxOccurs="1">
748       <xs:element ref="xs:all"/>
749       <xs:element ref="xs:choice"/>
750       <xs:element ref="xs:sequence"/>
751      </xs:choice>
752     </xs:sequence>
753     <xs:anyAttribute namespace="##other" processContents="lax"/>
754    </xs:restriction>
755   </xs:complexContent>
756  </xs:complexType>
757
758  <xs:complexType name="namedGroup">
759   <xs:complexContent>
760    <xs:restriction base="xs:realGroup">
761     <xs:sequence>
762      <xs:element ref="xs:annotation" minOccurs="0"/>
763      <xs:choice minOccurs="1" maxOccurs="1">
764       <xs:element name="all">
765        <xs:complexType>
766         <xs:complexContent>
767          <xs:restriction base="xs:all">
768           <xs:group ref="xs:allModel"/>
769           <xs:attribute name="minOccurs" use="prohibited"/>
770           <xs:attribute name="maxOccurs" use="prohibited"/>
771           <xs:anyAttribute namespace="##other" processContents="lax"/>
772          </xs:restriction>
773         </xs:complexContent>
774        </xs:complexType>
775       </xs:element>
776       <xs:element name="choice" type="xs:simpleExplicitGroup"/>
777       <xs:element name="sequence" type="xs:simpleExplicitGroup"/>
778      </xs:choice>
779     </xs:sequence>
780     <xs:attribute name="name" use="required" type="xs:NCName"/>
781     <xs:attribute name="ref" use="prohibited"/>
782     <xs:attribute name="minOccurs" use="prohibited"/>
783     <xs:attribute name="maxOccurs" use="prohibited"/>
784     <xs:anyAttribute namespace="##other" processContents="lax"/>
785    </xs:restriction>
786   </xs:complexContent>
787  </xs:complexType>
788
789  <xs:complexType name="groupRef">
790   <xs:complexContent>
791    <xs:restriction base="xs:realGroup">
792     <xs:sequence>
793      <xs:element ref="xs:annotation" minOccurs="0"/>
794     </xs:sequence>
795     <xs:attribute name="ref" use="required" type="xs:QName"/>
796     <xs:attribute name="name" use="prohibited"/>
797     <xs:anyAttribute namespace="##other" processContents="lax"/>
798    </xs:restriction>
799   </xs:complexContent>
800  </xs:complexType>
801
802  <xs:complexType name="explicitGroup">
803   <xs:annotation>
804    <xs:documentation>
805    group type for the three kinds of group</xs:documentation>
806   </xs:annotation>
807   <xs:complexContent>
808    <xs:restriction base="xs:group">
809     <xs:sequence>
810      <xs:element ref="xs:annotation" minOccurs="0"/>
811      <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
812     </xs:sequence>
813     <xs:attribute name="name" type="xs:NCName" use="prohibited"/>
814     <xs:attribute name="ref" type="xs:QName" use="prohibited"/>
815     <xs:anyAttribute namespace="##other" processContents="lax"/>
816    </xs:restriction>
817   </xs:complexContent>
818  </xs:complexType>
819  
820  <xs:complexType name="simpleExplicitGroup">
821   <xs:complexContent>
822    <xs:restriction base="xs:explicitGroup">
823     <xs:sequence>
824      <xs:element ref="xs:annotation" minOccurs="0"/>
825      <xs:group ref="xs:nestedParticle" minOccurs="0" maxOccurs="unbounded"/>
826     </xs:sequence>
827     <xs:attribute name="minOccurs" use="prohibited"/>
828     <xs:attribute name="maxOccurs" use="prohibited"/>
829     <xs:anyAttribute namespace="##other" processContents="lax"/>
830    </xs:restriction>
831   </xs:complexContent>
832  </xs:complexType>
833  
834  <xs:group name="allModel">
835   <xs:sequence>
836       <xs:element ref="xs:annotation" minOccurs="0"/>
837       <xs:choice minOccurs="0" maxOccurs="unbounded">
838        <xs:annotation>
839         <xs:documentation>This choice with min/max is here to
840                           avoid a pblm with the Elt:All/Choice/Seq
841                           Particle derivation constraint</xs:documentation>
842        </xs:annotation>
843        <xs:element name="element" type="xs:narrowMaxMin"/>
844       </xs:choice>
845      </xs:sequence>
846  </xs:group>
847  
848  
849  <xs:complexType name="narrowMaxMin">
850   <xs:annotation>
851    <xs:documentation>restricted max/min</xs:documentation>
852   </xs:annotation>
853   <xs:complexContent>
854    <xs:restriction base="xs:localElement">
855     <xs:sequence>
856      <xs:element ref="xs:annotation" minOccurs="0"/>
857      <xs:choice minOccurs="0">
858       <xs:element name="simpleType" type="xs:localSimpleType"/>
859       <xs:element name="complexType" type="xs:localComplexType"/>
860      </xs:choice>
861      <xs:group ref="xs:identityConstraint" minOccurs="0" maxOccurs="unbounded"/>
862     </xs:sequence>
863     <xs:attribute name="minOccurs" use="optional" default="1">
864      <xs:simpleType>
865       <xs:restriction base="xs:nonNegativeInteger">
866        <xs:enumeration value="0"/>
867        <xs:enumeration value="1"/>
868       </xs:restriction>
869      </xs:simpleType>
870     </xs:attribute>
871     <xs:attribute name="maxOccurs" use="optional" default="1">
872      <xs:simpleType>
873       <xs:restriction base="xs:allNNI">
874        <xs:enumeration value="0"/>
875        <xs:enumeration value="1"/>
876       </xs:restriction>
877      </xs:simpleType>
878     </xs:attribute>
879     <xs:anyAttribute namespace="##other" processContents="lax"/>
880    </xs:restriction>
881   </xs:complexContent>
882  </xs:complexType>
883
884   <xs:complexType name="all">
885    <xs:annotation>
886     <xs:documentation>
887    Only elements allowed inside</xs:documentation>
888    </xs:annotation>
889    <xs:complexContent>
890     <xs:restriction base="xs:explicitGroup">
891      <xs:group ref="xs:allModel"/>
892      <xs:attribute name="minOccurs" use="optional" default="1">
893       <xs:simpleType>
894        <xs:restriction base="xs:nonNegativeInteger">
895         <xs:enumeration value="0"/>
896         <xs:enumeration value="1"/>
897        </xs:restriction>
898       </xs:simpleType>
899      </xs:attribute>
900      <xs:attribute name="maxOccurs" use="optional" default="1">
901       <xs:simpleType>
902        <xs:restriction base="xs:allNNI">
903         <xs:enumeration value="1"/>
904        </xs:restriction>
905       </xs:simpleType>
906      </xs:attribute>
907      <xs:anyAttribute namespace="##other" processContents="lax"/>
908     </xs:restriction>
909    </xs:complexContent>
910   </xs:complexType>
911
912  <xs:element name="all" id="all" type="xs:all">
913   <xs:annotation>
914    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-all"/>
915   </xs:annotation>
916  </xs:element>
917
918  <xs:element name="choice" type="xs:explicitGroup" id="choice">
919   <xs:annotation>
920    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-choice"/>
921   </xs:annotation>
922  </xs:element>
923
924  <xs:element name="sequence" type="xs:explicitGroup" id="sequence">
925   <xs:annotation>
926    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-sequence"/>
927   </xs:annotation>
928  </xs:element>
929
930  <xs:element name="group" type="xs:namedGroup" id="group">
931   <xs:annotation>
932    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-group"/>
933   </xs:annotation>
934  </xs:element>
935
936  <xs:complexType name="wildcard">
937   <xs:complexContent>
938    <xs:extension base="xs:annotated">
939     <xs:attribute name="namespace" type="xs:namespaceList" use="optional" default="##any"/>
940     <xs:attribute name="processContents" use="optional" default="strict">
941      <xs:simpleType>
942       <xs:restriction base="xs:NMTOKEN">
943        <xs:enumeration value="skip"/>
944        <xs:enumeration value="lax"/>
945        <xs:enumeration value="strict"/>
946       </xs:restriction>
947      </xs:simpleType>
948     </xs:attribute>
949    </xs:extension>
950   </xs:complexContent>
951  </xs:complexType>
952
953  <xs:element name="any" id="any">
954   <xs:annotation>
955    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-any"/>
956   </xs:annotation>
957   <xs:complexType>
958    <xs:complexContent>
959     <xs:extension base="xs:wildcard">
960      <xs:attributeGroup ref="xs:occurs"/>
961     </xs:extension>
962    </xs:complexContent>
963   </xs:complexType>
964  </xs:element>
965
966   <xs:annotation>
967    <xs:documentation>
968    simple type for the value of the 'namespace' attr of
969    'any' and 'anyAttribute'</xs:documentation>
970   </xs:annotation>
971   <xs:annotation>
972    <xs:documentation>
973    Value is
974               ##any      - - any non-conflicting WFXML/attribute at all
975
976               ##other    - - any non-conflicting WFXML/attribute from
977                               namespace other than targetNS
978
979               ##local    - - any unqualified non-conflicting WFXML/attribute 
980
981               one or     - - any non-conflicting WFXML/attribute from
982               more URI        the listed namespaces
983               references
984               (space separated)
985
986     ##targetNamespace or ##local may appear in the above list, to
987         refer to the targetNamespace of the enclosing
988         schema or an absent targetNamespace respectively</xs:documentation>
989   </xs:annotation>
990
991  <xs:simpleType name="namespaceList">
992   <xs:annotation>
993    <xs:documentation>
994    A utility type, not for public use</xs:documentation>
995   </xs:annotation>
996   <xs:union>
997    <xs:simpleType>
998     <xs:restriction base="xs:token">
999      <xs:enumeration value="##any"/>
1000      <xs:enumeration value="##other"/>
1001     </xs:restriction>
1002    </xs:simpleType>
1003    <xs:simpleType>
1004     <xs:list>
1005      <xs:simpleType>
1006       <xs:union memberTypes="xs:anyURI">
1007        <xs:simpleType>
1008         <xs:restriction base="xs:token">
1009          <xs:enumeration value="##targetNamespace"/>
1010          <xs:enumeration value="##local"/>
1011         </xs:restriction>
1012        </xs:simpleType>
1013       </xs:union>
1014      </xs:simpleType>
1015     </xs:list>
1016    </xs:simpleType>
1017   </xs:union>
1018  </xs:simpleType>
1019
1020  <xs:element name="attribute" type="xs:topLevelAttribute" id="attribute">
1021   <xs:annotation>
1022    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attribute"/>
1023   </xs:annotation>
1024  </xs:element>
1025
1026  <xs:complexType name="attributeGroup" abstract="true">
1027   <xs:complexContent>
1028    <xs:extension base="xs:annotated">
1029     <xs:group ref="xs:attrDecls"/>
1030     <xs:attributeGroup ref="xs:defRef"/>
1031    </xs:extension>
1032   </xs:complexContent>
1033  </xs:complexType>
1034  
1035  <xs:complexType name="namedAttributeGroup">
1036   <xs:complexContent>
1037    <xs:restriction base="xs:attributeGroup">
1038     <xs:sequence>
1039      <xs:element ref="xs:annotation" minOccurs="0"/>
1040      <xs:group ref="xs:attrDecls"/>
1041     </xs:sequence>
1042     <xs:attribute name="name" use="required" type="xs:NCName"/>
1043     <xs:attribute name="ref" use="prohibited"/>
1044     <xs:anyAttribute namespace="##other" processContents="lax"/>
1045    </xs:restriction>
1046   </xs:complexContent>
1047  </xs:complexType>
1048
1049  <xs:complexType name="attributeGroupRef">
1050   <xs:complexContent>
1051    <xs:restriction base="xs:attributeGroup">
1052     <xs:sequence>
1053      <xs:element ref="xs:annotation" minOccurs="0"/>
1054     </xs:sequence>
1055     <xs:attribute name="ref" use="required" type="xs:QName"/>
1056     <xs:attribute name="name" use="prohibited"/>
1057     <xs:anyAttribute namespace="##other" processContents="lax"/>
1058    </xs:restriction>
1059   </xs:complexContent>
1060  </xs:complexType>
1061
1062  <xs:element name="attributeGroup" type="xs:namedAttributeGroup" id="attributeGroup">
1063   <xs:annotation>
1064    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-attributeGroup"/>
1065   </xs:annotation>
1066  </xs:element>
1067
1068  <xs:element name="include" id="include">
1069   <xs:annotation>
1070    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-include"/>
1071   </xs:annotation>
1072   <xs:complexType>
1073    <xs:complexContent>
1074     <xs:extension base="xs:annotated">
1075      <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
1076     </xs:extension>
1077    </xs:complexContent>
1078   </xs:complexType>
1079  </xs:element>
1080
1081  <xs:element name="redefine" id="redefine">
1082   <xs:annotation>
1083    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-redefine"/>
1084   </xs:annotation>
1085   <xs:complexType>
1086    <xs:complexContent>
1087     <xs:extension base="xs:openAttrs">
1088      <xs:choice minOccurs="0" maxOccurs="unbounded">
1089       <xs:element ref="xs:annotation"/>
1090       <xs:group ref="xs:redefinable"/>
1091      </xs:choice>
1092      <xs:attribute name="schemaLocation" type="xs:anyURI" use="required"/>
1093      <xs:attribute name="id" type="xs:ID"/>
1094     </xs:extension>
1095    </xs:complexContent>
1096   </xs:complexType>
1097  </xs:element>
1098
1099  <xs:element name="import" id="import">
1100   <xs:annotation>
1101    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-import"/>
1102   </xs:annotation>
1103   <xs:complexType>
1104    <xs:complexContent>
1105     <xs:extension base="xs:annotated">
1106      <xs:attribute name="namespace" type="xs:anyURI"/>
1107      <xs:attribute name="schemaLocation" type="xs:anyURI"/>
1108     </xs:extension>
1109    </xs:complexContent>
1110   </xs:complexType>
1111  </xs:element>
1112
1113  <xs:element name="selector" id="selector">
1114   <xs:annotation>
1115    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-selector"/>
1116   </xs:annotation>
1117   <xs:complexType>
1118   <xs:complexContent>
1119    <xs:extension base="xs:annotated">
1120      <xs:attribute name="xpath" use="required">
1121       <xs:simpleType>
1122        <xs:annotation>
1123         <xs:documentation>A subset of XPath expressions for use
1124 in selectors</xs:documentation>
1125         <xs:documentation>A utility type, not for public
1126 use</xs:documentation>
1127        </xs:annotation>
1128        <xs:restriction base="xs:token">
1129         <xs:annotation>
1130          <xs:documentation>The following pattern is intended to allow XPath
1131                            expressions per the following EBNF:
1132           Selector    ::=    Path ( '|' Path )*  
1133           Path    ::=    ('.//')? Step ( '/' Step )*  
1134           Step    ::=    '.' | NameTest  
1135           NameTest    ::=    QName | '*' | NCName ':' '*'  
1136                            child:: is also allowed
1137          </xs:documentation>
1138         </xs:annotation>
1139         <xs:pattern value="(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*(\|(\.//)?(((child::)?((\i\c*:)?(\i\c*|\*)))|\.)(/(((child::)?((\i\c*:)?(\i\c*|\*)))|\.))*)*">
1140         </xs:pattern>
1141        </xs:restriction>
1142       </xs:simpleType>
1143      </xs:attribute>
1144    </xs:extension>
1145   </xs:complexContent>
1146  </xs:complexType>
1147  </xs:element>
1148
1149  <xs:element name="field" id="field">
1150   <xs:annotation>
1151    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-field"/>
1152   </xs:annotation>
1153   <xs:complexType>
1154   <xs:complexContent>
1155    <xs:extension base="xs:annotated">
1156      <xs:attribute name="xpath" use="required">
1157       <xs:simpleType>
1158        <xs:annotation>
1159         <xs:documentation>A subset of XPath expressions for use
1160 in fields</xs:documentation>
1161         <xs:documentation>A utility type, not for public
1162 use</xs:documentation>
1163        </xs:annotation>
1164        <xs:restriction base="xs:token">
1165         <xs:annotation>
1166          <xs:documentation>The following pattern is intended to allow XPath
1167                            expressions per the same EBNF as for selector,
1168                            with the following change:
1169           Path    ::=    ('.//')? ( Step '/' )* ( Step | '@' NameTest ) 
1170          </xs:documentation>
1171         </xs:annotation>
1172         <xs:pattern value="(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*))))(\|(\.//)?((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)/)*((((child::)?((\i\c*:)?(\i\c*|\*)))|\.)|((attribute::|@)((\i\c*:)?(\i\c*|\*)))))*">
1173         </xs:pattern>
1174        </xs:restriction>
1175       </xs:simpleType>
1176      </xs:attribute>
1177    </xs:extension>
1178   </xs:complexContent>
1179  </xs:complexType>
1180  </xs:element>
1181
1182  <xs:complexType name="keybase">
1183   <xs:complexContent>
1184    <xs:extension base="xs:annotated">
1185     <xs:sequence>
1186      <xs:element ref="xs:selector"/>
1187      <xs:element ref="xs:field" minOccurs="1" maxOccurs="unbounded"/>
1188     </xs:sequence>
1189     <xs:attribute name="name" type="xs:NCName" use="required"/>
1190    </xs:extension>
1191   </xs:complexContent>
1192  </xs:complexType>
1193
1194  <xs:group name="identityConstraint">
1195   <xs:annotation>
1196    <xs:documentation>The three kinds of identity constraints, all with
1197                      type of or derived from 'keybase'.
1198    </xs:documentation>
1199   </xs:annotation>
1200   <xs:choice>
1201    <xs:element ref="xs:unique"/>
1202    <xs:element ref="xs:key"/>
1203    <xs:element ref="xs:keyref"/>
1204   </xs:choice>
1205  </xs:group>
1206
1207  <xs:element name="unique" type="xs:keybase" id="unique">
1208   <xs:annotation>
1209    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-unique"/>
1210   </xs:annotation>
1211  </xs:element>
1212  <xs:element name="key" type="xs:keybase" id="key">
1213   <xs:annotation>
1214    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-key"/>
1215   </xs:annotation>
1216  </xs:element>
1217  <xs:element name="keyref" id="keyref">
1218   <xs:annotation>
1219    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-keyref"/>
1220   </xs:annotation>
1221   <xs:complexType>
1222    <xs:complexContent>
1223     <xs:extension base="xs:keybase">
1224      <xs:attribute name="refer" type="xs:QName" use="required"/>
1225     </xs:extension>
1226    </xs:complexContent>
1227   </xs:complexType>
1228  </xs:element>
1229
1230  <xs:element name="notation" id="notation">
1231   <xs:annotation>
1232    <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-notation"/>
1233   </xs:annotation>
1234   <xs:complexType>
1235    <xs:complexContent>
1236     <xs:extension base="xs:annotated">
1237      <xs:attribute name="name" type="xs:NCName" use="required"/>
1238      <xs:attribute name="public" type="xs:public"/>
1239      <xs:attribute name="system" type="xs:anyURI"/>
1240     </xs:extension>
1241    </xs:complexContent>
1242   </xs:complexType>
1243  </xs:element>
1244
1245  <xs:simpleType name="public">
1246   <xs:annotation>
1247    <xs:documentation>
1248    A utility type, not for public use</xs:documentation>
1249    <xs:documentation>
1250    A public identifier, per ISO 8879</xs:documentation>
1251   </xs:annotation>
1252   <xs:restriction base="xs:token"/>
1253  </xs:simpleType>
1254
1255  <xs:element name="appinfo" id="appinfo">
1256    <xs:annotation>
1257      <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-appinfo"/>
1258    </xs:annotation>
1259    <xs:complexType mixed="true">
1260     <xs:sequence minOccurs="0" maxOccurs="unbounded">
1261      <xs:any processContents="lax"/>
1262     </xs:sequence>
1263     <xs:attribute name="source" type="xs:anyURI"/>
1264     <xs:anyAttribute namespace="##other" processContents="lax"/>
1265    </xs:complexType>
1266  </xs:element>
1267
1268  <xs:element name="documentation" id="documentation">
1269    <xs:annotation>
1270      <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-documentation"/>
1271    </xs:annotation>
1272    <xs:complexType mixed="true">
1273     <xs:sequence minOccurs="0" maxOccurs="unbounded">
1274      <xs:any processContents="lax"/>
1275     </xs:sequence>
1276     <xs:attribute name="source" type="xs:anyURI"/>
1277     <xs:attribute ref="xml:lang"/>
1278     <xs:anyAttribute namespace="##other" processContents="lax"/>
1279    </xs:complexType>
1280  </xs:element>
1281
1282  <xs:element name="annotation" id="annotation">
1283    <xs:annotation>
1284      <xs:documentation source="http://www.w3.org/TR/xmlschema-1/#element-annotation"/>
1285    </xs:annotation>
1286    <xs:complexType>
1287     <xs:complexContent>
1288      <xs:extension base="xs:openAttrs">
1289       <xs:choice minOccurs="0" maxOccurs="unbounded">
1290        <xs:element ref="xs:appinfo"/>
1291        <xs:element ref="xs:documentation"/>
1292       </xs:choice>
1293       <xs:attribute name="id" type="xs:ID"/>
1294      </xs:extension>
1295     </xs:complexContent>
1296    </xs:complexType>
1297  </xs:element>
1298
1299  <xs:annotation>
1300   <xs:documentation>
1301    notations for use within XML Schema schemas</xs:documentation>
1302  </xs:annotation>
1303
1304  <xs:notation name="XMLSchemaStructures" public="structures" system="http://www.w3.org/2000/08/XMLSchema.xsd"/>
1305  <xs:notation name="XML" public="REC-xml-19980210" system="http://www.w3.org/TR/1998/REC-xml-19980210"/>
1306   
1307  <xs:complexType name="anyType" mixed="true">
1308   <xs:annotation>
1309    <xs:documentation>
1310    Not the real urType, but as close an approximation as we can
1311    get in the XML representation</xs:documentation>
1312   </xs:annotation>
1313   <xs:sequence>
1314    <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
1315   </xs:sequence>
1316   <xs:anyAttribute processContents="lax"/>
1317  </xs:complexType>
1318
1319   <xs:annotation>
1320     <xs:documentation>
1321       First the built-in primitive datatypes.  These definitions are for
1322       information only, the real built-in definitions are magic.
1323     </xs:documentation>
1324
1325     <xs:documentation>
1326       For each built-in datatype in this schema (both primitive and
1327       derived) can be uniquely addressed via a URI constructed
1328       as follows:
1329         1) the base URI is the URI of the XML Schema namespace
1330         2) the fragment identifier is the name of the datatype
1331
1332       For example, to address the int datatype, the URI is:
1333
1334         http://www.w3.org/2001/XMLSchema#int
1335
1336       Additionally, each facet definition element can be uniquely
1337       addressed via a URI constructed as follows:
1338         1) the base URI is the URI of the XML Schema namespace
1339         2) the fragment identifier is the name of the facet
1340
1341       For example, to address the maxInclusive facet, the URI is:
1342
1343         http://www.w3.org/2001/XMLSchema#maxInclusive
1344
1345       Additionally, each facet usage in a built-in datatype definition
1346       can be uniquely addressed via a URI constructed as follows:
1347         1) the base URI is the URI of the XML Schema namespace
1348         2) the fragment identifier is the name of the datatype, followed
1349            by a period (".") followed by the name of the facet
1350
1351       For example, to address the usage of the maxInclusive facet in
1352       the definition of int, the URI is:
1353
1354         http://www.w3.org/2001/XMLSchema#int.maxInclusive
1355
1356     </xs:documentation>
1357   </xs:annotation>
1358
1359   <xs:simpleType name="string" id="string">
1360     <xs:annotation>
1361       <xs:appinfo>
1362         <hfp:hasFacet name="length"/>
1363         <hfp:hasFacet name="minLength"/>
1364         <hfp:hasFacet name="maxLength"/>
1365         <hfp:hasFacet name="pattern"/>
1366         <hfp:hasFacet name="enumeration"/>
1367         <hfp:hasFacet name="whiteSpace"/>
1368         <hfp:hasProperty name="ordered" value="false"/>
1369         <hfp:hasProperty name="bounded" value="false"/>
1370         <hfp:hasProperty name="cardinality" value="countably infinite"/>
1371         <hfp:hasProperty name="numeric" value="false"/>
1372       </xs:appinfo>
1373       <xs:documentation
1374                 source="http://www.w3.org/TR/xmlschema-2/#string"/>
1375     </xs:annotation>
1376     <xs:restriction base="xs:anySimpleType">
1377       <xs:whiteSpace value="preserve" id="string.preserve"/>
1378     </xs:restriction>
1379   </xs:simpleType>
1380
1381   <xs:simpleType name="boolean" id="boolean">
1382     <xs:annotation>
1383       <xs:appinfo>
1384         <hfp:hasFacet name="pattern"/>
1385         <hfp:hasFacet name="whiteSpace"/>
1386         <hfp:hasProperty name="ordered" value="false"/>
1387         <hfp:hasProperty name="bounded" value="false"/>
1388         <hfp:hasProperty name="cardinality" value="finite"/>
1389         <hfp:hasProperty name="numeric" value="false"/>
1390       </xs:appinfo>
1391       <xs:documentation
1392         source="http://www.w3.org/TR/xmlschema-2/#boolean"/>
1393     </xs:annotation>
1394     <xs:restriction base="xs:anySimpleType">
1395       <xs:whiteSpace value="collapse" fixed="true"
1396         id="boolean.whiteSpace"/>
1397     </xs:restriction>
1398   </xs:simpleType>
1399
1400   <xs:simpleType name="float" id="float">
1401     <xs:annotation>
1402       <xs:appinfo>
1403         <hfp:hasFacet name="pattern"/>
1404         <hfp:hasFacet name="enumeration"/>
1405         <hfp:hasFacet name="whiteSpace"/>
1406         <hfp:hasFacet name="maxInclusive"/>
1407         <hfp:hasFacet name="maxExclusive"/>
1408         <hfp:hasFacet name="minInclusive"/>
1409         <hfp:hasFacet name="minExclusive"/>
1410         <hfp:hasProperty name="ordered" value="total"/>
1411         <hfp:hasProperty name="bounded" value="true"/>
1412         <hfp:hasProperty name="cardinality" value="finite"/>
1413         <hfp:hasProperty name="numeric" value="true"/>
1414       </xs:appinfo>
1415       <xs:documentation
1416         source="http://www.w3.org/TR/xmlschema-2/#float"/>
1417     </xs:annotation>
1418     <xs:restriction base="xs:anySimpleType">
1419       <xs:whiteSpace value="collapse" fixed="true"
1420         id="float.whiteSpace"/>
1421     </xs:restriction>
1422   </xs:simpleType>
1423
1424   <xs:simpleType name="double" id="double">
1425     <xs:annotation>
1426       <xs:appinfo>
1427         <hfp:hasFacet name="pattern"/>
1428         <hfp:hasFacet name="enumeration"/>
1429         <hfp:hasFacet name="whiteSpace"/>
1430         <hfp:hasFacet name="maxInclusive"/>
1431         <hfp:hasFacet name="maxExclusive"/>
1432         <hfp:hasFacet name="minInclusive"/>
1433         <hfp:hasFacet name="minExclusive"/>
1434         <hfp:hasProperty name="ordered" value="total"/>
1435         <hfp:hasProperty name="bounded" value="true"/>
1436         <hfp:hasProperty name="cardinality" value="finite"/>
1437         <hfp:hasProperty name="numeric" value="true"/>
1438       </xs:appinfo>
1439       <xs:documentation
1440         source="http://www.w3.org/TR/xmlschema-2/#double"/>
1441     </xs:annotation>
1442     <xs:restriction base="xs:anySimpleType">
1443       <xs:whiteSpace value="collapse"  fixed="true"
1444         id="double.whiteSpace"/>
1445     </xs:restriction>
1446   </xs:simpleType>
1447
1448   <xs:simpleType name="decimal" id="decimal">
1449     <xs:annotation>
1450       <xs:appinfo>
1451         <hfp:hasFacet name="totalDigits"/>
1452         <hfp:hasFacet name="fractionDigits"/>
1453         <hfp:hasFacet name="pattern"/>
1454         <hfp:hasFacet name="whiteSpace"/>
1455         <hfp:hasFacet name="enumeration"/>
1456         <hfp:hasFacet name="maxInclusive"/>
1457         <hfp:hasFacet name="maxExclusive"/>
1458         <hfp:hasFacet name="minInclusive"/>
1459         <hfp:hasFacet name="minExclusive"/>
1460         <hfp:hasProperty name="ordered" value="total"/>
1461         <hfp:hasProperty name="bounded" value="false"/>
1462         <hfp:hasProperty name="cardinality"
1463                 value="countably infinite"/>
1464         <hfp:hasProperty name="numeric" value="true"/>
1465       </xs:appinfo>
1466       <xs:documentation
1467         source="http://www.w3.org/TR/xmlschema-2/#decimal"/>
1468     </xs:annotation>
1469     <xs:restriction base="xs:anySimpleType">
1470       <xs:whiteSpace value="collapse"  fixed="true"
1471         id="decimal.whiteSpace"/>
1472     </xs:restriction>
1473    </xs:simpleType>
1474
1475    <xs:simpleType name="duration" id="duration">
1476     <xs:annotation>
1477       <xs:appinfo>
1478         <hfp:hasFacet name="pattern"/>
1479         <hfp:hasFacet name="enumeration"/>
1480         <hfp:hasFacet name="whiteSpace"/>
1481         <hfp:hasFacet name="maxInclusive"/>
1482         <hfp:hasFacet name="maxExclusive"/>
1483         <hfp:hasFacet name="minInclusive"/>
1484         <hfp:hasFacet name="minExclusive"/>
1485         <hfp:hasProperty name="ordered" value="partial"/>
1486         <hfp:hasProperty name="bounded" value="false"/>
1487         <hfp:hasProperty name="cardinality"
1488                 value="countably infinite"/>
1489         <hfp:hasProperty name="numeric" value="false"/>
1490       </xs:appinfo>
1491       <xs:documentation
1492         source="http://www.w3.org/TR/xmlschema-2/#duration"/>
1493     </xs:annotation>
1494     <xs:restriction base="xs:anySimpleType">
1495       <xs:whiteSpace value="collapse"  fixed="true"
1496         id="duration.whiteSpace"/>
1497     </xs:restriction>
1498    </xs:simpleType>
1499
1500  <xs:simpleType name="dateTime" id="dateTime">
1501     <xs:annotation>
1502     <xs:appinfo>
1503         <hfp:hasFacet name="pattern"/>
1504         <hfp:hasFacet name="enumeration"/>
1505         <hfp:hasFacet name="whiteSpace"/>
1506         <hfp:hasFacet name="maxInclusive"/>
1507         <hfp:hasFacet name="maxExclusive"/>
1508         <hfp:hasFacet name="minInclusive"/>
1509         <hfp:hasFacet name="minExclusive"/>
1510         <hfp:hasProperty name="ordered" value="partial"/>
1511         <hfp:hasProperty name="bounded" value="false"/>
1512         <hfp:hasProperty name="cardinality"
1513                 value="countably infinite"/>
1514         <hfp:hasProperty name="numeric" value="false"/>
1515       </xs:appinfo>
1516       <xs:documentation
1517         source="http://www.w3.org/TR/xmlschema-2/#dateTime"/>
1518     </xs:annotation>
1519     <xs:restriction base="xs:anySimpleType">
1520       <xs:whiteSpace value="collapse"  fixed="true"
1521         id="dateTime.whiteSpace"/>
1522     </xs:restriction>
1523   </xs:simpleType>
1524
1525   <xs:simpleType name="time" id="time">
1526     <xs:annotation>
1527     <xs:appinfo>
1528         <hfp:hasFacet name="pattern"/>
1529         <hfp:hasFacet name="enumeration"/>
1530         <hfp:hasFacet name="whiteSpace"/>
1531         <hfp:hasFacet name="maxInclusive"/>
1532         <hfp:hasFacet name="maxExclusive"/>
1533         <hfp:hasFacet name="minInclusive"/>
1534         <hfp:hasFacet name="minExclusive"/>
1535         <hfp:hasProperty name="ordered" value="partial"/>
1536         <hfp:hasProperty name="bounded" value="false"/>
1537         <hfp:hasProperty name="cardinality"
1538                 value="countably infinite"/>
1539         <hfp:hasProperty name="numeric" value="false"/>
1540       </xs:appinfo>
1541       <xs:documentation
1542         source="http://www.w3.org/TR/xmlschema-2/#time"/>
1543     </xs:annotation>
1544     <xs:restriction base="xs:anySimpleType">
1545       <xs:whiteSpace value="collapse"  fixed="true"
1546         id="time.whiteSpace"/>
1547     </xs:restriction>
1548   </xs:simpleType>
1549
1550   <xs:simpleType name="date" id="date">
1551    <xs:annotation>
1552     <xs:appinfo>
1553         <hfp:hasFacet name="pattern"/>
1554         <hfp:hasFacet name="enumeration"/>
1555         <hfp:hasFacet name="whiteSpace"/>
1556         <hfp:hasFacet name="maxInclusive"/>
1557         <hfp:hasFacet name="maxExclusive"/>
1558         <hfp:hasFacet name="minInclusive"/>
1559         <hfp:hasFacet name="minExclusive"/>
1560         <hfp:hasProperty name="ordered" value="partial"/>
1561         <hfp:hasProperty name="bounded" value="false"/>
1562         <hfp:hasProperty name="cardinality"
1563                 value="countably infinite"/>
1564         <hfp:hasProperty name="numeric" value="false"/>
1565       </xs:appinfo>
1566       <xs:documentation
1567         source="http://www.w3.org/TR/xmlschema-2/#date"/>
1568     </xs:annotation>
1569     <xs:restriction base="xs:anySimpleType">
1570       <xs:whiteSpace value="collapse"  fixed="true"
1571         id="date.whiteSpace"/>
1572     </xs:restriction>
1573   </xs:simpleType>
1574
1575   <xs:simpleType name="gYearMonth" id="gYearMonth">
1576    <xs:annotation>
1577     <xs:appinfo>
1578         <hfp:hasFacet name="pattern"/>
1579         <hfp:hasFacet name="enumeration"/>
1580         <hfp:hasFacet name="whiteSpace"/>
1581         <hfp:hasFacet name="maxInclusive"/>
1582         <hfp:hasFacet name="maxExclusive"/>
1583         <hfp:hasFacet name="minInclusive"/>
1584         <hfp:hasFacet name="minExclusive"/>
1585         <hfp:hasProperty name="ordered" value="partial"/>
1586         <hfp:hasProperty name="bounded" value="false"/>
1587         <hfp:hasProperty name="cardinality"
1588                 value="countably infinite"/>
1589         <hfp:hasProperty name="numeric" value="false"/>
1590       </xs:appinfo>
1591       <xs:documentation
1592         source="http://www.w3.org/TR/xmlschema-2/#gYearMonth"/>
1593     </xs:annotation>
1594     <xs:restriction base="xs:anySimpleType">
1595       <xs:whiteSpace value="collapse"  fixed="true"
1596         id="gYearMonth.whiteSpace"/>
1597     </xs:restriction>
1598   </xs:simpleType>
1599
1600   <xs:simpleType name="gYear" id="gYear">
1601     <xs:annotation>
1602     <xs:appinfo>
1603         <hfp:hasFacet name="pattern"/>
1604         <hfp:hasFacet name="enumeration"/>
1605         <hfp:hasFacet name="whiteSpace"/>
1606         <hfp:hasFacet name="maxInclusive"/>
1607         <hfp:hasFacet name="maxExclusive"/>
1608         <hfp:hasFacet name="minInclusive"/>
1609         <hfp:hasFacet name="minExclusive"/>
1610         <hfp:hasProperty name="ordered" value="partial"/>
1611         <hfp:hasProperty name="bounded" value="false"/>
1612         <hfp:hasProperty name="cardinality"
1613                 value="countably infinite"/>
1614         <hfp:hasProperty name="numeric" value="false"/>
1615       </xs:appinfo>
1616       <xs:documentation
1617         source="http://www.w3.org/TR/xmlschema-2/#gYear"/>
1618     </xs:annotation>
1619     <xs:restriction base="xs:anySimpleType">
1620       <xs:whiteSpace value="collapse"  fixed="true"
1621         id="gYear.whiteSpace"/>
1622     </xs:restriction>
1623   </xs:simpleType>
1624
1625  <xs:simpleType name="gMonthDay" id="gMonthDay">
1626     <xs:annotation>
1627       <xs:appinfo>
1628         <hfp:hasFacet name="pattern"/>
1629         <hfp:hasFacet name="enumeration"/>
1630         <hfp:hasFacet name="whiteSpace"/>
1631         <hfp:hasFacet name="maxInclusive"/>
1632         <hfp:hasFacet name="maxExclusive"/>
1633         <hfp:hasFacet name="minInclusive"/>
1634         <hfp:hasFacet name="minExclusive"/>
1635         <hfp:hasProperty name="ordered" value="partial"/>
1636         <hfp:hasProperty name="bounded" value="false"/>
1637         <hfp:hasProperty name="cardinality"
1638                 value="countably infinite"/>
1639         <hfp:hasProperty name="numeric" value="false"/>
1640       </xs:appinfo>
1641        <xs:documentation
1642         source="http://www.w3.org/TR/xmlschema-2/#gMonthDay"/>
1643     </xs:annotation>
1644     <xs:restriction base="xs:anySimpleType">
1645          <xs:whiteSpace value="collapse" fixed="true"
1646                 id="gMonthDay.whiteSpace"/>
1647     </xs:restriction>
1648   </xs:simpleType>
1649
1650   <xs:simpleType name="gDay" id="gDay">
1651     <xs:annotation>
1652   <xs:appinfo>
1653         <hfp:hasFacet name="pattern"/>
1654         <hfp:hasFacet name="enumeration"/>
1655         <hfp:hasFacet name="whiteSpace"/>
1656         <hfp:hasFacet name="maxInclusive"/>
1657         <hfp:hasFacet name="maxExclusive"/>
1658         <hfp:hasFacet name="minInclusive"/>
1659         <hfp:hasFacet name="minExclusive"/>
1660         <hfp:hasProperty name="ordered" value="partial"/>
1661         <hfp:hasProperty name="bounded" value="false"/>
1662         <hfp:hasProperty name="cardinality"
1663                 value="countably infinite"/>
1664         <hfp:hasProperty name="numeric" value="false"/>
1665       </xs:appinfo>
1666       <xs:documentation
1667         source="http://www.w3.org/TR/xmlschema-2/#gDay"/>
1668     </xs:annotation>
1669     <xs:restriction base="xs:anySimpleType">
1670          <xs:whiteSpace value="collapse"  fixed="true"
1671                 id="gDay.whiteSpace"/>
1672     </xs:restriction>
1673   </xs:simpleType>
1674
1675  <xs:simpleType name="gMonth" id="gMonth">
1676     <xs:annotation>
1677   <xs:appinfo>
1678         <hfp:hasFacet name="pattern"/>
1679         <hfp:hasFacet name="enumeration"/>
1680         <hfp:hasFacet name="whiteSpace"/>
1681         <hfp:hasFacet name="maxInclusive"/>
1682         <hfp:hasFacet name="maxExclusive"/>
1683         <hfp:hasFacet name="minInclusive"/>
1684         <hfp:hasFacet name="minExclusive"/>
1685         <hfp:hasProperty name="ordered" value="partial"/>
1686         <hfp:hasProperty name="bounded" value="false"/>
1687         <hfp:hasProperty name="cardinality"
1688                 value="countably infinite"/>
1689         <hfp:hasProperty name="numeric" value="false"/>
1690       </xs:appinfo>
1691       <xs:documentation
1692         source="http://www.w3.org/TR/xmlschema-2/#gMonth"/>
1693     </xs:annotation>
1694     <xs:restriction base="xs:anySimpleType">
1695          <xs:whiteSpace value="collapse"  fixed="true"
1696                 id="gMonth.whiteSpace"/>
1697     </xs:restriction>
1698   </xs:simpleType>
1699
1700    <xs:simpleType name="hexBinary" id="hexBinary">
1701     <xs:annotation>
1702       <xs:appinfo>
1703         <hfp:hasFacet name="length"/>
1704         <hfp:hasFacet name="minLength"/>
1705         <hfp:hasFacet name="maxLength"/>
1706         <hfp:hasFacet name="pattern"/>
1707         <hfp:hasFacet name="enumeration"/>
1708         <hfp:hasFacet name="whiteSpace"/>
1709         <hfp:hasProperty name="ordered" value="false"/>
1710         <hfp:hasProperty name="bounded" value="false"/>
1711         <hfp:hasProperty name="cardinality"
1712                 value="countably infinite"/>
1713         <hfp:hasProperty name="numeric" value="false"/>
1714       </xs:appinfo>
1715       <xs:documentation
1716         source="http://www.w3.org/TR/xmlschema-2/#binary"/>
1717     </xs:annotation>
1718     <xs:restriction base="xs:anySimpleType">
1719       <xs:whiteSpace value="collapse" fixed="true"
1720         id="hexBinary.whiteSpace"/>
1721     </xs:restriction>
1722    </xs:simpleType>
1723
1724  <xs:simpleType name="base64Binary" id="base64Binary">
1725     <xs:annotation>
1726       <xs:appinfo>
1727         <hfp:hasFacet name="length"/>
1728         <hfp:hasFacet name="minLength"/>
1729         <hfp:hasFacet name="maxLength"/>
1730         <hfp:hasFacet name="pattern"/>
1731         <hfp:hasFacet name="enumeration"/>
1732         <hfp:hasFacet name="whiteSpace"/>
1733         <hfp:hasProperty name="ordered" value="false"/>
1734         <hfp:hasProperty name="bounded" value="false"/>
1735         <hfp:hasProperty name="cardinality"
1736                 value="countably infinite"/>
1737         <hfp:hasProperty name="numeric" value="false"/>
1738       </xs:appinfo>
1739       <xs:documentation
1740                 source="http://www.w3.org/TR/xmlschema-2/#base64Binary"/>
1741     </xs:annotation>
1742     <xs:restriction base="xs:anySimpleType">
1743       <xs:whiteSpace value="collapse" fixed="true"
1744         id="base64Binary.whiteSpace"/>
1745     </xs:restriction>
1746    </xs:simpleType>
1747
1748    <xs:simpleType name="anyURI" id="anyURI">
1749     <xs:annotation>
1750       <xs:appinfo>
1751         <hfp:hasFacet name="length"/>
1752         <hfp:hasFacet name="minLength"/>
1753         <hfp:hasFacet name="maxLength"/>
1754         <hfp:hasFacet name="pattern"/>
1755         <hfp:hasFacet name="enumeration"/>
1756         <hfp:hasFacet name="whiteSpace"/>
1757         <hfp:hasProperty name="ordered" value="false"/>
1758         <hfp:hasProperty name="bounded" value="false"/>
1759         <hfp:hasProperty name="cardinality"
1760                 value="countably infinite"/>
1761         <hfp:hasProperty name="numeric" value="false"/>
1762       </xs:appinfo>
1763       <xs:documentation
1764         source="http://www.w3.org/TR/xmlschema-2/#anyURI"/>
1765     </xs:annotation>
1766     <xs:restriction base="xs:anySimpleType">
1767       <xs:whiteSpace value="collapse"  fixed="true"
1768         id="anyURI.whiteSpace"/>
1769     </xs:restriction>
1770    </xs:simpleType>
1771
1772   <xs:simpleType name="QName" id="QName">
1773     <xs:annotation>
1774         <xs:appinfo>
1775         <hfp:hasFacet name="length"/>
1776         <hfp:hasFacet name="minLength"/>
1777         <hfp:hasFacet name="maxLength"/>
1778         <hfp:hasFacet name="pattern"/>
1779         <hfp:hasFacet name="enumeration"/>
1780         <hfp:hasFacet name="whiteSpace"/>
1781         <hfp:hasProperty name="ordered" value="false"/>
1782         <hfp:hasProperty name="bounded" value="false"/>
1783         <hfp:hasProperty name="cardinality"
1784                 value="countably infinite"/>
1785         <hfp:hasProperty name="numeric" value="false"/>
1786       </xs:appinfo>
1787       <xs:documentation
1788         source="http://www.w3.org/TR/xmlschema-2/#QName"/>
1789     </xs:annotation>
1790     <xs:restriction base="xs:anySimpleType">
1791       <xs:whiteSpace value="collapse"  fixed="true"
1792         id="QName.whiteSpace"/>
1793     </xs:restriction>
1794   </xs:simpleType>
1795
1796    <xs:simpleType name="NOTATION" id="NOTATION">
1797     <xs:annotation>
1798         <xs:appinfo>
1799         <hfp:hasFacet name="length"/>
1800         <hfp:hasFacet name="minLength"/>
1801         <hfp:hasFacet name="maxLength"/>
1802         <hfp:hasFacet name="pattern"/>
1803         <hfp:hasFacet name="enumeration"/>
1804         <hfp:hasFacet name="whiteSpace"/>
1805         <hfp:hasProperty name="ordered" value="false"/>
1806         <hfp:hasProperty name="bounded" value="false"/>
1807         <hfp:hasProperty name="cardinality"
1808                 value="countably infinite"/>
1809         <hfp:hasProperty name="numeric" value="false"/>
1810       </xs:appinfo>
1811       <xs:documentation
1812         source="http://www.w3.org/TR/xmlschema-2/#NOTATION"/>
1813       <xs:documentation>
1814         NOTATION cannot be used directly in a schema; rather a type
1815         must be derived from it by specifying at least one enumeration
1816         facet whose value is the name of a NOTATION declared in the
1817         schema.
1818       </xs:documentation>
1819     </xs:annotation>
1820     <xs:restriction base="xs:anySimpleType">
1821       <xs:whiteSpace value="collapse"  fixed="true"
1822         id="NOTATION.whiteSpace"/>
1823     </xs:restriction>
1824   </xs:simpleType>
1825
1826   <xs:annotation>
1827     <xs:documentation>
1828       Now the derived primitive types
1829     </xs:documentation>
1830   </xs:annotation>
1831
1832   <xs:simpleType name="normalizedString" id="normalizedString">
1833     <xs:annotation>
1834       <xs:documentation
1835         source="http://www.w3.org/TR/xmlschema-2/#normalizedString"/>
1836     </xs:annotation>
1837     <xs:restriction base="xs:string">
1838       <xs:whiteSpace value="replace"
1839         id="normalizedString.whiteSpace"/>
1840     </xs:restriction>
1841   </xs:simpleType>
1842
1843   <xs:simpleType name="token" id="token">
1844     <xs:annotation>
1845       <xs:documentation
1846         source="http://www.w3.org/TR/xmlschema-2/#token"/>
1847     </xs:annotation>
1848     <xs:restriction base="xs:normalizedString">
1849       <xs:whiteSpace value="collapse" id="token.whiteSpace"/>
1850     </xs:restriction>
1851   </xs:simpleType>
1852
1853   <xs:simpleType name="language" id="language">
1854     <xs:annotation>
1855       <xs:documentation
1856         source="http://www.w3.org/TR/xmlschema-2/#language"/>
1857     </xs:annotation>
1858     <xs:restriction base="xs:token">
1859       <xs:pattern
1860         value="[a-zA-Z]{1,8}(-[a-zA-Z0-9]{1,8})*"
1861                 id="language.pattern">
1862         <xs:annotation>
1863           <xs:documentation
1864                 source="http://www.ietf.org/rfc/rfc3066.txt">
1865             pattern specifies the content of section 2.12 of XML 1.0e2
1866             and RFC 3066 (Revised version of RFC 1766).
1867           </xs:documentation>
1868         </xs:annotation>
1869       </xs:pattern>
1870     </xs:restriction>
1871   </xs:simpleType>
1872
1873   <xs:simpleType name="IDREFS" id="IDREFS">
1874     <xs:annotation>
1875       <xs:appinfo>
1876         <hfp:hasFacet name="length"/>
1877         <hfp:hasFacet name="minLength"/>
1878         <hfp:hasFacet name="maxLength"/>
1879         <hfp:hasFacet name="enumeration"/>
1880         <hfp:hasFacet name="whiteSpace"/>
1881         <hfp:hasFacet name="pattern"/>
1882         <hfp:hasProperty name="ordered" value="false"/>
1883         <hfp:hasProperty name="bounded" value="false"/>
1884         <hfp:hasProperty name="cardinality"
1885                 value="countably infinite"/>
1886         <hfp:hasProperty name="numeric" value="false"/>
1887       </xs:appinfo>
1888       <xs:documentation
1889         source="http://www.w3.org/TR/xmlschema-2/#IDREFS"/>
1890     </xs:annotation>
1891     <xs:restriction>
1892       <xs:simpleType>
1893         <xs:list itemType="xs:IDREF"/>
1894       </xs:simpleType>
1895         <xs:minLength value="1" id="IDREFS.minLength"/>
1896     </xs:restriction>
1897   </xs:simpleType>
1898
1899   <xs:simpleType name="ENTITIES" id="ENTITIES">
1900     <xs:annotation>
1901       <xs:appinfo>
1902         <hfp:hasFacet name="length"/>
1903         <hfp:hasFacet name="minLength"/>
1904         <hfp:hasFacet name="maxLength"/>
1905         <hfp:hasFacet name="enumeration"/>
1906         <hfp:hasFacet name="whiteSpace"/>
1907         <hfp:hasFacet name="pattern"/>
1908         <hfp:hasProperty name="ordered" value="false"/>
1909         <hfp:hasProperty name="bounded" value="false"/>
1910         <hfp:hasProperty name="cardinality"
1911                 value="countably infinite"/>
1912         <hfp:hasProperty name="numeric" value="false"/>
1913       </xs:appinfo>
1914       <xs:documentation
1915         source="http://www.w3.org/TR/xmlschema-2/#ENTITIES"/>
1916     </xs:annotation>
1917     <xs:restriction>
1918       <xs:simpleType>
1919         <xs:list itemType="xs:ENTITY"/>
1920       </xs:simpleType>
1921         <xs:minLength value="1" id="ENTITIES.minLength"/>
1922     </xs:restriction>
1923   </xs:simpleType>
1924
1925   <xs:simpleType name="NMTOKEN" id="NMTOKEN">
1926     <xs:annotation>
1927       <xs:documentation
1928         source="http://www.w3.org/TR/xmlschema-2/#NMTOKEN"/>
1929     </xs:annotation>
1930     <xs:restriction base="xs:token">
1931       <xs:pattern value="\c+" id="NMTOKEN.pattern">
1932         <xs:annotation>
1933           <xs:documentation
1934                 source="http://www.w3.org/TR/REC-xml#NT-Nmtoken">
1935             pattern matches production 7 from the XML spec
1936           </xs:documentation>
1937         </xs:annotation>
1938       </xs:pattern>
1939     </xs:restriction>
1940   </xs:simpleType>
1941
1942   <xs:simpleType name="NMTOKENS" id="NMTOKENS">
1943     <xs:annotation>
1944       <xs:appinfo>
1945         <hfp:hasFacet name="length"/>
1946         <hfp:hasFacet name="minLength"/>
1947         <hfp:hasFacet name="maxLength"/>
1948         <hfp:hasFacet name="enumeration"/>
1949         <hfp:hasFacet name="whiteSpace"/>
1950         <hfp:hasFacet name="pattern"/>
1951         <hfp:hasProperty name="ordered" value="false"/>
1952         <hfp:hasProperty name="bounded" value="false"/>
1953         <hfp:hasProperty name="cardinality"
1954                 value="countably infinite"/>
1955         <hfp:hasProperty name="numeric" value="false"/>
1956       </xs:appinfo>
1957       <xs:documentation
1958         source="http://www.w3.org/TR/xmlschema-2/#NMTOKENS"/>
1959     </xs:annotation>
1960     <xs:restriction>
1961       <xs:simpleType>
1962         <xs:list itemType="xs:NMTOKEN"/>
1963       </xs:simpleType>
1964         <xs:minLength value="1" id="NMTOKENS.minLength"/>
1965     </xs:restriction>
1966   </xs:simpleType>
1967
1968   <xs:simpleType name="Name" id="Name">
1969     <xs:annotation>
1970       <xs:documentation
1971         source="http://www.w3.org/TR/xmlschema-2/#Name"/>
1972     </xs:annotation>
1973     <xs:restriction base="xs:token">
1974       <xs:pattern value="\i\c*" id="Name.pattern">
1975         <xs:annotation>
1976           <xs:documentation
1977                         source="http://www.w3.org/TR/REC-xml#NT-Name">
1978             pattern matches production 5 from the XML spec
1979           </xs:documentation>
1980         </xs:annotation>
1981       </xs:pattern>
1982     </xs:restriction>
1983   </xs:simpleType>
1984
1985   <xs:simpleType name="NCName" id="NCName">
1986     <xs:annotation>
1987       <xs:documentation
1988         source="http://www.w3.org/TR/xmlschema-2/#NCName"/>
1989     </xs:annotation>
1990     <xs:restriction base="xs:Name">
1991       <xs:pattern value="[\i-[:]][\c-[:]]*" id="NCName.pattern">
1992         <xs:annotation>
1993           <xs:documentation
1994                 source="http://www.w3.org/TR/REC-xml-names/#NT-NCName">
1995             pattern matches production 4 from the Namespaces in XML spec
1996           </xs:documentation>
1997         </xs:annotation>
1998       </xs:pattern>
1999     </xs:restriction>
2000   </xs:simpleType>
2001
2002    <xs:simpleType name="ID" id="ID">
2003     <xs:annotation>
2004       <xs:documentation
2005         source="http://www.w3.org/TR/xmlschema-2/#ID"/>
2006     </xs:annotation>
2007     <xs:restriction base="xs:NCName"/>
2008    </xs:simpleType>
2009
2010    <xs:simpleType name="IDREF" id="IDREF">
2011     <xs:annotation>
2012       <xs:documentation
2013         source="http://www.w3.org/TR/xmlschema-2/#IDREF"/>
2014     </xs:annotation>
2015     <xs:restriction base="xs:NCName"/>
2016    </xs:simpleType>
2017
2018    <xs:simpleType name="ENTITY" id="ENTITY">
2019     <xs:annotation>
2020       <xs:documentation
2021         source="http://www.w3.org/TR/xmlschema-2/#ENTITY"/>
2022     </xs:annotation>
2023     <xs:restriction base="xs:NCName"/>
2024    </xs:simpleType>
2025
2026   <xs:simpleType name="integer" id="integer">
2027     <xs:annotation>
2028       <xs:documentation
2029         source="http://www.w3.org/TR/xmlschema-2/#integer"/>
2030     </xs:annotation>
2031     <xs:restriction base="xs:decimal">
2032       <xs:fractionDigits value="0" fixed="true" id="integer.fractionDigits"/>
2033       <xs:pattern value="[\-+]?[0-9]+"/>
2034     </xs:restriction>
2035   </xs:simpleType>
2036
2037   <xs:simpleType name="nonPositiveInteger" id="nonPositiveInteger">
2038     <xs:annotation>
2039       <xs:documentation
2040         source="http://www.w3.org/TR/xmlschema-2/#nonPositiveInteger"/>
2041     </xs:annotation>
2042     <xs:restriction base="xs:integer">
2043       <xs:maxInclusive value="0" id="nonPositiveInteger.maxInclusive"/>
2044     </xs:restriction>
2045   </xs:simpleType>
2046
2047   <xs:simpleType name="negativeInteger" id="negativeInteger">
2048     <xs:annotation>
2049       <xs:documentation
2050         source="http://www.w3.org/TR/xmlschema-2/#negativeInteger"/>
2051     </xs:annotation>
2052     <xs:restriction base="xs:nonPositiveInteger">
2053       <xs:maxInclusive value="-1" id="negativeInteger.maxInclusive"/>
2054     </xs:restriction>
2055   </xs:simpleType>
2056
2057   <xs:simpleType name="long" id="long">
2058     <xs:annotation>
2059       <xs:appinfo>
2060         <hfp:hasProperty name="bounded" value="true"/>
2061         <hfp:hasProperty name="cardinality" value="finite"/>
2062       </xs:appinfo>
2063       <xs:documentation
2064         source="http://www.w3.org/TR/xmlschema-2/#long"/>
2065     </xs:annotation>
2066     <xs:restriction base="xs:integer">
2067       <xs:minInclusive value="-9223372036854775808" id="long.minInclusive"/>
2068       <xs:maxInclusive value="9223372036854775807" id="long.maxInclusive"/>
2069     </xs:restriction>
2070   </xs:simpleType>
2071
2072   <xs:simpleType name="int" id="int">
2073     <xs:annotation>
2074       <xs:documentation
2075         source="http://www.w3.org/TR/xmlschema-2/#int"/>
2076     </xs:annotation>
2077     <xs:restriction base="xs:long">
2078       <xs:minInclusive value="-2147483648" id="int.minInclusive"/>
2079       <xs:maxInclusive value="2147483647" id="int.maxInclusive"/>
2080     </xs:restriction>
2081   </xs:simpleType>
2082
2083   <xs:simpleType name="short" id="short">
2084     <xs:annotation>
2085       <xs:documentation
2086         source="http://www.w3.org/TR/xmlschema-2/#short"/>
2087     </xs:annotation>
2088     <xs:restriction base="xs:int">
2089       <xs:minInclusive value="-32768" id="short.minInclusive"/>
2090       <xs:maxInclusive value="32767" id="short.maxInclusive"/>
2091     </xs:restriction>
2092   </xs:simpleType>
2093
2094   <xs:simpleType name="byte" id="byte">
2095     <xs:annotation>
2096       <xs:documentation
2097         source="http://www.w3.org/TR/xmlschema-2/#byte"/>
2098     </xs:annotation>
2099     <xs:restriction base="xs:short">
2100       <xs:minInclusive value="-128" id="byte.minInclusive"/>
2101       <xs:maxInclusive value="127" id="byte.maxInclusive"/>
2102     </xs:restriction>
2103   </xs:simpleType>
2104
2105   <xs:simpleType name="nonNegativeInteger" id="nonNegativeInteger">
2106     <xs:annotation>
2107       <xs:documentation
2108         source="http://www.w3.org/TR/xmlschema-2/#nonNegativeInteger"/>
2109     </xs:annotation>
2110     <xs:restriction base="xs:integer">
2111       <xs:minInclusive value="0" id="nonNegativeInteger.minInclusive"/>
2112     </xs:restriction>
2113   </xs:simpleType>
2114
2115   <xs:simpleType name="unsignedLong" id="unsignedLong">
2116     <xs:annotation>
2117       <xs:appinfo>
2118         <hfp:hasProperty name="bounded" value="true"/>
2119         <hfp:hasProperty name="cardinality" value="finite"/>
2120       </xs:appinfo>
2121       <xs:documentation
2122         source="http://www.w3.org/TR/xmlschema-2/#unsignedLong"/>
2123     </xs:annotation>
2124     <xs:restriction base="xs:nonNegativeInteger">
2125       <xs:maxInclusive value="18446744073709551615"
2126         id="unsignedLong.maxInclusive"/>
2127     </xs:restriction>
2128   </xs:simpleType>
2129
2130   <xs:simpleType name="unsignedInt" id="unsignedInt">
2131     <xs:annotation>
2132       <xs:documentation
2133         source="http://www.w3.org/TR/xmlschema-2/#unsignedInt"/>
2134     </xs:annotation>
2135     <xs:restriction base="xs:unsignedLong">
2136       <xs:maxInclusive value="4294967295"
2137         id="unsignedInt.maxInclusive"/>
2138     </xs:restriction>
2139   </xs:simpleType>
2140
2141   <xs:simpleType name="unsignedShort" id="unsignedShort">
2142     <xs:annotation>
2143       <xs:documentation
2144         source="http://www.w3.org/TR/xmlschema-2/#unsignedShort"/>
2145     </xs:annotation>
2146     <xs:restriction base="xs:unsignedInt">
2147       <xs:maxInclusive value="65535"
2148         id="unsignedShort.maxInclusive"/>
2149     </xs:restriction>
2150   </xs:simpleType>
2151
2152   <xs:simpleType name="unsignedByte" id="unsignedByte">
2153     <xs:annotation>
2154       <xs:documentation
2155         source="http://www.w3.org/TR/xmlschema-2/#unsignedByte"/>
2156     </xs:annotation>
2157     <xs:restriction base="xs:unsignedShort">
2158       <xs:maxInclusive value="255" id="unsignedByte.maxInclusive"/>
2159     </xs:restriction>
2160   </xs:simpleType>
2161
2162   <xs:simpleType name="positiveInteger" id="positiveInteger">
2163     <xs:annotation>
2164       <xs:documentation
2165         source="http://www.w3.org/TR/xmlschema-2/#positiveInteger"/>
2166     </xs:annotation>
2167     <xs:restriction base="xs:nonNegativeInteger">
2168       <xs:minInclusive value="1" id="positiveInteger.minInclusive"/>
2169     </xs:restriction>
2170   </xs:simpleType>
2171
2172  <xs:simpleType name="derivationControl">
2173   <xs:annotation>
2174    <xs:documentation>
2175    A utility type, not for public use</xs:documentation>
2176   </xs:annotation>
2177   <xs:restriction base="xs:NMTOKEN">
2178    <xs:enumeration value="substitution"/>
2179    <xs:enumeration value="extension"/>
2180    <xs:enumeration value="restriction"/>
2181    <xs:enumeration value="list"/>
2182    <xs:enumeration value="union"/>
2183   </xs:restriction>
2184  </xs:simpleType>
2185
2186  <xs:group name="simpleDerivation">
2187   <xs:choice>
2188     <xs:element ref="xs:restriction"/>
2189     <xs:element ref="xs:list"/>
2190     <xs:element ref="xs:union"/>
2191   </xs:choice>
2192  </xs:group>
2193
2194  <xs:simpleType name="simpleDerivationSet">
2195   <xs:annotation>
2196    <xs:documentation>
2197    #all or (possibly empty) subset of {restriction, union, list}
2198    </xs:documentation>
2199    <xs:documentation>
2200    A utility type, not for public use</xs:documentation>
2201   </xs:annotation>
2202   <xs:union>
2203    <xs:simpleType>
2204     <xs:restriction base="xs:token">
2205      <xs:enumeration value="#all"/>
2206     </xs:restriction>
2207    </xs:simpleType>
2208    <xs:simpleType>
2209     <xs:list>
2210      <xs:simpleType>
2211       <xs:restriction base="xs:derivationControl">
2212        <xs:enumeration value="list"/>
2213        <xs:enumeration value="union"/>
2214        <xs:enumeration value="restriction"/>
2215       </xs:restriction>
2216      </xs:simpleType>
2217     </xs:list>
2218    </xs:simpleType>
2219   </xs:union>
2220  </xs:simpleType>
2221
2222   <xs:complexType name="simpleType" abstract="true">
2223     <xs:complexContent>
2224       <xs:extension base="xs:annotated">
2225         <xs:group ref="xs:simpleDerivation"/>
2226         <xs:attribute name="final" type="xs:simpleDerivationSet"/>
2227         <xs:attribute name="name" type="xs:NCName">
2228           <xs:annotation>
2229             <xs:documentation>
2230               Can be restricted to required or forbidden
2231             </xs:documentation>
2232           </xs:annotation>
2233         </xs:attribute>
2234       </xs:extension>
2235     </xs:complexContent>
2236   </xs:complexType>
2237
2238   <xs:complexType name="topLevelSimpleType">
2239     <xs:complexContent>
2240       <xs:restriction base="xs:simpleType">
2241         <xs:sequence>
2242           <xs:element ref="xs:annotation" minOccurs="0"/>
2243           <xs:group ref="xs:simpleDerivation"/>
2244         </xs:sequence>
2245         <xs:attribute name="name" use="required"
2246              type="xs:NCName">
2247           <xs:annotation>
2248             <xs:documentation>
2249               Required at the top level
2250             </xs:documentation>
2251           </xs:annotation>
2252         </xs:attribute>
2253        <xs:anyAttribute namespace="##other" processContents="lax"/>
2254       </xs:restriction>
2255     </xs:complexContent>
2256   </xs:complexType>
2257
2258   <xs:complexType name="localSimpleType">
2259     <xs:complexContent>
2260       <xs:restriction base="xs:simpleType">
2261         <xs:sequence>
2262           <xs:element ref="xs:annotation" minOccurs="0"/>
2263           <xs:group ref="xs:simpleDerivation"/>
2264         </xs:sequence>
2265         <xs:attribute name="name" use="prohibited">
2266           <xs:annotation>
2267             <xs:documentation>
2268               Forbidden when nested
2269             </xs:documentation>
2270           </xs:annotation>
2271         </xs:attribute>
2272         <xs:attribute name="final" use="prohibited"/>
2273        <xs:anyAttribute namespace="##other" processContents="lax"/>
2274       </xs:restriction>
2275     </xs:complexContent>
2276   </xs:complexType>
2277
2278   <xs:element name="simpleType" type="xs:topLevelSimpleType" id="simpleType">
2279     <xs:annotation>
2280       <xs:documentation
2281         source="http://www.w3.org/TR/xmlschema-2/#element-simpleType"/>
2282     </xs:annotation>
2283   </xs:element>
2284
2285   <xs:group name="facets">
2286    <xs:annotation>
2287     <xs:documentation>
2288        We should use a substitution group for facets, but
2289        that's ruled out because it would allow users to
2290        add their own, which we're not ready for yet.
2291     </xs:documentation>
2292    </xs:annotation>
2293    <xs:choice>
2294     <xs:element ref="xs:minExclusive"/>
2295     <xs:element ref="xs:minInclusive"/>
2296     <xs:element ref="xs:maxExclusive"/>
2297     <xs:element ref="xs:maxInclusive"/>
2298     <xs:element ref="xs:totalDigits"/>
2299     <xs:element ref="xs:fractionDigits"/>
2300     <xs:element ref="xs:length"/>
2301     <xs:element ref="xs:minLength"/>
2302     <xs:element ref="xs:maxLength"/>
2303     <xs:element ref="xs:enumeration"/>
2304     <xs:element ref="xs:whiteSpace"/>
2305     <xs:element ref="xs:pattern"/>
2306    </xs:choice>
2307   </xs:group>
2308
2309   <xs:group name="simpleRestrictionModel">
2310    <xs:sequence>
2311     <xs:element name="simpleType" type="xs:localSimpleType" minOccurs="0"/>
2312     <xs:group ref="xs:facets" minOccurs="0" maxOccurs="unbounded"/>
2313    </xs:sequence>
2314   </xs:group>
2315
2316   <xs:element name="restriction" id="restriction">
2317    <xs:complexType>
2318     <xs:annotation>
2319       <xs:documentation
2320                 source="http://www.w3.org/TR/xmlschema-2/#element-restriction">
2321           base attribute and simpleType child are mutually
2322           exclusive, but one or other is required
2323         </xs:documentation>
2324       </xs:annotation>
2325       <xs:complexContent>
2326         <xs:extension base="xs:annotated">
2327          <xs:group ref="xs:simpleRestrictionModel"/>
2328          <xs:attribute name="base" type="xs:QName" use="optional"/>
2329         </xs:extension>
2330       </xs:complexContent>
2331     </xs:complexType>
2332   </xs:element>
2333
2334   <xs:element name="list" id="list">
2335    <xs:complexType>
2336     <xs:annotation>
2337       <xs:documentation
2338                 source="http://www.w3.org/TR/xmlschema-2/#element-list">
2339           itemType attribute and simpleType child are mutually
2340           exclusive, but one or other is required
2341         </xs:documentation>
2342       </xs:annotation>
2343       <xs:complexContent>
2344         <xs:extension base="xs:annotated">
2345           <xs:sequence>
2346             <xs:element name="simpleType" type="xs:localSimpleType"
2347                 minOccurs="0"/>
2348           </xs:sequence>
2349           <xs:attribute name="itemType" type="xs:QName" use="optional"/>
2350         </xs:extension>
2351       </xs:complexContent>
2352     </xs:complexType>
2353   </xs:element>
2354
2355   <xs:element name="union" id="union">
2356    <xs:complexType>
2357     <xs:annotation>
2358       <xs:documentation
2359                 source="http://www.w3.org/TR/xmlschema-2/#element-union">
2360           memberTypes attribute must be non-empty or there must be
2361           at least one simpleType child
2362         </xs:documentation>
2363       </xs:annotation>
2364       <xs:complexContent>
2365         <xs:extension base="xs:annotated">
2366           <xs:sequence>
2367             <xs:element name="simpleType" type="xs:localSimpleType"
2368                 minOccurs="0" maxOccurs="unbounded"/>
2369           </xs:sequence>
2370           <xs:attribute name="memberTypes" use="optional">
2371             <xs:simpleType>
2372               <xs:list itemType="xs:QName"/>
2373             </xs:simpleType>
2374           </xs:attribute>
2375         </xs:extension>
2376       </xs:complexContent>
2377     </xs:complexType>
2378   </xs:element>
2379
2380   <xs:complexType name="facet">
2381     <xs:complexContent>
2382       <xs:extension base="xs:annotated">
2383         <xs:attribute name="value" use="required"/>
2384         <xs:attribute name="fixed" type="xs:boolean" use="optional"
2385                       default="false"/>
2386       </xs:extension>
2387     </xs:complexContent>
2388   </xs:complexType>
2389
2390  <xs:complexType name="noFixedFacet">
2391   <xs:complexContent>
2392    <xs:restriction base="xs:facet">
2393     <xs:sequence>
2394      <xs:element ref="xs:annotation" minOccurs="0"/>
2395     </xs:sequence>
2396     <xs:attribute name="fixed" use="prohibited"/>
2397     <xs:anyAttribute namespace="##other" processContents="lax"/>
2398    </xs:restriction>
2399   </xs:complexContent>
2400  </xs:complexType>
2401
2402   <xs:element name="minExclusive" id="minExclusive" type="xs:facet">
2403     <xs:annotation>
2404       <xs:documentation
2405         source="http://www.w3.org/TR/xmlschema-2/#element-minExclusive"/>
2406     </xs:annotation>
2407   </xs:element>
2408   <xs:element name="minInclusive" id="minInclusive" type="xs:facet">
2409     <xs:annotation>
2410       <xs:documentation
2411         source="http://www.w3.org/TR/xmlschema-2/#element-minInclusive"/>
2412     </xs:annotation>
2413   </xs:element>
2414
2415   <xs:element name="maxExclusive" id="maxExclusive" type="xs:facet">
2416     <xs:annotation>
2417       <xs:documentation
2418         source="http://www.w3.org/TR/xmlschema-2/#element-maxExclusive"/>
2419     </xs:annotation>
2420   </xs:element>
2421   <xs:element name="maxInclusive" id="maxInclusive" type="xs:facet">
2422     <xs:annotation>
2423       <xs:documentation
2424         source="http://www.w3.org/TR/xmlschema-2/#element-maxInclusive"/>
2425     </xs:annotation>
2426   </xs:element>
2427
2428   <xs:complexType name="numFacet">
2429     <xs:complexContent>
2430       <xs:restriction base="xs:facet">
2431        <xs:sequence>
2432          <xs:element ref="xs:annotation" minOccurs="0"/>
2433        </xs:sequence>
2434        <xs:attribute name="value" type="xs:nonNegativeInteger" use="required"/>
2435        <xs:anyAttribute namespace="##other" processContents="lax"/>
2436       </xs:restriction>
2437     </xs:complexContent>
2438   </xs:complexType>
2439
2440   <xs:element name="totalDigits" id="totalDigits">
2441     <xs:annotation>
2442       <xs:documentation
2443         source="http://www.w3.org/TR/xmlschema-2/#element-totalDigits"/>
2444     </xs:annotation>
2445     <xs:complexType>
2446       <xs:complexContent>
2447         <xs:restriction base="xs:numFacet">
2448           <xs:sequence>
2449             <xs:element ref="xs:annotation" minOccurs="0"/>
2450           </xs:sequence>
2451           <xs:attribute name="value" type="xs:positiveInteger" use="required"/>
2452          <xs:anyAttribute namespace="##other" processContents="lax"/>
2453         </xs:restriction>
2454       </xs:complexContent>
2455     </xs:complexType>
2456   </xs:element>
2457   <xs:element name="fractionDigits" id="fractionDigits" type="xs:numFacet">
2458     <xs:annotation>
2459       <xs:documentation
2460         source="http://www.w3.org/TR/xmlschema-2/#element-fractionDigits"/>
2461     </xs:annotation>
2462   </xs:element>
2463
2464   <xs:element name="length" id="length" type="xs:numFacet">
2465     <xs:annotation>
2466       <xs:documentation
2467         source="http://www.w3.org/TR/xmlschema-2/#element-length"/>
2468     </xs:annotation>
2469   </xs:element>
2470   <xs:element name="minLength" id="minLength" type="xs:numFacet">
2471     <xs:annotation>
2472       <xs:documentation
2473         source="http://www.w3.org/TR/xmlschema-2/#element-minLength"/>
2474     </xs:annotation>
2475   </xs:element>
2476   <xs:element name="maxLength" id="maxLength" type="xs:numFacet">
2477     <xs:annotation>
2478       <xs:documentation
2479         source="http://www.w3.org/TR/xmlschema-2/#element-maxLength"/>
2480     </xs:annotation>
2481   </xs:element>
2482
2483   <xs:element name="enumeration" id="enumeration" type="xs:noFixedFacet">
2484     <xs:annotation>
2485       <xs:documentation
2486         source="http://www.w3.org/TR/xmlschema-2/#element-enumeration"/>
2487     </xs:annotation>
2488   </xs:element>
2489
2490   <xs:element name="whiteSpace" id="whiteSpace">
2491     <xs:annotation>
2492       <xs:documentation
2493         source="http://www.w3.org/TR/xmlschema-2/#element-whiteSpace"/>
2494     </xs:annotation>
2495     <xs:complexType>
2496       <xs:complexContent>
2497         <xs:restriction base="xs:facet">
2498           <xs:sequence>
2499             <xs:element ref="xs:annotation" minOccurs="0"/>
2500           </xs:sequence>
2501           <xs:attribute name="value" use="required">
2502             <xs:simpleType>
2503               <xs:restriction base="xs:NMTOKEN">
2504                 <xs:enumeration value="preserve"/>
2505                 <xs:enumeration value="replace"/>
2506                 <xs:enumeration value="collapse"/>
2507               </xs:restriction>
2508             </xs:simpleType>
2509           </xs:attribute>
2510          <xs:anyAttribute namespace="##other" processContents="lax"/>
2511         </xs:restriction>
2512       </xs:complexContent>
2513     </xs:complexType>
2514   </xs:element>
2515
2516   <xs:element name="pattern" id="pattern">
2517     <xs:annotation>
2518       <xs:documentation
2519         source="http://www.w3.org/TR/xmlschema-2/#element-pattern"/>
2520     </xs:annotation>
2521     <xs:complexType>
2522       <xs:complexContent>
2523         <xs:restriction base="xs:noFixedFacet">
2524           <xs:sequence>
2525             <xs:element ref="xs:annotation" minOccurs="0"/>
2526           </xs:sequence>
2527           <xs:attribute name="value" type="xs:string" use="required"/>
2528          <xs:anyAttribute namespace="##other" processContents="lax"/>
2529         </xs:restriction>
2530       </xs:complexContent>
2531     </xs:complexType>
2532   </xs:element>
2533
2534 </xs:schema>