Aller au contenu principal

2.1.2. Membres Dictionary des Structured Fields (Dictionary Structured Field Members)

2.1.2. Membres Dictionary des Structured Fields

Si un champ donné est connu de l'application comme étant un Dictionary Structured Field, un membre individuel dans la valeur de ce Dictionary est identifié au moyen du paramètre key et de la clé de membre du Dictionary comme valeur String.

Si plusieurs valeurs de champ apparaissent dans un message, ces valeurs DOIVENT être fusionnées en une seule structure Dictionary avant sérialisation.

La valeur d'un membre individuel d'un Dictionary Structured Field est canonisée en appliquant l'algorithme de sérialisation décrit à la Section 4.1.2 de [STRUCTURED-FIELDS] sur le member_value et ses paramètres, sans inclure la clé du Dictionary elle-même. Plus précisément, la valeur est sérialisée comme un Item ou Inner List (les deux valeurs possibles d'un membre Dictionary), avec tous les paramètres et sous-champs éventuels sérialisés selon les règles de sérialisation stricte définies à la Section 4 de [STRUCTURED-FIELDS] (ou la section applicable de ses extensions ou mises à jour).

Chaque clé paramétrée pour un champ donné NE DOIT PAS apparaître plus d'une fois dans la base de signature. Les clés paramétrées PEUVENT apparaître dans un ordre quelconque dans la base de signature, indépendamment de l'ordre dans le Dictionary source.

Si une clé de Dictionary est nommée comme composant couvert mais n'apparaît pas dans le Dictionary, cela DOIT provoquer une erreur lors de la génération de la base de signature.

Les exemples suivants sont non normatifs; ils illustrent des valeurs canonisées pour des membres de Dictionary Structured Field, étant donné le champ d'en-tête d'exemple suivant, dont la valeur est connue de l'application comme étant un Dictionary:

Example-Dict: a=1, b=2;x=1;y=2, c=(a b c), d

L'exemple suivant montre des valeurs canonisées pour différents identifiants de composant de ce champ, au format de base de signature abordé à la Section 2.5:

"example-dict";key="a": 1 "example-dict";key="d": ?1 "example-dict";key="b": 2;x=1;y=2 "example-dict";key="c": (a b c)

Notez que la valeur pour key="c" a été reserialisée selon l'algorithme strict member_value, et que la valeur pour key="d" a été sérialisée comme une valeur Boolean.