root/trunk/src/xml/schema/simple-types.xsd

Revision 1618, 9.7 kB (checked in by amandel, 5 months ago)

Refine xsd for #80 - xsd for simple-types.xml

  • Property svn:mime-type set to text/xml
Line 
1<?xml version="1.0" encoding="UTF-8"?>
2<xs:schema elementFormDefault="qualified"
3    xmlns:xs="http://www.w3.org/2001/XMLSchema">
4   
5    <!-- Start -->
6    <xs:element name="simpleTypes" type="simpleTypes"/>
7
8    <!-- Structure -->
9    <xs:complexType name="simpleTypes">
10        <xs:all>
11            <xs:element name="typeSafeEnumerations" type="typeSafeEnumerations" minOccurs="0"/>
12            <xs:element name="restrictedStrings" type="restrictedStrings" minOccurs="0"/>
13            <xs:element name="restrictedLongs" type="restrictedLongs" minOccurs="0"/>
14            <xs:element name="fixPointNumbers" type="fixPointNumbers" minOccurs="0"/>
15            <xs:element name="valueObjects" type="valueObjects" minOccurs="0"/>
16        </xs:all>
17    </xs:complexType>
18
19    <!-- Stuff used in enums -->
20    <xs:complexType name="typeSafeEnumerations">
21        <xs:sequence>
22            <xs:element name="enumeration" type="enumeration"
23                maxOccurs="unbounded" minOccurs="0"/>
24        </xs:sequence>
25    </xs:complexType>
26    <xs:complexType name="enumeration">
27        <xs:sequence>
28            <xs:element name="description" type="description"
29                minOccurs="0"/>
30            <xs:element name="value" type="value" maxOccurs="unbounded"/>
31            <xs:element ref="state" minOccurs="0" maxOccurs="unbounded"/>
32        </xs:sequence>
33        <xs:attribute name="package" type="javaPackageName"
34            use="required"/>
35        <xs:attribute name="classname" type="javaClassName"
36            use="required"/>
37        <xs:attribute name="user-type" type="enumUserType"
38            use="optional"/>
39        <xs:attribute name="implements" type="javaQualifiedClassName"
40            use="optional"/>
41    </xs:complexType>
42    <xs:complexType mixed="true" name="value">
43        <xs:attribute name="description" type="xs:string"
44            use="optional"/>
45        <xs:attribute name="numeric" type="xs:int" use="optional"/>
46        <!-- Refine type for symbol -->
47        <xs:attribute name="symbol" type="xs:string" use="optional"/>
48    </xs:complexType>
49    <xs:simpleType name="enumUserType">
50        <xs:restriction base="xs:string">
51            <xs:enumeration value="numeric"/>
52            <xs:enumeration value="integer"/>
53            <xs:enumeration value="string"/>
54        </xs:restriction>
55    </xs:simpleType>
56
57
58    <!-- Restricted Strings -->
59    <xs:complexType name="restrictedStrings">
60        <xs:sequence>
61            <xs:element name="restrictedString" type="restrictedString"
62                maxOccurs="unbounded" minOccurs="0"/>
63        </xs:sequence>
64    </xs:complexType>
65    <xs:complexType mixed="true" name="restrictedString">
66        <xs:sequence>
67            <xs:element name="description" type="description"
68                minOccurs="0"/>
69            <xs:element name="constant" type="constant"
70                minOccurs="0" maxOccurs="unbounded"/>
71        </xs:sequence>
72        <xs:attribute name="min-length" type="lengthType"
73            use="required"/>
74        <xs:attribute name="max-length" type="lengthType"
75            use="required"/>
76        <xs:attribute name="package" type="javaPackageName"
77            use="required"/>
78        <xs:attribute name="classname" type="javaClassName"
79            use="required"/>
80        <xs:attribute name="implements" type="javaQualifiedClassName"
81            use="optional"/>
82        <xs:attribute name="user-type" type="flag" use="optional"/>
83        <xs:attribute name="regex" type="xs:string" use="optional"/>
84    </xs:complexType>
85
86    <!-- Restricted Long -->
87    <xs:complexType name="restrictedLongs">
88        <xs:sequence>
89            <xs:element name="restrictedLong" type="restrictedLong"
90                maxOccurs="unbounded" minOccurs="0"/>
91        </xs:sequence>
92    </xs:complexType>
93    <xs:complexType name="restrictedLong">
94        <xs:sequence>
95            <xs:element name="description" type="description"
96                minOccurs="0"/>
97            <xs:element name="constant" type="constant"
98                minOccurs="0" maxOccurs="unbounded"/>
99        </xs:sequence>
100        <xs:attribute name="classname" type="javaClassName"
101            use="required"/>
102        <xs:attribute name="package" type="javaPackageName"
103            use="required"/>
104        <xs:attribute name="max-value" type="xs:string" use="required"/>
105        <xs:attribute name="min-value" type="xs:string" use="required"/>
106        <xs:attribute name="user-type" type="flag" use="optional"/>
107    </xs:complexType>
108
109    <!-- Fix Point Numbers -->
110    <xs:complexType name="fixPointNumbers">
111        <xs:sequence>
112            <xs:element name="fixPointNumber" type="fixPointNumber"
113                maxOccurs="unbounded" minOccurs="0"/>
114        </xs:sequence>
115    </xs:complexType>
116    <xs:complexType name="fixPointNumber">
117        <xs:sequence>
118            <xs:element name="description" type="description" minOccurs="0"/>
119            <xs:element name="constant" type="constant"
120                minOccurs="0" maxOccurs="unbounded"/>
121        </xs:sequence>
122        <xs:attribute name="classname" type="javaClassName"
123            use="required"/>
124        <xs:attribute name="package" type="javaPackageName"
125            use="required"/>
126        <xs:attribute name="total-digits" type="xs:int"
127            use="required"/>
128        <xs:attribute name="max-value" type="xs:string" use="optional"/>
129        <xs:attribute name="min-value" type="xs:string" use="required"/>
130        <xs:attribute name="fraction-digits" type="xs:int"
131            use="required"/>
132        <xs:attribute name="user-type" type="flag" use="optional"/>
133    </xs:complexType>
134
135   
136    <!-- Value Objects -->
137    <xs:complexType name="valueObjects">
138        <xs:sequence>
139            <xs:element name="valueObject" type="valueObject"
140                maxOccurs="unbounded" minOccurs="0"/>
141        </xs:sequence>
142    </xs:complexType>
143    <xs:complexType name="valueObject">
144        <xs:sequence>
145            <xs:element name="description" type="description"
146                minOccurs="0"/>
147            <xs:element name="xdoclet" type="xdoclet" minOccurs="0"/>
148            <xs:element name="member" type="member"
149                maxOccurs="unbounded"/>
150        </xs:sequence>
151        <xs:attribute name="classname" type="javaClassName"
152            use="required"/>
153        <xs:attribute name="package" type="javaPackageName"
154            use="required"/>
155        <xs:attribute name="implements" type="javaQualifiedClassName"
156            use="optional"/>
157        <xs:attribute name="baseclass" type="javaQualifiedClassName" use="optional"/>
158        <xs:attribute name="serializable" type="flag" use="optional"/>
159        <xs:attribute name="final" type="flag" use="optional"/>
160    </xs:complexType>
161    <xs:complexType name="member" mixed="true">
162        <xs:sequence>
163            <xs:element name="description" type="description"
164                minOccurs="0"/>
165            <xs:element name="xdoclet" type="xdoclet" minOccurs="0"/>
166        </xs:sequence>
167        <xs:attribute name="name" type="xs:string" use="required"/>
168        <xs:attribute name="initial-value" type="xs:string"
169            use="optional"/>
170        <xs:attribute name="type" type="xs:string" use="required"/>
171        <xs:attribute name="identity-independent" type="flag"
172            use="optional"/>
173        <xs:attribute name="final" type="flag" use="optional"/>
174        <xs:attribute name="copyValue" type="copyValue" use="optional"/>
175    </xs:complexType>
176    <xs:complexType name="xdoclet">
177        <xs:sequence>
178            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
179        </xs:sequence>
180    </xs:complexType>
181    <xs:simpleType name="copyValue">
182        <xs:restriction base="xs:string">
183            <xs:enumeration value="clone"/>
184            <xs:enumeration value="constructor"/>
185        </xs:restriction>
186    </xs:simpleType>
187
188
189    <!-- Used globally -->
190    <xs:simpleType name="lengthType">
191        <xs:restriction base="xs:string"/>
192    </xs:simpleType>
193    <xs:simpleType name="javaPackageName">
194        <xs:restriction base="xs:string"/>
195    </xs:simpleType>
196    <xs:simpleType name="javaClassName">
197        <xs:restriction base="xs:string"/>
198    </xs:simpleType>
199    <xs:simpleType name="javaQualifiedClassName">
200        <xs:restriction base="xs:string"/>
201    </xs:simpleType>
202    <xs:complexType name="constant">
203        <xs:attribute name="name" type="xs:NMTOKEN" use="required"/>
204        <xs:attribute name="value" type="xs:NMTOKEN" use="required"/>
205        <xs:attribute name="comment" type="xs:string" use="optional"/>
206    </xs:complexType>
207    <xs:simpleType name="flag">
208        <xs:restriction base="xs:string">
209            <xs:enumeration value="true"/>
210        </xs:restriction>
211    </xs:simpleType>
212    <xs:complexType mixed="true" name="description">
213        <xs:sequence>
214            <xs:any minOccurs="0" maxOccurs="unbounded" processContents="lax"/>
215        </xs:sequence>
216    </xs:complexType>
217   
218
219    <!-- TODO -->
220    <xs:element name="state">
221        <xs:complexType>
222            <xs:sequence>
223                <xs:element ref="transition" minOccurs="0"
224                    maxOccurs="unbounded"/>
225            </xs:sequence>
226            <xs:attribute name="name" type="xs:NMTOKEN"
227                use="required"/>
228            <xs:attribute name="type" type="xs:NMTOKEN"
229                use="optional"/>
230        </xs:complexType>
231    </xs:element>
232    <xs:element name="transition">
233        <xs:complexType>
234            <xs:attribute name="name" type="xs:string" use="required"/>
235            <xs:attribute name="target" type="xs:NMTOKEN"
236                use="required"/>
237        </xs:complexType>
238    </xs:element>
239</xs:schema>
Note: See TracBrowser for help on using the browser.