DTD Attribute Value Constraints
DTD Attribute Value Constraints
The following are
DTD Annotations
that provide constraints on attribute values.
They are used internally in managing and testing the data in XML files.
Because they are for internal use for CLDR tooling,
they are described here instead of in LDML section:
DTD Annotations
They are used in DTD Annotation lines such as the following;

The following describes the options available; the code implementing this is
MatchValue.java
Constraint
Matches
Example
Example Match
any
any string value; often used before applying tighter constraints
1438y9fbquio
any/TODO
placeholder for future constraints
uinpq43re
bcp47/{subtype}
see bcp47 subtypes below
bcp47/cu
usd
literal/{literal values}
comma separated literals
literal/-12, 0, 87
87
regex/{pattern}
valid regex expression
regex/[A-Z]{2}
BE
metazone
valid metazone
Africa/Abidjan
range/{start~end}
number between (inclusive) start and end
range/0~100
3.2
time/{pattern}
time or date or date-time pattern
time
y-MM-dd
unicodeset/{pattern}
valid unicodeset
unicodeset/\p{Letter}
validity/{subtype}
see validity subtypes below
validity/locale
en_US
version
1 to 4 digit field version
35.3.9
set/{match}
any element of a set of elements that match {match}
set/bcp47/tz
adalv aedxb
or/{match1}\|\|{match2}
matches at least one of {match1}, etc
or/bcp47/anykey||literal/t
BCP 47 subtypes
These subtypes test identifiers according to the
bcp47 files
, where key is a ukey or tkey, and type is a uvalue or tvalue.
| Constraint | Matches | Example | Example Match |
| ————————- | ——– | ——– |:——–:|
bcp47/anykey
| any bcp47 key | -| nu (number system)|
bcp47/anyvalue
| any bcp47 value | - | roman |
bcp47/{key}
| any value for that key | bcp47/nu | roman |
Validity subtypes
Most validity subtypes are implemented in ValidityMatchValue, which test identifiers according to the
validity files
. Each subtype may have an
idStatusList
, such as
currency
Validity subtype structure
Description
validity/currency
currency codes with default idStatus values
validity/currency/{idStatusList}
specific list of idStatus values
The optional
idStatusList
is a list of one or more idStatus values, such as
validity/currency/regular deprecated
The
idStatusList
consisting of
all
matches all idStatus values, so
validity/region/all
matches SU (Soviet Union).
The default if there is no
idStatusList
depends on the subtype:
Subtype
Default idStatusList
language
script
{regular, unknown, deprecated}
region
{regular, unknown, macroregion, special}
subdivision
_variant_
{regular, unknown, deprecated}
unit
currency
{regular, unknown}
These
idStatus
values match the values of the corresponding validity file, such as
validity/currency.xml
The default is all of the idStatus values that are valid for that validity file, except for deprecated. So validity/region doesn’t match SU (Soviet Union).
There is a special idStatus value
all
that includes deprecated, so
validity/region/all
matches SU (Soviet Union).
Note that
validity/unit
tests for
long
unit values, not
short
ones.
The special matchers are:
Subtype
Tests
bcp47-wellformed
well-formed bcp47, but not for validity.
locale
locale validity using the locale, script, region, and variant values. The idStatus is applied to each of those fields (after removing ones invalid for that field).
locale-for-names
=locale, but also allows certain deprecated locales, and is used in matching locales names.
locale-for-likely
=locale, also allows certain deprecated locales, and is used in matching likely subtags values.