summaryrefslogtreecommitdiffstats
path: root/util/locale_database/qlocalexml.rnc
blob: 5ed0a9a1cdf3b1508de551314ba9b2410dd1ec9f (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
#
# Copyright (C) 2021 The Qt Company Ltd.
# Contact: https://www.qt.io/licensing/
#
# This file is part of the test suite of the Qt Toolkit.
#
# $QT_BEGIN_LICENSE:GPL-EXCEPT$
# Commercial License Usage
# Licensees holding valid commercial Qt licenses may use this file in
# accordance with the commercial license agreement provided with the
# Software or, alternatively, in accordance with the terms contained in
# a written agreement between you and The Qt Company. For licensing terms
# and conditions see https://www.qt.io/terms-conditions. For further
# information use the contact form at https://www.qt.io/contact-us.
#
# GNU General Public License Usage
# Alternatively, this file may be used under the terms of the GNU
# General Public License version 3 as published by the Free Software
# Foundation with exceptions as appearing in the file LICENSE.GPL3-EXCEPT
# included in the packaging of this file. Please review the following
# information to ensure the GNU General Public License requirements will
# be met: https://www.gnu.org/licenses/gpl-3.0.html.
#
# $QT_END_LICENSE$
#

# This is RelaxNG compact schema for qLocaleXML interemediate locale data
# representation format produced and consumed by the qlocalexml module.
#
# To validate an xml file run:
#
#      jing -c qlocalexml.rnc <your-file.xml>
#
# You can download jing from https://relaxng.org/jclark/jing.html if your
# package manager lacks the jing package.

start = element localeDatabase {
  element version { text },
  element languageList { Language+ },
  element scriptList { Script+ },
  element territoryList { Territory+ },
  element likelySubtags { LikelySubtag+ },
  element localeList { Locale+ }
}

Language = element language { TagDescriptor }
Script = element script { TagDescriptor }
Territory = element territory { TagDescriptor }
TagDescriptor = (
  element name { text },
  element id { xsd:nonNegativeInteger },
  element code { text }
)

LikelySubtag = element likelySubtag {
  element from { LocaleTriplet },
  element to { LocaleTriplet }
}

LocaleTriplet = (
  element language { text },
  element script { text },
  element territory { text }
)

WeekDay = ("sun" | "mon" | "tue" | "wed" | "thu" | "fri" | "sat")
Digit = xsd:string { pattern = "\d" }
Punctuation = xsd:string { pattern = "\p{P}" }
GroupSizes = xsd:string { pattern = "\d;\d;\d" }

Locale = element locale {
  element language { text },
  element languagecode { text },
  element script { text },
  element scriptcode { text },
  element territory { text },
  element territorycode { text },
  element decimal { Punctuation },
  element group { text },
  element zero { Digit },
  element list { Punctuation },
  element percent { text },
  element minus { text },
  element plus { text },
  element exp { text },
  element languageEndonym { text },
  element territoryEndonym { text },
  element quotationStart { Punctuation },
  element quotationEnd { Punctuation },
  element alternateQuotationStart { Punctuation },
  element alternateQuotationEnd { Punctuation },
  element listPatternPartStart { text },
  element listPatternPartMiddle { text },
  element listPatternPartEnd { text },
  element listPatternPartTwo { text },
  element byte_unit { text },
  element byte_si_quantified { text },
  element byte_iec_quantified { text },
  element am { text },
  element pm { text },
  element firstDayOfWeek { text },
  element weekendStart { WeekDay },
  element weekendEnd { WeekDay },
  element longDateFormat { text },
  element shortDateFormat { text },
  element longTimeFormat { text },
  element shortTimeFormat { text },
  element currencyIsoCode { text },
  element currencySymbol { text },
  element currencyDisplayName { text },
  element currencyFormat { text },
  element currencyNegativeFormat { text },
  element longDays { text },
  element standaloneLongDays { text },
  element shortDays { text },
  element standaloneShortDays { text },
  element narrowDays { text },
  element standaloneNarrowDays { text },

  # Some of these entries may be absent depending on command line arguments
  element longMonths_gregorian { text }?,
  element longMonths_persian { text }?,
  element longMonths_islamic { text }?,
  element standaloneLongMonths_gregorian { text }?,
  element standaloneLongMonths_persian { text }?,
  element standaloneLongMonths_islamic { text }?,
  element shortMonths_gregorian { text }?,
  element shortMonths_persian { text }?,
  element shortMonths_islamic { text }?,
  element standaloneShortMonths_gregorian { text }?,
  element standaloneShortMonths_persian { text }?,
  element standaloneShortMonths_islamic { text }?,
  element narrowMonths_gregorian { text }?,
  element narrowMonths_persian { text }?,
  element narrowMonths_islamic { text }?,
  element standaloneNarrowMonths_gregorian { text }?,
  element standaloneNarrowMonths_persian { text }?,
  element standaloneNarrowMonths_islamic { text }?,

  element groupSizes { GroupSizes },
  element currencyDigits { xsd:nonNegativeInteger },
  element currencyRounding { xsd:nonNegativeInteger }
}