Document obsolète

1.Introduction

Ce document présente une bibliothèque de types, d'éléments et d'attributs XML permettant de représenter les données d'identification NIR et NIR_Avec_Clé.

La définition formelle de cette bibliothèque est réalisée sous la forme d'un schéma W3C XML Schema.

NIR et NIR_Avec_Clé constituent un système d'identification des personnes physiques.

1.1.Espace de noms INSEE

Les types, éléments et attributs décrits décrit dans ce module font partie de l'espace de noms INSEE : http://xml.insee.fr/schema/2004

1.2.Conditions d'utilisation

Cette documentation et les ressources qui en dépendent (schémas, exemples, transformations XSLT) sont soumises aux conditions d'utilisation des informations publiées sur le site de l'INSEE.

2.Table des matières

3.Numéro d'identification NIR

3.1.Description

RNIPP
L'INSEE gère le répertoire national d'identification des personnes physiques depuis 1946.
NIR
Le numéro d'inscription au répertoire (NIR) est l'identifiant unique des individus inscrits au RNIPP.

Le NIR est un numéro à treize caractères dont la composition est précisée dans l'article 4 du décret n° 82-103 du 22 janvier 1982 : "Le numéro attribué à chaque personne inscrite au répertoire comporte 13 chiffres. Ce numéro indique successivement et exclusivement le sexe (1 chiffre), l'année de naissance (2 chiffres), le mois de naissance (2 chiffres), et le lieu de naissance (5 chiffres ou caractères) de la personne concernée. Les trois chiffres suivants permettent de distinguer les personnes nées au même lieu, à la même période."

On notera également l'article 6 du décret n° 82-103 du 22 janvier 1982 relatif au répertoire national d'identification des personnes physiques (RNIPP), "le numéro d'inscription au répertoire d'une personne n'est modifié que dans le cas où les informations qu'il décrit ne sont pas, ou ne sont plus, conformes aux registres de l'état civil".

Les éléments constitutifs du NIR ont été valués de la manière suivante :

rang 1
le sexe (1 pour les hommes et 2 pour les femmes).
rangs 2 et 3
les deux derniers chiffres de l'année de naissance ; à noter que ces chiffres sont insuffisants pour déterminer, à un siècle près, l'année de naissance exacte.
rangs 4 et 5
les deux chiffres du mois de naissance (de 01 à 12) ; en cas de mois de naissance inconnu, d'autres codes spécifiques sont attribués.
rangs 6 à 10
le lieu de naissance : il s'appuie sur le code officiel géographique de l'INSEE. Personnes nées en métropole : les deux chiffres du département suivis des trois chiffres du code commune. Pour la Corse la numérotation 2A, 2B a pris effet en 1976. Personnes nées dans les DOM : les trois chiffres du département suivi des 2 chiffres de la commune. Personnes nées à l'étranger : le code 99 suivi des trois chiffres désignant le pays. Au cas où le nombre de naissances dépasse 999 pour une commune et un mois donné, un "code commune extension" est utilisé pour garantir l'unicité du NIR.
rangs 11 à 13
un numéro d'ordre non significatif

Compte tenu des aménagements décrits plus haut et de ceux qui pourraient survenir dans le futur, il est conseillé aux applications informatiques de ne pas s'appuyer sur la structure du NIR pour en déduire les caractéristiques des personnes mais de le considérer comme un identifiant "opaque".

3.2.Contraintes juridiques

L'utilisation du NIR dans les applications informatiques est soumise à de fortes contraintes juridiques, dont (la liste n'étant pas exhaustive) :

3.3.Type NIR_stype

La définition d'un numéro NIR sous forme d'un type simple est la suivante:

§1.

               <xs:simpleType name="NIR_stype">
                  <xs:restriction base="ie:Chaîne_Numérique_et_ASCII_Majuscule_stype">
                     <xs:length value="13"/>
                     <xs:pattern value="[0-9]{6}[0-9AB][0-9]{6}"/>
                  </xs:restriction>
               </xs:simpleType>
            

Ce type peut être affecté dans un schéma pour définir des éléments ou attributs contenant des numéros NIR, par exemple:

§2.

               <xs:element name="mon-element-NIR"
                           type="ie:NIR_stype"/>
            

Les éléments ou attributs ainsi définis peuvent ensuite être utilisés dans des documents XML, par exemple :

§3.

               <ex:mon-element-NIR>1510246102043</ex:mon-element-NIR>
            

3.4.Élément NIR

La définition de l'élément NIR est la suivante:

§4.

               <xs:element name="NIR"
                           type="ie:NIR_stype"/>
            

Les éléments NIR peuvent être utilisés directement dans des documents XML, par exemple:

§5.

               <ex:personne>
                  <ie:NIR>278112B050002</ie:NIR>
                  <ex:nom>X</ex:nom>
               </ex:personne>
            

3.5.Attribut NIR

La définition de l'attribut NIR est la suivante:

§6.

               <xs:attribute name="NIR"
                             type="ie:NIR_stype"/>
            

Les attributs NIR peuvent être utilisés directement dans des documents XML, par exemple:

§7.

               <ex:personne ie:NIR="1111111111111">
                  <ex:nom>X</ex:nom>
               </ex:personne>
            

4.Clé de contrôle du NIR Clé_NIR

4.1.Description

La clé de contrôle du NIR est un nombre à deux chiffres dont la valeur est le complément à 97 du reste de la division du nombre formé par le NIR par 97. Cette formule a été adaptée aux numéros de départements alphabétiques (2A et 2B) de la manière suivante :

4.2.Type Clé_NIR_stype

Définition d'une clé de contrôle du NIR sous forme d'un type simple:

§8.

               <xs:simpleType name="Clé_NIR_stype">
                  <xs:restriction base="ie:Chaîne_Numérique_stype">
                     <xs:length value="2"/>
                  </xs:restriction>
               </xs:simpleType>
            

Ce type peut être affecté dans un schéma pour définir des éléments ou attributs contenant des clés de contrôle, par exemple:

§9.

               <xs:element name="mon-element-Clé_NIR"
                           type="ie:Clé_NIR_stype"/>
            

Les éléments ou attributs ainsi définis peuvent ensuite être utilisés dans des documents XML, par exemple :

§10.

               <ex:mon-element-Clé_NIR>11</ex:mon-element-Clé_NIR>
            

4.3.Élément Clé_NIR

La définition de l'élément Clé_NIR est la suivante:

§11.

               <xs:element name="Clé_NIR"
                           type="ie:Clé_NIR_stype"/>
            

Les éléments Clé_NIR peuvent être utilisés directement dans des documents XML, par exemple:

§12.

               <ex:personne>
                  <ie:NIR>1510246102043</ie:NIR>
                  <ie:Clé_NIR>25</ie:Clé_NIR>
                  <ex:nom>...</ex:nom>
               </ex:personne>
            

4.4.Attribut Clé_NIR

La définition de l'attribut Clé_NIR est la suivante:

§13.

               <xs:attribute name="Clé_NIR"
                             type="ie:Clé_NIR_stype"/>
            

Les attributs Clé_NIR peuvent être utilisés directement dans des documents XML, par exemple:

§14.

               <ex:personne ie:Clé_NIR="86"
                            ie:NIR="278112B050002">
                  <ex:nom>...</ex:nom>
               </ex:personne>
            

5.Numéro d'identification NIR_Avec_Clé

5.1.Description

Numéro NIR_Avec_Clé
Le numéro NIR_Avec_Clé est un identifiant numérique de 15 chiffres composé du NIR (13 chiffres) et de sa clé (2 chiffres). Il permet de réduire les erreurs de saisie ou de transmission des identifiants NIR et est couramment utilisé dans le domaine médical, notamment dans les déclarations de sécurité sociale.

5.2.Type NIR_Avec_Clé_ctype

Un numéro NIR_Avec_Clé est constitué d'un NIR et d'une Clé_NIR et on pourra utiliser ce type complexe lorsqu'on souhaitera isoler ces deux composantes dans deux éléments séparés :

§15.

               <xs:complexType name="NIR_Avec_Clé_ctype">
                  <xs:sequence>
                     <xs:element ref="ie:NIR"/>
                     <xs:element ref="ie:Clé_NIR"/>
                  </xs:sequence>
               </xs:complexType>
            

Ce type peut être affecté dans un schéma pour définir des éléments ou attributs contenant des numéros NIR_Avec_Clé, par exemple:

§16.

               <xs:element name="mon-element-NIR_Avec_Clé"
                           type="ie:NIR_Avec_Clé_ctype"/>
            

Les éléments ou attributs ainsi définis peuvent ensuite être utilisés dans des documents XML, par exemple :

§17.

               <ex:mon-element-NIR_Avec_Clé>
                  <ie:NIR>1111111111111</ie:NIR>
                  <ie:Clé_NIR>20</ie:Clé_NIR>
               </ex:mon-element-NIR_Avec_Clé>
            

On notera que l'utilisation de ce type complexe impose l'utilisation de l'espace de noms INSEE dans les documents XML.

5.3.Élément NIR_Avec_Clé

La définition de l'élément NIR_Avec_Clé est la suivante:

§18.

               <xs:element name="NIR_Avec_Clé"
                           type="ie:NIR_Avec_Clé_ctype"/>
            

Les éléments NIR_Avec_Clé peuvent être utilisés directement dans des documents XML, par exemple:

§19.

               <ex:personne>
                  <ie:NIR_Avec_Clé>
                     <ie:NIR>1510246102043</ie:NIR>
                     <ie:Clé_NIR>25</ie:Clé_NIR>
                  </ie:NIR_Avec_Clé>
                  <ex:nom>...</ex:nom>
               </ex:personne>
            

5.4.Type NIR_Avec_Clé_stype

Lorsqu'il n'est pas possible de séparer NIR et Clé_NIR en deux sous éléments (notamment lorsque le numéro NIR_Avec_Clé est codé sous forme d'attribut ou lorsqu'il n'est pas possible d'insérer des éléments appartenant à l'espace de noms INSEE dans les documents XML), on pourra concaténer ces deux identifiants et utiliser le type simple suivant:

§20.

               <xs:simpleType name="NIR_Avec_Clé_stype">
                  <xs:restriction base="ie:Chaîne_Numérique_et_ASCII_Majuscule_stype">
                     <xs:length value="15"/>
                     <xs:pattern value="[0-9]{6}[0-9AB][0-9]{8}"/>
                  </xs:restriction>
               </xs:simpleType>
            

Ce type peut être affecté dans un schéma pour définir des éléments ou attributs contenant des numéros NIR_Avec_Clé, par exemple:

§21.

               <xs:element name="personne">
                  <xs:complexType>
                     <xs:sequence>
                        <xs:element name="nom"
                                    type="xs:token"/>
                     </xs:sequence>
                     <xs:attribute name="mon-attribut-NIR_Avec_Clé"
                                   type="ie:NIR_Avec_Clé_stype"/>
                  </xs:complexType>
               </xs:element>
            

Les éléments ou attributs ainsi définis peuvent ensuite être utilisés dans des documents XML, par exemple :

§22.

               <ex:personne mon-attribut-NIR_Avec_Clé="278112B05000286">
                  <ex:nom>...</ex:nom>
               </ex:personne>
            

5.5.Attribut NIR_Avec_Clé

La définition de l'attribut NIR_Avec_Clé est basée sur ce type simple:

§23.

               <xs:attribute name="NIR_Avec_Clé"
                             type="ie:NIR_Avec_Clé_stype"/>
            

Les attributs NIR_Avec_Clé peuvent être utilisés directement dans des documents XML, par exemple:

§24.

               <ex:personne ie:NIR_Avec_Clé="111111111111120">
                  <ex:nom>....</ex:nom>
               </ex:personne>
            

6.Conseils d'utilisation

6.1.Quand utiliser les types?

L'utilisation des éléments et attributs définis dans ce schéma permet de se baser directement sur leur nom (et espace de nom) pour les identifier et les valider.

L'utilisation des types simples définis dans ce schéma permet au contraire d'utiliser des noms d'attributs et d'éléments quelconques (et appartenant à des espaces de noms quelconques).

L'attribution de types à ces éléments et attributs permet de les valider en suivant les définitions de ce schéma.

Ces attributions sont également transmises aux applications supportant W3C XML Schema et son "Post Schema Validation Infoset" (PSVI) qui peuvent reconnaître qu'il s'agit des données d'identification définies par ce schéma.

L'utilisation de types complexes se situe à un niveau intermédiaire puisqu'elle permet d'utiliser des noms et espaces de noms quelconques pour les éléments racines de ces types de données mais qu'elle impose l'utilisation des éléments (et de l'espace de noms) définis par ce schéma pour les éléments inclus dans le type de données (voir exemple concernant le type NIR_Avec_Clé_ctype).

6.2.Utilisation individuelle de NIR et Clé_NIR

Si l'utilisation individuelle de numéros NIR et Clé_NIR pour former un numéro NIR_Avec_Clé est techniquement correcte, elle présente l'inconvénient pour les applications de ne pas lier ces deux informations de manière explicite dans un schéma. Les applications ne peuvent donc pas trouver dans le seul schéma le lien permettant de constituer un numéro NIR_Avec_Clé identifiant une personne à partir de ces deux informations isolées et doit se reposer sur des conventions définies de manière informelle ci-dessous.

L'utilisation des éléments, attributs et types NIR_Avec_Clé qui évite ce problème est recommandée pour identifier une personne physique.

Lorsqu'ils ne peuvent pas utiliser des éléments, attributs ou types NIR_Avec_Clé, les vocabulaires XML souhaitant utiliser de manière individuelle les numéros NIR et Clé_NIR sont invités à respecter les règles suivantes :

Noeud NIR
On appelle "noeud NIR" tout attribut ou élément ie:NIR ainsi que tout élément ou attribut ayant un type ie:NIR_stype.
Règle de liaison entre NIR et Clé_NIR
Tout attribut ou élément "ie:Clé_NIR" (ou élément ou attribut ayant un type ie:Clé_NIR_stype) est implicitement lié au noeud NIR trouvé dans le plus proche de ses ancêtres ayant un noeud NIR parmi ses fils.
Unicité de liaison implicite entre NIR et Clé_NIR
Pour que la règle de liaison entre NIR et Clé_NIR puisse être appliquée de manière déterministe, il est déconseillé d'autoriser un élément à accepter plusieurs noeuds NIR parmi ses fils.

7.Contrôles de clés sur NIR_Avec_Clé

7.1.Description

Les numéros NIR_Avec_Clé intègrent un mécanisme de contrôle de parité puisque, par définition, la Clé_NIR représente le complément à 97 du reste de la division par 97 du nombre déduit du numéro NIR.

7.2.Implémentation XSLT

Le contrôle de la clé du NIR peut être implémenté en XSLT de la manière suivante :

§25.

               <xsl:template name="controle_clé_nir">
                  <xsl:param name="NIR"
                             select="substring(., 1, 13)"/>
                  <xsl:param name="clé"
                             select="substring(., 14, 2)"/>
                  <xsl:variable name="NIR-ajusté">
                     <xsl:choose>
                        <xsl:when test="contains($NIR, 'A')">
                           <xsl:value-of select="number(translate($NIR, 'A', '0')) - 1000000"/>
                        </xsl:when>
                        <xsl:when test="contains($NIR, 'B')">
                           <xsl:value-of select="number(translate($NIR, 'B', '0')) - 2000000"/>
                        </xsl:when>
                        <xsl:otherwise>
                           <xsl:value-of select="$NIR"/>
                        </xsl:otherwise>
                     </xsl:choose>
                  </xsl:variable>
                  <xsl:variable name="clé_calculée"
                                select="97 - ($NIR-ajusté mod 97)"/>
                  <xsl:choose>
                     <xsl:when test="$clé = $clé_calculée">
                        <xsl:text> Correct</xsl:text>
                     </xsl:when>
                     <xsl:otherwise>
                        <xsl:text> Erreur, la clé devrait être : </xsl:text>
                        <xsl:value-of select="$clé_calculée"/>
                        <xsl:text> (et non </xsl:text>
                        <xsl:value-of select="$clé"/>
                        <xsl:text>). </xsl:text>
                     </xsl:otherwise>
                  </xsl:choose>
               </xsl:template>
            

8.Téléchargement

Les documents suivants sont disponibles pour téléchargement.

8.1.Schéma

[Document]

§26.

               <xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
                          xmlns:ie="http://xml.insee.fr/schema/2004"
                          attributeFormDefault="qualified"
                          elementFormDefault="qualified"
                          targetNamespace="http://xml.insee.fr/schema/2004"
                          version="1.0">
                  <xs:include schemaLocation="insee-commun.xsd"/>
                  §1.Type NIR_stype
                  §4.Élément NIR
                  §6.Attribut NIR
                  §8.Type Clé_NIR_stype
                  §11.Élément Clé_NIR
                  §13.Attribut Clé_NIR
                  §15.Type NIR_Avec_Clé_ctype
                  §18.Élément NIR_Avec_Clé
                  §20.Type NIR_Avec_Clé_stype
                  §23.Attribut NIR_Avec_Clé
               </xs:schema>
            

8.2.Transformation XSLT validant le calcul de la clé du NIR.

[Document]

§27.

               <xsl:transform xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                              xmlns:ie="http://xml.insee.fr/schema/2004"
                              version="1.0">
                  <xsl:output method="text"/>
                  <xsl:template match="*|@*">
                     <xsl:apply-templates select="*|@*"/>
                  </xsl:template>
                  <xsl:template match="*[ie:NIR and ie:Clé_NIR]">
                     <xsl:text> Contrôle NIR_Avec_Clé, élément </xsl:text>
                     <xsl:value-of select="name()"/>
                     <xsl:call-template name="controle_clé_nir">
                        <xsl:with-param name="NIR"
                                        select="ie:NIR"/>
                        <xsl:with-param name="clé"
                                        select="ie:Clé_NIR"/>
                     </xsl:call-template>
                     <xsl:text/>
                  </xsl:template>
                  <xsl:template match="*[@ie:NIR and @ie:Clé_NIR]">
                     <xsl:text> Contrôle NIR_Avec_Clé, élément </xsl:text>
                     <xsl:value-of select="name()"/>
                     <xsl:call-template name="controle_clé_nir">
                        <xsl:with-param name="NIR"
                                        select="@ie:NIR"/>
                        <xsl:with-param name="clé"
                                        select="@ie:Clé_NIR"/>
                     </xsl:call-template>
                     <xsl:text/>
                  </xsl:template>
                  <xsl:template match="@ie:NIR_Avec_Clé">
                     <xsl:text> Contrôle NIR_Avec_Clé, élément </xsl:text>
                     <xsl:value-of select="name()"/>
                     <xsl:call-template name="controle_clé_nir"/>
                     <xsl:text/>
                  </xsl:template>
                  §25.Implémentation XSLT
               </xsl:transform>
            

8.3.Exemples utilisant les types - schéma

Schéma validant les exemples utilisant les définitions de types simples et complexes :

[Document]

§28.

               <xs:schema xmlns:ex="http://dyomedea.com/ns/example"
                          xmlns:xs="http://www.w3.org/2001/XMLSchema"
                          xmlns:ie="http://xml.insee.fr/schema/2004"
                          attributeFormDefault="unqualified"
                          elementFormDefault="qualified"
                          targetNamespace="http://dyomedea.com/ns/example"
                          version="1.0">
                  <xs:import namespace="http://xml.insee.fr/schema/2004"
                             schemaLocation="nir.xsd"/>
                  §2.Type NIR_stype
                  §9.Type Clé_NIR_stype
                  §16.Type NIR_Avec_Clé_ctype
                  §21.Type NIR_Avec_Clé_stype
                  <xs:element name="exemples">
                     <xs:complexType>
                        <xs:sequence>
                           <xs:any maxOccurs="unbounded"
                                   minOccurs="0"
                                   namespace="##targetNamespace"
                                   processContents="strict"/>
                        </xs:sequence>
                     </xs:complexType>
                  </xs:element>
               </xs:schema>
            

8.4.Exemples utilisant les types - document

Document XML regroupant les exemples utilisant les définitions de types simples et complexes :

[Document]

§29.

               <ex:exemples xmlns:ex="http://dyomedea.com/ns/example"
                            xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
                            xsi:schemaLocation="http://dyomedea.com/ns/example exemples-nir-types.xsd">
                  §3.Type NIR_stype
                  §10.Type Clé_NIR_stype
                  §17.Type NIR_Avec_Clé_ctype
                  §22.Type NIR_Avec_Clé_stype
               </ex:exemples>
            

8.5.Exemples utilisant les éléments et attributs

Document XML regroupant les exemples utilisant les éléments et attributs :

[Document]

§30.

               <ex:exemples xmlns:ex="http://dyomedea.com/ns/example"
                            xmlns:ie="http://xml.insee.fr/schema/2004">
                  §5.Élément NIR
                  §7.Attribut NIR
                  §12.Élément Clé_NIR
                  §14.Attribut Clé_NIR
                  §19.Élément NIR_Avec_Clé
                  §24.Attribut NIR_Avec_Clé
               </ex:exemples>
            

9.Références

Les documents et sites de référence suivants ont été utilisés pour la constitution de ce vocabulaire XML.

9.1.Décret n° 82-103 du 22 janvier 1982

Le Décret n° 82-103 du 22 janvier 1982 relatif au répertoire national d'identification des personnes physiques confirme la mission de l'INSEE concernant le répertoire national d'identification des personnes physiques et en précise certaines modalités.

9.2.Le NIR : numéro d'inscription au RNIPP

Publié sur le site de l'INSEE, cet article donne un aperçu de la composition, de l'historique et de l'utilisation du NIR.

10.Ressources

Les ressources suivantes sont définies ou référencées dans ce document :

10.1.Liste alphabétique

Attribut Clé_NIR
Fonction : référence normative
Nature : XHTML
Attribut NIR
Fonction : référence normative
Nature : XHTML
Attribut NIR_Avec_Clé
Fonction : référence normative
Nature : XHTML
Conditions d'utilisation
Fonction : référence normative
Nature : HTML
[Lien externe]
Décret n° 82-103 du 22 janvier 1982
Fonction : référence non normative
Nature : HTML
[Lien externe]
Espace de noms INSEE
Fonction : espace de noms
Nature : XHTML
[Lien externe]
Exemples utilisant les types - document
Fonction : référence non normative
Nature : XML
Exemples utilisant les types - schéma
Fonction : référence non normative
Nature : W3C XML Schema
Exemples utilisant les éléments et attributs
Fonction : référence non normative
Nature : XML
Implémentation XSLT
Fonction : référence non normative
Nature : XHTML
Le NIR : numéro d'inscription au RNIPP
Fonction : référence non normative
Nature : HTML
[Lien externe]
Schéma
Fonction : validation par schéma
Nature : W3C XML Schema
Transformation XSLT validant le calcul de la clé du NIR.
Fonction : validation par schéma
Nature : Transformation XSLT
Type Clé_NIR_stype
Fonction : référence normative
Nature : XHTML
Type NIR_Avec_Clé_ctype
Fonction : référence normative
Nature : XHTML
Type NIR_Avec_Clé_stype
Fonction : référence normative
Nature : XHTML
Type NIR_stype
Fonction : référence normative
Nature : XHTML
Élément Clé_NIR
Fonction : référence normative
Nature : XHTML
Élément NIR
Fonction : référence normative
Nature : XHTML
Élément NIR_Avec_Clé
Fonction : référence normative
Nature : XHTML

10.2.Par catégories

Ressources internes

  • référence normative
  • référence non normative
  • Ressources externes

  • espace de noms
  • référence normative
  • référence non normative
  • validation par schéma