• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1<!--
2Copyright © 1991-2021 Unicode, Inc.
3For terms of use, see http://www.unicode.org/copyright.html
4SPDX-License-Identifier: Unicode-DFS-2016
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?, unitConstants*, unitQuantities*, convertUnits*, unitPreferenceData?, timezoneData?, characters?, transforms?, metadata?, codeMappings?, parentLocales?, 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 "40" >
16    <!--@MATCH:version-->
17    <!--@VALUE-->
18<!ATTLIST version unicodeVersion CDATA #FIXED "14.0.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 from NMTOKEN #IMPLIED >
79    <!--@MATCH:time/yyyy-MM-dd-->
80<!ATTLIST currency to NMTOKEN #IMPLIED >
81    <!--@MATCH:time/yyyy-MM-dd-->
82<!ATTLIST currency iso4217 NMTOKEN #REQUIRED >
83    <!--@MATCH:validity/currency-->
84<!ATTLIST currency digits NMTOKEN #IMPLIED >
85    <!--@VALUE-->
86<!ATTLIST currency rounding NMTOKEN #IMPLIED >
87    <!--@VALUE-->
88<!ATTLIST currency cashRounding NMTOKEN #IMPLIED >
89    <!--@VALUE-->
90<!ATTLIST currency tender (true | false) #IMPLIED >
91    <!--@VALUE-->
92<!ATTLIST currency draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
93    <!--@METADATA-->
94    <!--@DEPRECATED-->
95<!ATTLIST currency references CDATA #IMPLIED >
96    <!--@METADATA-->
97
98<!ELEMENT alternate EMPTY >
99    <!-- use from and to instead. -->
100    <!--@DEPRECATED-->
101<!ATTLIST alternate iso4217 NMTOKEN #REQUIRED >
102    <!--@DEPRECATED-->
103
104<!ELEMENT territoryContainment ( group* ) >
105
106<!ELEMENT group EMPTY >
107<!ATTLIST group type NMTOKEN #REQUIRED >
108    <!--@MATCH:validity/region-->
109<!ATTLIST group contains NMTOKENS #IMPLIED >
110    <!--@MATCH:set/validity/region-->
111    <!--@VALUE-->
112<!ATTLIST group grouping (true | false) #IMPLIED >
113    <!--@VALUE-->
114<!ATTLIST group status (deprecated | grouping) #IMPLIED >
115<!ATTLIST group draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
116    <!--@METADATA-->
117    <!--@DEPRECATED:true, false-->
118<!ATTLIST group references CDATA #IMPLIED >
119    <!--@METADATA-->
120
121<!ELEMENT subdivisionContainment ( subgroup* ) >
122
123<!ELEMENT subgroup EMPTY >
124<!ATTLIST subgroup type NMTOKEN #REQUIRED >
125    <!--@MATCH:or/validity/region||validity/subdivision-->
126<!ATTLIST subgroup subtype NMTOKEN #IMPLIED >
127    <!--@DEPRECATED-->
128<!ATTLIST subgroup contains NMTOKENS #IMPLIED >
129    <!--@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-->
130    <!--@VALUE-->
131
132<!ELEMENT languageData ( language* ) >
133
134<!ELEMENT language EMPTY >
135<!ATTLIST language type NMTOKEN #REQUIRED >
136    <!--@MATCH:set/validity/language-->
137<!ATTLIST language scripts NMTOKENS #IMPLIED >
138    <!--@MATCH:set/validity/script-->
139    <!--@VALUE-->
140<!ATTLIST language territories NMTOKENS #IMPLIED >
141    <!--@MATCH:set/validity/region-->
142    <!--@VALUE-->
143<!ATTLIST language variants NMTOKENS #IMPLIED >
144    <!--@VALUE-->
145<!ATTLIST language draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
146    <!--@METADATA-->
147    <!--@DEPRECATED:true, false-->
148<!ATTLIST language references CDATA #IMPLIED >
149    <!--@METADATA-->
150<!ATTLIST language alt NMTOKENS #IMPLIED >
151    <!--@MATCH:literal/secondary, variant-->
152
153<!ELEMENT territoryInfo ( territory* ) >
154<!ATTLIST territoryInfo draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
155    <!--@METADATA-->
156    <!--@DEPRECATED-->
157<!ATTLIST territoryInfo references CDATA #IMPLIED >
158    <!--@METADATA-->
159<!ATTLIST territoryInfo alt NMTOKENS #IMPLIED >
160    <!--@MATCH:literal/variant-->
161
162<!ELEMENT territory ( languagePopulation* ) >
163<!ATTLIST territory type NMTOKEN #REQUIRED >
164    <!--@MATCH:validity/region-->
165<!ATTLIST territory gdp NMTOKEN #REQUIRED >
166    <!--@MATCH:range/0~100000000000000-->
167    <!--@VALUE-->
168<!ATTLIST territory literacyPercent NMTOKEN #REQUIRED >
169    <!--@MATCH:range/0.0~100.0-->
170    <!--@VALUE-->
171<!ATTLIST territory population NMTOKEN #REQUIRED >
172    <!--@MATCH:range/0~10000000000-->
173    <!--@VALUE-->
174<!ATTLIST territory draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
175    <!--@METADATA-->
176    <!--@DEPRECATED-->
177<!ATTLIST territory references CDATA #IMPLIED >
178    <!--@MATCH:any-->
179    <!--@METADATA-->
180<!ATTLIST territory alt NMTOKENS #IMPLIED >
181    <!--@MATCH:literal/variant-->
182
183<!ELEMENT languagePopulation EMPTY >
184<!ATTLIST languagePopulation type NMTOKEN #REQUIRED >
185    <!--@MATCH:validity/locale-->
186<!ATTLIST languagePopulation literacyPercent NMTOKEN #IMPLIED >
187    <!--@MATCH:range/0~100-->
188    <!--@VALUE-->
189<!ATTLIST languagePopulation writingPercent NMTOKEN #IMPLIED >
190    <!--@MATCH:range/0~100-->
191    <!--@VALUE-->
192<!ATTLIST languagePopulation populationPercent NMTOKEN #REQUIRED >
193    <!--@MATCH:range/0.0~100.0-->
194    <!--@VALUE-->
195<!ATTLIST languagePopulation officialStatus (de_facto_official | official | official_regional | official_minority) #IMPLIED >
196    <!--@VALUE-->
197<!ATTLIST languagePopulation draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
198    <!--@METADATA-->
199    <!--@DEPRECATED:true, false-->
200<!ATTLIST languagePopulation references CDATA #IMPLIED >
201    <!--@MATCH:any-->
202    <!--@METADATA-->
203<!ATTLIST languagePopulation alt NMTOKENS #IMPLIED >
204    <!--@MATCH:literal/variant-->
205
206<!ELEMENT postalCodeData ( postCodeRegex* ) >
207    <!--@DEPRECATED-->
208
209<!ELEMENT postCodeRegex ( #PCDATA ) >
210    <!--@DEPRECATED-->
211<!ATTLIST postCodeRegex territoryId NMTOKEN #REQUIRED >
212    <!--@DEPRECATED-->
213<!ATTLIST postCodeRegex draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
214    <!--@METADATA-->
215    <!--@DEPRECATED-->
216
217<!ELEMENT calendarData ( calendar* ) >
218
219<!ELEMENT calendar ( calendarSystem?, eras? ) >
220<!ATTLIST calendar type NMTOKEN #REQUIRED >
221    <!--@MATCH:bcp47/ca-->
222<!ATTLIST calendar territories NMTOKENS #IMPLIED >
223    <!-- use ordering attribute in calendarPreference element instead. -->
224    <!--@VALUE-->
225    <!--@DEPRECATED-->
226<!ATTLIST calendar draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
227    <!--@METADATA-->
228    <!--@DEPRECATED-->
229<!ATTLIST calendar references CDATA #IMPLIED >
230    <!--@METADATA-->
231<!ATTLIST calendar alt NMTOKENS #IMPLIED >
232    <!--@MATCH:literal/variant-->
233
234<!ELEMENT calendarSystem EMPTY >
235<!ATTLIST calendarSystem type (solar | lunar | lunisolar | other) #REQUIRED >
236    <!--@VALUE-->
237<!ATTLIST calendarSystem references CDATA #IMPLIED >
238    <!--@METADATA-->
239
240<!ELEMENT eras ( era* ) >
241<!ATTLIST eras references CDATA #IMPLIED >
242    <!--@METADATA-->
243
244<!ELEMENT era EMPTY >
245<!ATTLIST era type NMTOKEN #REQUIRED >
246    <!--@MATCH:range/0~250-->
247<!ATTLIST era start CDATA #IMPLIED >
248    <!--@MATCH:time/yyyy-MM-dd-->
249    <!--@VALUE-->
250<!ATTLIST era end CDATA #IMPLIED >
251    <!--@MATCH:time/yyyy-MM-dd-->
252    <!--@VALUE-->
253<!ATTLIST era named (true | false) #IMPLIED >
254    <!--@VALUE-->
255
256<!ELEMENT calendarPreferenceData ( calendarPreference* ) >
257
258<!ELEMENT calendarPreference EMPTY >
259<!ATTLIST calendarPreference territories NMTOKENS #REQUIRED >
260    <!--@MATCH:set/validity/region-->
261<!ATTLIST calendarPreference ordering NMTOKENS #REQUIRED >
262    <!--@MATCH:set/bcp47/ca-->
263    <!--@VALUE-->
264
265<!ELEMENT weekData ( minDays*, firstDay*, weekendStart*, weekendEnd*, weekOfPreference* ) >
266
267<!ELEMENT minDays EMPTY >
268<!ATTLIST minDays count (1 | 2 | 3 | 4 | 5 | 6 | 7) #REQUIRED >
269<!ATTLIST minDays territories NMTOKENS #REQUIRED >
270    <!--@MATCH:set/validity/region-->
271    <!--@VALUE-->
272<!ATTLIST minDays draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
273    <!--@METADATA-->
274    <!--@DEPRECATED:true, false-->
275<!ATTLIST minDays references CDATA #IMPLIED >
276    <!--@METADATA-->
277<!ATTLIST minDays alt NMTOKENS #IMPLIED >
278    <!--@MATCH:literal/variant-->
279
280<!ELEMENT firstDay EMPTY >
281<!ATTLIST firstDay day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
282<!ATTLIST firstDay territories NMTOKENS #REQUIRED >
283    <!--@MATCH:set/validity/region-->
284    <!--@VALUE-->
285<!ATTLIST firstDay draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
286    <!--@METADATA-->
287    <!--@DEPRECATED:true, false-->
288<!ATTLIST firstDay references CDATA #IMPLIED >
289    <!--@MATCH:any-->
290    <!--@METADATA-->
291<!ATTLIST firstDay alt NMTOKENS #IMPLIED >
292    <!--@MATCH:literal/variant-->
293
294<!ELEMENT weekendStart EMPTY >
295<!ATTLIST weekendStart day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
296<!ATTLIST weekendStart territories NMTOKENS #REQUIRED >
297    <!--@MATCH:set/validity/region-->
298    <!--@VALUE-->
299<!ATTLIST weekendStart draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
300    <!--@METADATA-->
301    <!--@DEPRECATED:true, false-->
302<!ATTLIST weekendStart references CDATA #IMPLIED >
303    <!--@METADATA-->
304<!ATTLIST weekendStart alt NMTOKENS #IMPLIED >
305    <!--@MATCH:literal/variant-->
306
307<!ELEMENT weekendEnd EMPTY >
308<!ATTLIST weekendEnd day (sun | mon | tue | wed | thu | fri | sat) #REQUIRED >
309<!ATTLIST weekendEnd territories NMTOKENS #REQUIRED >
310    <!--@MATCH:set/validity/region-->
311    <!--@VALUE-->
312<!ATTLIST weekendEnd draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
313    <!--@METADATA-->
314    <!--@DEPRECATED:true, false-->
315<!ATTLIST weekendEnd references CDATA #IMPLIED >
316    <!--@METADATA-->
317<!ATTLIST weekendEnd alt NMTOKENS #IMPLIED >
318    <!--@MATCH:literal/variant-->
319
320<!ELEMENT weekOfPreference EMPTY >
321<!ATTLIST weekOfPreference locales NMTOKENS #REQUIRED >
322    <!--@MATCH:set/validity/locale-->
323<!ATTLIST weekOfPreference ordering NMTOKENS #REQUIRED >
324    <!--@MATCH:set/literal/weekOfDate, weekOfInterval, weekOfMonth, weekOfYear-->
325    <!--@VALUE-->
326
327<!ELEMENT timeData ( hours* ) >
328
329<!ELEMENT hours EMPTY >
330<!ATTLIST hours allowed NMTOKENS #REQUIRED >
331    <!--@MATCH:set/literal/H, h, K, k, hB, hb-->
332<!ATTLIST hours preferred NMTOKEN #REQUIRED >
333    <!--@MATCH:literal/H, h-->
334<!ATTLIST hours regions NMTOKENS #REQUIRED >
335    <!--@MATCH:set/or/validity/region||validity/locale-->
336    <!--@VALUE-->
337<!ATTLIST hours draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
338    <!--@METADATA-->
339<!ATTLIST hours references CDATA #IMPLIED >
340    <!--@METADATA-->
341
342<!ELEMENT measurementData ( measurementSystem*, paperSize* ) >
343
344<!ELEMENT measurementSystem EMPTY >
345<!ATTLIST measurementSystem type (metric | US | UK) #REQUIRED >
346<!ATTLIST measurementSystem category (temperature) #IMPLIED >
347<!ATTLIST measurementSystem territories NMTOKENS #REQUIRED >
348    <!--@MATCH:set/validity/region-->
349    <!--@VALUE-->
350<!ATTLIST measurementSystem draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
351    <!--@METADATA-->
352    <!--@DEPRECATED:true, false-->
353<!ATTLIST measurementSystem references CDATA #IMPLIED >
354    <!--@METADATA-->
355<!ATTLIST measurementSystem alt NMTOKENS #IMPLIED >
356    <!--@MATCH:literal/variant-->
357
358<!ELEMENT paperSize EMPTY >
359<!ATTLIST paperSize type (A4 | US-Letter) #REQUIRED >
360<!ATTLIST paperSize territories NMTOKENS #REQUIRED >
361    <!--@MATCH:set/validity/region-->
362    <!--@VALUE-->
363<!ATTLIST paperSize draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
364    <!--@METADATA-->
365    <!--@DEPRECATED:true, false-->
366<!ATTLIST paperSize references CDATA #IMPLIED >
367    <!--@METADATA-->
368<!ATTLIST paperSize alt NMTOKENS #IMPLIED >
369    <!--@MATCH:literal/variant-->
370
371<!ELEMENT unitConstants ( unitConstant* ) >
372
373<!ELEMENT unitConstant EMPTY >
374<!ATTLIST unitConstant constant NMTOKEN #REQUIRED >
375    <!--@MATCH:regex/[A-Za-z][_A-Za-z0-9]*-->
376<!ATTLIST unitConstant value CDATA #REQUIRED >
377    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
378    <!--@VALUE-->
379<!ATTLIST unitConstant status NMTOKEN #IMPLIED >
380    <!--@MATCH:literal/approximate, exact-->
381    <!--@VALUE-->
382<!ATTLIST unitConstant description CDATA #IMPLIED >
383    <!--@MATCH:any-->
384    <!--@METADATA-->
385
386<!ELEMENT unitQuantities ( unitQuantity* ) >
387
388<!ELEMENT unitQuantity EMPTY >
389<!ATTLIST unitQuantity baseUnit NMTOKEN #REQUIRED >
390    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
391<!ATTLIST unitQuantity quantity NMTOKENS #REQUIRED >
392    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
393    <!--@VALUE-->
394<!ATTLIST unitQuantity status NMTOKEN #IMPLIED >
395    <!--@MATCH:regex/simple-->
396    <!--@VALUE-->
397<!ATTLIST unitQuantity description CDATA #IMPLIED >
398    <!--@METADATA-->
399
400<!ELEMENT convertUnits ( convertUnit* ) >
401
402<!ELEMENT convertUnit EMPTY >
403<!ATTLIST convertUnit source NMTOKEN #REQUIRED >
404    <!--@MATCH:regex/(100-)?[A-Za-z][-A-Za-z0-9]*-->
405<!ATTLIST convertUnit baseUnit NMTOKEN #REQUIRED >
406    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
407    <!--@VALUE-->
408<!ATTLIST convertUnit factor CDATA #IMPLIED >
409    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
410    <!--@VALUE-->
411<!ATTLIST convertUnit offset CDATA #IMPLIED >
412    <!--@MATCH:regex/[-+*/\._ 0-9a-zA-Z]+-->
413    <!--@VALUE-->
414<!ATTLIST convertUnit systems NMTOKENS #IMPLIED >
415    <!--@MATCH:set/literal/ussystem, uksystem, metric, si, other-->
416    <!--@VALUE-->
417<!ATTLIST convertUnit description CDATA #IMPLIED >
418    <!--@METADATA-->
419
420<!ELEMENT unitPreferenceData ( unitPreferences* ) >
421<!ATTLIST unitPreferenceData draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
422    <!--@METADATA-->
423
424<!ELEMENT unitPreferences ( unitPreference* ) >
425<!ATTLIST unitPreferences category NMTOKEN #REQUIRED >
426    <!--@MATCH:regex/[a-z]+([-][a-z]+)*-->
427<!ATTLIST unitPreferences usage NMTOKENS #REQUIRED >
428    <!--@MATCH:regex/[a-z]+([-][a-z]+)*-->
429<!ATTLIST unitPreferences scope (small) #IMPLIED >
430    <!--@DEPRECATED-->
431<!ATTLIST unitPreferences draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
432    <!--@METADATA-->
433    <!--@DEPRECATED-->
434
435<!ELEMENT unitPreference ( #PCDATA ) >
436    <!--@ORDERED-->
437<!ATTLIST unitPreference regions NMTOKENS #REQUIRED >
438    <!--@MATCH:set/validity/region-->
439<!ATTLIST unitPreference geq NMTOKEN #IMPLIED >
440    <!--@MATCH:any-->
441<!ATTLIST unitPreference skeleton CDATA #IMPLIED >
442    <!--@MATCH:any-->
443    <!--@VALUE-->
444<!ATTLIST unitPreference draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
445    <!--@METADATA-->
446<!ATTLIST unitPreference references CDATA #IMPLIED >
447    <!--@METADATA-->
448<!ATTLIST unitPreference alt NMTOKENS #IMPLIED >
449    <!--@MATCH:literal/informal, variant-->
450
451<!ELEMENT timezoneData ( mapTimezones*, zoneFormatting* ) >
452    <!--@DEPRECATED-->
453
454<!ELEMENT mapTimezones ( mapZone* ) >
455<!ATTLIST mapTimezones type NMTOKEN #IMPLIED >
456    <!--@MATCH:literal/metazones-->
457<!ATTLIST mapTimezones otherVersion CDATA #IMPLIED >
458    <!--@MATCH:any-->
459    <!--@METADATA-->
460<!ATTLIST mapTimezones typeVersion CDATA #IMPLIED >
461    <!--@MATCH:regex/[0-9]{4}[a-z]+-->
462    <!--@METADATA-->
463<!ATTLIST mapTimezones references CDATA #IMPLIED >
464    <!--@MATCH:any-->
465    <!--@METADATA-->
466
467<!ELEMENT mapZone EMPTY >
468<!ATTLIST mapZone type CDATA #REQUIRED >
469    <!--@MATCH:set/bcp47/tz-->
470    <!--@VALUE-->
471<!ATTLIST mapZone other CDATA #REQUIRED >
472    <!--@MATCH:any-->
473<!ATTLIST mapZone territory CDATA #IMPLIED >
474    <!--@MATCH:validity/region-->
475<!ATTLIST mapZone references CDATA #IMPLIED >
476    <!--@MATCH:any-->
477    <!--@METADATA-->
478
479<!ELEMENT zoneFormatting ( zoneItem* ) >
480    <!--@DEPRECATED-->
481<!ATTLIST zoneFormatting multizone NMTOKENS #REQUIRED >
482    <!--@VALUE-->
483    <!--@DEPRECATED-->
484<!ATTLIST zoneFormatting tzidVersion CDATA #IMPLIED >
485    <!--@METADATA-->
486    <!--@DEPRECATED-->
487<!ATTLIST zoneFormatting references CDATA #IMPLIED >
488    <!--@METADATA-->
489    <!--@DEPRECATED-->
490
491<!ELEMENT zoneItem EMPTY >
492    <!--@DEPRECATED-->
493<!ATTLIST zoneItem type CDATA #REQUIRED >
494    <!--@DEPRECATED-->
495<!ATTLIST zoneItem territory NMTOKEN #REQUIRED >
496    <!--@VALUE-->
497    <!--@DEPRECATED-->
498<!ATTLIST zoneItem aliases CDATA #IMPLIED >
499    <!--@VALUE-->
500    <!--@DEPRECATED-->
501<!ATTLIST zoneItem references CDATA #IMPLIED >
502    <!--@METADATA-->
503    <!--@DEPRECATED-->
504
505<!ELEMENT characters ( character-fallback* ) >
506<!ATTLIST characters draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
507    <!--@METADATA-->
508    <!--@DEPRECATED-->
509
510<!ELEMENT character-fallback ( character* ) >
511
512<!ELEMENT character ( substitute* ) >
513<!ATTLIST character value CDATA #REQUIRED >
514    <!--@MATCH:any-->
515<!ATTLIST character draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
516    <!--@METADATA-->
517    <!--@DEPRECATED-->
518<!ATTLIST character standard CDATA #IMPLIED >
519    <!--@METADATA-->
520    <!--@DEPRECATED-->
521<!ATTLIST character references CDATA #IMPLIED >
522    <!--@METADATA-->
523<!ATTLIST character alt NMTOKENS #IMPLIED >
524    <!--@MATCH:literal/variant-->
525
526<!ELEMENT substitute ( #PCDATA ) >
527    <!--@ORDERED-->
528<!ATTLIST substitute draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
529    <!--@METADATA-->
530    <!--@DEPRECATED:true, false-->
531<!ATTLIST substitute standard CDATA #IMPLIED >
532    <!--@METADATA-->
533    <!--@DEPRECATED-->
534<!ATTLIST substitute references CDATA #IMPLIED >
535    <!--@METADATA-->
536<!ATTLIST substitute alt NMTOKENS #IMPLIED >
537    <!--@MATCH:literal/variant-->
538
539<!ELEMENT transforms ( transform* ) >
540
541<!ELEMENT transform ( ( comment | tRule )* ) >
542<!ATTLIST transform source CDATA #IMPLIED >
543    <!--@MATCH:any/TODO-->
544<!ATTLIST transform target CDATA #IMPLIED >
545    <!--@MATCH:any/TODO-->
546<!ATTLIST transform variant CDATA #IMPLIED >
547    <!--@MATCH:any/TODO-->
548<!ATTLIST transform direction (forward | backward | both) "both" >
549<!ATTLIST transform alias CDATA #IMPLIED >
550    <!--@MATCH:any/TODO-->
551    <!--@VALUE-->
552<!ATTLIST transform backwardAlias CDATA #IMPLIED >
553    <!--@MATCH:any/TODO-->
554    <!--@VALUE-->
555<!ATTLIST transform visibility (internal | external) "external" >
556    <!--@VALUE-->
557<!ATTLIST transform draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
558    <!--@METADATA-->
559<!ATTLIST transform references CDATA #IMPLIED >
560    <!--@METADATA-->
561<!ATTLIST transform alt NMTOKENS #IMPLIED >
562    <!--@MATCH:literal/variant-->
563
564<!ELEMENT comment ( #PCDATA ) >
565    <!--@ORDERED-->
566    <!--@METADATA-->
567
568<!ELEMENT tRule ( #PCDATA ) >
569    <!--@ORDERED-->
570
571<!ELEMENT metadata ( attributeOrder?, elementOrder?, serialElements?, suppress?, validity?, alias?, deprecated?, distinguishing?, blocking?, coverageAdditions?, skipDefaultLocale?, defaultContent? ) >
572<!ATTLIST metadata draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
573    <!--@METADATA-->
574    <!--@DEPRECATED-->
575
576<!ELEMENT attributeOrder ( #PCDATA ) >
577    <!--@DEPRECATED-->
578<!ATTLIST attributeOrder draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
579    <!--@METADATA-->
580    <!--@DEPRECATED-->
581
582<!ELEMENT elementOrder ( #PCDATA ) >
583    <!--@DEPRECATED-->
584<!ATTLIST elementOrder draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
585    <!--@METADATA-->
586    <!--@DEPRECATED-->
587
588<!ELEMENT serialElements ( #PCDATA ) >
589    <!--@METADATA-->
590<!ATTLIST serialElements draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
591    <!--@METADATA-->
592    <!--@DEPRECATED:true, false-->
593
594<!ELEMENT suppress ( attributes* ) >
595    <!--@METADATA-->
596<!ATTLIST suppress draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
597    <!--@METADATA-->
598    <!--@DEPRECATED-->
599
600<!ELEMENT attributes EMPTY >
601    <!--@ORDERED-->
602<!ATTLIST attributes element NMTOKENS #IMPLIED >
603    <!--@MATCH:any-->
604    <!--@VALUE-->
605<!ATTLIST attributes attribute NMTOKENS #IMPLIED >
606    <!--@MATCH:any-->
607    <!--@VALUE-->
608<!ATTLIST attributes attributeValue CDATA #IMPLIED >
609    <!--@MATCH:any-->
610    <!--@VALUE-->
611<!ATTLIST attributes draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
612    <!--@METADATA-->
613    <!--@DEPRECATED:true, false-->
614
615<!ELEMENT validity ( variable*, attributeValues* ) >
616    <!--@METADATA-->
617<!ATTLIST validity draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
618    <!--@METADATA-->
619    <!--@DEPRECATED-->
620
621<!ELEMENT variable ( #PCDATA ) >
622    <!--@ORDERED-->
623<!ATTLIST variable type NMTOKEN #IMPLIED >
624    <!--@MATCH:any-->
625    <!--@VALUE-->
626<!ATTLIST variable id CDATA #REQUIRED >
627    <!--@MATCH:any-->
628<!ATTLIST variable draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
629    <!--@METADATA-->
630    <!--@DEPRECATED:true, false-->
631
632<!ELEMENT attributeValues ( #PCDATA ) >
633    <!--@ORDERED-->
634<!ATTLIST attributeValues dtds NMTOKEN #IMPLIED >
635    <!--@MATCH:any-->
636<!ATTLIST attributeValues type NMTOKEN #IMPLIED >
637    <!--@MATCH:any-->
638<!ATTLIST attributeValues elements NMTOKENS #IMPLIED >
639    <!--@MATCH:any-->
640    <!--@VALUE-->
641<!ATTLIST attributeValues attributes NMTOKENS #IMPLIED >
642    <!--@MATCH:any-->
643    <!--@VALUE-->
644<!ATTLIST attributeValues order NMTOKEN #IMPLIED >
645    <!--@MATCH:any-->
646    <!--@VALUE-->
647<!ATTLIST attributeValues draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
648    <!--@METADATA-->
649    <!--@DEPRECATED:true, false-->
650
651<!ELEMENT alias ( languageAlias*, scriptAlias*, territoryAlias*, subdivisionAlias*, variantAlias*, zoneAlias*, unitAlias*, usageAlias* ) >
652<!ATTLIST alias draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
653    <!--@METADATA-->
654    <!--@DEPRECATED-->
655
656<!ELEMENT languageAlias EMPTY >
657<!ATTLIST languageAlias type NMTOKEN #REQUIRED >
658    <!--@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-->
659<!ATTLIST languageAlias replacement NMTOKEN #REQUIRED >
660    <!--@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-->
661    <!--@VALUE-->
662<!ATTLIST languageAlias reason (deprecated | overlong | macrolanguage | legacy | bibliographic) #IMPLIED >
663    <!--@VALUE-->
664
665<!ELEMENT scriptAlias EMPTY >
666<!ATTLIST scriptAlias type NMTOKEN #REQUIRED >
667    <!--@MATCH:validity/script-->
668<!ATTLIST scriptAlias replacement NMTOKEN #REQUIRED >
669    <!--@MATCH:validity/script-->
670    <!--@VALUE-->
671<!ATTLIST scriptAlias reason (deprecated | overlong) #IMPLIED >
672    <!--@VALUE-->
673
674<!ELEMENT territoryAlias EMPTY >
675<!ATTLIST territoryAlias type NMTOKEN #REQUIRED >
676    <!--@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-->
677<!ATTLIST territoryAlias replacement NMTOKENS #REQUIRED >
678    <!--@MATCH:set/validity/region-->
679    <!--@VALUE-->
680<!ATTLIST territoryAlias reason (deprecated | overlong) #IMPLIED >
681    <!--@VALUE-->
682
683<!ELEMENT subdivisionAlias EMPTY >
684<!ATTLIST subdivisionAlias type NMTOKEN #REQUIRED >
685    <!--@MATCH:validity/subdivision-->
686<!ATTLIST subdivisionAlias replacement NMTOKENS #REQUIRED >
687    <!--@MATCH:set/or/validity/region||validity/subdivision||literal/cnmn, cz663, no50-->
688    <!--@VALUE-->
689<!ATTLIST subdivisionAlias reason (deprecated | overlong) #IMPLIED >
690    <!--@VALUE-->
691
692<!ELEMENT variantAlias EMPTY >
693<!ATTLIST variantAlias type NMTOKEN #REQUIRED >
694    <!--@MATCH:or/validity/variant||literal/aaland, polytoni-->
695<!ATTLIST variantAlias replacement NMTOKEN #REQUIRED >
696    <!--@MATCH:or/validity/variant||validity/region||literal/hy, hyw-->
697    <!--@VALUE-->
698<!ATTLIST variantAlias reason (deprecated | overlong) #IMPLIED >
699    <!--@VALUE-->
700
701<!ELEMENT zoneAlias EMPTY >
702<!ATTLIST zoneAlias type CDATA #REQUIRED >
703    <!--@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-->
704<!ATTLIST zoneAlias replacement CDATA #REQUIRED >
705    <!--@MATCH:bcp47/tz-->
706    <!--@VALUE-->
707<!ATTLIST zoneAlias reason (deprecated | overlong) #IMPLIED >
708    <!--@VALUE-->
709
710<!ELEMENT unitAlias EMPTY >
711<!ATTLIST unitAlias type NMTOKEN #REQUIRED >
712    <!--@MATCH:validity/short-unit/deprecated-->
713<!ATTLIST unitAlias replacement NMTOKEN #REQUIRED >
714    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
715    <!--@VALUE-->
716<!ATTLIST unitAlias reason (deprecated) #IMPLIED >
717    <!--@VALUE-->
718
719<!ELEMENT usageAlias EMPTY >
720<!ATTLIST usageAlias type NMTOKEN #REQUIRED >
721    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
722<!ATTLIST usageAlias replacement NMTOKEN #REQUIRED >
723    <!--@MATCH:regex/[A-Za-z][-A-Za-z0-9]*-->
724    <!--@VALUE-->
725<!ATTLIST usageAlias reason (deprecated) #IMPLIED >
726    <!--@VALUE-->
727
728<!ELEMENT deprecated ( deprecatedItems* ) >
729    <!--@DEPRECATED-->
730<!ATTLIST deprecated draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
731    <!--@METADATA-->
732    <!--@DEPRECATED-->
733
734<!ELEMENT deprecatedItems EMPTY >
735    <!--@DEPRECATED-->
736<!ATTLIST deprecatedItems type (standard | supplemental | ldml | supplementalData | ldmlBCP47) #IMPLIED >
737    <!--@DEPRECATED-->
738<!ATTLIST deprecatedItems elements NMTOKENS #IMPLIED >
739    <!--@DEPRECATED-->
740<!ATTLIST deprecatedItems attributes NMTOKENS #IMPLIED >
741    <!--@DEPRECATED-->
742<!ATTLIST deprecatedItems values CDATA #IMPLIED >
743    <!--@DEPRECATED-->
744<!ATTLIST deprecatedItems draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
745    <!--@METADATA-->
746    <!--@DEPRECATED-->
747
748<!ELEMENT distinguishing ( distinguishingItems* ) >
749    <!--@METADATA-->
750    <!--@DEPRECATED-->
751<!ATTLIST distinguishing draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
752    <!--@METADATA-->
753    <!--@DEPRECATED-->
754
755<!ELEMENT distinguishingItems EMPTY >
756    <!--@DEPRECATED-->
757<!ATTLIST distinguishingItems exclude (true | false) #IMPLIED >
758    <!--@VALUE-->
759    <!--@DEPRECATED-->
760<!ATTLIST distinguishingItems elements NMTOKENS #IMPLIED >
761    <!--@VALUE-->
762    <!--@DEPRECATED-->
763<!ATTLIST distinguishingItems attributes NMTOKENS #IMPLIED >
764    <!--@DEPRECATED-->
765<!ATTLIST distinguishingItems draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
766    <!--@METADATA-->
767    <!--@DEPRECATED-->
768
769<!ELEMENT blocking ( blockingItems* ) >
770    <!--@METADATA-->
771    <!--@DEPRECATED-->
772<!ATTLIST blocking draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
773    <!--@METADATA-->
774    <!--@DEPRECATED-->
775
776<!ELEMENT blockingItems EMPTY >
777    <!--@DEPRECATED-->
778<!ATTLIST blockingItems elements NMTOKENS #IMPLIED >
779    <!--@VALUE-->
780    <!--@DEPRECATED-->
781<!ATTLIST blockingItems draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
782    <!--@METADATA-->
783    <!--@DEPRECATED-->
784
785<!ELEMENT coverageAdditions ( languageCoverage*, scriptCoverage*, territoryCoverage*, currencyCoverage*, timezoneCoverage* ) >
786    <!--@DEPRECATED-->
787<!ATTLIST coverageAdditions draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
788    <!--@METADATA-->
789    <!--@DEPRECATED-->
790
791<!ELEMENT languageCoverage EMPTY >
792    <!--@DEPRECATED-->
793<!ATTLIST languageCoverage type NMTOKEN #IMPLIED >
794    <!--@DEPRECATED-->
795<!ATTLIST languageCoverage values NMTOKENS #IMPLIED >
796    <!--@VALUE-->
797    <!--@DEPRECATED-->
798<!ATTLIST languageCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
799    <!--@METADATA-->
800    <!--@DEPRECATED-->
801
802<!ELEMENT scriptCoverage EMPTY >
803    <!--@DEPRECATED-->
804<!ATTLIST scriptCoverage type NMTOKEN #IMPLIED >
805    <!--@DEPRECATED-->
806<!ATTLIST scriptCoverage values NMTOKENS #IMPLIED >
807    <!--@VALUE-->
808    <!--@DEPRECATED-->
809<!ATTLIST scriptCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
810    <!--@METADATA-->
811    <!--@DEPRECATED-->
812
813<!ELEMENT territoryCoverage EMPTY >
814    <!--@DEPRECATED-->
815<!ATTLIST territoryCoverage type NMTOKEN #IMPLIED >
816    <!--@DEPRECATED-->
817<!ATTLIST territoryCoverage values NMTOKENS #IMPLIED >
818    <!--@VALUE-->
819    <!--@DEPRECATED-->
820<!ATTLIST territoryCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
821    <!--@METADATA-->
822    <!--@DEPRECATED-->
823
824<!ELEMENT currencyCoverage EMPTY >
825    <!--@DEPRECATED-->
826<!ATTLIST currencyCoverage type NMTOKEN #IMPLIED >
827    <!--@DEPRECATED-->
828<!ATTLIST currencyCoverage values NMTOKENS #IMPLIED >
829    <!--@VALUE-->
830    <!--@DEPRECATED-->
831<!ATTLIST currencyCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
832    <!--@METADATA-->
833    <!--@DEPRECATED-->
834
835<!ELEMENT timezoneCoverage EMPTY >
836    <!--@DEPRECATED-->
837<!ATTLIST timezoneCoverage type NMTOKEN #IMPLIED >
838    <!--@DEPRECATED-->
839<!ATTLIST timezoneCoverage values CDATA #IMPLIED >
840    <!-- would be NMTOKENS, but needs to allow / -->
841    <!--@VALUE-->
842    <!--@DEPRECATED-->
843<!ATTLIST timezoneCoverage draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
844    <!--@METADATA-->
845    <!--@DEPRECATED-->
846
847<!ELEMENT skipDefaultLocale EMPTY >
848    <!--@DEPRECATED-->
849<!ATTLIST skipDefaultLocale services NMTOKENS #IMPLIED >
850    <!--@VALUE-->
851    <!--@DEPRECATED-->
852
853<!ELEMENT defaultContent EMPTY >
854<!ATTLIST defaultContent locales NMTOKENS #IMPLIED >
855    <!--@MATCH:set/validity/locale-->
856    <!--@VALUE-->
857
858<!ELEMENT codeMappings ( languageCodes*, territoryCodes*, currencyCodes* ) >
859
860<!ELEMENT languageCodes EMPTY >
861    <!--@DEPRECATED-->
862<!ATTLIST languageCodes type NMTOKEN #REQUIRED >
863    <!--@DEPRECATED-->
864<!ATTLIST languageCodes alpha3 NMTOKEN #REQUIRED >
865    <!--@VALUE-->
866    <!--@DEPRECATED-->
867
868<!ELEMENT territoryCodes EMPTY >
869<!ATTLIST territoryCodes type NMTOKEN #REQUIRED >
870    <!--@MATCH:validity/region-->
871<!ATTLIST territoryCodes numeric NMTOKEN #IMPLIED >
872    <!--@MATCH:range/1~999-->
873    <!--@VALUE-->
874<!ATTLIST territoryCodes alpha3 NMTOKEN #IMPLIED >
875    <!--@MATCH:regex/[A-Z]{3}-->
876    <!--@VALUE-->
877<!ATTLIST territoryCodes fips10 NMTOKEN #IMPLIED >
878    <!--@MATCH:regex/[A-Z]{2}-->
879    <!--@VALUE-->
880<!ATTLIST territoryCodes internet NMTOKENS #IMPLIED >
881    <!--@VALUE-->
882    <!--@DEPRECATED-->
883
884<!ELEMENT currencyCodes EMPTY >
885<!ATTLIST currencyCodes type NMTOKEN #REQUIRED >
886    <!--@MATCH:validity/currency-->
887<!ATTLIST currencyCodes numeric NMTOKEN #REQUIRED >
888    <!--@MATCH:range/1~999-->
889    <!--@VALUE-->
890
891<!-- # Parent locales -->
892
893<!ELEMENT parentLocales ( parentLocale* ) >
894
895<!ELEMENT parentLocale EMPTY >
896<!ATTLIST parentLocale parent NMTOKEN #REQUIRED >
897    <!--@MATCH:validity/locale-->
898<!ATTLIST parentLocale locales NMTOKENS #REQUIRED >
899    <!--@MATCH:set/validity/locale-->
900    <!--@VALUE-->
901
902<!ELEMENT likelySubtags ( likelySubtag* ) >
903
904<!ELEMENT likelySubtag EMPTY >
905<!ATTLIST likelySubtag from NMTOKEN #REQUIRED >
906    <!--@MATCH:validity/locale-->
907<!ATTLIST likelySubtag to NMTOKEN #REQUIRED >
908    <!--@MATCH:validity/locale-->
909    <!--@VALUE-->
910
911<!ELEMENT metazoneInfo ( timezone* ) >
912
913<!ELEMENT timezone ( usesMetazone* ) >
914<!ATTLIST timezone type CDATA #REQUIRED >
915    <!--@MATCH:bcp47/tz-->
916
917<!ELEMENT usesMetazone EMPTY >
918<!ATTLIST usesMetazone from CDATA #IMPLIED >
919    <!--@MATCH:time/yyyy-MM-dd HH:mm-->
920<!ATTLIST usesMetazone to CDATA #IMPLIED >
921    <!--@MATCH:time/yyyy-MM-dd HH:mm-->
922<!ATTLIST usesMetazone mzone NMTOKEN #REQUIRED >
923    <!--@MATCH:metazone-->
924    <!--@VALUE-->
925
926<!ELEMENT plurals ( pluralRules*, pluralRanges* ) >
927<!ATTLIST plurals type (ordinal | cardinal) #IMPLIED >
928    <!-- default is cardinal -->
929<!ATTLIST plurals draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
930    <!--@METADATA-->
931    <!--@DEPRECATED-->
932<!ATTLIST plurals references CDATA #IMPLIED >
933    <!--@METADATA-->
934
935<!ELEMENT pluralRules ( pluralRule* ) >
936<!ATTLIST pluralRules locales NMTOKENS #REQUIRED >
937    <!--@MATCH:set/validity/locale-->
938<!ATTLIST pluralRules draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
939    <!--@METADATA-->
940    <!--@DEPRECATED-->
941<!ATTLIST pluralRules references CDATA #IMPLIED >
942    <!--@METADATA-->
943
944<!ELEMENT pluralRule ( #PCDATA ) >
945    <!--@ORDERED-->
946<!ATTLIST pluralRule count (zero | one | two | few | many | other) #REQUIRED >
947    <!-- 'other' is implicitly everything else -->
948<!ATTLIST pluralRule draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
949    <!--@METADATA-->
950<!ATTLIST pluralRule references CDATA #IMPLIED >
951    <!--@METADATA-->
952
953<!ELEMENT pluralRanges ( pluralRange* ) >
954<!ATTLIST pluralRanges locales NMTOKENS #REQUIRED >
955    <!--@MATCH:set/validity/locale-->
956<!ATTLIST pluralRanges draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
957    <!--@METADATA-->
958    <!--@DEPRECATED-->
959<!ATTLIST pluralRanges references CDATA #IMPLIED >
960    <!--@METADATA-->
961
962<!ELEMENT pluralRange EMPTY >
963<!ATTLIST pluralRange start (zero | one | two | few | many | other) #IMPLIED >
964    <!-- if missing, means *all* -->
965<!ATTLIST pluralRange end (zero | one | two | few | many | other) #IMPLIED >
966    <!-- if missing, means *all* -->
967<!ATTLIST pluralRange result (zero | one | two | few | many | other) #REQUIRED >
968    <!-- if a whole rule is missing, means *other* -->
969    <!--@VALUE-->
970<!ATTLIST pluralRange draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
971    <!--@METADATA-->
972<!ATTLIST pluralRange references CDATA #IMPLIED >
973    <!--@METADATA-->
974
975<!ELEMENT telephoneCodeData ( codesByTerritory* ) >
976    <!--@DEPRECATED-->
977
978<!ELEMENT codesByTerritory ( telephoneCountryCode+ ) >
979    <!--@DEPRECATED-->
980<!ATTLIST codesByTerritory territory NMTOKEN #REQUIRED >
981    <!--@DEPRECATED-->
982<!ATTLIST codesByTerritory draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
983    <!--@METADATA-->
984    <!--@DEPRECATED-->
985<!ATTLIST codesByTerritory references CDATA #IMPLIED >
986    <!--@METADATA-->
987    <!--@DEPRECATED-->
988
989<!ELEMENT telephoneCountryCode EMPTY >
990    <!--@DEPRECATED-->
991<!ATTLIST telephoneCountryCode code NMTOKEN #REQUIRED >
992    <!--@DEPRECATED-->
993<!ATTLIST telephoneCountryCode from NMTOKEN #IMPLIED >
994    <!--@VALUE-->
995    <!--@DEPRECATED-->
996<!ATTLIST telephoneCountryCode to NMTOKEN #IMPLIED >
997    <!--@VALUE-->
998    <!--@DEPRECATED-->
999<!ATTLIST telephoneCountryCode draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
1000    <!--@METADATA-->
1001    <!--@DEPRECATED-->
1002<!ATTLIST telephoneCountryCode references CDATA #IMPLIED >
1003    <!--@METADATA-->
1004    <!--@DEPRECATED-->
1005<!ATTLIST telephoneCountryCode alt NMTOKENS #IMPLIED >
1006    <!--@MATCH:literal/variant-->
1007    <!--@DEPRECATED-->
1008
1009<!ELEMENT numberingSystems ( numberingSystem* ) >
1010
1011<!ELEMENT numberingSystem EMPTY >
1012<!ATTLIST numberingSystem type (numeric | algorithmic) #REQUIRED >
1013    <!--@VALUE-->
1014<!ATTLIST numberingSystem id NMTOKEN #REQUIRED >
1015    <!--@MATCH:bcp47/nu-->
1016<!ATTLIST numberingSystem radix NMTOKEN #IMPLIED >
1017    <!--@VALUE-->
1018<!ATTLIST numberingSystem digits CDATA #IMPLIED >
1019    <!--@MATCH:unicodeset/[\p{Nd}[\u3007\u4E00\u4E03\u4E09\u4E5D\u4E8C\u4E94\u516B\u516D\u56DB][\U00016AC0-\U00016AC9]]-->
1020    <!--@VALUE-->
1021<!ATTLIST numberingSystem rules CDATA #IMPLIED >
1022    <!--@MATCH:any-->
1023    <!--@VALUE-->
1024<!ATTLIST numberingSystem draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1025    <!--@METADATA-->
1026
1027<!ELEMENT bcp47KeywordMappings ( mapKeys?, mapTypes* ) >
1028    <!--@DEPRECATED-->
1029
1030<!ELEMENT mapKeys ( keyMap* ) >
1031    <!--@DEPRECATED-->
1032
1033<!ELEMENT keyMap EMPTY >
1034    <!--@DEPRECATED-->
1035<!ATTLIST keyMap type NMTOKEN #REQUIRED >
1036    <!--@DEPRECATED-->
1037<!ATTLIST keyMap bcp47 NMTOKEN #REQUIRED >
1038    <!--@VALUE-->
1039    <!--@DEPRECATED-->
1040
1041<!ELEMENT mapTypes ( typeMap* ) >
1042    <!--@DEPRECATED-->
1043<!ATTLIST mapTypes type NMTOKEN #REQUIRED >
1044    <!--@DEPRECATED-->
1045
1046<!ELEMENT typeMap EMPTY >
1047    <!--@DEPRECATED-->
1048<!ATTLIST typeMap type CDATA #REQUIRED >
1049    <!--@DEPRECATED-->
1050<!ATTLIST typeMap bcp47 NMTOKEN #REQUIRED >
1051    <!--@VALUE-->
1052    <!--@DEPRECATED-->
1053
1054<!-- # Gender List support -->
1055
1056<!ELEMENT gender ( personList+ ) >
1057
1058<!ELEMENT personList EMPTY >
1059<!ATTLIST personList type (neutral | mixedNeutral | maleTaints) #REQUIRED >
1060<!ATTLIST personList locales NMTOKENS #REQUIRED >
1061    <!--@MATCH:set/validity/locale-->
1062    <!--@VALUE-->
1063
1064<!ELEMENT references ( reference* ) >
1065    <!--@METADATA-->
1066
1067<!ELEMENT reference ( #PCDATA ) >
1068    <!--@METADATA-->
1069<!ATTLIST reference type NMTOKEN #REQUIRED >
1070    <!--@MATCH:any-->
1071<!ATTLIST reference uri CDATA #IMPLIED >
1072    <!--@MATCH:any-->
1073    <!--@VALUE-->
1074<!ATTLIST reference draft (approved | contributed | provisional | unconfirmed | true | false) #IMPLIED >
1075    <!--@METADATA-->
1076    <!--@DEPRECATED:true, false-->
1077<!ATTLIST reference standard (true | false) #IMPLIED >
1078    <!--@METADATA-->
1079    <!--@DEPRECATED-->
1080<!ATTLIST reference alt NMTOKENS #IMPLIED >
1081    <!--@MATCH:literal/variant-->
1082
1083<!ELEMENT languageMatching ( languageMatches* ) >
1084
1085<!ELEMENT languageMatches ( paradigmLocales*, matchVariable*, languageMatch* ) >
1086<!ATTLIST languageMatches type NMTOKEN #REQUIRED >
1087    <!--@MATCH:literal/written, written_new-->
1088
1089<!ELEMENT paradigmLocales EMPTY >
1090<!ATTLIST paradigmLocales locales NMTOKENS #REQUIRED >
1091    <!--@MATCH:set/validity/locale-->
1092    <!--@VALUE-->
1093
1094<!ELEMENT matchVariable EMPTY >
1095<!ATTLIST matchVariable id CDATA #REQUIRED >
1096    <!--@MATCH:regex/\$[a-zA-Z0-9_]+-->
1097<!ATTLIST matchVariable value CDATA #REQUIRED >
1098    <!--@MATCH:any-->
1099    <!--@VALUE-->
1100
1101<!ELEMENT languageMatch EMPTY >
1102    <!--@ORDERED-->
1103<!ATTLIST languageMatch desired CDATA #REQUIRED >
1104    <!--@MATCH:any/TODO-->
1105<!ATTLIST languageMatch supported CDATA #REQUIRED >
1106    <!--@MATCH:any/TODO-->
1107<!ATTLIST languageMatch percent NMTOKEN #IMPLIED >
1108    <!--@MATCH:range/0~100-->
1109    <!--@VALUE-->
1110<!ATTLIST languageMatch distance NMTOKEN #IMPLIED >
1111    <!--@MATCH:range/0~100-->
1112    <!--@VALUE-->
1113<!ATTLIST languageMatch oneway (true | false) #IMPLIED >
1114    <!--@VALUE-->
1115
1116<!-- # Day Periods -->
1117
1118<!ELEMENT dayPeriodRuleSet ( dayPeriodRules* ) >
1119<!ATTLIST dayPeriodRuleSet type NMTOKEN #IMPLIED >
1120    <!--@MATCH:literal/selection-->
1121<!ATTLIST dayPeriodRuleSet draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1122    <!--@METADATA-->
1123    <!--@DEPRECATED-->
1124<!ATTLIST dayPeriodRuleSet references CDATA #IMPLIED >
1125    <!--@METADATA-->
1126
1127<!ELEMENT dayPeriodRules ( dayPeriodRule* ) >
1128<!ATTLIST dayPeriodRules locales NMTOKENS #REQUIRED >
1129    <!--@MATCH:set/validity/locale-->
1130<!ATTLIST dayPeriodRules draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1131    <!--@METADATA-->
1132    <!--@DEPRECATED-->
1133<!ATTLIST dayPeriodRules references CDATA #IMPLIED >
1134    <!--@METADATA-->
1135
1136<!ELEMENT dayPeriodRule EMPTY >
1137<!ATTLIST dayPeriodRule type NMTOKEN #REQUIRED >
1138    <!--@MATCH:literal/afternoon1, afternoon2, am, evening1, evening2, midnight, morning1, morning2, night1, night2, noon, pm-->
1139<!ATTLIST dayPeriodRule at NMTOKEN #IMPLIED >
1140    <!--@MATCH:time/HH:mm-->
1141    <!--@VALUE-->
1142<!ATTLIST dayPeriodRule after NMTOKEN #IMPLIED >
1143    <!--@MATCH:time/HH:mm-->
1144    <!--@VALUE-->
1145    <!--@DEPRECATED-->
1146<!ATTLIST dayPeriodRule before NMTOKEN #IMPLIED >
1147    <!--@MATCH:time/HH:mm-->
1148    <!--@VALUE-->
1149<!ATTLIST dayPeriodRule from NMTOKEN #IMPLIED >
1150    <!--@MATCH:time/HH:mm-->
1151    <!--@VALUE-->
1152<!ATTLIST dayPeriodRule to NMTOKEN #IMPLIED >
1153    <!--@MATCH:time/HH:mm-->
1154    <!--@VALUE-->
1155    <!--@DEPRECATED-->
1156<!ATTLIST dayPeriodRule draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1157    <!--@METADATA-->
1158<!ATTLIST dayPeriodRule references CDATA #IMPLIED >
1159    <!--@METADATA-->
1160
1161<!ELEMENT metaZones ( metazoneInfo?, mapTimezones?, metazoneIds? ) >
1162
1163<!ELEMENT metazoneIds ( metazoneId* ) >
1164
1165<!ELEMENT metazoneId EMPTY >
1166<!ATTLIST metazoneId shortId NMTOKEN #REQUIRED >
1167    <!--@MATCH:regex/[a-z][a-z][a-z][a-z]-->
1168<!ATTLIST metazoneId longId CDATA #IMPLIED >
1169    <!--@MATCH:metazone-->
1170    <!--@VALUE-->
1171<!ATTLIST metazoneId deprecated (true | false) "false" >
1172    <!--@VALUE-->
1173<!ATTLIST metazoneId preferred NMTOKEN #IMPLIED >
1174    <!--@MATCH:metazone-->
1175    <!--@VALUE-->
1176<!ATTLIST metazoneId since CDATA "40" >
1177    <!--@MATCH:version-->
1178    <!--@METADATA-->
1179
1180<!ELEMENT primaryZones ( primaryZone* ) >
1181
1182<!ELEMENT primaryZone ( #PCDATA ) >
1183<!ATTLIST primaryZone iso3166 NMTOKEN #REQUIRED >
1184    <!--@MATCH:validity/region-->
1185
1186<!-- # Time Zones -->
1187
1188<!ELEMENT windowsZones ( mapTimezones? ) >
1189
1190<!-- # Coverage levels -->
1191
1192<!ELEMENT coverageLevels ( approvalRequirements, coverageVariable*, coverageLevel* ) >
1193    <!--@METADATA-->
1194
1195<!ELEMENT approvalRequirements ( approvalRequirement* ) >
1196
1197<!ELEMENT approvalRequirement EMPTY >
1198<!ATTLIST approvalRequirement votes CDATA #REQUIRED >
1199    <!--@MATCH:any-->
1200    <!--@VALUE-->
1201<!ATTLIST approvalRequirement locales CDATA #REQUIRED >
1202    <!--@MATCH:any-->
1203<!ATTLIST approvalRequirement paths CDATA #REQUIRED >
1204    <!--@MATCH:any-->
1205
1206<!ELEMENT coverageVariable EMPTY >
1207    <!--@ORDERED-->
1208<!ATTLIST coverageVariable key CDATA #REQUIRED >
1209    <!--@MATCH:any-->
1210<!ATTLIST coverageVariable value CDATA #REQUIRED >
1211    <!--@MATCH:any-->
1212    <!--@VALUE-->
1213
1214<!ELEMENT coverageLevel EMPTY >
1215    <!--@ORDERED-->
1216<!ATTLIST coverageLevel inLanguage CDATA #IMPLIED >
1217    <!--@MATCH:any-->
1218<!ATTLIST coverageLevel inScript CDATA #IMPLIED >
1219    <!--@MATCH:validity/script-->
1220<!ATTLIST coverageLevel inTerritory CDATA #IMPLIED >
1221    <!--@MATCH:any-->
1222<!ATTLIST coverageLevel value CDATA #REQUIRED >
1223    <!--@MATCH:literal/basic, core, minimal, moderate, modern, posix-->
1224    <!--@VALUE-->
1225<!ATTLIST coverageLevel match CDATA #REQUIRED >
1226    <!--@MATCH:any-->
1227
1228<!ELEMENT idValidity ( id* ) >
1229
1230<!ELEMENT id ( #PCDATA ) >
1231<!ATTLIST id type NMTOKEN #REQUIRED >
1232    <!--@MATCH:literal/currency, language, region, script, subdivision, unit, variant-->
1233<!ATTLIST id idStatus NMTOKEN #REQUIRED >
1234    <!--@MATCH:literal/deprecated, macroregion, private_use, regular, reserved, special, unknown-->
1235
1236<!ELEMENT rgScope ( rgPath* ) >
1237
1238<!ELEMENT rgPath EMPTY >
1239<!ATTLIST rgPath path CDATA #REQUIRED >
1240    <!--@MATCH:any-->
1241<!ATTLIST rgPath draft (approved | contributed | provisional | unconfirmed) #IMPLIED >
1242    <!--@METADATA-->
1243
1244<!ELEMENT languageGroups ( languageGroup* ) >
1245
1246<!ELEMENT languageGroup ( #PCDATA ) >
1247<!ATTLIST languageGroup parent NMTOKEN #REQUIRED >
1248    <!--@MATCH:validity/language-->
1249
1250<!-- # Grammatical Features -->
1251
1252<!ELEMENT grammaticalData ( grammaticalFeatures*, grammaticalDerivations* ) >
1253
1254<!ELEMENT grammaticalFeatures ( grammaticalCase*, grammaticalGender*, grammaticalDefiniteness* ) >
1255<!ATTLIST grammaticalFeatures targets NMTOKENS #REQUIRED >
1256    <!--@MATCH:set/literal/nominal-->
1257<!ATTLIST grammaticalFeatures locales NMTOKENS #REQUIRED >
1258    <!--@MATCH:set/validity/language-->
1259
1260<!ELEMENT grammaticalCase EMPTY >
1261<!ATTLIST grammaticalCase scope NMTOKENS #IMPLIED >
1262    <!--@MATCH:set/literal/units-->
1263<!ATTLIST grammaticalCase values NMTOKENS #IMPLIED >
1264    <!--@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-->
1265    <!--@VALUE-->
1266
1267<!ELEMENT grammaticalGender EMPTY >
1268<!ATTLIST grammaticalGender scope NMTOKENS #IMPLIED >
1269    <!--@MATCH:set/literal/units-->
1270<!ATTLIST grammaticalGender values NMTOKENS #IMPLIED >
1271    <!--@MATCH:set/literal/animate, common, feminine, inanimate, masculine, neuter, personal-->
1272    <!--@VALUE-->
1273
1274<!ELEMENT grammaticalDefiniteness EMPTY >
1275<!ATTLIST grammaticalDefiniteness scope NMTOKENS #IMPLIED >
1276    <!--@MATCH:set/literal/units-->
1277<!ATTLIST grammaticalDefiniteness values NMTOKENS #IMPLIED >
1278    <!--@MATCH:set/literal/definite, indefinite, unspecified, construct-->
1279    <!--@VALUE-->
1280
1281<!ELEMENT grammaticalDerivations ( deriveCompound*, deriveComponent* ) >
1282<!ATTLIST grammaticalDerivations locales NMTOKENS #REQUIRED >
1283    <!--@MATCH:set/validity/locale-->
1284
1285<!ELEMENT deriveCompound EMPTY >
1286<!ATTLIST deriveCompound feature NMTOKENS #REQUIRED >
1287    <!--@MATCH:set/literal/gender-->
1288<!ATTLIST deriveCompound structure NMTOKENS #REQUIRED >
1289    <!--@MATCH:set/literal/per, times, power, prefix-->
1290<!ATTLIST deriveCompound value NMTOKEN #REQUIRED >
1291    <!-- TODO: add @MATCH function for locale's gender categories and use here -->
1292    <!--@MATCH:set/literal/0, 1-->
1293    <!--@VALUE-->
1294
1295<!ELEMENT deriveComponent EMPTY >
1296<!ATTLIST deriveComponent feature NMTOKENS #REQUIRED >
1297    <!--@MATCH:set/literal/plural, case-->
1298<!ATTLIST deriveComponent structure NMTOKENS #REQUIRED >
1299    <!--@MATCH:set/literal/per, times, power, prefix-->
1300<!ATTLIST deriveComponent value0 NMTOKEN #REQUIRED >
1301    <!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
1302    <!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
1303    <!--@VALUE-->
1304<!ATTLIST deriveComponent value1 NMTOKEN #REQUIRED >
1305    <!-- TODO: add @MATCH function for locale's plural/case categories and use here -->
1306    <!--@MATCH:set/literal/compound, zero, one, two, few, many, other, accusative, nominative-->
1307    <!--@VALUE-->
1308