1+ <?xml version =" 1.0" encoding =" UTF-8" ?>
2+ <!--
3+ .kps file schema, version 18.0
4+
5+ Copyright (C) SIL International
6+
7+ Supports KPS files for Keyman Developer 7+
8+
9+ Expects FileVersion '7.0' or '12.0'
10+ -->
11+ <xs : schema xmlns : xs =" http://www.w3.org/2001/XMLSchema" >
12+
13+ <xs : element name =" Package" >
14+ <xs : complexType >
15+ <xs : all >
16+
17+
18+ <xs : element minOccurs =" 1" maxOccurs =" 1" name =" System" >
19+ <xs : complexType >
20+ <xs : all >
21+ <xs : element minOccurs =" 1" maxOccurs =" 1" name =" KeymanDeveloperVersion" type =" km-version" />
22+ <xs : element minOccurs =" 1" maxOccurs =" 1" name =" FileVersion" type =" km-version" />
23+ </xs : all >
24+ </xs : complexType >
25+ </xs : element >
26+
27+
28+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Options" >
29+ <xs : complexType >
30+ <xs : all >
31+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" ExecuteProgram" type =" xs:string" />
32+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" ReadMeFile" type =" xs:string" />
33+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" GraphicFile" type =" xs:string" />
34+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" LicenseFile" type =" xs:string" />
35+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" WelcomeFile" type =" xs:string" />
36+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" MSIFileName" type =" xs:string" />
37+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" MSIOptions" type =" xs:string" />
38+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" FollowKeyboardVersion" type =" km-empty" />
39+ </xs : all >
40+ </xs : complexType >
41+ </xs : element >
42+
43+
44+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" StartMenu" >
45+ <xs : complexType >
46+ <xs : all >
47+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Folder" type =" xs:string" />
48+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" AddUninstallEntry" type =" km-empty" />
49+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Items" >
50+ <xs : complexType >
51+ <xs : sequence >
52+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" Item" >
53+ <xs : complexType >
54+ <xs : all >
55+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Name" type =" xs:string" />
56+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" FileName" type =" xs:string" />
57+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Arguments" type =" xs:string" />
58+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Icon" type =" xs:string" />
59+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Location" type =" km-start-menu-location" />
60+ </xs : all >
61+ </xs : complexType >
62+ </xs : element >
63+ </xs : sequence >
64+ </xs : complexType >
65+ </xs : element >
66+ </xs : all >
67+ </xs : complexType >
68+ </xs : element >
69+
70+
71+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Info" >
72+ <xs : complexType >
73+ <xs : all >
74+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Name" type =" km-info" />
75+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Version" type =" km-info" />
76+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Copyright" type =" km-info" />
77+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Author" type =" km-info" />
78+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" WebSite" type =" km-info" />
79+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Description" type =" km-info" />
80+ </xs : all >
81+ </xs : complexType >
82+ </xs : element >
83+
84+
85+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Files" >
86+ <xs : complexType >
87+ <xs : sequence >
88+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" File" >
89+ <xs : complexType >
90+ <xs : all >
91+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Name" type =" xs:string" />
92+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Description" type =" xs:string" />
93+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" CopyLocation" type =" km-file-copy-location" />
94+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" FileType" type =" xs:string" />
95+ </xs : all >
96+ </xs : complexType >
97+ </xs : element >
98+ </xs : sequence >
99+ </xs : complexType >
100+ </xs : element >
101+
102+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" RelatedPackages" >
103+ <xs : complexType >
104+ <xs : sequence >
105+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" RelatedPackage" >
106+ <xs : complexType >
107+ <xs : attribute name =" ID" type =" xs:string" />
108+ <!-- "deprecates" is only valid value, if not present then means "related" -->
109+ <xs : attribute name =" Relationship" type =" km-package-relationship" />
110+ </xs : complexType >
111+ </xs : element >
112+ </xs : sequence >
113+ </xs : complexType >
114+ </xs : element >
115+
116+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Keyboards" >
117+ <xs : complexType >
118+ <xs : sequence >
119+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" Keyboard" >
120+ <xs : complexType >
121+ <xs : all >
122+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Name" type =" xs:string" /> <!-- deprecated: 18.0 -->
123+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" ID" type =" xs:string" />
124+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Version" type =" xs:string" /> <!-- deprecated: 18.0 -->
125+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" RTL" type =" xs:string" /> <!-- deprecated: 18.0 -->
126+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" OSKFont" type =" xs:string" />
127+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" DisplayFont" type =" xs:string" />
128+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Languages" type =" km-keyboard-languages" />
129+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Examples" type =" km-keyboard-examples" />
130+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" WebOSKFonts" type =" km-keyboard-fonts" />
131+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" WebDisplayFonts" type =" km-keyboard-fonts" />
132+ </xs : all >
133+ </xs : complexType >
134+ </xs : element >
135+ </xs : sequence >
136+ </xs : complexType >
137+ </xs : element >
138+
139+
140+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" LexicalModels" >
141+ <xs : complexType >
142+ <xs : sequence >
143+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" LexicalModel" >
144+ <xs : complexType >
145+ <xs : all >
146+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Name" type =" xs:string" /> <!-- deprecated: 18.0 -->
147+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" ID" type =" xs:string" />
148+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" RTL" type =" xs:string" /> <!-- deprecated: 18.0 -->
149+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Languages" type =" km-keyboard-languages" />
150+ </xs : all >
151+ </xs : complexType >
152+ </xs : element >
153+ </xs : sequence >
154+ </xs : complexType >
155+ </xs : element >
156+
157+ <!-- Deprecated elements: we won't validate as processors ignore them -->
158+
159+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Strings" >
160+ <xs : complexType >
161+ <xs : sequence >
162+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" String" >
163+ <xs : complexType >
164+ <xs : attribute name =" Name" type =" xs:string" />
165+ <xs : attribute name =" Value" type =" xs:string" />
166+ </xs : complexType >
167+ </xs : element >
168+ </xs : sequence >
169+ </xs : complexType >
170+ </xs : element >
171+
172+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Buttons" type =" km-any" />
173+ <xs : element minOccurs =" 0" maxOccurs =" 1" name =" Registry" type =" km-any" />
174+
175+ </xs : all >
176+ </xs : complexType >
177+ </xs : element >
178+
179+ <xs : complexType name =" km-empty" >
180+ <xs : sequence />
181+ </xs : complexType >
182+
183+ <xs : complexType name =" km-any" >
184+ <xs : sequence >
185+ <xs : any minOccurs =" 0" maxOccurs =" unbounded" processContents =" skip" />
186+ </xs : sequence >
187+ </xs : complexType >
188+
189+ <xs : simpleType name =" km-version" >
190+ <xs : restriction base =" xs:string" >
191+ <xs : pattern value =" (\d+\.)+(\d+)" />
192+ </xs : restriction >
193+ </xs : simpleType >
194+
195+ <xs : complexType name =" km-info" >
196+ <xs : simpleContent >
197+ <xs : extension base =" xs:string" >
198+ <xs : attribute name =" URL" type =" xs:anyURI" />
199+ </xs : extension >
200+ </xs : simpleContent >
201+ </xs : complexType >
202+
203+ <xs : simpleType name =" km-file-copy-location" >
204+ <xs : restriction base =" xs:integer" >
205+ <xs : minInclusive value =" 0" />
206+ <xs : maxInclusive value =" 3" />
207+ </xs : restriction >
208+ </xs : simpleType >
209+
210+ <xs : simpleType name =" km-package-relationship" >
211+ <xs : restriction base =" xs:string" >
212+ <xs : pattern value =" deprecates" />
213+ </xs : restriction >
214+ </xs : simpleType >
215+
216+ <xs : simpleType name =" km-start-menu-location" >
217+ <xs : restriction base =" xs:string" >
218+ <xs : pattern value =" psmelStartMenu|psmelDesktop" ></xs : pattern >
219+ </xs : restriction >
220+ </xs : simpleType >
221+
222+ <xs : complexType name =" km-keyboard-languages" >
223+ <xs : sequence >
224+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" Language" >
225+ <xs : complexType >
226+ <xs : simpleContent >
227+ <xs : extension base =" xs:string" >
228+ <xs : attribute name =" ID" type =" xs:string" />
229+ </xs : extension >
230+ </xs : simpleContent >
231+ </xs : complexType >
232+ </xs : element >
233+ </xs : sequence >
234+ </xs : complexType >
235+
236+ <xs : complexType name =" km-keyboard-examples" >
237+ <xs : sequence >
238+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" Example" >
239+ <xs : complexType >
240+ <xs : attribute name =" ID" type =" xs:string" />
241+ <xs : attribute name =" Keys" type =" xs:string" />
242+ <xs : attribute name =" Text" type =" xs:string" />
243+ <xs : attribute name =" Note" type =" xs:string" />
244+ </xs : complexType >
245+ </xs : element >
246+ </xs : sequence >
247+ </xs : complexType >
248+
249+ <xs : complexType name =" km-keyboard-fonts" >
250+ <xs : sequence >
251+ <xs : element minOccurs =" 0" maxOccurs =" unbounded" name =" Font" >
252+ <xs : complexType >
253+ <xs : attribute name =" Filename" type =" xs:string" />
254+ </xs : complexType >
255+ </xs : element >
256+ </xs : sequence >
257+ </xs : complexType >
258+
259+ </xs : schema >
0 commit comments