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>