• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<?xml version="1.0" encoding="UTF-8" ?>
2<!--
3Note: The .xsd files are a Technology Preview. They are subject to change or removal in future CLDR versions.
4Note: DTD @-annotations are not currently converted to .xsd. For full CLDR file validation, use the DTD and CLDR tools.
5-->
6
7<!--
8  Copyright © 1991-2024 Unicode, Inc.
9  For terms of use, see http://www.unicode.org/copyright.html
10  SPDX-License-Identifier: Unicode-3.0
11  CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
12--><!--
13  Note: This DTD is not compatible with prior versions of the keyboard data.
14  See ldmlKeyboard.dtd  and CLDR v43 and prior.
15--><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
16  <xs:element name="keyboard3">
17    <xs:complexType>
18      <xs:sequence>
19        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
20        <xs:element minOccurs="0" ref="locales"/>
21        <xs:element minOccurs="0" ref="version"/>
22        <xs:element ref="info"/>
23        <xs:element minOccurs="0" ref="settings"/>
24        <xs:element minOccurs="0" ref="displays"/>
25        <xs:element minOccurs="0" ref="keys"/>
26        <xs:element minOccurs="0" ref="flicks"/>
27        <xs:element minOccurs="0" ref="forms"/>
28        <xs:element maxOccurs="unbounded" minOccurs="0" ref="layers"/>
29        <xs:element minOccurs="0" ref="variables"/>
30        <xs:element maxOccurs="unbounded" minOccurs="0" ref="transforms"/>
31        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
32      </xs:sequence>
33      <xs:attribute name="locale" use="required"/>
34      <xs:attribute name="conformsTo" use="required">
35        <xs:simpleType>
36          <xs:restriction base="xs:token">
37            <xs:enumeration value="45"/>
38          </xs:restriction>
39        </xs:simpleType>
40      </xs:attribute>
41    </xs:complexType>
42  </xs:element>
43
44
45
46
47
48  <xs:element name="import">
49    <xs:complexType>
50      <xs:attribute name="path" use="required"/>
51      <xs:attribute name="base">
52        <xs:simpleType>
53          <xs:restriction base="xs:token">
54            <xs:enumeration value="cldr"/>
55          </xs:restriction>
56        </xs:simpleType>
57      </xs:attribute>
58    </xs:complexType>
59  </xs:element>
60
61  <xs:element name="locales">
62    <xs:complexType>
63      <xs:sequence>
64        <xs:element maxOccurs="unbounded" minOccurs="0" ref="locale"/>
65      </xs:sequence>
66    </xs:complexType>
67  </xs:element>
68  <xs:element name="locale">
69    <xs:complexType>
70      <xs:attribute name="id" use="required"/>
71    </xs:complexType>
72  </xs:element>
73
74  <xs:element name="version">
75    <xs:complexType>
76      <xs:attribute name="number"/>
77      <xs:attribute default="45" name="cldrVersion">
78        <xs:simpleType>
79          <xs:restriction base="xs:string">
80            <xs:enumeration value="45"/>
81          </xs:restriction>
82        </xs:simpleType>
83      </xs:attribute>
84    </xs:complexType>
85  </xs:element>
86
87
88
89
90  <xs:element name="info">
91    <xs:complexType>
92      <xs:attribute name="name" use="required"/>
93      <xs:attribute name="author"/>
94      <xs:attribute name="layout"/>
95      <xs:attribute name="indicator"/>
96    </xs:complexType>
97  </xs:element>
98
99
100
101
102
103
104
105
106  <xs:element name="settings">
107    <xs:complexType>
108      <xs:attribute name="normalization">
109        <xs:simpleType>
110          <xs:restriction base="xs:token">
111            <xs:enumeration value="disabled"/>
112          </xs:restriction>
113        </xs:simpleType>
114      </xs:attribute>
115    </xs:complexType>
116  </xs:element>
117
118
119  <xs:element name="displays">
120    <xs:complexType>
121      <xs:sequence>
122        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
123        <xs:element maxOccurs="unbounded" minOccurs="0" ref="display"/>
124        <xs:element maxOccurs="unbounded" minOccurs="0" ref="displayOptions"/>
125        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
126      </xs:sequence>
127    </xs:complexType>
128  </xs:element>
129  <xs:element name="display">
130    <xs:complexType>
131      <xs:attribute name="keyId" type="xs:NMTOKEN"/>
132      <xs:attribute name="output"/>
133      <xs:attribute name="display" use="required"/>
134    </xs:complexType>
135  </xs:element>
136
137
138
139
140
141
142  <xs:element name="displayOptions">
143    <xs:complexType>
144      <xs:attribute name="baseCharacter"/>
145    </xs:complexType>
146  </xs:element>
147
148
149
150  <xs:element name="special" type="any"/>
151  <xs:element name="keys">
152    <xs:complexType>
153      <xs:sequence>
154        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
155        <xs:element maxOccurs="unbounded" minOccurs="0" ref="key"/>
156        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
157      </xs:sequence>
158    </xs:complexType>
159  </xs:element>
160  <xs:element name="key">
161    <xs:complexType>
162      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
163      <xs:attribute name="flickId" type="xs:NMTOKEN"/>
164      <xs:attribute name="gap">
165        <xs:simpleType>
166          <xs:restriction base="xs:token">
167            <xs:enumeration value="true"/>
168          </xs:restriction>
169        </xs:simpleType>
170      </xs:attribute>
171      <xs:attribute name="output"/>
172      <xs:attribute name="longPressKeyIds" type="xs:NMTOKENS"/>
173      <xs:attribute name="longPressDefaultKeyId" type="xs:NMTOKEN"/>
174      <xs:attribute name="multiTapKeyIds" type="xs:NMTOKENS"/>
175      <xs:attribute name="stretch">
176        <xs:simpleType>
177          <xs:restriction base="xs:token">
178            <xs:enumeration value="true"/>
179          </xs:restriction>
180        </xs:simpleType>
181      </xs:attribute>
182      <xs:attribute name="layerId" type="xs:NMTOKEN"/>
183      <xs:attribute name="width"/>
184    </xs:complexType>
185  </xs:element>
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203  <xs:element name="flicks">
204    <xs:complexType>
205      <xs:sequence>
206        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
207        <xs:element maxOccurs="unbounded" minOccurs="0" ref="flick"/>
208        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
209      </xs:sequence>
210    </xs:complexType>
211  </xs:element>
212  <xs:element name="flick">
213    <xs:complexType>
214      <xs:sequence>
215        <xs:element maxOccurs="unbounded" ref="flickSegment"/>
216        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
217      </xs:sequence>
218      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
219    </xs:complexType>
220  </xs:element>
221
222  <xs:element name="flickSegment">
223    <xs:complexType>
224      <xs:attribute name="directions" type="xs:NMTOKENS" use="required"/>
225      <xs:attribute name="keyId" type="xs:NMTOKEN" use="required"/>
226    </xs:complexType>
227  </xs:element>
228
229
230
231  <xs:element name="forms">
232    <xs:complexType>
233      <xs:sequence>
234        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
235        <xs:element maxOccurs="unbounded" minOccurs="0" ref="form"/>
236        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
237      </xs:sequence>
238    </xs:complexType>
239  </xs:element>
240  <xs:element name="form">
241    <xs:complexType>
242      <xs:sequence>
243        <xs:element maxOccurs="unbounded" ref="scanCodes"/>
244        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
245      </xs:sequence>
246      <xs:attribute name="id" type="xs:NMTOKEN"/>
247    </xs:complexType>
248  </xs:element>
249
250  <xs:element name="scanCodes">
251    <xs:complexType>
252      <xs:attribute name="codes" type="xs:NMTOKENS" use="required"/>
253    </xs:complexType>
254  </xs:element>
255
256
257  <xs:element name="layers">
258    <xs:complexType>
259      <xs:sequence>
260        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
261        <xs:element maxOccurs="unbounded" minOccurs="0" ref="layer"/>
262        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
263      </xs:sequence>
264      <xs:attribute name="formId" type="xs:NMTOKEN" use="required"/>
265      <xs:attribute name="minDeviceWidth"/>
266    </xs:complexType>
267  </xs:element>
268
269
270  <xs:element name="layer">
271    <xs:complexType>
272      <xs:sequence>
273        <xs:element maxOccurs="unbounded" ref="row"/>
274        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
275      </xs:sequence>
276      <xs:attribute name="id" type="xs:NMTOKEN"/>
277      <xs:attribute name="modifiers" type="xs:NMTOKENS"/>
278    </xs:complexType>
279  </xs:element>
280
281
282  <xs:element name="row">
283    <xs:complexType>
284      <xs:attribute name="keys" type="xs:NMTOKENS" use="required"/>
285    </xs:complexType>
286  </xs:element>
287
288
289
290  <xs:element name="variables">
291    <xs:complexType>
292      <xs:sequence>
293        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
294        <xs:element maxOccurs="unbounded" minOccurs="0" ref="string"/>
295        <xs:element maxOccurs="unbounded" minOccurs="0" ref="set"/>
296        <xs:element maxOccurs="unbounded" minOccurs="0" ref="uset"/>
297        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
298      </xs:sequence>
299    </xs:complexType>
300  </xs:element>
301  <xs:element name="string">
302    <xs:complexType>
303      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
304      <xs:attribute name="value" use="required"/>
305    </xs:complexType>
306  </xs:element>
307
308
309
310
311  <xs:element name="set">
312    <xs:complexType>
313      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
314      <xs:attribute name="value" use="required"/>
315    </xs:complexType>
316  </xs:element>
317
318
319
320
321  <xs:element name="uset">
322    <xs:complexType>
323      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
324      <xs:attribute name="value" use="required"/>
325    </xs:complexType>
326  </xs:element>
327
328
329
330  <xs:element name="transforms">
331    <xs:complexType>
332      <xs:sequence>
333        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
334        <xs:element maxOccurs="unbounded" minOccurs="0" ref="transformGroup"/>
335        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
336      </xs:sequence>
337      <xs:attribute name="type" use="required">
338        <xs:simpleType>
339          <xs:restriction base="xs:token">
340            <xs:enumeration value="simple"/>
341            <xs:enumeration value="backspace"/>
342          </xs:restriction>
343        </xs:simpleType>
344      </xs:attribute>
345    </xs:complexType>
346  </xs:element>
347
348  <xs:element name="transformGroup">
349    <xs:complexType>
350      <xs:sequence>
351        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
352        <xs:choice>
353          <xs:element maxOccurs="unbounded" minOccurs="0" ref="transform"/>
354          <xs:element maxOccurs="unbounded" minOccurs="0" ref="reorder"/>
355        </xs:choice>
356        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
357      </xs:sequence>
358    </xs:complexType>
359  </xs:element>
360  <xs:element name="transform">
361    <xs:complexType>
362      <xs:attribute name="from" use="required"/>
363      <xs:attribute name="to"/>
364    </xs:complexType>
365  </xs:element>
366
367
368
369
370
371
372
373  <xs:element name="reorder">
374    <xs:complexType>
375      <xs:attribute name="before"/>
376      <xs:attribute name="from" use="required"/>
377      <xs:attribute name="order"/>
378      <xs:attribute name="tertiary"/>
379      <xs:attribute name="tertiaryBase"/>
380      <xs:attribute name="preBase"/>
381    </xs:complexType>
382  </xs:element>
383  <xs:complexType mixed="true" name="any">
384    <xs:sequence>
385      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="strict"/>
386    </xs:sequence>
387  </xs:complexType>
388</xs:schema>