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>