blob: 6cad096c41b4e83609743cd8d451c256466a3e71 [file] [log] [blame]
<?xml version="1.0" encoding="UTF-8" ?>
<!--
Note: The .xsd files are a Technology Preview. They are subject to change or removal in future CLDR versions.
Note: DTD @-annotations are not currently converted to .xsd. For full CLDR file validation, use the DTD and CLDR tools.
-->
<!--
Copyright © 1991-2024 Unicode, Inc.
For terms of use, see http://www.unicode.org/copyright.html
SPDX-License-Identifier: Unicode-3.0
CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
--><!--
Note: This DTD is not compatible with prior versions of the keyboard data.
See ldmlKeyboard.dtd and CLDR v43 and prior.
--><xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema" elementFormDefault="qualified">
<xs:element name="keyboard3">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element minOccurs="0" ref="locales"/>
<xs:element minOccurs="0" ref="version"/>
<xs:element ref="info"/>
<xs:element minOccurs="0" ref="settings"/>
<xs:element minOccurs="0" ref="displays"/>
<xs:element minOccurs="0" ref="keys"/>
<xs:element minOccurs="0" ref="flicks"/>
<xs:element minOccurs="0" ref="forms"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="layers"/>
<xs:element minOccurs="0" ref="variables"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="transforms"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="locale" use="required"/>
<xs:attribute name="conformsTo" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="45"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="import">
<xs:complexType>
<xs:attribute name="path" use="required"/>
<xs:attribute name="base">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="cldr"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="locales">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="locale"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="locale">
<xs:complexType>
<xs:attribute name="id" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="version">
<xs:complexType>
<xs:attribute name="number"/>
<xs:attribute default="45" name="cldrVersion">
<xs:simpleType>
<xs:restriction base="xs:string">
<xs:enumeration value="45"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="info">
<xs:complexType>
<xs:attribute name="name" use="required"/>
<xs:attribute name="author"/>
<xs:attribute name="layout"/>
<xs:attribute name="indicator"/>
</xs:complexType>
</xs:element>
<xs:element name="settings">
<xs:complexType>
<xs:attribute name="normalization">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="disabled"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="displays">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="display"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="displayOptions"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="display">
<xs:complexType>
<xs:attribute name="keyId" type="xs:NMTOKEN"/>
<xs:attribute name="output"/>
<xs:attribute name="display" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="displayOptions">
<xs:complexType>
<xs:attribute name="baseCharacter"/>
</xs:complexType>
</xs:element>
<xs:element name="special" type="any"/>
<xs:element name="keys">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="key"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="key">
<xs:complexType>
<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="flickId" type="xs:NMTOKEN"/>
<xs:attribute name="gap">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="output"/>
<xs:attribute name="longPressKeyIds" type="xs:NMTOKENS"/>
<xs:attribute name="longPressDefaultKeyId" type="xs:NMTOKEN"/>
<xs:attribute name="multiTapKeyIds" type="xs:NMTOKENS"/>
<xs:attribute name="stretch">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="true"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
<xs:attribute name="layerId" type="xs:NMTOKEN"/>
<xs:attribute name="width"/>
</xs:complexType>
</xs:element>
<xs:element name="flicks">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="flick"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="flick">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="flickSegment"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="flickSegment">
<xs:complexType>
<xs:attribute name="directions" type="xs:NMTOKENS" use="required"/>
<xs:attribute name="keyId" type="xs:NMTOKEN" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="forms">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="form"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="form">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="scanCodes"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="id" type="xs:NMTOKEN"/>
</xs:complexType>
</xs:element>
<xs:element name="scanCodes">
<xs:complexType>
<xs:attribute name="codes" type="xs:NMTOKENS" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="layers">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="layer"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="formId" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="minDeviceWidth"/>
</xs:complexType>
</xs:element>
<xs:element name="layer">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" ref="row"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="id" type="xs:NMTOKEN"/>
<xs:attribute name="modifiers" type="xs:NMTOKENS"/>
</xs:complexType>
</xs:element>
<xs:element name="row">
<xs:complexType>
<xs:attribute name="keys" type="xs:NMTOKENS" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="variables">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="string"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="set"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="uset"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="string">
<xs:complexType>
<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="set">
<xs:complexType>
<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="uset">
<xs:complexType>
<xs:attribute name="id" type="xs:NMTOKEN" use="required"/>
<xs:attribute name="value" use="required"/>
</xs:complexType>
</xs:element>
<xs:element name="transforms">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="transformGroup"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
<xs:attribute name="type" use="required">
<xs:simpleType>
<xs:restriction base="xs:token">
<xs:enumeration value="simple"/>
<xs:enumeration value="backspace"/>
</xs:restriction>
</xs:simpleType>
</xs:attribute>
</xs:complexType>
</xs:element>
<xs:element name="transformGroup">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="import"/>
<xs:choice>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="transform"/>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="reorder"/>
</xs:choice>
<xs:element maxOccurs="unbounded" minOccurs="0" ref="special"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="transform">
<xs:complexType>
<xs:attribute name="from" use="required"/>
<xs:attribute name="to"/>
</xs:complexType>
</xs:element>
<xs:element name="reorder">
<xs:complexType>
<xs:attribute name="before"/>
<xs:attribute name="from" use="required"/>
<xs:attribute name="order"/>
<xs:attribute name="tertiary"/>
<xs:attribute name="tertiaryBase"/>
<xs:attribute name="preBase"/>
</xs:complexType>
</xs:element>
<xs:complexType mixed="true" name="any">
<xs:sequence>
<xs:any maxOccurs="unbounded" minOccurs="0" processContents="strict"/>
</xs:sequence>
</xs:complexType>
</xs:schema>