summaryrefslogtreecommitdiffstats
path: root/util/locale_database/qlocalexml.rnc
diff options
context:
space:
mode:
Diffstat (limited to 'util/locale_database/qlocalexml.rnc')
-rw-r--r--util/locale_database/qlocalexml.rnc119
1 files changed, 119 insertions, 0 deletions
diff --git a/util/locale_database/qlocalexml.rnc b/util/locale_database/qlocalexml.rnc
new file mode 100644
index 0000000000..818aa8f9c3
--- /dev/null
+++ b/util/locale_database/qlocalexml.rnc
@@ -0,0 +1,119 @@
+# Copyright (C) 2021 The Qt Company Ltd.
+# SPDX-License-Identifier: LicenseRef-Qt-Commercial OR GPL-3.0-only WITH Qt-GPL-exception-1.0
+# 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 }
+}