Information technology — International string ordering and comparison — Method for comparing character strings and description of the common template tailorable ordering

This document defines a reference comparison method. This method is applicable to two or more character strings to determine their collating order in a sorted list. The method can be applied to strings containing characters from the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that repertoire to produce ordering results valid (after tailoring) for a given set of languages for each script. This method uses collation tables derived either from the Common Template Tables (CTT) referenced by this document or from one of their tailoring. The format of the Common Template Table is described using the Backus-Naur Form (BNF). The format is used normatively within this document. This document also defines syntax elements to tailor these Common Template Tables used by the reference comparison method. Furthermore, it defines requirements for a declaration of the differences (delta) between a collation table and a given Common Template Table including the tailoring elements. These Common Template Tables describe an order for all characters encoded in the current and past ISO/IEC 10646 editions, including amendments. They allow for a specification of a fully deterministic ordering. These tables enable the specification of a string ordering adapted to local ordering rules, without requiring an implementer to have knowledge of all the different scripts already encoded in the Universal Coded Character Set (UCS). All these Common Template Tables have reference names which are related to a particular stage of development of the ISO/IEC 10646 Universal coded character set or a particular version of the Unicode Standard. These names and their relationship with ISO/IEC 10646 or the Unicode Standard repertoire are specified by an externally referenced document: Unicode Technical Standard, UTS #10, Unicode Collation Algorithm. This document does not: — mandate a specific comparison method; any equivalent method giving the same results is acceptable; — mandate a specific format for describing or tailoring tables in a given implementation; — mandate specific symbols to be used by implementations; — mandate any specific internal format for intermediate keys used when comparing, nor for the table used. The use of numeric keys is not mandated either; — mandate a context-dependent ordering; — mandate any particular preparation of character strings prior to comparison. NOTE 1 It is typical to do preparation of character strings prior to comparison even if it is not prescribed by this document (see Annex C). NOTE 2 Annex D describes problems that gave way to this document with their anticipated solutions.

Technologies de l'information — Classement international et comparaison de chaînes de caractères — Méthode de comparaison de chaînes de caractères et description du modèle commun et adaptable d'ordre de classement

Le présent document définit une méthode de comparaison de référence. Cette méthode est applicable à deux chaînes de caractères ou plus pour déterminer leur ordre de classement dans une liste triée. La méthode peut être appliquée aux chaînes contenant des caractères du répertoire complet de l'ISO/IEC 10646. Cette méthode est également applicable aux sous-ensembles de ce répertoire pour produire des résultats de tri valides (après adaptation) pour un ensemble donné de langues pour chaque script. Cette méthode de référence utilise des tables de tri dérivées soit des tables-modèles communes de classement définies dans le présent document, soit d’une de leurs adaptations. Le format de la table-modèle commune est décrit en notation BNF (Backus-Naur Form, Forme de Backus-Naur). Son emploi est normatif dans le présent document; Le présent document définit également les éléments de syntaxe pour adapter ces tables-modèles communes utilisées par la méthode de comparaison de référence. De plus, il définit les exigences relatives à une déclaration des différences (delta) entre une table de tri et une table-modèle commune donnée, y compris les éléments d'adaptation. Ces tables-modèles communes décrivent un ordre pour tous les caractères encodés dans les éditions actuelles et passées de l'ISO/IEC 10646, y compris les amendements. Elles permettent de spécifier un ordre complètement déterministe. Ces tables constituent le point de départ permettant de préciser un ordre de classement adapté aux règles de classement locales, sans qu’il soit nécessaire de connaître tous les systèmes d’écriture repris dans le jeu universel de caractères codés (JUC). Toutes ces tables-modèles communes comportent des noms de référence qui sont liés à un stade particulier de développement de l'ISO/IEC 10646 relative au jeu universel de caractères codés ou d'une version particulière du standard Unicode. Ces noms et leur relation avec l'ISO/IEC 10646 ou le répertoire du standard Unicode sont spécifiés par un document de référencement externe: Unicode Technical Standard, UTS #10, Unicode Collation Algorithm. Le présent document n'impose pas ce qui suit: — une méthode particulière de comparaison; toute méthode équivalente conduisant aux mêmes résultats est acceptable; — un format précis pour décrire ou pour adapter les tables dans une mise en œuvre donnée; — des symboles spécifiques à utiliser par les mises en œuvre; — un format interne particulier pour les clés intermédiaires utilisées dans les comparaisons ou pour la table de tri. L’utilisation de clés numériques n’est pas spécifiée non plus; — un ordre dépendant du contexte; — un prétraitement particulier des chaînes de caractères avant comparaison. NOTE 1 Bien que ceci ne soit pas spécifié par le présent document, il s’avère courant de préparer les chaînes de caractères avant leur comparaison (voir l’Annexe C). NOTE 2 L’Annexe D décrit les problèmes qui ont donné lieu au présent document avec leurs solutions anticipées.

General Information

Status
Published
Publication Date
21-Jul-2025
Current Stage
6060 - International Standard published
Start Date
22-Jul-2025
Due Date
23-Jun-2026
Completion Date
22-Jul-2025
Ref Project

Relations

Standard
ISO/IEC 14651:2025 - Information technology — International string ordering and comparison — Method for comparing character strings and description of the common template tailorable ordering Released:22. 07. 2025
English language
51 pages
sale 15% off
Preview
sale 15% off
Preview
Standard
ISO/IEC 14651:2025 - Technologies de l'information — Classement international et comparaison de chaînes de caractères — Méthode de comparaison de chaînes de caractères et description du modèle commun et adaptable d'ordre de classement Released:22. 07. 2025
French language
49 pages
sale 15% off
Preview
sale 15% off
Preview

Standards Content (Sample)


International
Standard
ISO/IEC 14651
Seventh edition
Information technology —
2025-07
International string ordering
and comparison — Method for
comparing character strings and
description of the common template
tailorable ordering
Technologies de l'information — Classement international
et comparaison de chaînes de caractères — Méthode de
comparaison de chaînes de caractères et description du modèle
commun et adaptable d'ordre de classement
Reference number
© ISO/IEC 2025
All rights reserved. Unless otherwise specified, or required in the context of its implementation, no part of this publication may
be reproduced or utilized otherwise in any form or by any means, electronic or mechanical, including photocopying, or posting on
the internet or an intranet, without prior written permission. Permission can be requested from either ISO at the address below
or ISO’s member body in the country of the requester.
ISO copyright office
CP 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Geneva
Phone: +41 22 749 01 11
Email: copyright@iso.org
Website: www.iso.org
Published in Switzerland
© ISO/IEC 2025 – All rights reserved
ii
Contents Page
Foreword .iv
Introduction .v
1 Scope . 1
2 Normative references . 2
3 Terms and definitions . 2
4 Symbols and conventions . 3
5 Conformance . 3
6 String comparison . 4
6.1 Preparation of character strings prior to comparison .4
6.2 Key building and comparison .5
6.2.1 Preliminary considerations .5
6.2.2 Reference ordering key formation.6
6.2.3 Reference comparison method for ordering character strings .8
6.2.4 Key ordering definition .8
6.3 Common Template Table: Formation and interpretation .9
6.3.1 General .9
6.3.2 BNF syntax rules for the Common Template Tables in Annex A .10
6.3.3 Well-formedness conditions . 12
6.3.4 Interpretation of tailored tables . 13
6.3.5 Evaluation of weight tables .14
6.3.6 Conditions for considering specific table equivalences. 15
6.3.7 Conditions for results to be considered equivalent . 15
6.4 Declaration of a delta . 15
6.5 Names of the Common Template Tables and name declaration .17
Annex A (normative) Common Template Tables .18
Annex B (informative) Example tailoring deltas.20
Annex C (informative) Preparation .29
Annex D (informative) Tutorial on solutions brought by this document to problems of lexical
ordering .45
Annex E (informative) Searching and fuzzy matches .49
Bibliography .51

© ISO/IEC 2025 – All rights reserved
iii
Foreword
ISO (the International Organization for Standardization) and IEC (the International Electrotechnical
Commission) form the specialized system for worldwide standardization. National bodies that are
members of ISO or IEC participate in the development of International Standards through technical
committees established by the respective organization to deal with particular fields of technical activity.
ISO and IEC technical committees collaborate in fields of mutual interest. Other international organizations,
governmental and non-governmental, in liaison with ISO and IEC, also take part in the work.
The procedures used to develop this document and those intended for its further maintenance are described
in the ISO/IEC Directives, Part 1. In particular, the different approval criteria needed for the different types
of document should be noted. This document was drafted in accordance with the editorial rules of the ISO/
IEC Directives, Part 2 (see www.iso.org/directives or www.iec.ch/members_experts/refdocs).
ISO and IEC draw attention to the possibility that the implementation of this document may involve the
use of (a) patent(s). ISO and IEC take no position concerning the evidence, validity or applicability of
any claimed patent rights in respect thereof. As of the date of publication of this document, ISO and IEC
had notreceived notice of (a) patent(s) which may be required to implement this document. However,
implementers are cautioned that this may not represent the latest information, which may be obtained from
the patent database available at www.iso.org/patents and https://patents.iec.ch. ISO and IEC shall not be
held responsible for identifying any or all such patent rights.
Any trade name used in this document is information given for the convenience of users and does not
constitute an endorsement.
For an explanation of the voluntary nature of standards, the meaning of ISO specific terms and expressions
related to conformity assessment, as well as information about ISO's adherence to the World Trade
Organization (WTO) principles in the Technical Barriers to Trade (TBT) see www.iso.org/iso/foreword.html.
In the IEC, see www.iec.ch/understanding-standards.
This document was prepared by Joint Technical Committee ISO/IEC JTC 1, Information technology,
Subcommittee SC 2, Coded character sets.
This seventh edition cancels and replaces the sixth edition (ISO/IEC 14651:2020), which has been technically
revised.
The main changes are as follows:
— the Common Template Tables are now referenced externally, removing the need for frequent update to
this document.
Any feedback or questions on this document should be directed to the user’s national standards
body. A complete listing of these bodies can be found at www.iso.org/members.html and
www.iec.ch/national-committees.

© ISO/IEC 2025 – All rights reserved
iv
Introduction
This document provides a method, applicable around the world, for ordering text data, and references
Common Template Tables which, when tailored, can meet a given language’s ordering requirements while
retaining reasonable ordering for other scripts.
Common Template Tables require some tailoring in different local environments. Conformance to this
document requires that all deviations from these templates, called “deltas”, be declared to document
resultant discrepancies.
This document describes a method to order text data independently of context.
ISO/IEC 30112 has specifications for ordering that informatively complement the specifications in this
document and indicates where additional information can be sought on ordering keywords defined in this
document.
© ISO/IEC 2025 – All rights reserved
v
International Standard ISO/IEC 14651:2025(en)
Information technology — International string ordering and
comparison — Method for comparing character strings and
description of the common template tailorable ordering
1 Scope
This document defines a reference comparison method. This method is applicable to two or more character
strings to determine their collating order in a sorted list. The method can be applied to strings containing
characters from the full repertoire of ISO/IEC 10646. This method is also applicable to subsets of that
repertoire to produce ordering results valid (after tailoring) for a given set of languages for each script.
This method uses collation tables derived either from the Common Template Tables (CTT) referenced by this
document or from one of their tailoring. The format of the Common Template Table is described using the
Backus-Naur Form (BNF). The format is used normatively within this document.
This document also defines syntax elements to tailor these Common Template Tables used by the reference
comparison method. Furthermore, it defines requirements for a declaration of the differences (delta)
between a collation table and a given Common Template Table including the tailoring elements.
These Common Template Tables describe an order for all characters encoded in the current and past
ISO/IEC 10646 editions, including amendments. They allow for a specification of a fully deterministic
ordering. These tables enable the specification of a string ordering adapted to local ordering rules, without
requiring an implementer to have knowledge of all the different scripts already encoded in the Universal
Coded Character Set (UCS).
All these Common Template Tables have reference names which are related to a particular stage of
development of the ISO/IEC 10646 Universal coded character set or a particular version of the Unicode
Standard. These names and their relationship with ISO/IEC 10646 or the Unicode Standard repertoire are
specified by an externally referenced document: Unicode Technical Standard, UTS #10, Unicode Collation
Algorithm.
This document does not:
— mandate a specific comparison method; any equivalent method giving the same results is acceptable;
— mandate a specific format for describing or tailoring tables in a given implementation;
— mandate specific symbols to be used by implementations;
— mandate any specific internal format for intermediate keys used when comparing, nor for the table used.
The use of numeric keys is not mandated either;
— mandate a context-dependent ordering;
— mandate any particular preparation of character strings prior to comparison.
NOTE 1 It is typical to do preparation of character strings prior to comparison even if it is not prescribed by
this document (see Annex C).
NOTE 2 Annex D describes problems that gave way to this document with their anticipated solutions.

© ISO/IEC 2025 – All rights reserved
2 Normative references
The following documents are referred to in the text in such a way that some or all of their content constitutes
requirements of this document. For dated references, only the edition cited applies. For undated references,
the latest edition of the referenced document (including any amendments) applies.
ISO/IEC 10646, Information technology — Universal coded character set (UCS)
Unicode Technical Standard. Unicode Technical Standard #10, Unicode Collation Algorithm:https:// www
.unicode .org/ reports/ tr10/
Common Template Tables. Unicode Technical Standard UTS #10, Unicode Collation Algorithm, Appendix B:
Synchronization with ISO/IEC 14651:https:// www .unicode .org/ reports/ tr10/ #Synch _ISO14651
3 Terms and definitions
For the purposes of this document, the following terms and definitions apply.
ISO and IEC maintain terminology databases for use in standardization at the following addresses:
— ISO Online browsing platform: available at https:// www .iso .org/ obp
— IEC Electropedia: available at https:// www .electropedia .org/
3.1
character string
sequence of characters considered as a single object
Note 1 to entry: A character string to be ordered does not normally include the characters that delimit it, as for example
an “end of line” control character in a text file to be sorted.
3.2
collating symbol
symbol (3.12) used to specify weights assigned to a collating element (3.4)
3.3
collation table
weighting table
mapping from collating elements (3.4) to weighting elements (3.14)
3.4
collating element
sequence of one or more characters that are considered a single entity for ordering (3.7)
3.5
delta
list of the differences between a given collation table (3.3) and another one
Note 1 to entry: The given collation table, together with a given delta, forms a new collation table.
Note 2 to entry: Unless otherwise specified in this document, the term “delta” always refers to differences from a
Common Template Table as defined in this document.
3.6
level
collation level
sequence number for a subkey (3.11) in the series of subkeys forming a key

© ISO/IEC 2025 – All rights reserved
3.7
ordering
collation
process by which, given two strings, it is determined whether the first one is less than, equal to, or greater
than the second one
3.8
ordering key
sequence of subkeys (3.11) used to determine an order
3.9
preparation
collation preparation
process in which given character strings (3.1) are mapped to (other) character strings before the calculation
of the ordering key (3.8) for each of the strings
3.10
reference comparison method
method for establishing an order between two ordering keys (3.8)
Note 1 to entry: See Clause 6.
3.11
subkey
sequence of weights computed for a character string (3.1)
3.12
symbol
collating element (3.4)
3.13
weight
collation weight
positive integer value, used in subkeys (3.11), reflecting the relative order of collating elements (3.4)
3.14
weighting element
list of a given number of weights sequentially ordered by level
4 Symbols and conventions
Following ISO/IEC 10646, characters are referenced as UX where X stands for a series of one to eight
hexadecimal digits (where all the letters in the hexadecimal string are in upper case) and refers to the value
of that character in ISO/IEC 10646. This convention is used throughout this document.
Any use of the term "The Common Template Table" in this document is applicable to all instances of Common
Template Tables referenced in Annex A. The term can also be abbreviated as CTT.
In the Common Template Table, arbitrary symbols representing weights are used according to the BNF
notation description in 6.3.1.
5 Conformance
A process is conformant to this document if it produces results identical to those that result from the
application of the specifications given in 6.2 to 6.5.
A declaration of conformity to this document shall be accompanied by a statement, either directly or by
reference, of the following:
— the name of the Common Template Table used by the process;

© ISO/IEC 2025 – All rights reserved
— the number of levels that the process supports (this number shall be at least three);
— whether the process supports the forward position processing parameter;
— whether the process supports the backward processing parameter and at which level;
— the tailoring delta described in 6.4 and how many levels are defined in the delta;
— if a preparation process is used, the method used shall be declared.
It is the responsibility of implementers to show how their delta declaration is related to the table syntax
described in 6.3, and how the comparison method they use, if different from the one mentioned in Clause 6,
can be considered as giving the same results as those prescribed by the method specified in Clause 6. The
use of a preparation process is optional, and its details are not specified in this document.
It is strongly recommended that processes present available tailoring options to users.
6 String comparison
6.1 Preparation of character strings prior to comparison
Preparation is necessary only for either modification or duplication, or both, of original strings to render
them context-independent prior to the comparison phase Although not part of the scope of this document,
preparation can be an important part of the ordering process. See Annex C for some examples of preparation.
Characters of the input string shall be encoded in accordance with ISO/IEC 10646 (UCS) or a mapping to
ISO/IEC 10646 shall be provided if another encoding scheme is used.
Therefore, it can be an important part of the preparation phase to map characters from a non-UCS encoding
scheme to the UCS for input to the comparison method. This task can, amongst other things, encompass
the correct handling of escape sequences in the originating encoding scheme, the mapping of characters
without an allocated UCS codepoint to an application-defined codepoint in the private zone area and change
the sequence of characters in strings that are not stored in logical order. For example, for visual order Arabic
code sets, input strings shall be put into logical order; and for some bibliographic code sets, strings with
combining accents stored before their respective base character require that the combining accents be put
after their base character. The resulting string sequence may then have to be remapped into its original
encoding scheme.
The Common Template Table is designed so that combining sequences and corresponding single characters
(precomposed) will have precisely the same ordering. To avoid inadvertently breaking this invariant
(and in the process breaking Unicode conformance), tailoring should reorder combining sequences when
corresponding precomposed characters are reordered. For example, if Ä is reordered after Z, then the
sequence + should also be reordered. To avoid exposing encoding differences
that can be invisible to the end-user, it is recommended that strings be normalized according to Unicode
[11]
normalization form NFD to achieve this equivalence .
Escape sequences and control characters constitute very sensitive data to interpret, and it is highly
recommended that preparation should filter out or transform these sequences.
NOTE Since the reference method is a logical statement for the mechanism for string comparison, it does not
preclude an implementation from using a non-UCS character encoding only, as long as it produces results as if it were
using the reference comparison method.

© ISO/IEC 2025 – All rights reserved
6.2 Key building and comparison
6.2.1 Preliminary considerations
6.2.1.1 Assumptions
The collation table is a mapping from collating elements to weighting elements. In each weighting element,
four levels are described in the Common Template Table. This number of levels can be extended or reduced,
but cannot be less than three, in tailoring.
In the Common Template Table, levels generally have the following characteristics, although this purpose is
not absolute.
— Level 1: This level generally corresponds to the set of common letters of the alphabets for that script, if
the script is alphabetic, and to the set of common characters of the script if the script is ideographic or
syllabic.
— Level 2: This level generally corresponds to diacritical marks affecting each basic character of the script.
For some languages, letters with diacritics are always considered an integral part of the basic letters of
the alphabet and are not considered at this second level, but rather at the first. For example, in Spanish,
N TILDE is considered a basic letter of the Latin script. Therefore, tailoring for Spanish will change the
definition of N TILDE from "the weight of an N in the first level and the weight of a TILDE in the second
level" to "the weight of an N TILDE (placed after N and before O) in the first level, and indication of the
absence of a diacritic in the second level". For some characters, variant letter shapes are also dealt with
on level 2. An example of this is ß, the LATIN SMALL LETTER SHARP S, which is treated as equivalent to
ss on level 1, but traditionally distinguished from it on level 2.
— Level 3: This level generally corresponds to case distinctions (upper and lower case) or to distinctions
based on variant letter shapes (like the distinction between Hiragana and Katakana).
— Level 4: This level generally corresponds to weighting differences that are less significant than those
at the other levels. Often the last level (level 4 in the Common Template Table) is intended to specify
additional weighting for "special" characters, i.e. characters normally not part of the spelling of words of
a language (such as dingbats, punctuation, etc.), sometimes called "ignorable" characters in the context
of computerized ordering.
6.2.1.2 Processing properties
A given tailored table has specific scanning and ordering properties. These properties can have been
changed by the tailoring.
A scanning direction (forward or backward) for each level is used to indicate how to process the string. The
scanning direction is a global property of each level defined in the tailored table.
If the last level is greater than three, there is an optional property of this level of comparison called “position”
option: when active, a comparison on the numeric position of each “ignorable” character in the two strings
is effected, before comparing their weights. In other words, for two strings equivalent at all levels except
the last one, the string having an ignorable character in the lowest position comes before the other one. In
the event that corresponding ignorable characters occur in the same position, their weights are considered,
until a difference is found. Support for this kind of processing is optional and is not necessary to claim
conformance to this document.
NOTE The scanning direction (forward or backward) is not normally related to the natural writing direction of
scripts. The scanning direction applies to the logical sequence of the coded character string.
According to ISO/IEC 10646, for scripts written right to left, such as Arabic, the first characters in the logical
sequence correspond to the rightmost characters in their natural presentation sequence. Conversely, for
the Latin script, written left to right, the first characters in the logical sequence correspond to the leftmost
characters in their natural presentation sequence.

© ISO/IEC 2025 – All rights reserved
Scanning forward starts with the lowest position in the logical sequence, while scanning backward starts
from the highest position, independently of the presentation sequence. The scanning direction for ordering
purposes is a global property of each level described in the table.
In ISO/IEC 10646, the Arabic script is artificially separated into two pseudo-scripts: 1) the logical, intrinsic
Arabic, coded independently of contextual shapes, and 2) the Arabic presentation forms. Both allow
the complete coding of Arabic, but intrinsic Arabic is normally preferred for better processing, while
presentation-form Arabic is preferred by some presentation-oriented applications. ISO/IEC 10646 does
not prescribe that the presentation forms be stored in any specific order, and in some implementations,
the storage order for the latter is the reverse of the storage order used for intrinsic Arabic. It is therefore
advisable that the preparation phase be used to make sure that Arabic presentation forms and other Arabic
characters be fed to the comparison method in logical order.
A tailored sort table can be separated into sections for ease of tailoring. Each section is then assigned a name
consistent with the specification in 6.3.1. One of the tailoring possibilities is to assign a given order to each
section and to change the relative order of an entire section relative to other sections.
6.2.2 Reference ordering key formation
6.2.2.1 General
When two strings are to be compared to determine their relative order, the two strings are first parsed
into a sequence of collating elements taking into account the multi-character “collating-element” statements
declared and used in a tailored table (if the syntax of 6.3.2 is used). For the syntax used for expressing the
Common Template Table, the name of a collating element consisting of a single character, is formed by the UCS
value of the character, expressed as a hexadecimal string, prefixed with “U”. For multi-character collating
elements, the name and association to characters can be found via the collating elements declarations.
NOTE Collating elements with more characters have preference over shorter ones. As an example, if a
multicharacter collating element is defined for “abc” and another one is defined for “ab” or for “bc”, then if “abc” is
encountered, the collating element for “abc” applies and not the one for “ab” or “bc”.
Then, a sequence of m intermediary subkeys is formed out of a character string, where m is the number of
levels described in a tailored collation weighting table.
Each ordering key is a sequence of subkeys. Each subkey is a list of numeric weights. A subkey is formed by
successively appending the list of the weights assigned, at the level of the subkey, to each collating element
of the string. The keyword “IGNORE” in the Common Template Table at the place of a sequence of collating
symbols at a level indicates that the sequence of weights at that level for that collating element is an empty
sequence of weights.
6.2.2.2 Weighting elements to be ignored
When forming a sort key, collating elements ignored at the first level or at the two first levels and that follow
a collation element ignored at all levels but the last one, do not keep their weights as defined in the common
template table (or a tailored table); each of these weights shall be zeroed (this means that “IGNORE” shall be
assigned to each non-nil weight).
6.2.2.3 Implicit weights computing
If there is no entry in the tailored table for a character of the input string, then the character’s weights are
undefined. In this case, one shall compute an “implicit” primary weight consisting of a pair of 16bit words —
call them “aaaa” and “bbbb” — and assume that lines like the following were added to the weighting table:
"";;;
16 16
NOTE 1 (at the last level) is the largest level 1 weight in the Common Template Table.
Distinctions are needed among characters with no entry in the weighting table, and implicit primary weights
are thus computed. A "base weight" is assigned to these characters, and specific functions are used to derive

© ISO/IEC 2025 – All rights reserved
the “aaaa” and ‘bbbb” values. These “base weight” values and functions are defined in the Unicode Technical
Standard #10 (see clause 2). The following shows examples for some of these “base weight” and functions
for specific characters and how they are used to determine the “aaaa” and “bbbb” for a given code point cp:
EXAMPLE 1
CJK Unified Ideographs
base_weight = 0xFB40 for original CJK Unified Ideographs (URO)
base_weight = 0xFB80 for CJK Extension A through Extension G
aaaa = [base_weight + (cp >> 15)]
bbbb = [(cp & 0x7FFF) | 0x8000]
EXAMPLE 2
Tangut Ideographs and Components
base_weight = 0xFB00
aaaa = [base_weight]
bbbb = [(cp – 0x17000) | 0x8000]
EXAMPLE 3
Nüshu Characters
base_weight = 0xFB01
aaaa = [base_weight]
bbbb = [(cp – 0x1B170) | 0x8000]
EXAMPLE 4
Khitan Small Script Characters
base_weight = 0xFB02
aaaa = [base_weight]
bbbb = [(cp – 0x18B00) | 0x8000]
Thus, the value of the code point is used to calculate the desired weights, by operating on individual bits.
The two numbers, converted to four-character hexadecimal values, will then take the following form:
"".
Decomposable characters are excluded from these computing, as they have an entry in the Common Template
Table (with dual primary weights).
If a string contains ill-formed code unit sequences, two approaches show up: the sequence can be handled as
if it were UFFFD (REPLACEMENT CHARACTER), or each subsequence can be ignored. The same approaches
can be adopted for any out-of-range values (cp > 10FFFF ).
NOTE 2 When computed weights are used, characters without explicit mappings are sorted in code point order
within each set they belong to and they sort properly with respect to the rest of the characters.
6.2.2.4 Subkeys formation
There are three ways of forming subkeys: subkeys formed using the “forward” processing parameter,
subkeys formed using the “backward” processing parameter, and subkeys formed using the “forward,
position” processing parameter. Subkeys that use the “position” option can only occur at the last level, and
only if that level is greater than three. Support of the “position” option is not required for conformance. If the

© ISO/IEC 2025 – All rights reserved
processing parameter “forward, position” is not supported, “forward, position” shall be interpreted as if the
processing parameter had been “forward”.
6.2.2.5 Formation of subkeys for the first three levels
With the “forward” or “forward, position” processing parameter, during (forward) scanning of each collating
element of the input character string, one or more weights are obtained. These weights are obtained by
matching the collating element in the given tailored collation weighting table, obtaining the list of weights
assigned to the collating element at the particular level. The obtained weight list is appended to the end of
the subkey.
Subkeys, at a particular level, formed with the “backward” level processing parameter are built by forming a
subkey as with the “forward” parameter, then reversing that subkey weight by weight.
6.2.2.6 Formation of the level 4 subkey
At the last level, the subkey is built as described in the preceding paragraph. However, once the ordering key
is completely formed (when the end of the string is reached), there are two possible approaches:
a) With the “forward” processing parameter: all the symbols are backed out of the subkey;
b) With the “forward, position” processing parameter: any trailing sequence of symbol(s) shall be
removed from the subkey (leaving intact the remaining part of the subkey).
6.2.3 Reference comparison method for ordering character strings
The reference comparison method for ordering two given character strings (after collation preparation,
which is not part of the reference comparison method itself) is to compare ordering keys generated by the
reference key formation method described in 6.2.2.
— Begin by building an ordering key, using a given tailored collation weighting table, for each of the two
given character strings being compared.
— Then compare the resulting keys according to the key ordering definition presented in 6.2.4. Keys can be
compared either up to a given level, or up to the last level of the given tailored collation weighting table.
NOTE The comparison can be made while generating the ordering keys for two strings to be compared, stopping
the key generation when the order of the strings can be determined. Such a technique is sometimes termed lazy
evaluation, and some systems support it by default. This avoids generating the full ordering key when an ordering
difference is found early in the keys. When a bigger set of strings are to be ordered, one can generate the ordering
keys, for example, and store each key or an initial segment of each, before comparing the keys.
6.2.4 Key ordering definition
Weights for different levels should not be compared, which implies that subkeys at different levels should
not be compared, nor should keys generated from different tailored tables be compared.
NOTE 1 This allows implementations to assign weightings at each level independently of the other levels, and
independently of other tailoring.
m is the maximal level of a given tailored table. Recall that a key is a list, of length m, of subkeys; a subkey is a
list of weights; and a weight is a positive integer. Other notations used below are the following:
— L is the length of the subkey z, i.e., the number of weights in the subkey;
z
— z , where 1 ≤ a ≤ L , is the weight at index position a (an integer > 0) of the subkey z;
wt(a) z
— u , where 1 ≤ b ≤ m, is the subkey at level b (an integer > 0) of the key u.
sk(b)
© ISO/IEC 2025 – All rights reserved
The orderings of weights, subkeys, and ordering keys (up to a given level, or up to the last level) are total
order relations, defined for a given tailored collation table as follows.
a) Weights are positive integers (in the reference method) and are compared as such for the purposes of
collation.
b) A subkey v is less than a subkey w (written v < w) if and only if there exists an integer, i, where 1 ≤ i ≤ Lv
+ 1 and i ≤Lw, such that
— i = 1 and v < w , or
wt(i) wt(i)
— for all integers, j, where 1 ≤ j < i, the equality v = w holds, and either
wt(j) wt(j)
— i ≤ L and v < w , or
v wt(i) wt(i)
— i = L +1 and 0 < w .
v wt(i)
A subkey v is greater than a subkey w (written v > w) if and only if w is less than v. A subkey v is equal to
a subkey w (written v = w) if and only if neither v is less than w, nor w is less than v.
c) An ordering key x is less than an ordering key y at level s (written x < y) if and only if there exists an
s
integer i, where 1 ≤ i ≤ s and i ≤ m, such that
— i = 1 and x < y , or
sk(i) sk(i)
— for all integers j, where 1 ≤ j < i, the equality x = y holds, and x < y .
sk(j) sk(j) sk(i) sk(i)
An ordering key x is greater than an ordering key y at level s (written x > y) if and only if y is less than x
s
at level s. An ordering key x is equal to an ordering key y at level s (written x = y) if and only if neither x is
s
less than y at level s, nor y is less than x at level s.
d) For ordering keys, <, >, and = are defined as < , > , and = respectively.
m m m
NOTE 2 For ordering keys, x < y implies x < y, x > y implies x > y, x = y implies x = y, x < y is false, x > y is
t t+1 t t+1 t t−1 0 0
false, and x = y is true. Above level m, for a given tailored table, there are no further ordering distinctions. Note
that this definition implies that if two ordering keys are in the ‘less than’ relationship at level 1, they will also be
in the ‘less than’ relationship at levels 2, 3, 4, etc. In general, whenever two ordering keys are less than at a given
level, they will also automatically be less than at all subsequent, higher levels. Conversely, if two ordering keys are
equal at a given level, they will also automatically be equal at all preceding, lower levels.
NOTE 3 The decomposition of character string into ordering keys of different levels of comparison from the
most significant to the least significant also facilitates fuzzy searches and searches for equivalences. Annex E
documents this kind of comparison.
6.3 Common Template Table: Formation and interpretation
6.3.1 General
This subclause specifies the following:
— the syntax used to form the Common Template Tables referenced in Annex A or a tailored table based
upon one of the Common Template Tables referenced in Annex A;
— conditions of well-formedness of a table using this syntax;
— interpretation of tailoring statements in deltas for tables formed using this syntax;
— evaluation from symbols to weights of tailored tables formed using this syntax;
— conditions for considering two tables as equivalent;
— conditions for considering comparison results as equivalent.

© ISO/IEC 2025 – All rights reserved
6.3.2 BNF syntax rules for the Common Template Tables in Annex A
6.3.2.1 General
Definitions between make use of terms not defined in this BNF syntax and assume general
English usage.
Other conventions:
— * indicates 0 or more repetitions of a token or a group of tokens;
— + indicates 1 or more repetitions of a token or a group of tokens;
— ? indicates optional occurrence of a token or a group of tokens (0 or 1 occurrences);
— parentheses are used to group tokens;
— production rules are terminated by a semicolon.
Define collation tables as sequences of lines:

weight_table = common_template_table | tailored_table ;
common_template_table =
simple_line+ ;
tailored_table = table_line+ ;

Define the line types:
simple_line =  (symbol_definition | collating_element |
weight_assignment | order_end)?
line_completion ;
table_line =   simple_line | tailoring_line ;
tailoring_line = (reorder_after | order_start | reorder_end |
section_definition | reorder_section_after)
line_completion ;
Define the basic syntax for collation weighting:

symbol_definition =
’collating-symbol’ space+ symbol_element ;
symbol_element = symbol | symbol_range ;
symbol_range = symbol ’.’ symbol ;
symbol =    simple_symbol | ucs_symbol ;
ucs_symbol =   (’’) |
(’’) ;
simple_symbol = ’<’ identifier ’>’ ;
collating_element =
’collating-element’ space+ symbol space+
’from’ space+ quoted_symbol_sequence ;
quoted_symbol_sequence =
’"’ simple_weight+ ’"’ ;
weight_assignment =
simple_weight | symbol_weight ;
simple_weight = symbol_element | ’UNDEFINED’ ;
symbol_weight = symbol_element space+ weight_list ;
weight_list =  level_token (semicolon level_token)* ;
level_token =  symbol_group | ’IGNORE’ ;
symbol_group =  symbol_element | quoted_symbol_sequence ;
order_end =   ’order_end’ ;

Define the tailoring syntax:
© ISO/IEC 2025 – All rights reserved
reorder_after = ’reorder-after’ space+ target_symbol ;
target_symbol = symbol ;
order_start =  ’order_start’ space+ multiple_level_direction ;
multiple_level_direction =
(direction semicolon)* direction (’,position’)? ;
direction =   ’forward’ | ’backward’ ;
reorder_end =  ’reorder-end’ ;
section_definition =
section_definition_simple |
section_definition_list ;
section_definition_simple =
’section’ space+ section_identifier ;
section_identifier =
identifier ;
section_definition_list =
’section’ space+ section_identifier space+
symbol_list ;
symbol_list =  symbol_element (semicolon symbol_element)* ;
reorder_section_after =
’reorder-section-after’ space+ section_identifier
space+ target_symbol ;
Define low-level tokens used by the rest of the syntax:

identifier =  (letter | digit) id_part* ;
id_part =   letter | digit | ’-’ | ’_’ ;
line_completion =
space* comment? EOL ;
comment =   comment_char character* ;
one_to_eight_digit_hex_string =
hex_upper |  hex_upper hex_upper |
hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper |
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper hex_upper |hex_upper
hex_upper hex_upper hex_upper
hex_upper hex_upper hex_upper hex_upper ;
hex_numeric_string =
hex_upper+ ;
space =    ’ ’ | ;
semicolon =  ’;’ ;
comment_char = ’%’ ;
digit =    ’0’ | ’1’ | ’2’ | ’3’ | ’4’ |
’5’ | ’6’ | ’7’ | ’8’ | ’9’ ;
hex_upper =  digit | ’A’ | ’B’ | ’C’ | ’D’ | ’E’ | ’F’ ;
letter =    ’a’ | ’b’ | ’c’ | ’d’ | ’e’ | ’f’ | ’g’ |
’h’ | ’i’ | ’j’ | ’k’ | ’l’ | ’m’ | ’n’ |
’o’ | ’p’ | ’q’ | ’r’ | ’s’ | ’t’ | ’u’ |
’v’ | ’w’ | ’x’ | ’y’ | ’z’ |
’A’ | ’B’ | ’C’ | ’D’ | ’E’ | ’F’ | ’G’ |
’H’ | ’I’ | ’J’ | ’K’ | ’L’ | ’M’ | ’N’ |
’O’ | ’P’ | ’Q’ | ’R’ | ’S’ | ’T’ | ’U’ |
’V’ | ’W’ | ’X’ | ’Y’ | ’Z’ ;
EOL =
...


Norme
internationale
ISO/IEC 14651
Septième édition
Technologies de l'information —
2025-07
Classement international et
comparaison de chaînes de
caractères — Méthode de
comparaison de chaînes de
caractères et description du modèle
commun et adaptable d'ordre de
classement
Information technology — International string ordering and
comparison — Method for comparing character strings and
description of the common template tailorable ordering
Numéro de référence
DOCUMENT PROTÉGÉ PAR COPYRIGHT
© ISO/IEC 2025
Tous droits réservés. Sauf prescription différente ou nécessité dans le contexte de sa mise en œuvre, aucune partie de cette
publication ne peut être reproduite ni utilisée sous quelque forme que ce soit et par aucun procédé, électronique ou mécanique,
y compris la photocopie, ou la diffusion sur l’internet ou sur un intranet, sans autorisation écrite préalable. Une autorisation peut
être demandée à l’ISO à l’adresse ci-après ou au comité membre de l’ISO dans le pays du demandeur.
ISO copyright office
Case postale 401 • Ch. de Blandonnet 8
CH-1214 Vernier, Genève
Tél.: +41 22 749 01 11
E-mail: copyright@iso.org
Web: www.iso.org
Publié en Suisse
© ISO/IEC 2025 – Tous droits réservés
ii
Sommaire Page
Avant-propos .iv
Introduction .v
1 Domaine d'application . 1
2 Références normatives . 2
3 Termes et définitions . 2
4 Symboles et conventions . 3
5 Conformité . 3
6 Comparaison de chaînes . 4
6.1 Prétraitement des chaînes de caractères avant comparaison .4
6.2 Construction des clés et comparaison .5
6.2.1 Considérations préliminaires .5
6.2.2 Formation de clés de tri de référence .6
6.2.3 Méthode de comparaison de référence pour le tri des chaînes de caractères .8
6.2.4 Définition de l'ordre des clés .8
6.3 Table-modèle commune: Formation et interprétation .9
6.3.1 Généralités .9
6.3.2 Règles de syntaxe BNF pour les tables-modèles communes de l’Annexe A .10
6.3.3 Contraintes de forme . 12
6.3.4 Interprétation des tables adaptées . 13
6.3.5 Évaluation des tables de poids . 15
6.3.6 Conditions d’équivalences de tables spécifiques . 15
6.3.7 Conditions d’équivalence des résultats . 15
6.4 Déclaration d'un delta . 15
6.5 Noms des tables-modèles communes et déclaration de nom .17
Annexe A (normative) Tables-modèles communes .18
Annexe B (informative) Exemple de deltas d'adaptation .20
Annexe C (informative) Prétraitement .27
Annexe D (informative) Annexe didactique sur les solutions apportées par le présent document
aux problèmes de tri lexical.43
Annexe E (informative) Recherche et correspondances floues . 47
Bibliographie .49

© ISO/IEC 2025 – Tous droits réservés
iii
Avant-propos
L'ISO (Organisation internationale de normalisation) et l'IEC (Commission électrotechnique internationale)
forment le système spécialisé de la normalisation mondiale. Les organismes nationaux membres de l'ISO
ou de l'IEC participent au développement de Normes Internationales par l'intermédiaire des comités
techniques créés par l'organisation concernée afin de s'occuper des domaines particuliers de l'activité
technique. Les comités techniques de l'ISO et de l'IEC collaborent dans des domaines d'intérêt commun.
D'autres organisations internationales, gouvernementales et non gouvernementales, en liaison avec l'ISO et
l'IEC participent également aux travaux.
Les procédures utilisées pour élaborer le présent document et celles destinées à sa mise à jour sont
décrites dans les Directives ISO/IEC, Partie 1. Il convient, en particulier de prendre note des différents
critères d'approbation requis pour les différents types de document ISO. Le présent document a
été rédigé conformément aux règles de rédaction données dans les Directives ISO/IEC, Partie 2
(voir www.iso.org/directives ou www.iec.ch/members_experts/refdocs).
L’ISO et l’IEC attirent l’attention sur la possibilité que la mise en œuvre du présent document implique
l'utilisation d'un ou plusieurs brevets. L’ISO et l’IEC ne se prononcent pas sur la preuve, la validité ou
l’applicabilité de tout droit de brevet revendiqué à cet égard. À la date de publication du présent document,
l'ISO et l’IEC n'avaient pas reçu notification de brevets pouvant être nécessaires à la mise en œuvre du
présent document. Toutefois, les utilisateurs sont avertis que ces informations ne sont pas nécessairement
les plus récentes et qu'ils peuvent obtenir des informations plus récentes dans les bases de données de
brevets disponibles à l'adresse www.iso.org/patents et https://patents.iec.ch. L'ISO et l’IEC ne peuvent être
tenues responsables de l'identification de tout ou partie de ces droits de brevet.
Les appellations commerciales éventuellement mentionnées dans le présent document sont données pour
information, par souci de commodité, à l'intention des utilisateurs et ne sauraient constituer un engagement.
Pour une explication de la nature volontaire des normes, la signification des termes et expressions
spécifiques de l'ISO liés à l'évaluation de la conformité, ou pour toute information au sujet de l'adhésion de
l'ISO aux principes de l'Organisation mondiale du commerce (OMC) concernant les obstacles techniques au
commerce (OTC), voir www.iso.org/avant-propos. Pour l'IEC, voir www.iec.ch/understanding-standards.
Le présent document a été élaboré par le comité technique mixte ISO/IEC JTC 1, Technologies de l'information,
sous-comité SC 2, Jeux de caractères codés.
Cette septième édition annule et remplace la sixième édition (ISO/IEC 14651:2020) qui a fait l'objet d'une
révision technique.
Les principales modifications sont les suivantes:
— les tables-modèles communes sont désormais référencés de manière externe, éliminant la nécessité
d'une mise à jour fréquente du présent document.
Il convient que l'utilisateur adresse tout retour d'information ou toute question concernant le présent
document à l'organisme national de normalisation de son pays. Une liste exhaustive desdits organismes se
trouve aux adresses www.iso.org/fr/members.html et www.iec.ch/national-committees.

© ISO/IEC 2025 – Tous droits réservés
iv
Introduction
Le présent document fournit une méthode universelle de mise en ordre des données textuelles. Il référence
les tables-modèles communes qui, lorsqu'elles sont adaptées, peuvent satisfaire aux exigences de tri d'une
langue donnée, tout en triant de manière raisonnable les autres écritures.
Les tables-modèles communes sont conçues de sorte qu’une adaptation s’avère nécessaire pour chaque
environnement local. C’est pourquoi la conformité au présent document requiert que les modifications à
ces tables communes, appelées «deltas», soient déclarées de manière à documenter les différences dans les
résultats.
Le présent document décrit une méthode pour classer l’information textuelle de manière indépendante du
contexte.
L’ISO/IEC 30112 contient des dispositions pour le tri complémentaires à celles du présent document; on y
trouve aussi des renseignements complémentaires sur les mots-clés définis dans le présent document et
utilisés pour le tri.
© ISO/IEC 2025 – Tous droits réservés
v
Norme internationale ISO/IEC 14651:2025(fr)
Technologies de l'information — Classement international
et comparaison de chaînes de caractères — Méthode de
comparaison de chaînes de caractères et description du
modèle commun et adaptable d'ordre de classement
1 Domaine d'application
Le présent document définit une méthode de comparaison de référence. Cette méthode est applicable à deux
chaînes de caractères ou plus pour déterminer leur ordre de classement dans une liste triée. La méthode
peut être appliquée aux chaînes contenant des caractères du répertoire complet de l'ISO/IEC 10646. Cette
méthode est également applicable aux sous-ensembles de ce répertoire pour produire des résultats de
tri valides (après adaptation) pour un ensemble donné de langues pour chaque script. Cette méthode de
référence utilise des tables de tri dérivées soit des tables-modèles communes de classement définies dans
le présent document, soit d’une de leurs adaptations. Le format de la table-modèle commune est décrit en
notation BNF (Backus-Naur Form, Forme de Backus-Naur). Son emploi est normatif dans le présent document;
Le présent document définit également les éléments de syntaxe pour adapter ces tables-modèles communes
utilisées par la méthode de comparaison de référence.
De plus, il définit les exigences relatives à une déclaration des différences (delta) entre une table de tri et une
table-modèle commune donnée, y compris les éléments d'adaptation.
Ces tables-modèles communes décrivent un ordre pour tous les caractères encodés dans les éditions
actuelles et passées de l'ISO/IEC 10646, y compris les amendements. Elles permettent de spécifier un ordre
complètement déterministe. Ces tables constituent le point de départ permettant de préciser un ordre de
classement adapté aux règles de classement locales, sans qu’il soit nécessaire de connaître tous les systèmes
d’écriture repris dans le jeu universel de caractères codés (JUC).
Toutes ces tables-modèles communes comportent des noms de référence qui sont liés à un stade particulier de
développement de l'ISO/IEC 10646 relative au jeu universel de caractères codés ou d'une version particulière
du standard Unicode. Ces noms et leur relation avec l'ISO/IEC 10646 ou le répertoire du standard Unicode
sont spécifiés par un document de référencement externe: Unicode Technical Standard, UTS #10, Unicode
Collation Algorithm.
Le présent document n'impose pas ce qui suit:
— une méthode particulière de comparaison; toute méthode équivalente conduisant aux mêmes résultats
est acceptable;
— un format précis pour décrire ou pour adapter les tables dans une mise en œuvre donnée;
— des symboles spécifiques à utiliser par les mises en œuvre;
— un format interne particulier pour les clés intermédiaires utilisées dans les comparaisons ou pour la
table de tri. L’utilisation de clés numériques n’est pas spécifiée non plus;
— un ordre dépendant du contexte;
— un prétraitement particulier des chaînes de caractères avant comparaison.
NOTE 1 Bien que ceci ne soit pas spécifié par le présent document, il s’avère courant de préparer les chaînes de
caractères avant leur comparaison (voir l’Annexe C).
NOTE 2 L’Annexe D décrit les problèmes qui ont donné lieu au présent document avec leurs solutions anticipées.

© ISO/IEC 2025 – Tous droits réservés
2 Références normatives
Les documents suivants sont cités dans le texte de sorte qu'ils constituent, pour tout ou partie de leur
contenu, des exigences du présent document. Pour les références datées, seule l'édition citée s'applique. Pour
les références non datées, la dernière édition du document de référence s'applique (y compris les éventuels
amendements).
ISO/IEC 10646, Technologies de l'information — Jeu universel de caractères codés (JUC)
Unicode Technical Standard. Unicode Technical Standard #10, Unicode Collation Algorithm: https:// www
.unicode .org/ reports/ tr10/
Common Template Tables. Unicode Technical Standard UTS #10, Unicode Collation Algorithm, Appendix B:
Synchronization with ISO/IEC 14651:https:// www .unicode .org/ reports/ tr10/ #Synch _ISO14651
3 Termes et définitions
Pour les besoins du présent document, les termes et définitions suivants s'appliquent.
L'ISO et l'IEC tiennent à jour des bases de données terminologiques destinées à être utilisées en normalisation,
consultables aux adresses suivantes:
— ISO Online browsing platform: disponible à l'adresse https:// www .iso .org/ obp
— IEC Electropedia: disponible à l'adresse https:// www .electropedia .org/
3.1
chaîne de caractères
suite de caractères considérée comme un objet simple
Note 1 à l'article: Une chaîne de caractères à trier ne comprend normalement pas les caractères qui la délimitent, par
exemple un caractère de commande de fin de ligne dans un fichier texte à trier.
3.2
symbole de tri
symbole (3.12) utilisé pour préciser les poids attribués à un élément de tri (3.4)
3.3
table de tri
table de poids
table reliant les éléments de tri (3.4) aux éléments de poids (3.14)
3.4
élément de tri
suite constituée d’un ou de plusieurs caractères considérés comme une seule entité aux fins du tri (3.7)
3.5
delta
liste des différences que présente une table de tri (3.3) donnée par rapport à une autre
Note 1 à l'article: Une table de tri donnée associée à un delta donné forme une nouvelle table de tri.
Note 2 à l'article: Sauf mention contraire, le terme «delta» désigne toujours les différences par rapport à une table-
modèle commune définie dans le présent document.
3.6
niveau
niveau de tri
numéro d’une sous-clé (3.11) dans la série de sous-clés formant une clé

© ISO/IEC 2025 – Tous droits réservés
3.7
tri
procédé par lequel on détermine si, de deux chaînes, la première est plus petite, égale ou plus grande que
la seconde
3.8
clé de tri
série de sous-clés (3.11) utilisée pour déterminer un ordre
3.9
préparation
préparation du tri
procédé par lequel des chaînes de caractères (3.1) données sont transformées en d’autres chaînes avant le
calcul de la clé de tri (3.8) de chaque chaîne
3.10
méthode de comparaison de référence
méthode de détermination de l’ordre relatif de deux clés de tri (3.8)
Note 1 à l'article: Voir Article 6.
3.11
sous-clé
suite de poids calculée pour une chaîne de caractères (3.1)
3.12
symbole
élément de tri (3.4)
3.13
poids
poids de tri
entier positif, utilisé dans les sous-clés (3.11), pour indiquer l’ordre relatif des éléments de tri (3.4)
3.14
élément de poids
liste d’un certain nombre de poids séquentiellement ordonnés par niveau
4 Symboles et conventions
Selon l’ISO/IEC 10646, les caractères se représentent à l’aide de UX, où X correspond à une série de un à huit
chiffres hexadécimaux (où toutes les lettres de la série de chiffres hexadécimaux sont en majuscules) et où
X est le numéro du caractère dans l’ISO/IEC 10646. Cette convention est utilisée tout au long du présent
document.
Toute utilisation du terme «Table-modèle commune» dans le présent document s'applique à toutes les instances
de tables-modèles communes référencées dans l'Annexe A. Le terme peut également être abrégé en TMC.
Dans la table-modèle commune, des symboles arbitraires représentent des poids selon la notation BNF
décrite en 6.3.1.
5 Conformité
Un processus est conforme au présent document s’il produit des résultats identiques à ceux qui résultent de
l’application des spécifications décrites en 6.2 à 6.5.
Toute déclaration de conformité au présent document doit être accompagnée, directement ou par référence,
d’une déclaration de ce qui suit:
— le nom de la table-modèle commune utilisé par le processus;

© ISO/IEC 2025 – Tous droits réservés
— le nombre de niveaux de tri que le processus peut utiliser (ce nombre doit être égal ou supérieur à trois);
— si le paramètre de traitement forward position est permis;
— si le paramètre de traitement backward est permis et à quel niveau;
— le delta d’adaptation décrit en 6.4 et le nombre de niveaux définis dans ce delta;
— si un processus de prétraitement est utilisé, la méthode utilisée doit être déclarée.
Il incombe au producteur de montrer en quoi sa déclaration de delta est reliée à la syntaxe de la table décrite
en 6.3, et comment la méthode de comparaison utilisée, si elle est différente de celle mentionnée à l’Article 6,
peut être considérée comme produisant les mêmes résultats que ceux spécifiés par la méthode décrite à
l’Article 6. L'usage d'un processus de prétraitement est optionnel et ses détails ne sont pas précisés dans le
présent document.
Il est fortement recommandé que l’application présente à l’utilisateur les options d’adaptation disponibles.
6 Comparaison de chaînes
6.1 Prétraitement des chaînes de caractères avant comparaison
Le prétraitement ne s’avère nécessaire que pour la modification ou la reproduction, ou les deux, de chaînes
originales, dans le but de les rendre indépendantes du contexte avant la comparaison. Bien que ne relevant
pas du domaine d’application du présent document, le prétraitement peut constituer une partie importante
du processus de tri. Voir l’Annexe C pour des exemples de prétraitement.
Les caractères de la chaîne d'entrée doivent être codés conformément à l’ISO/IEC 10646 (JUC) ou une
correspondance à l’ISO/IEC 10646 doit être fournie si une autre forme de codage est utilisée.
Par conséquent, une partie importante de la phase préparatoire peut consister à transformer les caractères
d’un codage non-JUC à des caractères du JUC fournis en entrée à la méthode de comparaison. Cette tâche
peut comprendre notamment le traitement correct de séquences d’échappement dans le codage d’origine, la
transformation de caractères sans attribution de point de codage dans le JUC en des points de code définis
par l’application dans la zone privée et la transposition de caractères dans le cas de chaînes qui ne seraient
pas stockées dans l’ordre logique. Par exemple, dans le cas de codages arabes en ordre visuel, les chaînes
d’entrée doivent être mises en ordre logique; et dans le cas de certains codages à usage bibliographique, les
accents combinatoires stockés avant leur caractère de base doivent être déplacés après le caractère de base.
La suite résultante peut alors devoir être retransformée dans son codage d’origine.
La table-modèle commune est conçue de sorte que les séquences combinatoires et les caractères simples
(précomposés) correspondants aient exactement le même ordre. Pour éviter de violer par mégarde cet
invariant (et au passage la conformité à Unicode), il convient que l’adaptation change le classement des
séquences combinatoires quand le classement des caractères précomposés correspondants est changé. Par
exemple, si Ä est déplacé après Z, il convient alors de changer aussi le classement de la séquence combinatoire
+ . Pour éviter de révéler des différences de codage invisibles à l’utilisateur, on
recommande de normaliser les chaînes selon la forme FND de l’algorithme de normalisation Unicode – voir
[11] dans la bibliographie.
Les séquences d’échappement et les caractères de commande sont très délicats à interpréter; il est fortement
recommandé de les filtrer ou de les transformer.
NOTE Puisque la méthode de comparaison de référence est une description logique du procédé de comparaison
de chaînes, rien n’empêche une mise en œuvre de cette méthode d’utiliser exclusivement un codage autre qu’un codage
du JUC, pour autant que les résultats obtenus soient les mêmes que si la méthode de référence était utilisée.

© ISO/IEC 2025 – Tous droits réservés
6.2 Construction des clés et comparaison
6.2.1 Considérations préliminaires
6.2.1.1 Hypothèses
La table de tri est une transformation des éléments de tri en éléments de poids. Pour chaque élément de
poids, la table-modèle commune décrit quatre niveaux. L’adaptation peut augmenter ou réduire ce nombre
de niveaux, mais pas à moins de trois.
Dans la table-modèle commune, les niveaux ont généralement les significations suivantes, bien que cet usage
ne soit pas absolu.
— Niveau 1: ce niveau correspond généralement au jeu de lettres de base pour une écriture alphabétique,
au jeu de caractères courants pour une écriture idéographique ou syllabique.
— Niveau 2: ce niveau correspond généralement aux diacritiques pouvant accompagner les caractères
de base de chaque écriture. En certaines langues, les lettres accentuées sont considérées comme des
lettres de base de l’alphabet et ne sont pas affectées par ce niveau, mais seulement par le premier niveau.
En espagnol par exemple, le N TILDE est considéré comme une lettre de base de l’alphabet latin; par
conséquent, une adaptation pour l’espagnol changera la définition de N TILDE de «le poids d’un N au
premier niveau et le poids d’un TILDE au second niveau» à «le poids d’un N TILDE (entre N et O) au
premier niveau et une indication de l’absence de diacritique au second niveau». Pour certains caractères,
on prend également en compte des variantes de forme au second niveau, par exemple ß (la LETTRE
MINUSCULE LATINE S DUR), qui est traitée comme un équivalent de ss au premier niveau mais s’en
distingue traditionnellement au second niveau.
— Niveau 3: ce niveau est généralement associé aux distinctions de casse (majuscules-minuscules) ou aux
variantes de formes (comme la distinction entre hiragana et katakana).
— Niveau 4: ce niveau est généralement consacré aux distinctions pondérales plus fines que celles des
autres niveaux. Le dernier niveau (le quatrième dans la table-modèle commune) est souvent utilisé pour
donner des poids additionnels à des caractères «spéciaux», c’est-à-dire des caractères qui ne sont pas
normalement utilisés dans l’orthographe des mots d’une langue (ponctuation, vignettes, etc.), souvent
appelés «ignorables» dans le contexte du tri informatique.
6.2.1.2 Propriétés de traitement
Une table de tri adaptée donnée possède des propriétés spécifiques de balayage et de classement. Ces
propriétés peuvent avoir été changées par l’adaptation.
Une direction de balayage (vers l’avant ou vers l’arrière) pour chaque niveau est utilisée pour indiquer
comment traiter la chaîne. La direction de balayage est une propriété globale de chaque niveau défini dans
la table adaptée.
Si le dernier niveau est supérieur à trois, il existe une propriété optionnelle de ce niveau appelée l’option
«position»: lorsqu'elle est active, une comparaison des positions numériques de chaque caractère «ignorable»
dans les deux chaînes est effectuée, avant de comparer leurs poids. En d’autres mots, si deux chaînes sont
équivalentes à tous les niveaux sauf le dernier, la chaîne contenant un caractère ignorable en position la plus
basse est classée avant l’autre. Si les caractères ignorables ont les mêmes positions, alors leurs poids sont
considérés jusqu’à ce qu’une différence soit trouvée. Le traitement correct de cette propriété est optionnel et
n’est pas nécessaire pour revendiquer la conformité au présent document.
NOTE La direction de balayage (vers l’avant ou vers l’arrière) n’est normalement pas reliée à la direction naturelle
d’écriture. La direction de balayage s’applique à la suite logique de la chaîne de caractères codés.
Dans le cas d’écritures de droite à gauche comme l’arabe, l’ISO/IEC 10646 spécifie que les premiers caractères
en ordre logique sont ceux apparaissant le plus à droite dans leur ordre de présentation naturel. En écriture
latine au contraire, les premiers caractères en ordre logique apparaissent le plus à gauche dans leur ordre de
présentation naturel.
© ISO/IEC 2025 – Tous droits réservés
Le balayage vers l’avant commence au début de la séquence en ordre logique, alors que le balayage vers
l’arrière commence à la fin, indépendamment de l’ordre de présentation. La direction de balayage à des fins
de tri est une propriété globale de chaque niveau décrit dans la table.
Dans l’ISO/IEC 10646, l’écriture arabe est artificiellement séparée en deux pseudo-écritures: 1) l’écriture
arabe logique, intrinsèque, codée indépendamment des formes contextuelles et 2) les formes de présentations
arabes. Les deux permettent le codage complet de l’arabe, mais le codage intrinsèque est normalement
privilégié pour sa meilleure capacité de traitement, alors que certaines applications de présentation
préfèrent les formes de présentation. L’ISO/IEC 10646 ne préconise pas d’ordre de stockage spécifique des
formes de présentation; dans certaines réalisations, elles sont stockées en ordre inverse de celui utilisé pour
le codage intrinsèque. Par conséquent, il est recommandé, lors de la phase de prétraitement, de s'assurer
que les formes de présentation arabes et les autres caractères arabes soient fournis en ordre logique à la
méthode de comparaison.
Une table de tri adaptée peut être séparée en sections pour faciliter l’adaptation. On donne alors à chaque
section un nom, conformément aux dispositions de 6.3.1. Une des possibilités d’adaptation est de donner un
certain ordre à chaque section et de changer l’ordre relatif d’une section par rapport à d’autres.
6.2.2 Formation de clés de tri de référence
6.2.2.1 Généralités
Lorsque deux chaînes doivent être comparées pour déterminer leur ordre relatif, elles sont d’abord analysées
en une séquence d’éléments de tri, en tenant compte des déclarations «collating-element» à caractères
multiples présentes dans une table de tri adaptée (si la syntaxe de 6.3.2 est utilisée). Dans la syntaxe utilisée
pour exprimer la table-modèle commune, le nom d’un élément de tri associé à un seul caractère est formé de
la lettre «U» suivie du numéro du caractère dans le JUC, en notation hexadécimale. Les noms et caractères
associés aux éléments de tri multicaractères sont définis par les déclarations d’éléments de tri.
NOTE Les éléments de tri comportant plus de caractères sont préférés à ceux qui sont plus courts. Par exemple,
si un élément de tri comportant plusieurs caractères est défini pour «abc» et qu’un autre est défini pour «ab» ou qu’un
autre l’est pour «bc», alors, si «abc» se présente, l’élément de tri pour «abc» s’applique et non celui pour «ab» ou «bc».
Une suite de m sous-clés intermédiaires est alors formée de chaque chaîne, m étant le nombre de niveaux
décrits dans une table de poids de tri adaptée.
Chaque clé de tri est une suite de sous-clés. Chaque sous-clé est une liste de poids numériques. Une sous-clé
est construite en ajoutant successivement la liste des poids attribués à chaque élément de tri de la chaîne au
niveau de la sous-clé en construction. Dans la table-modèle commune, le mot-clé «IGNORE» trouvé à la place
d’une suite de symboles de tri à un niveau indique que la suite de poids à ce niveau pour cet élément de tri
est vide.
6.2.2.2 Annulation de certains éléments de poids
Dans la formation d’une clé de tri, tout élément de tri qui est ignoré au premier niveau ou aux deux premiers
niveaux et qui succède à un élément de tri ignoré à tous les niveaux sauf le dernier ne conserve pas ses poids
tels qu’ils sont donnés dans la table-modèle commune (ou son adaptation); chacun de ces poids doit être
annulé (cela signifie que l’on doit remplacer chaque poids non nul par un poids nul: «IGNORE»).
6.2.2.3 Calcul des poids implicites
Si la table adaptée ne contient pas d’entrée pour un caractère de la chaîne d’entrée, les poids de ce caractère
ne sont pas définis. Il faut dans ce cas calculer un poids primaire dit «implicite», constitué d’une paire de
seizets – appelons-les «aaaa» et «bbbb» – et supposer des lignes d’adaptation de la forme suivante ont été
ajoutées à la table de poids:
";;;
16 16
NOTE 1 (au dernier niveau) est le plus grand poids de premier niveau dans la table-modèle commune.

© ISO/IEC 2025 – Tous droits réservés
La règle de calcul d’un poids implicite n’est pas uniforme; des distinctions doivent être faites parmi les
caractères qui n’ont pas d’entrée dans la table de poids. Un «poids de base» est attribué à ces caractères et
des fonctions spécifiques sont utilisées pour calculer les valeurs «aaaa» et «bbbb». Ces valeurs et fonctions
de «poids de base» sont définies dans le Unicode Technical Standard #10 (voir l'Article 2). Voici des exemples
pour certains de ces «poids de base» et fonctions pour des caractères spécifiques et comment ils sont utilisés
pour déterminer les «aaaa» et «bbbb» pour une position de code pc donnée:
EXEMPLE 1
Idéogrammes unifiés CJC
poids_base = 0xFB40 pour les idéogrammes unifiés CJC d’origine (URO)
poids_base = 0xFB80 pour les extensions de CJC A à G
aaaa = [poids_base + (pc >> 15)]
bbbb = [(pc et 0x7FFF) | 0x8000]
EXEMPLE 2
Idéogrammes et composants tangoutes
poids_base = 0xFB00
aaaa = [poids_base]
bbbb = [(pc – 0x17000) | 0x8000]
EXEMPLE 3
Caractères nüshu
poids_base = 0xFB01
aaaa = [poids_base]
bbbb = [(pc – 0x1B170) | 0x8000]
EXEMPLE 4
Caractères de la petite écriture khitane
base_poids = 0xFB02
aaaa = [poids_base]
bbbb = [(pc – 0x18B00) | 0x8000]
Ainsi, la valeur du point de codage est utilisée pour calculer les poids souhaités, par le truchement de calculs
d’opérations bit à bit. Les deux nombres, convertis en valeurs hexadécimales de quatre caractères, prendront
alors la forme suivante: «».
Les caractères décomposables sont exclus de ce traitement, car ils ont une entrée dans la table-modèle
commune (avec des poids de premier niveau sous la forme d’une paire couplée).
Dans le cas d’une suite mal formée d’octets, il y a deux options possibles: soit chaque octet de la
séquence est ignoré, soit la séquence est traitée comme s’il s’agissait du caractère UFFFD (CARACTÈRE
DE REMPLACEMENT). Les mêmes options peuvent s’appliquer à d’éventuelles valeurs hors limite
(pc > 10FFFF ).
NOTE 2 Avec la méthode des poids implicites, les caractères sans entrée dans la table de tri sont ordonnés selon
la valeur scalaire du point de codage au sein de l’ensemble auquel ils appartiennent, et ils sont triés correctement
relativement aux autres caractères.

© ISO/IEC 2025 – Tous droits réservés
6.2.2.4 Formation des sous-clés
Il y a trois façons de former des sous-clés: vers l’avant (paramètre de traitement «forward»), vers l’arrière
(paramètre de traitement «backward») et de façon positionnelle (paramètre de traitement «forward,
position»). Les sous-clés formées de façon positionnelle ne peuvent apparaître qu’au dernier niveau et
seulement si ce niveau est supérieur à trois. La conformité n’exige pas la formation de sous-clés de façon
positionnelle; une réalisation incapable de formation positionnelle doit interpréter «forward, position»
comme s’il s’agissait de «forward».
6.2.2.5 Formation des sous-clés aux trois premiers niveaux
En présence du paramètre de traitement «forward» ou «forward, position», on construit la sous-clé en
balayant vers l’avant un à un les éléments de tri de la chaîne de caractères d’entrée pour leur attribuer un ou
plusieurs poids. On obtient les poids en recherchant les éléments de tri dans la table de poids de tri adaptée
donnée et en extrayant la liste de poids pour le niveau considéré. Cette liste de poids obtenue s’ajoute à la fin
de la sous-clé.
En présence du paramètre de traitement «backward» à un niveau donné, on construit la sous-clé vers l’avant,
comme indiqué ci-devant, et on la renverse, poids par poids.
6.2.2.6 Formation de la sous-clé au quatrième niveau
Au dernier niveau, la sous-clé est construite comme cela est décrit dans l'alinéa précédent. Toutefois, une fois
que la clé de tri est formée complètement (lorsque la fin de la chaîne est atteinte), deux options se présentent:
a) en présence du paramètre de traitement «forward»: on supprime toutes les occurrences du poids
qui se présentent dans la sous-clé;
b) en présence du paramètre de traitement «forward, position»: on doit supprimer de la sous-clé toute
séquence de queue de la valeur (la partie qui subsiste reste intacte).
6.2.3 Méthode de comparaison de référence pour le tri des chaînes de caractères
La méthode de comparaison de référence pour le classement de deux chaînes de caractères données (après
la préparation du tri, qui ne fait pas partie de cette méthode de comparaison) consiste à comparer les clés de
tri construites selon la méthode de référence décrite en 6.2.2 du présent document:
— en utilisant une table de poids de tri adaptée donnée, construire une clé de tri pour chacune des deux
chaînes données à comparer;
— comparer ensuite les clés obtenues selon la définition de l’ordre des clés donnée en 6.2.4. Les clés peuvent
être comparées jusqu’à un niveau donné ou jusqu’au dernier niveau de la table de poids de tri adaptée donnée.
NOTE La comparaison peut être effectuée pendant la construction des clés de tri pour les deux chaînes à comparer,
en arrêtant cette construction dès que l’ordre des chaînes peut être déterminé. Cette technique est parfois appelée
évaluation paresseuse et certains systèmes l’utilisent implicitement. Elle permet d’éviter la construction complète des
clés de tri quand une différence est trouvée tôt pendant la construction. Quand un ensemble important de chaînes doit
être trié, l’on peut par exemple construire et stocker les clés de tri – ou tout au moins un segment initial de chacune
d’elles avant de les comparer.
6.2.4 Définition de l'ordre des clés
Il convient de ne pas comparer les poids associés à des niveaux différents, ni par conséquent les sous-clés de
différents niveaux. Il convient de ne pas comparer non plus les clés construites à partir de tables adaptées
différentes.
NOTE 1 Ceci permet aux mises en œuvre d’attribuer les poids à chaque niveau indépendamment des autres niveaux
et sans égard à d’autres tables adaptées.

© ISO/IEC 2025 – Tous droits réservés
m est le niveau maximal d’une table adaptée donnée. Rappelons qu’une clé est une liste, de longueur m, de
sous-clés; une sous-clé est une liste de poids; un poids est un entier positif. D’autres notations utilisées ci-
dessous sont:
— L est la longueur de la sous-clé z, c’est-à-dire le nombre de poids dans cette sous-clé;
z
— z , où 1 ≤ a ≤ L , est le poids à la position a (un entier > 0) de la sous-clé z;
pd(a) z
— u , où 1 ≤ b ≤ m, est la sous-clé de niveau b (un entier > 0) de la clé u.
sc(b)
Les ordres des poids, des sous-clés et des clés de tri (jusqu’à un niveau donné ou jusqu’au dernier niveau)
sont des relations d’ordre total, définies pour une table de tri adaptée donnée comme suit.
a) Les poids sont des valeurs entières positives (dans la méthode de référence) et sont comparés comme
tels aux fins du classement.
b) Une sous-clé v est plus petite qu’une sous-clé w (on notera v < w) si et seulement s’il existe un entier i, où
1 ≤ i ≤ Lv + 1 et i ≤ Lw, tel que:
— i = 1 et v < w ; ou
pd(i) pd(i)
— pour tous les entiers j, 1 ≤ j < i, l’égalité v = w est maintenue; et soit
pd(j) pd(j)
— i ≤ L et v < w ; ou
v pd(i) pd(i)
— i = L +1 et 0 < w .
v pd(i)
Une sous-clé v est plus grande qu’une sous-clé w (on notera v > w) si et seulement si w est plus petite que
v. Une sous-clé v est égale à une sous-clé w (on notera v = w) si et seulement si v n’est pas plus petite que
w et w n’est pas plus petite que v.
c) Une clé de tri x est plus petite qu’une clé de tri y au niveau s (on notera x < y) si et seulement s’il existe un
s
entier i, où 1 ≤ i ≤ s et i ≤ m, tel que:
— i = 1 et x < y ; ou
sc(i) sc(i)
— pour tous les entiers j, 1 ≤ j < i, l'égalité x = y est maintenue et x < y .
sc(j) sc(j) sc(i) sc(i)
Une clé de tri x est plus grande qu’une clé de tri y au niveau s (on notera x > y) si et seulement si y est
s
plus petite que x au niveau s. Une clé de tri x est égale à une clé de tri y au niveau s (on notera x = y) si et
s
seulement si x n’est pas plus petite que y au niveau s et y n’est pas plus petite que x au niveau s.
d) Pour les clés de tri, < , > et = sont définis comme < , > et = respectivement.
m m m
NOTE 2 Pour les clés de tri, x < y implique que x < y, x > y implique que x > y, x = y implique que x = y,
t t+1 t t+1 t t−1
x < y est faux, x > y est faux et x = y est vrai. Au-delà du niveau m, pour une table adaptée donnée, il n’y a plus de
0 0 0
distinctions d’ordre. On notera que cette définition implique que si une clé est «plus petite» qu’une autre au niveau 1,
elle est aussi «plus petite» aux niveaux 2, 3, 4, etc. En général, lorsqu’une clé est plus petite qu’une autre à un certain
niveau, elle l’est aussi à tous les niveaux subséquents. A contrario, lorsque deux clés sont égales à un certain niveau,
elles sont aussi égales à tous les niveaux inférieurs.
NOTE 3 La décomposition d’une chaîne de caractères en clés de tris de différents niveaux de comparaison du
plus significatif au moins significatif permet aussi de faciliter les recherches floues et les recherches d’équivalences.
L’Annexe E documente ce genre de comparaison.
6.3 Table-modèle commune: Formation et interprétation
6.3.1 Généralités
Ce paragraphe précise:
— la syntaxe utilisée par les tables-modèles communes données à l’Annexe A ou par une table adaptée
basée sur les tables-modèles communes telles que données à l’Annexe A;

© ISO/IEC 2025 – Tous droits réservés
— les contraintes de forme d’une table utilisant cette syntaxe;
— l’interprétation à donner aux énoncés d’adaptation dans les deltas pour des tables utilisant cette syntaxe;
— l’évaluation des symboles en poids dans les tables adaptées utilisant cette syntaxe;
— les conditions d’équivalence de deux tables;
— les conditions d’équivalence des résultats de comparaison.
6.3.2 Règles de syntaxe BNF pour les tables-modèles communes de l’Annexe A
6.3.2.1 Généralités
Les définitions < entre crochets > utilisent des termes qui ne sont pas définis dans cette syntaxe BNF et
suivent l’usage général en français.
Autres conventions:
— * indique une répétition (0 fois ou plus) d’un atome ou d’un groupe d’atomes;
— + indique une répétition (1 fois ou plus) d’un atome ou d’un groupe d’atomes;
— ? indique l’apparition optionnelle (0 ou 1 fois) d’un atome ou d’un groupe d’atomes;
— des parenthèses servent à grouper des atomes;
— les productions se terminent par un point-virgule.
Définition des tables de tri comme des suites de lignes:

table_de_poids = table-modèle_commune | table_adaptée;  table-modèle_commune =
ligne_simple+;    table_adaptée = ligne_de_table+;

Définition des types de lignes:

ligne_simple =   (définition_de_symbole | élément_de_tri |
attribution_de_poids | fin_ordre)?     achèvement_de_ligne;     ligne_de_table =
ligne_simple | ligne_adaptation;    ligne_adapatation = (reclasser_après | début_ordre
| fin_de_reclassement | définition_de_section | reclasser_section_après)
achèvement_de_ligne;
Définition de la syntaxe de base pour les poids de tri:
définition_de_symbole =       ’collating-symbol’ espace+ élément_symbole;
élément_symbole = symbole | symbole_intervalle;  symbole_intervalle = symbole ’.’
symbole;   symbole =    symbole_simple | symbole_juc;  symbole_juc =   (’ chaîne_de_un_à_huit_hexa ’>’) |            (’ ’>’);    symbole_simple =   ’<’ identifiant ’>’;
élément_de_tri =             ’collating-element’ espace+ symbole
espace+             ’from’ espace+ suite_de_symboles_cités;
suite_de_symboles_cités =             ’"’ poids_simple+ ’"’;
attribution_de_poids =             poids_simple | poids_symbolique;
poids_simple =   élément_symbole | ’UNDEFINED’;    poids_symbolique =
élément_symbole espace+ liste_de_poids;    liste_de_poids = atome_de_niveau (point-
virgule atome_de_niveau)*;   atome_de_niveau = groupe_de_symboles | ’IGNORE’;

© ISO/IEC 2025 – Tous droits réservés
groupe_de_symboles = élément_symbole | suite_de_symboles_citée;    fin_ordre =
’order_end’;
Définition de la syntaxe d’adaptation:
reclasser_après = ’reorder-after’ espace+ symbole_cible;    symbole_cible =
symbole;     début_ordre =   ’order_start’ espace+ direction_multiniveau;
direction_multiniveau =             (direction point-virgule)* direction
(’,position’)?;
...

Questions, Comments and Discussion

Ask us and Technical Secretary will try to provide an answer. You can facilitate discussion about the standard in here.

Loading comments...