xref: /aosp_15_r20/external/cldr/common/dtd/ldmlSupplemental.dtd (revision 912701f9769bb47905792267661f0baf2b85bed5)
1<!--
2Copyright © 1991-2024 Unicode, Inc.
3For terms of use, see http://www.unicode.org/copyright.html
4SPDX-License-Identifier: Unicode-3.0
5CLDR data files are interpreted according to the LDML specification (http://unicode.org/reports/tr35/)
6-->
7
8<!ELEMENT supplementalData ( version, generation?, cldrVersion?, currencyData?, territoryContainment?, subdivisionContainment?, languageData?, territoryInfo?, postalCodeData?, calendarData?, calendarPreferenceData?, weekData?, timeData?, measurementData?, unitIdComponents?, unitPrefixes?, unitConstants*, unitQuantities*, convertUnits*, unitPreferenceData?, timezoneData?, characters?, transforms?, metadata?, codeMappings?, parentLocales*, personNamesDefaults?, likelySubtags?, metazoneInfo?, plurals?, telephoneCodeData?, numberingSystems?, bcp47KeywordMappings?, gender?, references?, languageMatching?, dayPeriodRuleSet*, metaZones?, primaryZones?, windowsZones?, coverageLevels?, idValidity?, rgScope?, languageGroups?, grammaticalData? ) >
9
10<!ELEMENT version EMPTY >
11    <!--@METADATA-->
12<!ATTLIST version number CDATA #REQUIRED >
13    <!--@MATCH:any-->
14    <!--@METADATA-->
15<!ATTLIST version cldrVersion CDATA #FIXED "45" >
16    <!--@MATCH:version-->
17    <!--@VALUE-->
18<!ATTLIST version unicodeVersion CDATA #FIXED "15.1.0" >
19    <!--@MATCH:version-->
20    <!--@VALUE-->
21
22<!ELEMENT generation EMPTY >
23    <!--@METADATA-->
24    <!--@DEPRECATED-->
25<!ATTLIST generation date CDATA #REQUIRED >
26    <!--@VALUE-->
27    <!--@DEPRECATED-->
28
29<!ELEMENT cldrVersion EMPTY >
30    <!--@DEPRECATED-->
31<!ATTLIST cldrVersion version CDATA #REQUIRED >
32    <!--@METADATA-->
33    <!--@DEPRECATED-->
34
35<!ELEMENT currencyData ( fractions*, region+ ) >
36<!ATTLIST currencyData draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
37    <!--@METADATA-->
38    <!--@DEPRECATED-->
39
40<!ELEMENT fractions ( info+ ) >
41<!ATTLIST fractions draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
42    <!--@METADATA-->
43    <!--@DEPRECATED-->
44
45<!ELEMENT info EMPTY >
46<!ATTLIST info iso4217 NMTOKEN #REQUIRED >
47    <!--@MATCH:or/validity/currency||literal/DEFAULT-->
48<!ATTLIST info digits NMTOKEN #IMPLIED >
49    <!--@MATCH:range/0~5-->
50    <!--@VALUE-->
51<!ATTLIST info rounding NMTOKEN #IMPLIED >
52    <!--@MATCH:range/0~5-->
53    <!--@VALUE-->
54<!ATTLIST info cashDigits NMTOKEN #IMPLIED >
55    <!--@MATCH:range/0~100-->
56    <!--@VALUE-->
57<!ATTLIST info cashRounding NMTOKEN #IMPLIED >
58    <!--@MATCH:literal/0, 5, 50-->
59    <!--@VALUE-->
60<!ATTLIST info draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
61    <!--@METADATA-->
62    <!--@DEPRECATED:true, false-->
63<!ATTLIST info references CDATA #IMPLIED >
64    <!--@METADATA-->
65
66<!ELEMENT region ( currency* ) >
67<!ATTLIST region iso3166 NMTOKEN #REQUIRED >
68    <!--@MATCH:validity/region-->
69<!ATTLIST region draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
70    <!--@METADATA-->
71    <!--@DEPRECATED-->
72
73<!ELEMENT currency ( alternate* ) >
74<!ATTLIST currency before NMTOKEN #IMPLIED >
75    <!-- use from and to instead. -->
76    <!--@VALUE-->
77    <!--@DEPRECATED-->
78<!ATTLIST currency iso4217 NMTOKEN #REQUIRED >
79    <!--@MATCH:validity/currency-->
80<!ATTLIST currency from NMTOKEN #IMPLIED >
81    <!--@MATCH:time/yyyy-MM-dd-->
82<!ATTLIST currency to NMTOKEN #IMPLIED >
83    <!--@MATCH:time/yyyy-MM-dd-->
84<!ATTLIST currency tz CDATA #IMPLIED >
85    <!--@MATCH:bcp47/tz-->
86    <!--@VALUE-->
87<!ATTLIST currency to-tz CDATA #IMPLIED >
88    <!--@MATCH:bcp47/tz-->
89    <!--@VALUE-->
90<!ATTLIST currency digits NMTOKEN #IMPLIED >
91    <!--@VALUE-->
92<!ATTLIST currency rounding NMTOKEN #IMPLIED >
93    <!--@VALUE-->
94<!ATTLIST currency cashRounding NMTOKEN #IMPLIED >
95    <!--@VALUE-->
96<!ATTLIST currency tender (true | false) #IMPLIED >
97    <!--@VALUE-->
98<!ATTLIST currency draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
99    <!--@METADATA-->
100    <!--@DEPRECATED-->
101<!ATTLIST currency references CDATA #IMPLIED >
102    <!--@METADATA-->
103
104<!ELEMENT alternate EMPTY >
105    <!-- use from and to instead. -->
106    <!--@DEPRECATED-->
107<!ATTLIST alternate iso4217 NMTOKEN #REQUIRED >
108    <!--@DEPRECATED-->
109
110<!ELEMENT territoryContainment ( group* ) >
111
112<!ELEMENT group EMPTY >
113<!ATTLIST group type NMTOKEN #REQUIRED >
114    <!--@MATCH:validity/region-->
115<!ATTLIST group contains NMTOKENS #IMPLIED >
116    <!--@MATCH:set/validity/region-->
117    <!--@VALUE-->
118<!ATTLIST group grouping (true | false) #IMPLIED >
119    <!--@VALUE-->
120<!ATTLIST group status (deprecated | grouping) #IMPLIED >
121<!ATTLIST group draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
122    <!--@METADATA-->
123    <!--@DEPRECATED:true, false-->
124<!ATTLIST group references CDATA #IMPLIED >
125    <!--@METADATA-->
126
127<!ELEMENT subdivisionContainment ( subgroup* ) >
128
129<!ELEMENT subgroup EMPTY >
130<!ATTLIST subgroup type NMTOKEN #REQUIRED >
131    <!--@MATCH:or/validity/region||validity/subdivision-->
132<!ATTLIST subgroup subtype NMTOKEN #IMPLIED >
133    <!--@DEPRECATED-->
134<!ATTLIST subgroup contains NMTOKENS #IMPLIED >
135    <!--@MATCH:set/or/validity/subdivision||literal/itca, itnu, itor, itsd, itss, no01, no02, no03, no04, no05, no06, no07, no08, no09, no10, no11, no12, no14, no15, no18, no19, no20, no21, no22, no50-->
136    <!--@VALUE-->
137
138<!ELEMENT languageData ( language* ) >
139
140<!ELEMENT language EMPTY >
141<!ATTLIST language type NMTOKEN #REQUIRED >
142    <!--@MATCH:set/validity/language-->
143<!ATTLIST language scripts NMTOKENS #IMPLIED >
144    <!--@MATCH:set/validity/script-->
145    <!--@VALUE-->
146<!ATTLIST language territories NMTOKENS #IMPLIED >
147    <!--@MATCH:set/validity/region-->
148    <!--@VALUE-->
149<!ATTLIST language variants NMTOKENS #IMPLIED >
150    <!--@VALUE-->
151<!ATTLIST language draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
152    <!--@METADATA-->
153    <!--@DEPRECATED:true, false-->
154<!ATTLIST language references CDATA #IMPLIED >
155    <!--@METADATA-->
156<!ATTLIST language alt NMTOKENS #IMPLIED >
157    <!--@MATCH:literal/secondary, variant-->
158
159<!ELEMENT territoryInfo ( territory* ) >
160<!ATTLIST territoryInfo draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
161    <!--@METADATA-->
162    <!--@DEPRECATED-->
163<!ATTLIST territoryInfo references CDATA #IMPLIED >
164    <!--@METADATA-->
165<!ATTLIST territoryInfo alt NMTOKENS #IMPLIED >
166    <!--@MATCH:literal/variant-->
167
168<!ELEMENT territory ( languagePopulation* ) >
169<!ATTLIST territory type NMTOKEN #REQUIRED >
170    <!--@MATCH:validity/region-->
171<!ATTLIST territory gdp NMTOKEN #REQUIRED >
172    <!--@MATCH:range/0~100000000000000-->
173    <!--@VALUE-->
174<!ATTLIST territory literacyPercent NMTOKEN #REQUIRED >
175    <!--@MATCH:range/0.0~100.0-->
176    <!--@VALUE-->
177<!ATTLIST territory population NMTOKEN #REQUIRED >
178    <!--@MATCH:range/0~10000000000-->
179    <!--@VALUE-->
180<!ATTLIST territory draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
181    <!--@METADATA-->
182    <!--@DEPRECATED-->
183<!ATTLIST territory references CDATA #IMPLIED >
184    <!--@MATCH:any-->
185    <!--@METADATA-->
186<!ATTLIST territory alt NMTOKENS #IMPLIED >
187    <!--@MATCH:literal/variant-->
188
189<!ELEMENT languagePopulation EMPTY >
190<!ATTLIST languagePopulation type NMTOKEN #REQUIRED >
191    <!--@MATCH:validity/locale-->
192<!ATTLIST languagePopulation literacyPercent NMTOKEN #IMPLIED >
193    <!--@MATCH:range/0~100-->
194    <!--@VALUE-->
195<!ATTLIST languagePopulation writingPercent NMTOKEN #IMPLIED >
196    <!--@MATCH:range/0~100-->
197    <!--@VALUE-->
198<!ATTLIST languagePopulation populationPercent NMTOKEN #REQUIRED >
199    <!--@MATCH:range/0.0~100.0-->
200    <!--@VALUE-->
201<!ATTLIST languagePopulation officialStatus (de_facto_official | official | official_regional | official_minority) #IMPLIED >
202    <!--@VALUE-->
203<!ATTLIST languagePopulation draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
204    <!--@METADATA-->
205    <!--@DEPRECATED:true, false-->
206<!ATTLIST languagePopulation references CDATA #IMPLIED >
207    <!--@MATCH:any-->
208    <!--@METADATA-->
209<!ATTLIST languagePopulation alt NMTOKENS #IMPLIED >
210    <!--@MATCH:literal/variant-->
211
212<!ELEMENT postalCodeData ( postCodeRegex* ) >
213    <!--@DEPRECATED-->
214
215<!ELEMENT postCodeRegex ( #PCDATA ) >
216    <!--@DEPRECATED-->
217<!ATTLIST postCodeRegex territoryId NMTOKEN #REQUIRED >
218    <!--@DEPRECATED-->
219<!ATTLIST postCodeRegex draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
220    <!--@METADATA-->
221    <!--@DEPRECATED-->
222
223<!ELEMENT calendarData ( calendar* ) >
224
225<!ELEMENT calendar ( calendarSystem?, inheritEras?, eras? ) >
226<!ATTLIST calendar type NMTOKEN #REQUIRED >
227    <!--@MATCH:bcp47/ca-->
228<!ATTLIST calendar territories NMTOKENS #IMPLIED >
229    <!-- use ordering attribute in calendarPreference element instead. -->
230    <!--@VALUE-->
231    <!--@DEPRECATED-->
232<!ATTLIST calendar draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
233    <!--@METADATA-->
234    <!--@DEPRECATED-->
235<!ATTLIST calendar references CDATA #IMPLIED >
236    <!--@METADATA-->
237<!ATTLIST calendar alt NMTOKENS #IMPLIED >
238    <!--@MATCH:literal/variant-->
239
240<!ELEMENT calendarSystem EMPTY >
241<!ATTLIST calendarSystem type (solar | lunar | lunisolar | other) #REQUIRED >
242    <!--@VALUE-->
243<!ATTLIST calendarSystem references CDATA #IMPLIED >
244    <!--@METADATA-->
245
246<!ELEMENT inheritEras EMPTY >
247<!ATTLIST inheritEras calendar NMTOKEN #REQUIRED >
248    <!--@MATCH:bcp47/ca-->
249    <!--@VALUE-->
250
251<!ELEMENT eras ( era* ) >
252<!ATTLIST eras references CDATA #IMPLIED >
253    <!--@METADATA-->
254
255<!ELEMENT era EMPTY >
256<!ATTLIST era type NMTOKEN #REQUIRED >
257    <!--@MATCH:range/0~250-->
258<!ATTLIST era start CDATA #IMPLIED >
259    <!--@MATCH:time/yyyy-MM-dd-->
260    <!--@VALUE-->
261<!ATTLIST era end CDATA #IMPLIED >
262    <!--@MATCH:time/yyyy-MM-dd-->
263    <!--@VALUE-->
264<!ATTLIST era code NMTOKEN #IMPLIED >
265    <!--@MATCH:regex/[a-z0-9]{3,8}(\-[a-z0-9]{3,8})*-->
266    <!--@VALUE-->
267<!ATTLIST era aliases NMTOKENS #IMPLIED >
268    <!--@MATCH:set/regex/[a-z0-9]{2,8}(\-[a-z0-9]{3,8})*-->
269    <!--@VALUE-->
270<!ATTLIST era named (true | false) #IMPLIED >
271    <!--@VALUE-->
272
273<!ELEMENT calendarPreferenceData ( calendarPreference* ) >
274
275<!ELEMENT calendarPreference EMPTY >
276<!ATTLIST calendarPreference territories NMTOKENS #REQUIRED >
277    <!--@MATCH:set/validity/region-->
278<!ATTLIST calendarPreference ordering NMTOKENS #REQUIRED >
279    <!--@MATCH:set/bcp47/ca-->
280    <!--@VALUE-->
281
282<!ELEMENT weekData ( minDays*, firstDay*, weekendStart*, weekendEnd*, weekOfPreference* ) >
283
284<!ELEMENT minDays EMPTY >
285<!ATTLIST minDays count (1 | 2 | 3 | 4 | 5 | 6 | 7) #REQUIRED >
286<!ATTLIST minDays territories NMTOKENS #REQUIRED >
287    <!--@MATCH:set/validity/region-->
288    <!--@VALUE-->
289<!ATTLIST minDays draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
290    <!--@METADATA-->
291    <!--@DEPRECATED:true, false-->
292<!ATTLIST minDays references CDATA #IMPLIED >
293    <!--@METADATA-->
294<!ATTLIST minDays alt NMTOKENS #IMPLIED >
295    <!--@MATCH:literal/variant-->
296
297<!ELEMENT firstDay EMPTY >
298<!ATTLIST firstDay day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
299<!ATTLIST firstDay territories NMTOKENS #REQUIRED >
300    <!--@MATCH:set/validity/region-->
301    <!--@VALUE-->
302<!ATTLIST firstDay draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
303    <!--@METADATA-->
304    <!--@DEPRECATED:true, false-->
305<!ATTLIST firstDay references CDATA #IMPLIED >
306    <!--@MATCH:any-->
307    <!--@METADATA-->
308<!ATTLIST firstDay alt NMTOKENS #IMPLIED >
309    <!--@MATCH:literal/variant-->
310
311<!ELEMENT weekendStart EMPTY >
312<!ATTLIST weekendStart day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
313<!ATTLIST weekendStart territories NMTOKENS #REQUIRED >
314    <!--@MATCH:set/validity/region-->
315    <!--@VALUE-->
316<!ATTLIST weekendStart draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
317    <!--@METADATA-->
318    <!--@DEPRECATED:true, false-->
319<!ATTLIST weekendStart references CDATA #IMPLIED >
320    <!--@METADATA-->
321<!ATTLIST weekendStart alt NMTOKENS #IMPLIED >
322    <!--@MATCH:literal/variant-->
323
324<!ELEMENT weekendEnd EMPTY >
325<!ATTLIST weekendEnd day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
326<!ATTLIST weekendEnd territories NMTOKENS #REQUIRED >
327    <!--@MATCH:set/validity/region-->
328    <!--@VALUE-->
329<!ATTLIST weekendEnd draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
330    <!--@METADATA-->
331    <!--@DEPRECATED:true, false-->
332<!ATTLIST weekendEnd references CDATA #IMPLIED >
333    <!--@METADATA-->
334<!ATTLIST weekendEnd alt NMTOKENS #IMPLIED >
335    <!--@MATCH:literal/variant-->
336
337<!ELEMENT weekOfPreference EMPTY >
338<!ATTLIST weekOfPreference locales NMTOKENS #REQUIRED >
339    <!--@MATCH:set/validity/locale-->
340<!ATTLIST weekOfPreference ordering NMTOKENS #REQUIRED >
341    <!--@MATCH:set/literal/weekOfDate, weekOfInterval, weekOfMonth, weekOfYear-->
342    <!--@VALUE-->
343
344<!ELEMENT timeData ( hours* ) >
345
346<!ELEMENT hours EMPTY >
347<!ATTLIST hours allowed NMTOKENS #REQUIRED >
348    <!--@MATCH:set/literal/H, h, K, k, hB, hb-->
349<!ATTLIST hours preferred NMTOKEN #REQUIRED >
350    <!--@MATCH:literal/H, h-->
351<!ATTLIST hours regions NMTOKENS #REQUIRED >
352    <!--@MATCH:set/or/validity/region||validity/locale-->
353    <!--@VALUE-->
354<!ATTLIST hours draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
355    <!--@METADATA-->
356<!ATTLIST hours references CDATA #IMPLIED >
357    <!--@METADATA-->
358
359<!ELEMENT measurementData ( measurementSystem*, paperSize* ) >
360
361<!ELEMENT measurementSystem EMPTY >
362<!ATTLIST measurementSystem type (metric | US | UK) #REQUIRED >
363<!ATTLIST measurementSystem category (temperature) #IMPLIED >
364<!ATTLIST measurementSystem territories NMTOKENS #REQUIRED >
365    <!--@MATCH:set/validity/region-->
366    <!--@VALUE-->
367<!ATTLIST measurementSystem draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
368    <!--@METADATA-->
369    <!--@DEPRECATED:true, false-->
370<!ATTLIST measurementSystem references CDATA #IMPLIED >
371    <!--@METADATA-->
372<!ATTLIST measurementSystem alt NMTOKENS #IMPLIED >
373    <!--@MATCH:literal/variant-->
374
375<!ELEMENT paperSize EMPTY >
376<!ATTLIST paperSize type (A4 | US-Letter) #REQUIRED >
377<!ATTLIST paperSize territories NMTOKENS #REQUIRED >
378    <!--@MATCH:set/validity/region-->
379    <!--@VALUE-->
380<!ATTLIST paperSize draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
381    <!--@METADATA-->
382    <!--@DEPRECATED:true, false-->
383<!ATTLIST paperSize references CDATA #IMPLIED >
384    <!--@METADATA-->
385<!ATTLIST paperSize alt NMTOKENS #IMPLIED >
386    <!--@MATCH:literal/variant-->
387
388<!ELEMENT unitIdComponents ( unitIdComponent* ) >
389
390<!ELEMENT unitIdComponent EMPTY >
391<!ATTLIST unitIdComponent type NMTOKEN #REQUIRED >
392    <!--@MATCH:literal/prefix, suffix, power, and, per-->
393<!ATTLIST unitIdComponent values NMTOKENS #REQUIRED >
394    <!--@MATCH:set/regex/[a-z]+[0-9]*-->
395    <!--@VALUE-->
396
397<!ELEMENT unitPrefixes ( unitPrefix* ) >
398
399<!ELEMENT unitPrefix EMPTY >
400    <!-- <unitPrefix type='quecto' symbol='q' power10='-30'>
401		<unitPrefix type='kibi' symbol='Ki' power2='10'> -->
402<!ATTLIST unitPrefix type NMTOKEN #REQUIRED >
403    <!--@MATCH:regex/[A-Za-z]{3,6}-->
404<!ATTLIST unitPrefix symbol NMTOKEN #REQUIRED >
405    <!--@MATCH:regex/[a-zA-Zμ]{1,2}-->
406    <!--@VALUE-->
407<!ATTLIST unitPrefix power10 NMTOKEN #IMPLIED >
408    <!--@MATCH:regex/-?[0-9]{1,2}-->
409    <!--@VALUE-->
410<!ATTLIST unitPrefix power2 NMTOKEN #IMPLIED >
411    <!--@MATCH:regex/[0-9]0-->
412    <!--@VALUE-->
413
414<!ELEMENT unitConstants ( unitConstant* ) >
415
416<!ELEMENT unitConstant EMPTY >
417<!ATTLIST unitConstant constant NMTOKEN #REQUIRED >
418    <!--@MATCH:regex/[A-Za-z][_A-Za-z0-9]*-->
419<!ATTLIST unitConstant value CDATA #REQUIRED >
420    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
421    <!--@VALUE-->
422<!ATTLIST unitConstant status NMTOKEN #IMPLIED >
423    <!--@MATCH:literal/approximate, exact-->
424    <!--@VALUE-->
425<!ATTLIST unitConstant description CDATA #IMPLIED >
426    <!--@MATCH:any-->
427    <!--@METADATA-->
428
429<!ELEMENT unitQuantities ( unitQuantity* ) >
430
431<!ELEMENT unitQuantity EMPTY >
432<!ATTLIST unitQuantity baseUnit NMTOKEN #REQUIRED >
433    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
434<!ATTLIST unitQuantity quantity NMTOKENS #REQUIRED >
435    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
436    <!--@VALUE-->
437<!ATTLIST unitQuantity status NMTOKEN #IMPLIED >
438    <!--@MATCH:regex/simple-->
439    <!--@VALUE-->
440<!ATTLIST unitQuantity description CDATA #IMPLIED >
441    <!--@MATCH:any-->
442    <!--@METADATA-->
443
444<!ELEMENT convertUnits ( convertUnit* ) >
445
446<!ELEMENT convertUnit EMPTY >
447<!ATTLIST convertUnit source NMTOKEN #REQUIRED >
448    <!--@MATCH:regex/(100-)?[A-Za-z][-A-Za-z0-9]*-->
449<!ATTLIST convertUnit baseUnit NMTOKEN #REQUIRED >
450    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
451    <!--@VALUE-->
452<!ATTLIST convertUnit factor CDATA #IMPLIED >
453    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
454    <!--@VALUE-->
455<!ATTLIST convertUnit offset CDATA #IMPLIED >
456    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
457    <!--@VALUE-->
458<!ATTLIST convertUnit special NMTOKEN #IMPLIED >
459    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
460    <!--@VALUE-->
461<!ATTLIST convertUnit systems NMTOKENS #IMPLIED >
462    <!--@MATCH:set/literal/si, si_acceptable, metric, metric_adjacent, ussystem, uksystem, jpsystem, astronomical, person_age, other, prefixable-->
463    <!--@VALUE-->
464<!ATTLIST convertUnit description CDATA #IMPLIED >
465    <!--@MATCH:any-->
466    <!--@METADATA-->
467
468<!ELEMENT unitPreferenceData ( unitPreferences* ) >
469<!ATTLIST unitPreferenceData draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
470    <!--@METADATA-->
471
472<!ELEMENT unitPreferences ( unitPreference* ) >
473<!ATTLIST unitPreferences category NMTOKEN #REQUIRED >
474    <!--@MATCH:regex/[a-z]+([-][a-z]+)*-->
475<!ATTLIST unitPreferences usage NMTOKENS #REQUIRED >
476    <!--@MATCH:regex/[a-z]+([-][a-z]+)*-->
477<!ATTLIST unitPreferences scope (small) #IMPLIED >
478    <!--@DEPRECATED-->
479<!ATTLIST unitPreferences draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
480    <!--@METADATA-->
481
482<!ELEMENT unitPreference ( #PCDATA ) >
483    <!--@ORDERED-->
484<!ATTLIST unitPreference regions NMTOKENS #REQUIRED >
485    <!--@MATCH:set/validity/region-->
486<!ATTLIST unitPreference geq NMTOKEN #IMPLIED >
487    <!--@MATCH:any-->
488<!ATTLIST unitPreference skeleton CDATA #IMPLIED >
489    <!--@MATCH:any-->
490    <!--@VALUE-->
491<!ATTLIST unitPreference draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
492    <!--@METADATA-->
493<!ATTLIST unitPreference references CDATA #IMPLIED >
494    <!--@METADATA-->
495<!ATTLIST unitPreference alt NMTOKENS #IMPLIED >
496    <!--@MATCH:literal/informal, variant-->
497
498<!ELEMENT timezoneData ( mapTimezones*, zoneFormatting* ) >
499    <!--@DEPRECATED-->
500
501<!ELEMENT mapTimezones ( mapZone* ) >
502<!ATTLIST mapTimezones type NMTOKEN #IMPLIED >
503    <!--@MATCH:literal/metazones-->
504<!ATTLIST mapTimezones otherVersion CDATA #IMPLIED >
505    <!--@MATCH:any-->
506    <!--@METADATA-->
507<!ATTLIST mapTimezones typeVersion CDATA #IMPLIED >
508    <!--@MATCH:regex/[0-9]{4}[a-z]+-->
509    <!--@METADATA-->
510<!ATTLIST mapTimezones references CDATA #IMPLIED >
511    <!--@MATCH:any-->
512    <!--@METADATA-->
513
514<!ELEMENT mapZone EMPTY >
515<!ATTLIST mapZone type CDATA #REQUIRED >
516    <!--@MATCH:set/bcp47/tz-->
517    <!--@VALUE-->
518<!ATTLIST mapZone other CDATA #REQUIRED >
519    <!--@MATCH:any-->
520<!ATTLIST mapZone territory CDATA #IMPLIED >
521    <!--@MATCH:validity/region-->
522<!ATTLIST mapZone references CDATA #IMPLIED >
523    <!--@MATCH:any-->
524    <!--@METADATA-->
525
526<!ELEMENT zoneFormatting ( zoneItem* ) >
527    <!--@DEPRECATED-->
528<!ATTLIST zoneFormatting multizone NMTOKENS #REQUIRED >
529    <!--@VALUE-->
530    <!--@DEPRECATED-->
531<!ATTLIST zoneFormatting tzidVersion CDATA #IMPLIED >
532    <!--@METADATA-->
533    <!--@DEPRECATED-->
534<!ATTLIST zoneFormatting references CDATA #IMPLIED >
535    <!--@METADATA-->
536    <!--@DEPRECATED-->
537
538<!ELEMENT zoneItem EMPTY >
539    <!--@DEPRECATED-->
540<!ATTLIST zoneItem type CDATA #REQUIRED >
541    <!--@DEPRECATED-->
542<!ATTLIST zoneItem territory NMTOKEN #REQUIRED >
543    <!--@VALUE-->
544    <!--@DEPRECATED-->
545<!ATTLIST zoneItem aliases CDATA #IMPLIED >
546    <!--@VALUE-->
547    <!--@DEPRECATED-->
548<!ATTLIST zoneItem references CDATA #IMPLIED >
549    <!--@METADATA-->
550    <!--@DEPRECATED-->
551
552<!ELEMENT characters ( character-fallback* ) >
553<!ATTLIST characters draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
554    <!--@METADATA-->
555    <!--@DEPRECATED-->
556
557<!ELEMENT character-fallback ( character* ) >
558
559<!ELEMENT character ( substitute* ) >
560<!ATTLIST character value CDATA #REQUIRED >
561    <!--@MATCH:any-->
562<!ATTLIST character draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
563    <!--@METADATA-->
564    <!--@DEPRECATED-->
565<!ATTLIST character standard CDATA #IMPLIED >
566    <!--@METADATA-->
567    <!--@DEPRECATED-->
568<!ATTLIST character references CDATA #IMPLIED >
569    <!--@METADATA-->
570<!ATTLIST character alt NMTOKENS #IMPLIED >
571    <!--@MATCH:literal/variant-->
572
573<!ELEMENT substitute ( #PCDATA ) >
574    <!--@ORDERED-->
575<!ATTLIST substitute draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
576    <!--@METADATA-->
577    <!--@DEPRECATED:true, false-->
578<!ATTLIST substitute standard CDATA #IMPLIED >
579    <!--@METADATA-->
580    <!--@DEPRECATED-->
581<!ATTLIST substitute references CDATA #IMPLIED >
582    <!--@METADATA-->
583<!ATTLIST substitute alt NMTOKENS #IMPLIED >
584    <!--@MATCH:literal/variant-->
585
586<!ELEMENT transforms ( transform* ) >
587
588<!ELEMENT transform ( ( comment | tRule )* ) >
589<!ATTLIST transform source CDATA #IMPLIED >
590    <!--@MATCH:any/TODO-->
591<!ATTLIST transform target CDATA #IMPLIED >
592    <!--@MATCH:any/TODO-->
593<!ATTLIST transform variant CDATA #IMPLIED >
594    <!--@MATCH:any/TODO-->
595<!ATTLIST transform direction (forward | backward | both) "both" >
596<!ATTLIST transform alias CDATA #IMPLIED >
597    <!--@MATCH:any/TODO-->
598    <!--@VALUE-->
599<!ATTLIST transform backwardAlias CDATA #IMPLIED >
600    <!--@MATCH:any/TODO-->
601    <!--@VALUE-->
602<!ATTLIST transform visibility (internal | external) "external" >
603    <!--@VALUE-->
604<!ATTLIST transform draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
605    <!--@METADATA-->
606<!ATTLIST transform references CDATA #IMPLIED >
607    <!--@METADATA-->
608<!ATTLIST transform alt NMTOKENS #IMPLIED >
609    <!--@MATCH:literal/variant-->
610
611<!ELEMENT comment ( #PCDATA ) >
612    <!--@ORDERED-->
613    <!--@METADATA-->
614
615<!ELEMENT tRule ( #PCDATA ) >
616    <!--@ORDERED-->
617
618<!ELEMENT metadata ( attributeOrder?, elementOrder?, serialElements?, suppress?, validity?, alias?, deprecated?, distinguishing?, blocking?, coverageAdditions?, skipDefaultLocale?, defaultContent? ) >
619<!ATTLIST metadata draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
620    <!--@METADATA-->
621    <!--@DEPRECATED-->
622
623<!ELEMENT attributeOrder ( #PCDATA ) >
624    <!--@DEPRECATED-->
625<!ATTLIST attributeOrder draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
626    <!--@METADATA-->
627    <!--@DEPRECATED-->
628
629<!ELEMENT elementOrder ( #PCDATA ) >
630    <!--@DEPRECATED-->
631<!ATTLIST elementOrder draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
632    <!--@METADATA-->
633    <!--@DEPRECATED-->
634
635<!ELEMENT serialElements ( #PCDATA ) >
636    <!--@METADATA-->
637<!ATTLIST serialElements draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
638    <!--@METADATA-->
639    <!--@DEPRECATED:true, false-->
640
641<!ELEMENT suppress ( attributes* ) >
642    <!--@METADATA-->
643<!ATTLIST suppress draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
644    <!--@METADATA-->
645    <!--@DEPRECATED-->
646
647<!ELEMENT attributes EMPTY >
648    <!--@ORDERED-->
649<!ATTLIST attributes element NMTOKENS #IMPLIED >
650    <!--@MATCH:any-->
651    <!--@VALUE-->
652<!ATTLIST attributes attribute NMTOKENS #IMPLIED >
653    <!--@MATCH:any-->
654    <!--@VALUE-->
655<!ATTLIST attributes attributeValue CDATA #IMPLIED >
656    <!--@MATCH:any-->
657    <!--@VALUE-->
658<!ATTLIST attributes draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
659    <!--@METADATA-->
660    <!--@DEPRECATED:true, false-->
661
662<!ELEMENT validity ( variable*, attributeValues* ) >
663    <!--@METADATA-->
664<!ATTLIST validity draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
665    <!--@METADATA-->
666    <!--@DEPRECATED-->
667
668<!ELEMENT variable ( #PCDATA ) >
669    <!--@ORDERED-->
670<!ATTLIST variable type NMTOKEN #IMPLIED >
671    <!--@MATCH:any-->
672    <!--@VALUE-->
673<!ATTLIST variable id CDATA #REQUIRED >
674    <!--@MATCH:any-->
675<!ATTLIST variable draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
676    <!--@METADATA-->
677    <!--@DEPRECATED:true, false-->
678
679<!ELEMENT attributeValues ( #PCDATA ) >
680    <!--@ORDERED-->
681<!ATTLIST attributeValues dtds NMTOKEN #IMPLIED >
682    <!--@MATCH:any-->
683<!ATTLIST attributeValues type NMTOKEN #IMPLIED >
684    <!--@MATCH:any-->
685<!ATTLIST attributeValues elements NMTOKENS #IMPLIED >
686    <!--@MATCH:any-->
687    <!--@VALUE-->
688<!ATTLIST attributeValues attributes NMTOKENS #IMPLIED >
689    <!--@MATCH:any-->
690    <!--@VALUE-->
691<!ATTLIST attributeValues order NMTOKEN #IMPLIED >
692    <!--@MATCH:any-->
693    <!--@VALUE-->
694<!ATTLIST attributeValues draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
695    <!--@METADATA-->
696    <!--@DEPRECATED:true, false-->
697
698<!ELEMENT alias ( languageAlias*, scriptAlias*, territoryAlias*, subdivisionAlias*, variantAlias*, zoneAlias*, unitAlias*, usageAlias* ) >
699<!ATTLIST alias draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
700    <!--@METADATA-->
701    <!--@DEPRECATED-->
702
703<!ELEMENT languageAlias EMPTY >
704<!ATTLIST languageAlias type NMTOKEN #REQUIRED >
705    <!--@MATCH:or/validity/locale||literal/aa_saaho, aar, abk, afr, aka, alb, amh, ara, arg, arm, art_lojban, asm, ava, ave, aym, aze, bak, bam, baq, bel, ben, bih, bis, bod, bos, bre, bul, bur, cat, ces, cha, che, chi, chu, chv, cor, cos, cre, cym, cze, dan, deu, div, dut, dzo, ell, eng, epo, est, eus, ewe, fao, fas, fij, fin, fra, fre, fry, ful, geo, ger, gla, gle, glg, glv, gre, grn, guj, hat, hau, hbs, heb, her, hin, hmo, hrv, hun, hye, i_ami, i_bnn, i_hak, i_klingon, i_lux, i_navajo, i_pwn, i_tao, i_tay, i_tsu, ibo, ice, ido, iii, iku, ile, ina, ind, ipk, isl, ita, jav, jpn, kal, kan, kas, kat, kau, kaz, khm, kik, kin, kir, kom, kon, kor, kua, kur, lao, lat, lav, lim, lin, lit, ltz, lub, lug, mac, mah, mal, mao, mar, may, mkd, mlg, mlt, mol, mon, mri, msa, mya, nau, nav, nbl, nde, ndo, nep, nld, nno, no_bokmal, no_nynorsk, no_bok, no_nyn, nob, nor, nya, oci, oji, ori, orm, oss, pan, per, pli, pol, por, pus, que, roh, ron, rum, run, rus, sag, san, scc, scr, sgn_BE_FR, sgn_BE_NL, sgn_CH_DE, sin, slk, slo, slv, sme, smo, sna, snd, som, sot, spa, sqi, srd, srp, ssw, sun, swa, swe, tah, tam, tat, tel, tgk, tgl, tha, tib, tir, ton, tsn, tso, tuk, tur, twi, uig, ukr, urd, uzb, ven, vie, vol, wel, wln, wol, xho, yid, yor, zh_guoyu, zh_hakka, zh_min_nan, zh_xiang, zha, zho, zul, cel_gaulish, i_default, i_enochian, i_mingo, und_aaland, und_bokmal, und_hakka, und_lojban, und_nynorsk, und_saaho, und_xiang, zh_min, en_GB_oed, zh_cmn, zh_cmn_Hans, zh_cmn_Hant, zh_gan, zh_wuu, zh_yue-->
706<!ATTLIST languageAlias replacement NMTOKEN #REQUIRED >
707    <!--@MATCH:or/validity/locale||literal/en_x_i_default, nan_x_zh_min, see_x_i_mingo, und_x_i_enochian, xtg_x_cel_gaulish-->
708    <!--@VALUE-->
709<!ATTLIST languageAlias reason (deprecated | overlong | macrolanguage | legacy | bibliographic) #IMPLIED >
710    <!--@VALUE-->
711
712<!ELEMENT scriptAlias EMPTY >
713<!ATTLIST scriptAlias type NMTOKEN #REQUIRED >
714    <!--@MATCH:validity/script-->
715<!ATTLIST scriptAlias replacement NMTOKEN #REQUIRED >
716    <!--@MATCH:validity/script-->
717    <!--@VALUE-->
718<!ATTLIST scriptAlias reason (deprecated | overlong) #IMPLIED >
719    <!--@VALUE-->
720
721<!ELEMENT territoryAlias EMPTY >
722<!ATTLIST territoryAlias type NMTOKEN #REQUIRED >
723    <!--@MATCH:set/or/validity/region||regex/[0-9]{3}|[A-Z]{3}||literal/CT, DY, FQ, HV, JT, MI, NH, NQ, PC, PU, PZ, RH, UK, VD, WK-->
724<!ATTLIST territoryAlias replacement NMTOKENS #REQUIRED >
725    <!--@MATCH:set/validity/region-->
726    <!--@VALUE-->
727<!ATTLIST territoryAlias reason (deprecated | overlong) #IMPLIED >
728    <!--@VALUE-->
729
730<!ELEMENT subdivisionAlias EMPTY >
731<!ATTLIST subdivisionAlias type NMTOKEN #REQUIRED >
732    <!--@MATCH:validity/subdivision-->
733<!ATTLIST subdivisionAlias replacement NMTOKENS #REQUIRED >
734    <!--@MATCH:set/or/validity/region||validity/subdivision||literal/cnmn, cz663, no50-->
735    <!--@VALUE-->
736<!ATTLIST subdivisionAlias reason (deprecated | overlong) #IMPLIED >
737    <!--@VALUE-->
738
739<!ELEMENT variantAlias EMPTY >
740<!ATTLIST variantAlias type NMTOKEN #REQUIRED >
741    <!--@MATCH:or/validity/variant||literal/aaland, polytoni-->
742<!ATTLIST variantAlias replacement NMTOKEN #REQUIRED >
743    <!--@MATCH:or/validity/variant||validity/region||literal/hy, hyw-->
744    <!--@VALUE-->
745<!ATTLIST variantAlias reason (deprecated | overlong) #IMPLIED >
746    <!--@VALUE-->
747
748<!ELEMENT zoneAlias EMPTY >
749<!ATTLIST zoneAlias type CDATA #REQUIRED >
750    <!--@MATCH:or/bcp47/tz||literal/SystemV/AST4, SystemV/AST4ADT, SystemV/CST6, SystemV/CST6CDT, SystemV/EST5, SystemV/EST5EDT, SystemV/HST10, SystemV/MST7, SystemV/MST7MDT, SystemV/PST8, SystemV/PST8PDT, SystemV/YST9, SystemV/YST9YDT-->
751<!ATTLIST zoneAlias replacement CDATA #REQUIRED >
752    <!--@MATCH:bcp47/tz-->
753    <!--@VALUE-->
754<!ATTLIST zoneAlias reason (deprecated | overlong) #IMPLIED >
755    <!--@VALUE-->
756
757<!ELEMENT unitAlias EMPTY >
758<!ATTLIST unitAlias type NMTOKEN #REQUIRED >
759    <!--@MATCH:validity/short-unit/deprecated-->
760<!ATTLIST unitAlias replacement NMTOKEN #REQUIRED >
761    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
762    <!--@VALUE-->
763<!ATTLIST unitAlias reason (deprecated) #IMPLIED >
764    <!--@VALUE-->
765
766<!ELEMENT usageAlias EMPTY >
767<!ATTLIST usageAlias type NMTOKEN #REQUIRED >
768    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
769<!ATTLIST usageAlias replacement NMTOKEN #REQUIRED >
770    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
771    <!--@VALUE-->
772<!ATTLIST usageAlias reason (deprecated) #IMPLIED >
773    <!--@VALUE-->
774
775<!ELEMENT deprecated ( deprecatedItems* ) >
776    <!--@DEPRECATED-->
777<!ATTLIST deprecated draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
778    <!--@METADATA-->
779    <!--@DEPRECATED-->
780
781<!ELEMENT deprecatedItems EMPTY >
782    <!--@DEPRECATED-->
783<!ATTLIST deprecatedItems type (standard | supplemental | ldml | supplementalData | ldmlBCP47) #IMPLIED >
784    <!--@DEPRECATED-->
785<!ATTLIST deprecatedItems elements NMTOKENS #IMPLIED >
786    <!--@DEPRECATED-->
787<!ATTLIST deprecatedItems attributes NMTOKENS #IMPLIED >
788    <!--@DEPRECATED-->
789<!ATTLIST deprecatedItems values CDATA #IMPLIED >
790    <!--@DEPRECATED-->
791<!ATTLIST deprecatedItems draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
792    <!--@METADATA-->
793    <!--@DEPRECATED-->
794
795<!ELEMENT distinguishing ( distinguishingItems* ) >
796    <!--@METADATA-->
797    <!--@DEPRECATED-->
798<!ATTLIST distinguishing draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
799    <!--@METADATA-->
800    <!--@DEPRECATED-->
801
802<!ELEMENT distinguishingItems EMPTY >
803    <!--@DEPRECATED-->
804<!ATTLIST distinguishingItems exclude (true | false) #IMPLIED >
805    <!--@VALUE-->
806    <!--@DEPRECATED-->
807<!ATTLIST distinguishingItems elements NMTOKENS #IMPLIED >
808    <!--@VALUE-->
809    <!--@DEPRECATED-->
810<!ATTLIST distinguishingItems attributes NMTOKENS #IMPLIED >
811    <!--@DEPRECATED-->
812<!ATTLIST distinguishingItems draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
813    <!--@METADATA-->
814    <!--@DEPRECATED-->
815
816<!ELEMENT blocking ( blockingItems* ) >
817    <!--@METADATA-->
818    <!--@DEPRECATED-->
819<!ATTLIST blocking draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
820    <!--@METADATA-->
821    <!--@DEPRECATED-->
822
823<!ELEMENT blockingItems EMPTY >
824    <!--@DEPRECATED-->
825<!ATTLIST blockingItems elements NMTOKENS #IMPLIED >
826    <!--@VALUE-->
827    <!--@DEPRECATED-->
828<!ATTLIST blockingItems draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
829    <!--@METADATA-->
830    <!--@DEPRECATED-->
831
832<!ELEMENT coverageAdditions ( languageCoverage*, scriptCoverage*, territoryCoverage*, currencyCoverage*, timezoneCoverage* ) >
833    <!--@DEPRECATED-->
834<!ATTLIST coverageAdditions draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
835    <!--@METADATA-->
836    <!--@DEPRECATED-->
837
838<!ELEMENT languageCoverage EMPTY >
839    <!--@DEPRECATED-->
840<!ATTLIST languageCoverage type NMTOKEN #IMPLIED >
841    <!--@DEPRECATED-->
842<!ATTLIST languageCoverage values NMTOKENS #IMPLIED >
843    <!--@VALUE-->
844    <!--@DEPRECATED-->
845<!ATTLIST languageCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
846    <!--@METADATA-->
847    <!--@DEPRECATED-->
848
849<!ELEMENT scriptCoverage EMPTY >
850    <!--@DEPRECATED-->
851<!ATTLIST scriptCoverage type NMTOKEN #IMPLIED >
852    <!--@DEPRECATED-->
853<!ATTLIST scriptCoverage values NMTOKENS #IMPLIED >
854    <!--@VALUE-->
855    <!--@DEPRECATED-->
856<!ATTLIST scriptCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
857    <!--@METADATA-->
858    <!--@DEPRECATED-->
859
860<!ELEMENT territoryCoverage EMPTY >
861    <!--@DEPRECATED-->
862<!ATTLIST territoryCoverage type NMTOKEN #IMPLIED >
863    <!--@DEPRECATED-->
864<!ATTLIST territoryCoverage values NMTOKENS #IMPLIED >
865    <!--@VALUE-->
866    <!--@DEPRECATED-->
867<!ATTLIST territoryCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
868    <!--@METADATA-->
869    <!--@DEPRECATED-->
870
871<!ELEMENT currencyCoverage EMPTY >
872    <!--@DEPRECATED-->
873<!ATTLIST currencyCoverage type NMTOKEN #IMPLIED >
874    <!--@DEPRECATED-->
875<!ATTLIST currencyCoverage values NMTOKENS #IMPLIED >
876    <!--@VALUE-->
877    <!--@DEPRECATED-->
878<!ATTLIST currencyCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
879    <!--@METADATA-->
880    <!--@DEPRECATED-->
881
882<!ELEMENT timezoneCoverage EMPTY >
883    <!--@DEPRECATED-->
884<!ATTLIST timezoneCoverage type NMTOKEN #IMPLIED >
885    <!--@DEPRECATED-->
886<!ATTLIST timezoneCoverage values CDATA #IMPLIED >
887    <!-- would be NMTOKENS, but needs to allow / -->
888    <!--@VALUE-->
889    <!--@DEPRECATED-->
890<!ATTLIST timezoneCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
891    <!--@METADATA-->
892    <!--@DEPRECATED-->
893
894<!ELEMENT skipDefaultLocale EMPTY >
895    <!--@DEPRECATED-->
896<!ATTLIST skipDefaultLocale services NMTOKENS #IMPLIED >
897    <!--@VALUE-->
898    <!--@DEPRECATED-->
899
900<!ELEMENT defaultContent EMPTY >
901<!ATTLIST defaultContent locales NMTOKENS #IMPLIED >
902    <!--@MATCH:set/validity/locale-->
903    <!--@VALUE-->
904
905<!ELEMENT codeMappings ( languageCodes*, territoryCodes*, currencyCodes* ) >
906
907<!ELEMENT languageCodes EMPTY >
908    <!--@DEPRECATED-->
909<!ATTLIST languageCodes type NMTOKEN #REQUIRED >
910    <!--@DEPRECATED-->
911<!ATTLIST languageCodes alpha3 NMTOKEN #REQUIRED >
912    <!--@VALUE-->
913    <!--@DEPRECATED-->
914
915<!ELEMENT territoryCodes EMPTY >
916<!ATTLIST territoryCodes type NMTOKEN #REQUIRED >
917    <!--@MATCH:validity/region-->
918<!ATTLIST territoryCodes numeric NMTOKEN #IMPLIED >
919    <!--@MATCH:range/1~999-->
920    <!--@VALUE-->
921<!ATTLIST territoryCodes alpha3 NMTOKEN #IMPLIED >
922    <!--@MATCH:regex/[A-Z]{3}-->
923    <!--@VALUE-->
924<!ATTLIST territoryCodes fips10 NMTOKEN #IMPLIED >
925    <!--@MATCH:regex/[A-Z]{2}-->
926    <!--@VALUE-->
927<!ATTLIST territoryCodes internet NMTOKENS #IMPLIED >
928    <!--@VALUE-->
929    <!--@DEPRECATED-->
930
931<!ELEMENT currencyCodes EMPTY >
932<!ATTLIST currencyCodes type NMTOKEN #REQUIRED >
933    <!--@MATCH:validity/currency-->
934<!ATTLIST currencyCodes numeric NMTOKEN #REQUIRED >
935    <!--@MATCH:range/1~999-->
936    <!--@VALUE-->
937
938<!-- # Parent locales -->
939
940<!ELEMENT parentLocales ( parentLocale* ) >
941<!ATTLIST parentLocales component NMTOKENS #IMPLIED >
942    <!--@MATCH:set/literal/segmentations, collations, plurals, grammaticalFeatures-->
943
944<!ELEMENT parentLocale EMPTY >
945<!ATTLIST parentLocale parent NMTOKEN #REQUIRED >
946    <!--@MATCH:validity/locale-->
947<!ATTLIST parentLocale localeRules NMTOKENS #IMPLIED >
948    <!--@MATCH:set/literal/nonlikelyScript-->
949    <!--@VALUE-->
950<!ATTLIST parentLocale locales NMTOKENS #REQUIRED >
951    <!--@MATCH:set/validity/locale-->
952    <!--@VALUE-->
953
954<!ELEMENT personNamesDefaults ( alias | ( nameOrderLocalesDefault* ) ) >
955
956<!ELEMENT nameOrderLocalesDefault ( #PCDATA ) >
957<!ATTLIST nameOrderLocalesDefault order (givenFirst | surnameFirst) #REQUIRED >
958<!ATTLIST nameOrderLocalesDefault references CDATA #IMPLIED >
959    <!--@METADATA-->
960
961<!ELEMENT likelySubtags ( likelySubtag* ) >
962
963<!ELEMENT likelySubtag EMPTY >
964<!ATTLIST likelySubtag from NMTOKEN #REQUIRED >
965    <!--@MATCH:validity/locale-->
966<!ATTLIST likelySubtag to NMTOKEN #REQUIRED >
967    <!--@MATCH:validity/locale-->
968    <!--@VALUE-->
969<!ATTLIST likelySubtag origin NMTOKENS #IMPLIED >
970    <!--@MATCH:set/literal/sil1, wikidata, special-->
971    <!--@METADATA-->
972
973<!ELEMENT metazoneInfo ( timezone* ) >
974
975<!ELEMENT timezone ( usesMetazone* ) >
976<!ATTLIST timezone type CDATA #REQUIRED >
977    <!--@MATCH:bcp47/tz-->
978
979<!ELEMENT usesMetazone EMPTY >
980<!ATTLIST usesMetazone from CDATA #IMPLIED >
981    <!--@MATCH:time/yyyy-MM-dd HH:mm-->
982<!ATTLIST usesMetazone to CDATA #IMPLIED >
983    <!--@MATCH:time/yyyy-MM-dd HH:mm-->
984<!ATTLIST usesMetazone mzone NMTOKEN #REQUIRED >
985    <!--@MATCH:metazone-->
986    <!--@VALUE-->
987
988<!ELEMENT plurals ( pluralRules*, pluralRanges* ) >
989<!ATTLIST plurals type (ordinal | cardinal) #IMPLIED >
990    <!-- default is cardinal -->
991<!ATTLIST plurals draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
992    <!--@METADATA-->
993    <!--@DEPRECATED-->
994<!ATTLIST plurals references CDATA #IMPLIED >
995    <!--@METADATA-->
996
997<!ELEMENT pluralRules ( pluralRule* ) >
998<!ATTLIST pluralRules locales NMTOKENS #REQUIRED >
999    <!--@MATCH:set/validity/locale-->
1000<!ATTLIST pluralRules draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1001    <!--@METADATA-->
1002    <!--@DEPRECATED-->
1003<!ATTLIST pluralRules references CDATA #IMPLIED >
1004    <!--@METADATA-->
1005
1006<!ELEMENT pluralRule ( #PCDATA ) >
1007    <!--@ORDERED-->
1008<!ATTLIST pluralRule count (zero | one | two | few | many | other) #REQUIRED >
1009    <!-- 'other' is implicitly everything else -->
1010<!ATTLIST pluralRule draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1011    <!--@METADATA-->
1012<!ATTLIST pluralRule references CDATA #IMPLIED >
1013    <!--@METADATA-->
1014
1015<!ELEMENT pluralRanges ( pluralRange* ) >
1016<!ATTLIST pluralRanges locales NMTOKENS #REQUIRED >
1017    <!--@MATCH:set/validity/locale-->
1018<!ATTLIST pluralRanges draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1019    <!--@METADATA-->
1020    <!--@DEPRECATED-->
1021<!ATTLIST pluralRanges references CDATA #IMPLIED >
1022    <!--@METADATA-->
1023
1024<!ELEMENT pluralRange EMPTY >
1025<!ATTLIST pluralRange start (zero | one | two | few | many | other) #IMPLIED >
1026    <!-- if missing, means *all* -->
1027<!ATTLIST pluralRange end (zero | one | two | few | many | other) #IMPLIED >
1028    <!-- if missing, means *all* -->
1029<!ATTLIST pluralRange result (zero | one | two | few | many | other) #REQUIRED >
1030    <!-- if a whole rule is missing, means *other* -->
1031    <!--@VALUE-->
1032<!ATTLIST pluralRange draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1033    <!--@METADATA-->
1034<!ATTLIST pluralRange references CDATA #IMPLIED >
1035    <!--@METADATA-->
1036
1037<!ELEMENT telephoneCodeData ( codesByTerritory* ) >
1038    <!--@DEPRECATED-->
1039
1040<!ELEMENT codesByTerritory ( telephoneCountryCode+ ) >
1041    <!--@DEPRECATED-->
1042<!ATTLIST codesByTerritory territory NMTOKEN #REQUIRED >
1043    <!--@DEPRECATED-->
1044<!ATTLIST codesByTerritory draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
1045    <!--@METADATA-->
1046    <!--@DEPRECATED-->
1047<!ATTLIST codesByTerritory references CDATA #IMPLIED >
1048    <!--@METADATA-->
1049    <!--@DEPRECATED-->
1050
1051<!ELEMENT telephoneCountryCode EMPTY >
1052    <!--@DEPRECATED-->
1053<!ATTLIST telephoneCountryCode code NMTOKEN #REQUIRED >
1054    <!--@DEPRECATED-->
1055<!ATTLIST telephoneCountryCode from NMTOKEN #IMPLIED >
1056    <!--@VALUE-->
1057    <!--@DEPRECATED-->
1058<!ATTLIST telephoneCountryCode to NMTOKEN #IMPLIED >
1059    <!--@VALUE-->
1060    <!--@DEPRECATED-->
1061<!ATTLIST telephoneCountryCode draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
1062    <!--@METADATA-->
1063    <!--@DEPRECATED-->
1064<!ATTLIST telephoneCountryCode references CDATA #IMPLIED >
1065    <!--@METADATA-->
1066    <!--@DEPRECATED-->
1067<!ATTLIST telephoneCountryCode alt NMTOKENS #IMPLIED >
1068    <!--@MATCH:literal/variant-->
1069    <!--@DEPRECATED-->
1070
1071<!ELEMENT numberingSystems ( numberingSystem* ) >
1072
1073<!ELEMENT numberingSystem EMPTY >
1074<!ATTLIST numberingSystem type (numeric | algorithmic) #REQUIRED >
1075    <!--@VALUE-->
1076<!ATTLIST numberingSystem id NMTOKEN #REQUIRED >
1077    <!--@MATCH:bcp47/nu-->
1078<!ATTLIST numberingSystem radix NMTOKEN #IMPLIED >
1079    <!--@VALUE-->
1080<!ATTLIST numberingSystem digits CDATA #IMPLIED >
1081    <!--@MATCH:unicodeset/[\p{Nd}[\u3007\u4E00\u4E03\u4E09\u4E5D\u4E8C\u4E94\u516B\u516D\u56DB][\U00011F50-\U00011F59\U0001E4F0-\U0001E4F9]]-->
1082    <!--@VALUE-->
1083<!ATTLIST numberingSystem rules CDATA #IMPLIED >
1084    <!--@MATCH:any-->
1085    <!--@VALUE-->
1086<!ATTLIST numberingSystem draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1087    <!--@METADATA-->
1088
1089<!ELEMENT bcp47KeywordMappings ( mapKeys?, mapTypes* ) >
1090    <!--@DEPRECATED-->
1091
1092<!ELEMENT mapKeys ( keyMap* ) >
1093    <!--@DEPRECATED-->
1094
1095<!ELEMENT keyMap EMPTY >
1096    <!--@DEPRECATED-->
1097<!ATTLIST keyMap type NMTOKEN #REQUIRED >
1098    <!--@DEPRECATED-->
1099<!ATTLIST keyMap bcp47 NMTOKEN #REQUIRED >
1100    <!--@VALUE-->
1101    <!--@DEPRECATED-->
1102
1103<!ELEMENT mapTypes ( typeMap* ) >
1104    <!--@DEPRECATED-->
1105<!ATTLIST mapTypes type NMTOKEN #REQUIRED >
1106    <!--@DEPRECATED-->
1107
1108<!ELEMENT typeMap EMPTY >
1109    <!--@DEPRECATED-->
1110<!ATTLIST typeMap type CDATA #REQUIRED >
1111    <!--@DEPRECATED-->
1112<!ATTLIST typeMap bcp47 NMTOKEN #REQUIRED >
1113    <!--@VALUE-->
1114    <!--@DEPRECATED-->
1115
1116<!-- # Gender List support -->
1117
1118<!ELEMENT gender ( personList+ ) >
1119
1120<!ELEMENT personList EMPTY >
1121<!ATTLIST personList type (neutral | mixedNeutral | maleTaints) #REQUIRED >
1122<!ATTLIST personList locales NMTOKENS #REQUIRED >
1123    <!--@MATCH:set/validity/locale-->
1124    <!--@VALUE-->
1125
1126<!ELEMENT references ( reference* ) >
1127    <!--@METADATA-->
1128
1129<!ELEMENT reference ( #PCDATA ) >
1130    <!--@METADATA-->
1131<!ATTLIST reference type NMTOKEN #REQUIRED >
1132    <!--@MATCH:any-->
1133<!ATTLIST reference uri CDATA #IMPLIED >
1134    <!--@MATCH:any-->
1135    <!--@VALUE-->
1136<!ATTLIST reference draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
1137    <!--@METADATA-->
1138    <!--@DEPRECATED:true, false-->
1139<!ATTLIST reference standard (true | false) #IMPLIED >
1140    <!--@METADATA-->
1141    <!--@DEPRECATED-->
1142<!ATTLIST reference alt NMTOKENS #IMPLIED >
1143    <!--@MATCH:literal/variant-->
1144
1145<!ELEMENT languageMatching ( languageMatches* ) >
1146
1147<!ELEMENT languageMatches ( paradigmLocales*, matchVariable*, languageMatch* ) >
1148<!ATTLIST languageMatches type NMTOKEN #REQUIRED >
1149    <!--@MATCH:literal/written, written_new-->
1150
1151<!ELEMENT paradigmLocales EMPTY >
1152<!ATTLIST paradigmLocales locales NMTOKENS #REQUIRED >
1153    <!--@MATCH:set/validity/locale-->
1154    <!--@VALUE-->
1155
1156<!ELEMENT matchVariable EMPTY >
1157<!ATTLIST matchVariable id CDATA #REQUIRED >
1158    <!--@MATCH:regex/\$[a-zA-Z0-9_]+-->
1159<!ATTLIST matchVariable value CDATA #REQUIRED >
1160    <!--@MATCH:any-->
1161    <!--@VALUE-->
1162
1163<!ELEMENT languageMatch EMPTY >
1164    <!--@ORDERED-->
1165<!ATTLIST languageMatch desired CDATA #REQUIRED >
1166    <!--@MATCH:any/TODO-->
1167<!ATTLIST languageMatch supported CDATA #REQUIRED >
1168    <!--@MATCH:any/TODO-->
1169<!ATTLIST languageMatch percent NMTOKEN #IMPLIED >
1170    <!--@MATCH:range/0~100-->
1171    <!--@VALUE-->
1172<!ATTLIST languageMatch distance NMTOKEN #IMPLIED >
1173    <!--@MATCH:range/0~100-->
1174    <!--@VALUE-->
1175<!ATTLIST languageMatch oneway (true | false) #IMPLIED >
1176    <!--@VALUE-->
1177
1178<!-- # Day Periods -->
1179
1180<!ELEMENT dayPeriodRuleSet ( dayPeriodRules* ) >
1181<!ATTLIST dayPeriodRuleSet type NMTOKEN #IMPLIED >
1182    <!--@MATCH:literal/selection-->
1183<!ATTLIST dayPeriodRuleSet draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1184    <!--@METADATA-->
1185    <!--@DEPRECATED-->
1186<!ATTLIST dayPeriodRuleSet references CDATA #IMPLIED >
1187    <!--@METADATA-->
1188
1189<!ELEMENT dayPeriodRules ( dayPeriodRule* ) >
1190<!ATTLIST dayPeriodRules locales NMTOKENS #REQUIRED >
1191    <!--@MATCH:set/validity/locale-->
1192<!ATTLIST dayPeriodRules draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1193    <!--@METADATA-->
1194    <!--@DEPRECATED-->
1195<!ATTLIST dayPeriodRules references CDATA #IMPLIED >
1196    <!--@METADATA-->
1197
1198<!ELEMENT dayPeriodRule EMPTY >
1199<!ATTLIST dayPeriodRule type NMTOKEN #REQUIRED >
1200    <!--@MATCH:literal/afternoon1, afternoon2, am, evening1, evening2, midnight, morning1, morning2, night1, night2, noon, pm-->
1201<!ATTLIST dayPeriodRule at NMTOKEN #IMPLIED >
1202    <!--@MATCH:time/HH:mm-->
1203    <!--@VALUE-->
1204<!ATTLIST dayPeriodRule after NMTOKEN #IMPLIED >
1205    <!--@MATCH:time/HH:mm-->
1206    <!--@VALUE-->
1207    <!--@DEPRECATED-->
1208<!ATTLIST dayPeriodRule before NMTOKEN #IMPLIED >
1209    <!--@MATCH:time/HH:mm-->
1210    <!--@VALUE-->
1211<!ATTLIST dayPeriodRule from NMTOKEN #IMPLIED >
1212    <!--@MATCH:time/HH:mm-->
1213    <!--@VALUE-->
1214<!ATTLIST dayPeriodRule to NMTOKEN #IMPLIED >
1215    <!--@MATCH:time/HH:mm-->
1216    <!--@VALUE-->
1217    <!--@DEPRECATED-->
1218<!ATTLIST dayPeriodRule draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1219    <!--@METADATA-->
1220<!ATTLIST dayPeriodRule references CDATA #IMPLIED >
1221    <!--@METADATA-->
1222
1223<!ELEMENT metaZones ( metazoneInfo?, mapTimezones?, metazoneIds? ) >
1224
1225<!ELEMENT metazoneIds ( metazoneId* ) >
1226
1227<!ELEMENT metazoneId EMPTY >
1228<!ATTLIST metazoneId shortId NMTOKEN #REQUIRED >
1229    <!--@MATCH:regex/[a-z][a-z][a-z][a-z]-->
1230<!ATTLIST metazoneId longId CDATA #IMPLIED >
1231    <!--@MATCH:metazone-->
1232    <!--@VALUE-->
1233<!ATTLIST metazoneId deprecated (true | false) "false" >
1234    <!--@VALUE-->
1235<!ATTLIST metazoneId preferred NMTOKEN #IMPLIED >
1236    <!--@MATCH:metazone-->
1237    <!--@VALUE-->
1238<!ATTLIST metazoneId since CDATA "40" >
1239    <!--@MATCH:version-->
1240    <!--@METADATA-->
1241
1242<!ELEMENT primaryZones ( primaryZone* ) >
1243
1244<!ELEMENT primaryZone ( #PCDATA ) >
1245<!ATTLIST primaryZone iso3166 NMTOKEN #REQUIRED >
1246    <!--@MATCH:validity/region-->
1247
1248<!-- # Time Zones -->
1249
1250<!ELEMENT windowsZones ( mapTimezones? ) >
1251
1252<!-- # Coverage levels -->
1253
1254<!ELEMENT coverageLevels ( approvalRequirements, coverageVariable*, coverageLevel*, pathMatch* ) >
1255    <!--@METADATA-->
1256
1257<!ELEMENT approvalRequirements ( approvalRequirement* ) >
1258
1259<!ELEMENT approvalRequirement EMPTY >
1260<!ATTLIST approvalRequirement votes CDATA #REQUIRED >
1261    <!--@MATCH:any-->
1262    <!--@VALUE-->
1263<!ATTLIST approvalRequirement locales CDATA #REQUIRED >
1264    <!--@MATCH:any-->
1265<!ATTLIST approvalRequirement paths CDATA #REQUIRED >
1266    <!--@MATCH:any-->
1267
1268<!ELEMENT coverageVariable EMPTY >
1269    <!--@ORDERED-->
1270<!ATTLIST coverageVariable key CDATA #REQUIRED >
1271    <!--@MATCH:any-->
1272<!ATTLIST coverageVariable value CDATA #REQUIRED >
1273    <!--@MATCH:any-->
1274    <!--@VALUE-->
1275
1276<!ELEMENT coverageLevel EMPTY >
1277    <!--@ORDERED-->
1278<!ATTLIST coverageLevel inLanguage CDATA #IMPLIED >
1279    <!--@MATCH:any-->
1280<!ATTLIST coverageLevel inScript CDATA #IMPLIED >
1281    <!--@MATCH:validity/script-->
1282<!ATTLIST coverageLevel inTerritory CDATA #IMPLIED >
1283    <!--@MATCH:any-->
1284<!ATTLIST coverageLevel value CDATA #REQUIRED >
1285    <!--@MATCH:literal/basic, comprehensive, core, minimal, moderate, modern, posix-->
1286    <!--@VALUE-->
1287<!ATTLIST coverageLevel match CDATA #REQUIRED >
1288    <!--@MATCH:any-->
1289
1290<!ELEMENT pathMatch EMPTY >
1291<!ATTLIST pathMatch id NMTOKENS #IMPLIED >
1292    <!--@MATCH:any-->
1293<!ATTLIST pathMatch match CDATA #REQUIRED >
1294    <!--@MATCH:any-->
1295    <!--@VALUE-->
1296
1297<!ELEMENT idValidity ( id* ) >
1298
1299<!ELEMENT id ( #PCDATA ) >
1300<!ATTLIST id type NMTOKEN #REQUIRED >
1301    <!--@MATCH:literal/currency, language, region, script, subdivision, unit, variant-->
1302<!ATTLIST id idStatus NMTOKEN #REQUIRED >
1303    <!--@MATCH:literal/deprecated, macroregion, private_use, regular, reserved, special, unknown-->
1304
1305<!ELEMENT rgScope ( rgPath* ) >
1306
1307<!ELEMENT rgPath EMPTY >
1308<!ATTLIST rgPath path CDATA #REQUIRED >
1309    <!--@MATCH:any-->
1310<!ATTLIST rgPath draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1311    <!--@METADATA-->
1312
1313<!ELEMENT languageGroups ( languageGroup* ) >
1314
1315<!ELEMENT languageGroup ( #PCDATA ) >
1316<!ATTLIST languageGroup parent NMTOKEN #REQUIRED >
1317    <!--@MATCH:validity/language-->
1318
1319<!-- # Grammatical Features -->
1320
1321<!ELEMENT grammaticalData ( grammaticalFeatures*, grammaticalDerivations* ) >
1322
1323<!ELEMENT grammaticalFeatures ( grammaticalCase*, grammaticalGender*, grammaticalDefiniteness* ) >
1324<!ATTLIST grammaticalFeatures targets NMTOKENS #REQUIRED >
1325    <!--@MATCH:set/literal/nominal-->
1326<!ATTLIST grammaticalFeatures locales NMTOKENS #REQUIRED >
1327    <!--@MATCH:set/validity/language-->
1328
1329<!ELEMENT grammaticalCase EMPTY >
1330<!ATTLIST grammaticalCase scope NMTOKENS #IMPLIED >
1331    <!--@MATCH:set/literal/units-->
1332<!ATTLIST grammaticalCase values NMTOKENS #IMPLIED >
1333    <!--@MATCH:set/literal/abessive, ablative, accusative, adessive, allative, causal, comitative, dative, delative, elative, ergative, essive, genitive, illative, inessive, instrumental, locative, locativecopulative, nominative, oblique, partitive, prepositional, sociative, sublative, superessive, terminative, translative, vocative-->
1334    <!--@VALUE-->
1335
1336<!ELEMENT grammaticalGender EMPTY >
1337<!ATTLIST grammaticalGender scope NMTOKENS #IMPLIED >
1338    <!--@MATCH:set/literal/units-->
1339<!ATTLIST grammaticalGender values NMTOKENS #IMPLIED >
1340    <!--@MATCH:set/literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
1341    <!--@VALUE-->
1342
1343<!ELEMENT grammaticalDefiniteness EMPTY >
1344<!ATTLIST grammaticalDefiniteness scope NMTOKENS #IMPLIED >
1345    <!--@MATCH:set/literal/units-->
1346<!ATTLIST grammaticalDefiniteness values NMTOKENS #IMPLIED >
1347    <!--@MATCH:set/literal/definite, indefinite, unspecified, construct-->
1348    <!--@VALUE-->
1349
1350<!ELEMENT grammaticalDerivations ( deriveCompound*, deriveComponent* ) >
1351<!ATTLIST grammaticalDerivations locales NMTOKENS #REQUIRED >
1352    <!--@MATCH:set/validity/locale-->
1353
1354<!ELEMENT deriveCompound EMPTY >
1355<!ATTLIST deriveCompound feature NMTOKENS #REQUIRED >
1356    <!--@MATCH:set/literal/gender-->
1357<!ATTLIST deriveCompound structure NMTOKENS #REQUIRED >
1358    <!--@MATCH:set/literal/per, times, power, prefix-->
1359<!ATTLIST deriveCompound value NMTOKEN #REQUIRED >
1360    <!-- TODO: add @MATCH function for locale's gender categories and use here -->
1361    <!--@MATCH:set/literal/0, 1-->
1362    <!--@VALUE-->
1363
1364<!ELEMENT deriveComponent EMPTY >
1365<!ATTLIST deriveComponent feature NMTOKENS #REQUIRED >
1366    <!--@MATCH:set/literal/plural, case-->
1367<!ATTLIST deriveComponent structure NMTOKENS #REQUIRED >
1368    <!--@MATCH:set/literal/per, times, power, prefix-->
1369<!ATTLIST deriveComponent value0 NMTOKEN #REQUIRED >
1370    <!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
1371    <!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
1372    <!--@VALUE-->
1373<!ATTLIST deriveComponent value1 NMTOKEN #REQUIRED >
1374    <!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
1375    <!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
1376    <!--@VALUE-->
1377