Menu

Chiffres de contrôle ISBN ISSN : le dernier chiffre d'un numéro de livre ou de périodique

Les chiffres de contrôle ISBN ISSN terminent deux familles d'identifiants de livres et de périodiques. Les règles sont similaires, les longueurs diffèrent, et un système peut se terminer par la lettre X plutôt que par un chiffre.

Publié le

  • validation
  • chiffre de contrôle
  • édition

Les livres et les périodiques portent des identifiants qui se ressemblent comme des cousins et se comportent comme des parents aux habitudes différentes. Tous deux se terminent par un caractère calculé à partir des caractères qui le précèdent, donc tous deux peuvent être vérifiés hors ligne ; l’identifiant de livre a traversé deux longueurs au cours de sa vie, et l’identifiant de périodique a conservé une forme plus courte et fixe.

La partie intéressante n’est pas l’arithmétique, qui suit le même motif de somme pondérée que l’on retrouve ailleurs, mais la gestion des entrées. L’imprimé, les catalogues et les systèmes de bibliothèque ponctuent ces numéros de manières incohérentes, et la lettre qui peut apparaître en position finale met en échec toute routine qui supposait uniquement des chiffres.

Comment les chiffres de contrôle ISBN et ISSN sont-ils calculés ?

Le mécanisme est celui que l’on connaît. Chaque caractère du corps reçoit un poids qui dépend de sa position, les valeurs pondérées sont additionnées, et le total est réduit à un unique caractère final. Un code est cohérent en interne lorsque le caractère final correspond à ce que le corps produit.

Ce qui diffère de l’arithmétique des codes-barres, c’est l’alphabet. Le corps d’un numéro de livre peut être entièrement composé de chiffres, mais son caractère final n’est pas limité aux chiffres de zéro à neuf ; l’une de ces familles d’identifiants réserve une lettre au cas où l’arithmétique simple laisse une valeur qu’un chiffre ne peut pas exprimer. Ce seul caractère suffit à mettre en échec une implémentation qui fait passer ces valeurs par un champ entier.

Aucune des deux familles ne devrait être vérifiée uniquement à la fin d’un pipeline. Ces identifiants sont recopiés à la main depuis la dernière page d’un titre, collés depuis des feuilles de calcul de fournisseurs et saisis dans des interfaces de bibliothèque, et chacune de ces étapes est un endroit où un chiffre peut changer sans que la forme ne change.

Les valeurs citées dans cet article sont décrites par leurs règles plutôt que reproduites. Aucun numéro de livre ou de périodique réel n’est reproduit, et une règle décrite ne dit rien sur l’existence d’une publication particulière.

Les deux systèmes de numérotation des livres et en quoi ils diffèrent

L’identifiant de livre a connu un changement de génération. L’ancienne forme est la plus courte ; la forme actuelle est plus longue, et les positions de tête supplémentaires font place à un catalogue bien plus vaste maintenant que l’édition s’est développée.

Propriété Forme courte de livre Forme longue de livre
Longueur du corps Moins de positions Plus de positions
Positions de tête Porte un groupe enregistré plus petit Précédée d’un préfixe fixe
Caractère de contrôle Un caractère final Un caractère final
Relation Encore rencontrée sur du stock ancien Norme pour les nouvelles publications

Les deux formes restent en circulation. Une boutique qui vend du stock d’occasion, une bibliothèque détenant des acquisitions plus anciennes et un importateur recevant des palettes mixtes rencontreront tous la forme courte, et une routine qui ne reconnaît que la longueur actuelle rejettera des documents parfaitement valables.

L’identifiant de périodique est une famille distincte, avec sa propre forme fixe plus courte. Ce n’est pas un numéro de livre auquel on a retiré des positions ; son arithmétique et sa pondération appartiennent au schéma des périodiques, et traiter l’un comme une troncature de l’autre produit des caractères de contrôle qui ne correspondent jamais.

Quand le caractère de contrôle est la lettre X

La lettre apparaît à cause du modulo. Divisez par un nombre supérieur à dix et le reste peut tomber sur une valeur qu’aucun chiffre unique ne peut porter. Plutôt que de rejeter ce reste, ou de le décaler dans la plage autorisée en perdant la distinction, le schéma lui réserve une lettre.

Trois conséquences pratiques en découlent. Un validateur doit accepter la lettre en position finale et uniquement en position finale, de sorte qu’un corps contenant une lettre échoue au jeu de caractères tandis qu’une lettre finale est autorisée. Toute étape d’analyse qui suppose des chiffres doit être assouplie pour ce seul champ. Et la lettre n’a qu’une seule casse, puisque la règle fixe sa forme ; plier la casse d’abord reste le bon réflexe, mais la correspondance doit aboutir à la forme que le schéma définit.

Le stockage est la défaillance silencieuse ici. Une colonne d’entiers ne peut pas contenir une lettre, et une routine qui retire les non-chiffres avant de vérifier supprimera le caractère même qu’elle est censée vérifier. Conserver les identifiants dans un champ de texte dès le départ évite une migration délicate plus tard.

Pourquoi les tirets doivent-ils être retirés avant la vérification

Ces numéros sont imprimés par groupes, et l’endroit où tombent les tirets relève de la présentation, qui varie selon les éditeurs, les systèmes et les pays. Le regroupement ne fait pas partie de l’identifiant, et il n’est pas le même partout pour un même numéro.

Parce que les groupes se déplacent, toute validation qui consomme la chaîne telle qu’imprimée échouera de manière imprévisible. La règle est de normaliser d’abord : retirez les séparateurs, supprimez les espaces environnants, pliez la casse, et seulement ensuite vérifiez le jeu de caractères, la longueur et le caractère final.

C’est aussi pourquoi un validateur doit conserver la chaîne d’origine à côté de la chaîne normalisée. L’originale est ce que l’utilisateur a lu sur la page, et c’est à elle qu’il comparera lorsque l’entrée s’avérera erronée. Le pipeline décrit pour la validation générale de numéros fait la même remarque : la séparation de la présentation et du contenu précède toute arithmétique.

Pourquoi un titre renuméroté doit-il être vérifié sous les deux numéros ?

Parce qu’une publication qui s’étend sur le changement de systèmes peut légitimement porter deux identifiants, et que les deux peuvent encore être en usage quelque part dans la chaîne. Une notice de catalogue créée avant le changement peut contenir la forme courte, tandis que la liste actuelle d’un fournisseur contient la forme longue, et un système qui n’en comprend qu’une signalera une discordance là où il n’y en a aucune.

Traiter cela est un problème d’appariement plutôt qu’un problème d’arithmétique. Vérifier correctement les deux formes vous dit que chaque chaîne est cohérente en interne ; cela ne vous dit pas que les deux chaînes décrivent le même titre. Affirmer cela exige une correspondance tenue par celui qui a attribué les numéros, et inventer la correspondance en retirant des positions est un moyen fiable de fusionner deux titres sans rapport.

Le schéma se généralise à tout identifiant réédité. Quand un schéma change sa longueur, sa règle de contrôle ou son attribution, attendez-vous à une période durant laquelle les deux générations sont actives, et concevez le modèle de données pour deux valeurs plutôt qu’une.

Pour les développeurs : normalisation et messages d’erreur

Une courte liste de décisions couvre la majeure partie des difficultés que ces schémas causent.

  1. Normalisez en retirant les séparateurs et en pliant la casse, puis testez l’alphabet autorisé, y compris une lettre finale permise.
  2. Choisissez la règle à partir du nombre de chiffres, et gardez séparées les règles des deux longueurs de livre et celles des périodiques.
  3. Renvoyez un message qui nomme la règle appliquée, afin qu’un utilisateur ayant collé le mauvais type de numéro puisse le constater.
  4. Stockez les identifiants sous forme de texte partout, y compris dans les colonnes de base de données et les index de recherche.
  5. Lorsqu’une valeur échoue, montrez la forme normalisée que vous avez testée, car c’est ce que l’arithmétique a réellement vu.

L’arithmétique elle-même appartient à la même famille fondée sur un modulo que celles comparées dans l’aperçu des algorithmes de chiffre de contrôle, bien que l’alphabet et la règle de la lettre finale fassent de ces schémas les membres délicats. Les codes-barres, que le même entrepôt ou le même système de bibliothèque gère souvent côte à côte, sont traités dans chiffres de contrôle EAN UPC.

Étapes suivantes

Prenez une valeur de chaque génération du numéro de livre et un numéro de périodique, et confirmez que votre routine accepte les trois après normalisation et rejette chacune lorsqu’un seul caractère interne change. L’outil de validation de numéros vous montrera le libellé des verdicts, et il vaut la peine de vérifier que votre interface distingue une discordance de format d’un échec du test de chiffre de contrôle.

Continuer la lecture

Articles sur Validateur de numéros de carte et d'identité