Skip to content

Commit 6e7bf54

Browse files
committed
add new schema
1 parent 1622fa8 commit 6e7bf54

File tree

1 file changed

+394
-0
lines changed

1 file changed

+394
-0
lines changed

src/main/resources/findologic_20.xsd

Lines changed: 394 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,394 @@
1+
<?xml version="1.0" encoding="UTF-8"?>
2+
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
3+
4+
<!-- General structure and metadata, without items in detail. -->
5+
<xs:element name="findologic">
6+
<xs:complexType>
7+
<xs:sequence>
8+
<xs:element name="items">
9+
<xs:complexType>
10+
<xs:sequence>
11+
<xs:element type="itemType" name="item" maxOccurs="unbounded" minOccurs="0"/>
12+
</xs:sequence>
13+
<xs:attribute type="xs:unsignedInt" name="start" use="required"/>
14+
<xs:attribute type="xs:unsignedInt" name="count" use="required"/>
15+
<xs:attribute type="xs:unsignedLong" name="total" use="required"/>
16+
</xs:complexType>
17+
18+
<xs:unique name="id-is-unique">
19+
<xs:selector xpath="item"/>
20+
<xs:field xpath="@id"/>
21+
</xs:unique>
22+
</xs:element>
23+
</xs:sequence>
24+
<xs:attribute type="xs:string" name="version"/>
25+
</xs:complexType>
26+
</xs:element>
27+
28+
<!-- Structure of items. -->
29+
<xs:complexType name="itemType">
30+
<xs:all>
31+
<!-- Mandatory -->
32+
<xs:element type="allOrdernumbersType" name="allOrdernumbers" minOccurs="1" maxOccurs="1"/>
33+
<xs:element type="namesType" name="names" minOccurs="1" maxOccurs="1"/>
34+
<xs:element type="summariesType" name="summaries" minOccurs="1" maxOccurs="1"/>
35+
<xs:element type="descriptionsType" name="descriptions" minOccurs="1" maxOccurs="1"/>
36+
<xs:element type="pricesType" name="prices" minOccurs="1" maxOccurs="1"/>
37+
<xs:element type="urlsType" name="urls" minOccurs="1" maxOccurs="1"/>
38+
<xs:element type="allImagesType" name="allImages" minOccurs="1" maxOccurs="1"/>
39+
<xs:element type="allAttributesType" name="allAttributes" minOccurs="1" maxOccurs="1"/>
40+
<xs:element type="allKeywordsType" name="allKeywords" minOccurs="1" maxOccurs="1"/>
41+
<xs:element type="salesFrequenciesType" name="salesFrequencies" minOccurs="1" maxOccurs="1"/>
42+
<xs:element type="groupsType" name="groups" minOccurs="1" maxOccurs="1"/>
43+
<xs:element type="dateAddedsType" name="dateAddeds" minOccurs="1" maxOccurs="1"/>
44+
<xs:element type="allPropertiesType" name="allProperties" minOccurs="1" maxOccurs="1"/>
45+
<!-- Optional -->
46+
<xs:element type="overriddenPricesType" name="overriddenPrices" minOccurs="0" maxOccurs="1"/>
47+
<xs:element type="bonusesType" name="bonuses" minOccurs="0" maxOccurs="1"/>
48+
<xs:element type="sortsType" name="sorts" minOccurs="0" maxOccurs="1"/>
49+
<xs:element type="visibilitiesType" name="visibilities" minOccurs="0" maxOccurs="1"/>
50+
<xs:element type="variantsType" name="variants" minOccurs="0" maxOccurs="1"/>
51+
</xs:all>
52+
<xs:attribute type="nonEmptyString" name="id" use="required"/>
53+
</xs:complexType>
54+
55+
<xs:complexType name="variantsType">
56+
<xs:sequence>
57+
<xs:element type="variantType" name="variant" minOccurs="1" maxOccurs="unbounded"/>
58+
</xs:sequence>
59+
</xs:complexType>
60+
<xs:complexType name="variantType">
61+
<xs:all>
62+
<!-- Mandatory -->
63+
<xs:element type="allOrdernumbersType" name="allOrdernumbers" minOccurs="1" maxOccurs="1"/>
64+
<xs:element type="namesType" name="names" minOccurs="1" maxOccurs="1"/>
65+
<xs:element type="pricesType" name="prices" minOccurs="1" maxOccurs="1"/>
66+
<xs:element type="allAttributesType" name="allAttributes" minOccurs="1" maxOccurs="1"/>
67+
<!-- Optional -->
68+
<xs:element type="groupsType" name="groups" minOccurs="0" maxOccurs="1"/>
69+
<xs:element type="allPropertiesType" name="allProperties" minOccurs="0" maxOccurs="1"/>
70+
<xs:element type="overriddenPricesType" name="overriddenPrices" minOccurs="0" maxOccurs="1"/>
71+
<xs:element type="visibilitiesType" name="visibilities" minOccurs="0" maxOccurs="1"/>
72+
</xs:all>
73+
<xs:attribute type="nonEmptyString" name="id" use="required"/>
74+
</xs:complexType>
75+
76+
77+
<!-- Images -->
78+
<xs:complexType name="allImagesType">
79+
<xs:sequence>
80+
<xs:element type="imagesType" name="images" minOccurs="0" maxOccurs="unbounded"/>
81+
</xs:sequence>
82+
</xs:complexType>
83+
84+
<xs:complexType name="imagesType">
85+
<xs:sequence>
86+
<xs:element type="imageType" name="image" minOccurs="0" maxOccurs="unbounded"/>
87+
</xs:sequence>
88+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
89+
</xs:complexType>
90+
91+
<xs:complexType name="imageType">
92+
<xs:simpleContent>
93+
<xs:extension base="httpURI">
94+
<xs:attribute type="imageTypeType" name="type" use="optional"/>
95+
</xs:extension>
96+
</xs:simpleContent>
97+
</xs:complexType>
98+
99+
<xs:simpleType name="imageTypeType">
100+
<xs:restriction base="xs:string">
101+
<xs:enumeration value="thumbnail"/>
102+
</xs:restriction>
103+
</xs:simpleType>
104+
105+
<!-- Keywords -->
106+
<xs:complexType name="allKeywordsType">
107+
<xs:sequence>
108+
<xs:element name="keywords" minOccurs="0" maxOccurs="unbounded">
109+
<xs:complexType>
110+
<xs:sequence>
111+
<xs:element type="xs:string" name="keyword" maxOccurs="unbounded" minOccurs="0"/>
112+
</xs:sequence>
113+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
114+
</xs:complexType>
115+
</xs:element>
116+
</xs:sequence>
117+
</xs:complexType>
118+
119+
<!-- Properties -->
120+
<xs:complexType name="allPropertiesType">
121+
<xs:sequence>
122+
<xs:element type="propertiesType" name="properties" maxOccurs="unbounded" minOccurs="0"/>
123+
</xs:sequence>
124+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
125+
</xs:complexType>
126+
127+
<xs:complexType name="propertiesType">
128+
<xs:sequence>
129+
<xs:element type="keyValuePair" name="property" maxOccurs="unbounded" minOccurs="0"/>
130+
</xs:sequence>
131+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
132+
</xs:complexType>
133+
134+
<!-- Names -->
135+
<xs:complexType name="namesType">
136+
<xs:sequence>
137+
<xs:element type="nameWithUsergroup" name="name" minOccurs="1" maxOccurs="unbounded"/>
138+
</xs:sequence>
139+
</xs:complexType>
140+
141+
<!-- Attributes -->
142+
<xs:complexType name="allAttributesType">
143+
<xs:sequence>
144+
<xs:element name="attributes" maxOccurs="unbounded" minOccurs="0">
145+
<xs:complexType>
146+
<xs:sequence>
147+
<xs:element type="keyValuesPair" name="attribute" maxOccurs="unbounded" minOccurs="0"/>
148+
</xs:sequence>
149+
</xs:complexType>
150+
</xs:element>
151+
</xs:sequence>
152+
</xs:complexType>
153+
154+
<!-- URLs -->
155+
<xs:complexType name="urlsType">
156+
<xs:sequence>
157+
<xs:element name="url" minOccurs="1" maxOccurs="unbounded">
158+
<xs:complexType>
159+
<xs:simpleContent>
160+
<xs:extension base="httpURI">
161+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
162+
</xs:extension>
163+
</xs:simpleContent>
164+
</xs:complexType>
165+
</xs:element>
166+
</xs:sequence>
167+
</xs:complexType>
168+
169+
<!-- Summaries -->
170+
<xs:complexType name="summariesType">
171+
<xs:sequence>
172+
<xs:element type="stringWithUsergroup" name="summary" minOccurs="0" maxOccurs="unbounded"/>
173+
</xs:sequence>
174+
</xs:complexType>
175+
176+
<!-- Prices -->
177+
<xs:complexType name="pricesType">
178+
<xs:sequence>
179+
<xs:element name="price" minOccurs="1" maxOccurs="unbounded">
180+
<xs:complexType>
181+
<xs:simpleContent>
182+
<xs:extension base="xs:decimal">
183+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
184+
</xs:extension>
185+
</xs:simpleContent>
186+
</xs:complexType>
187+
</xs:element>
188+
</xs:sequence>
189+
</xs:complexType>
190+
191+
<!-- Ordernumber -->
192+
<xs:complexType name="allOrdernumbersType">
193+
<xs:sequence>
194+
<xs:element name="ordernumbers" maxOccurs="unbounded" minOccurs="0">
195+
<xs:complexType>
196+
<xs:sequence>
197+
<xs:element type="xs:string" name="ordernumber" maxOccurs="unbounded" minOccurs="0"/>
198+
</xs:sequence>
199+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
200+
</xs:complexType>
201+
</xs:element>
202+
</xs:sequence>
203+
</xs:complexType>
204+
205+
<!-- Descriptions -->
206+
<xs:complexType name="descriptionsType">
207+
<xs:sequence>
208+
<xs:element type="stringWithUsergroup" name="description" minOccurs="0" maxOccurs="unbounded"/>
209+
</xs:sequence>
210+
</xs:complexType>
211+
212+
<!-- Simple type variations -->
213+
<xs:simpleType name="httpURI">
214+
<xs:restriction base="xs:anyURI">
215+
<xs:pattern value="http[s]?://.*"/>
216+
</xs:restriction>
217+
</xs:simpleType>
218+
<xs:simpleType name="money">
219+
<xs:restriction base="xs:decimal">
220+
<xs:fractionDigits value="2"/>
221+
</xs:restriction>
222+
</xs:simpleType>
223+
224+
<!-- Usergroup support -->
225+
<xs:simpleType name="groupHash">
226+
<xs:restriction base="xs:string">
227+
<xs:minLength value="1"/>
228+
</xs:restriction>
229+
</xs:simpleType>
230+
<xs:complexType name="stringWithUsergroup">
231+
<xs:simpleContent>
232+
<xs:extension base="xs:string">
233+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
234+
</xs:extension>
235+
</xs:simpleContent>
236+
</xs:complexType>
237+
<xs:simpleType name="nonEmptyString">
238+
<xs:restriction base="xs:string">
239+
<xs:minLength value="1"/>
240+
<xs:whiteSpace value="collapse"/>
241+
</xs:restriction>
242+
</xs:simpleType>
243+
<xs:complexType name="nameWithUsergroup">
244+
<xs:simpleContent>
245+
<xs:extension base="nonEmptyString">
246+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
247+
</xs:extension>
248+
</xs:simpleContent>
249+
</xs:complexType>
250+
<xs:complexType name="moneyWithUsergroup">
251+
<xs:simpleContent>
252+
<xs:extension base="money">
253+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
254+
</xs:extension>
255+
</xs:simpleContent>
256+
</xs:complexType>
257+
258+
<!-- Generic structure for key with multiple values elements -->
259+
<xs:complexType name="keyValuesPair">
260+
<xs:sequence>
261+
<xs:element name="key">
262+
<xs:simpleType>
263+
<xs:restriction base="xs:string">
264+
<xs:minLength value="1"/>
265+
</xs:restriction>
266+
</xs:simpleType>
267+
</xs:element>
268+
<xs:element type="attributeValues" name="values"/>
269+
</xs:sequence>
270+
</xs:complexType>
271+
272+
<!-- Generic structure for key-value-pair elements -->
273+
<xs:complexType name="keyValuePair">
274+
<xs:sequence>
275+
<xs:element name="key">
276+
<xs:simpleType>
277+
<xs:restriction base="xs:string">
278+
<xs:minLength value="1"/>
279+
</xs:restriction>
280+
</xs:simpleType>
281+
</xs:element>
282+
<xs:element name="value">
283+
<xs:simpleType>
284+
<xs:restriction base="xs:string">
285+
<xs:minLength value="1"/>
286+
</xs:restriction>
287+
</xs:simpleType>
288+
</xs:element>
289+
</xs:sequence>
290+
</xs:complexType>
291+
292+
<xs:complexType name="attributeValues">
293+
<xs:sequence>
294+
<xs:element name="value" maxOccurs="unbounded" minOccurs="1">
295+
<xs:simpleType>
296+
<xs:restriction base="xs:string">
297+
<xs:minLength value="1"/>
298+
<xs:maxLength value="16383"/>
299+
</xs:restriction>
300+
</xs:simpleType>
301+
</xs:element>
302+
</xs:sequence>
303+
</xs:complexType>
304+
305+
<xs:complexType name="salesFrequenciesType">
306+
<xs:sequence>
307+
<xs:element name="salesFrequency" minOccurs="0" maxOccurs="unbounded">
308+
<xs:complexType>
309+
<xs:simpleContent>
310+
<xs:extension base="xs:nonNegativeInteger">
311+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
312+
</xs:extension>
313+
</xs:simpleContent>
314+
</xs:complexType>
315+
</xs:element>
316+
</xs:sequence>
317+
</xs:complexType>
318+
319+
<xs:complexType name="groupsType">
320+
<xs:sequence>
321+
<xs:element type="groupHash" name="group" minOccurs="0" maxOccurs="unbounded"/>
322+
</xs:sequence>
323+
</xs:complexType>
324+
325+
<xs:complexType name="dateAddedsType">
326+
<xs:sequence>
327+
<xs:element name="dateAdded" minOccurs="0" maxOccurs="unbounded">
328+
<xs:complexType>
329+
<xs:simpleContent>
330+
<xs:extension base="xs:dateTime">
331+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
332+
</xs:extension>
333+
</xs:simpleContent>
334+
</xs:complexType>
335+
</xs:element>
336+
</xs:sequence>
337+
</xs:complexType>
338+
339+
<xs:complexType name="overriddenPricesType">
340+
<xs:sequence>
341+
<xs:element name="overriddenPrice" minOccurs="1" maxOccurs="unbounded">
342+
<xs:complexType>
343+
<xs:simpleContent>
344+
<xs:extension base="xs:decimal">
345+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
346+
</xs:extension>
347+
</xs:simpleContent>
348+
</xs:complexType>
349+
</xs:element>
350+
</xs:sequence>
351+
</xs:complexType>
352+
<xs:complexType name="bonusesType">
353+
<xs:sequence>
354+
<xs:element name="bonus" minOccurs="0" maxOccurs="unbounded">
355+
<xs:complexType>
356+
<xs:simpleContent>
357+
<xs:extension base="xs:decimal">
358+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
359+
</xs:extension>
360+
</xs:simpleContent>
361+
</xs:complexType>
362+
</xs:element>
363+
</xs:sequence>
364+
</xs:complexType>
365+
366+
<xs:complexType name="sortsType">
367+
<xs:sequence>
368+
<xs:element name="sort" minOccurs="0" maxOccurs="unbounded">
369+
<xs:complexType>
370+
<xs:simpleContent>
371+
<xs:extension base="xs:integer">
372+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
373+
</xs:extension>
374+
</xs:simpleContent>
375+
</xs:complexType>
376+
</xs:element>
377+
</xs:sequence>
378+
</xs:complexType>
379+
380+
<xs:complexType name="visibilitiesType">
381+
<xs:sequence>
382+
<xs:element name="visible" minOccurs="0" maxOccurs="unbounded">
383+
<xs:complexType>
384+
<xs:simpleContent>
385+
<xs:extension base="xs:boolean">
386+
<xs:attribute type="groupHash" name="usergroup" use="optional"/>
387+
</xs:extension>
388+
</xs:simpleContent>
389+
</xs:complexType>
390+
</xs:element>
391+
</xs:sequence>
392+
</xs:complexType>
393+
394+
</xs:schema>

0 commit comments

Comments
 (0)