• 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:enumeration value="46"/>
39          </xs:restriction>
40        </xs:simpleType>
41      </xs:attribute>
42    </xs:complexType>
43  </xs:element>
44
45
46
47
48
49  <xs:element name="import">
50    <xs:complexType>
51      <xs:attribute name="path" use="required"/>
52      <xs:attribute name="base">
53        <xs:simpleType>
54          <xs:restriction base="xs:token">
55            <xs:enumeration value="cldr"/>
56          </xs:restriction>
57        </xs:simpleType>
58      </xs:attribute>
59    </xs:complexType>
60  </xs:element>
61
62  <xs:element name="locales">
63    <xs:complexType>
64      <xs:sequence>
65        <xs:element maxOccurs="unbounded" minOccurs="0" ref="locale"/>
66      </xs:sequence>
67    </xs:complexType>
68  </xs:element>
69  <xs:element name="locale">
70    <xs:complexType>
71      <xs:attribute name="id" use="required"/>
72    </xs:complexType>
73  </xs:element>
74
75  <xs:element name="version">
76    <xs:complexType>
77      <xs:attribute name="number"/>
78      <xs:attribute default="46" name="cldrVersion">
79        <xs:simpleType>
80          <xs:restriction base="xs:string">
81            <xs:enumeration value="46"/>
82          </xs:restriction>
83        </xs:simpleType>
84      </xs:attribute>
85    </xs:complexType>
86  </xs:element>
87
88
89
90
91  <xs:element name="info">
92    <xs:complexType>
93      <xs:attribute name="name" use="required"/>
94      <xs:attribute name="author"/>
95      <xs:attribute name="layout"/>
96      <xs:attribute name="indicator"/>
97    </xs:complexType>
98  </xs:element>
99
100
101
102
103
104
105
106
107  <xs:element name="settings">
108    <xs:complexType>
109      <xs:attribute name="normalization">
110        <xs:simpleType>
111          <xs:restriction base="xs:token">
112            <xs:enumeration value="disabled"/>
113          </xs:restriction>
114        </xs:simpleType>
115      </xs:attribute>
116    </xs:complexType>
117  </xs:element>
118
119
120  <xs:element name="displays">
121    <xs:complexType>
122      <xs:sequence>
123        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
124        <xs:element maxOccurs="unbounded" minOccurs="0" ref="display"/>
125        <xs:element maxOccurs="unbounded" minOccurs="0" ref="displayOptions"/>
126        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
127      </xs:sequence>
128    </xs:complexType>
129  </xs:element>
130  <xs:element name="display">
131    <xs:complexType>
132      <xs:attribute name="keyId" type="xs:NMTOKEN"/>
133      <xs:attribute name="output"/>
134      <xs:attribute name="display" use="required"/>
135    </xs:complexType>
136  </xs:element>
137
138
139
140
141
142
143  <xs:element name="displayOptions">
144    <xs:complexType>
145      <xs:attribute name="baseCharacter"/>
146    </xs:complexType>
147  </xs:element>
148
149
150
151  <xs:element name="special" type="any"/>
152  <xs:element name="keys">
153    <xs:complexType>
154      <xs:sequence>
155        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
156        <xs:element maxOccurs="unbounded" minOccurs="0" ref="key"/>
157        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
158      </xs:sequence>
159    </xs:complexType>
160  </xs:element>
161  <xs:element name="key">
162    <xs:complexType>
163      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
164      <xs:attribute name="flickId" type="xs:NMTOKEN"/>
165      <xs:attribute name="gap">
166        <xs:simpleType>
167          <xs:restriction base="xs:token">
168            <xs:enumeration value="true"/>
169          </xs:restriction>
170        </xs:simpleType>
171      </xs:attribute>
172      <xs:attribute name="output"/>
173      <xs:attribute name="longPressKeyIds" type="xs:NMTOKENS"/>
174      <xs:attribute name="longPressDefaultKeyId" type="xs:NMTOKEN"/>
175      <xs:attribute name="multiTapKeyIds" type="xs:NMTOKENS"/>
176      <xs:attribute name="stretch">
177        <xs:simpleType>
178          <xs:restriction base="xs:token">
179            <xs:enumeration value="true"/>
180          </xs:restriction>
181        </xs:simpleType>
182      </xs:attribute>
183      <xs:attribute name="layerId" type="xs:NMTOKEN"/>
184      <xs:attribute name="width"/>
185    </xs:complexType>
186  </xs:element>
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204  <xs:element name="flicks">
205    <xs:complexType>
206      <xs:sequence>
207        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
208        <xs:element maxOccurs="unbounded" minOccurs="0" ref="flick"/>
209        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
210      </xs:sequence>
211    </xs:complexType>
212  </xs:element>
213  <xs:element name="flick">
214    <xs:complexType>
215      <xs:sequence>
216        <xs:element maxOccurs="unbounded" ref="flickSegment"/>
217        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
218      </xs:sequence>
219      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
220    </xs:complexType>
221  </xs:element>
222
223  <xs:element name="flickSegment">
224    <xs:complexType>
225      <xs:attribute name="directions" type="xs:NMTOKENS" use="required"/>
226      <xs:attribute name="keyId" type="xs:NMTOKEN" use="required"/>
227    </xs:complexType>
228  </xs:element>
229
230
231
232  <xs:element name="forms">
233    <xs:complexType>
234      <xs:sequence>
235        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
236        <xs:element maxOccurs="unbounded" minOccurs="0" ref="form"/>
237        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
238      </xs:sequence>
239    </xs:complexType>
240  </xs:element>
241  <xs:element name="form">
242    <xs:complexType>
243      <xs:sequence>
244        <xs:element maxOccurs="unbounded" ref="scanCodes"/>
245        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
246      </xs:sequence>
247      <xs:attribute name="id" type="xs:NMTOKEN"/>
248    </xs:complexType>
249  </xs:element>
250
251  <xs:element name="scanCodes">
252    <xs:complexType>
253      <xs:attribute name="codes" type="xs:NMTOKENS" use="required"/>
254    </xs:complexType>
255  </xs:element>
256
257
258  <xs:element name="layers">
259    <xs:complexType>
260      <xs:sequence>
261        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
262        <xs:element maxOccurs="unbounded" minOccurs="0" ref="layer"/>
263        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
264      </xs:sequence>
265      <xs:attribute name="formId" type="xs:NMTOKEN" use="required"/>
266      <xs:attribute name="minDeviceWidth"/>
267    </xs:complexType>
268  </xs:element>
269
270
271  <xs:element name="layer">
272    <xs:complexType>
273      <xs:sequence>
274        <xs:element maxOccurs="unbounded" ref="row"/>
275        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
276      </xs:sequence>
277      <xs:attribute name="id" type="xs:NMTOKEN"/>
278      <xs:attribute name="modifiers" type="xs:NMTOKENS"/>
279    </xs:complexType>
280  </xs:element>
281
282
283  <xs:element name="row">
284    <xs:complexType>
285      <xs:attribute name="keys" type="xs:NMTOKENS" use="required"/>
286    </xs:complexType>
287  </xs:element>
288
289
290
291  <xs:element name="variables">
292    <xs:complexType>
293      <xs:sequence>
294        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
295        <xs:element maxOccurs="unbounded" minOccurs="0" ref="string"/>
296        <xs:element maxOccurs="unbounded" minOccurs="0" ref="set"/>
297        <xs:element maxOccurs="unbounded" minOccurs="0" ref="uset"/>
298        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
299      </xs:sequence>
300    </xs:complexType>
301  </xs:element>
302  <xs:element name="string">
303    <xs:complexType>
304      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
305      <xs:attribute name="value" use="required"/>
306    </xs:complexType>
307  </xs:element>
308
309
310
311
312  <xs:element name="set">
313    <xs:complexType>
314      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
315      <xs:attribute name="value" use="required"/>
316    </xs:complexType>
317  </xs:element>
318
319
320
321
322  <xs:element name="uset">
323    <xs:complexType>
324      <xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
325      <xs:attribute name="value" use="required"/>
326    </xs:complexType>
327  </xs:element>
328
329
330
331  <xs:element name="transforms">
332    <xs:complexType>
333      <xs:sequence>
334        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
335        <xs:element maxOccurs="unbounded" minOccurs="0" ref="transformGroup"/>
336        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
337      </xs:sequence>
338      <xs:attribute name="type" use="required">
339        <xs:simpleType>
340          <xs:restriction base="xs:token">
341            <xs:enumeration value="simple"/>
342            <xs:enumeration value="backspace"/>
343          </xs:restriction>
344        </xs:simpleType>
345      </xs:attribute>
346    </xs:complexType>
347  </xs:element>
348
349  <xs:element name="transformGroup">
350    <xs:complexType>
351      <xs:sequence>
352        <xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
353        <xs:choice>
354          <xs:element maxOccurs="unbounded" minOccurs="0" ref="transform"/>
355          <xs:element maxOccurs="unbounded" minOccurs="0" ref="reorder"/>
356        </xs:choice>
357        <xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
358      </xs:sequence>
359    </xs:complexType>
360  </xs:element>
361  <xs:element name="transform">
362    <xs:complexType>
363      <xs:attribute name="from" use="required"/>
364      <xs:attribute name="to"/>
365    </xs:complexType>
366  </xs:element>
367
368
369
370
371
372
373
374  <xs:element name="reorder">
375    <xs:complexType>
376      <xs:attribute name="before"/>
377      <xs:attribute name="from" use="required"/>
378      <xs:attribute name="order"/>
379      <xs:attribute name="tertiary"/>
380      <xs:attribute name="tertiaryBase"/>
381      <xs:attribute name="preBase"/>
382    </xs:complexType>
383  </xs:element>
384  <xs:complexType mixed="true" name="any">
385    <xs:sequence>
386      <xs:any maxOccurs="unbounded" minOccurs="0" processContents="strict"/>
387    </xs:sequence>
388  </xs:complexType>
389</xs:schema>