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 SIREN, NIC et SIRET.

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

SIREN, NIC et SIRET constituent un système d'identification des sociétés françaises et de leurs établissements conforme à la norme ISO 6523 et ces identifiants sont donc susceptibles d'être utilisés mondialement.

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 SIREN

3.1.Description

Entreprise
L'entreprise est une unité économique, juridiquement autonome, organisée pour produire des biens ou des services pour le marché.
Répertoire SIRENE
L'INSEE est chargé d'identifier les personnes physiques exerçant de manière indépendante une profession non salariée (exemple : un commerçant, un médecin), les personnes morales de droit privé (exemple : une société anonyme) ou de droit public soumises au droit commercial (exemple : EDF) et les institutions et services de l'Etat et les collectivités territoriales, ainsi que tous leurs établissements dans un répertoire unique appelé "répertoire SIRENE".
SIREN
L'INSEE attribue un identifiant à toute personne juridique, physique ou morale, introduite dans le répertoire SIRENE sur demande des organismes habilités (CFE en général). Cet identifiant est appelé numéro SIREN.

3.2.Type SIREN_stype

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

§1.

          <xs:simpleType name="SIREN_stype">
            <xs:restriction base="ie:Chaîne_Numérique_stype">
              <xs:length value="9"/>
            </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 SIREN, par exemple:

§2.

          <xs:element name="mon-element-SIREN"
                      type="ie:SIREN_stype"/>
        

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

§3.

          <ex:mon-element-SIREN>422260208</ex:mon-element-SIREN>
        

3.3.Élément SIREN

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

§4.

          <xs:element name="SIREN"
                      type="ie:SIREN_stype"/>
        

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

§5.

          <ex:entreprise>
            <ie:SIREN>422260208</ie:SIREN>
            <ex:nom>Dyomedea SARL</ex:nom>
          </ex:entreprise>
        

3.4.Attribut SIREN

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

§6.

          <xs:attribute name="SIREN"
                        type="ie:SIREN_stype"/>
        

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

§7.

          <ex:entreprise ie:SIREN="422260208">
            <ex:nom>Dyomedea SARL</ex:nom>
          </ex:entreprise>
        

4.Numéro d'identification NIC

4.1.Description

Établissement
L'établissement est une unité de production localisée géographiquement, individualisée mais dépendant juridiquement d'une entreprise. L'établissement constitue le niveau le mieux adapté à une approche géographique de l'économie. Il est relativement homogène et son activité principale apparaît proche du produit.
NIC (Numéro Interne de Classement)
Il s'agit de 5 chiffres ajoutés au numéro SIREN de l'entreprise pour identifier un établissement.

4.2.Type NIC_stype

Définition d'un NIC sous forme d'un type simple:

§8.

          <xs:simpleType name="NIC_stype">
            <xs:restriction base="ie:Chaîne_Numérique_stype">
              <xs:length value="5"/>
            </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 NIC, par exemple:

§9.

          <xs:element name="mon-element-NIC"
                      type="ie:NIC_stype"/>
        

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

§10.

          <ex:mon-element-NIC>00026</ex:mon-element-NIC>
        

4.3.Élément NIC

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

§11.

          <xs:element name="NIC"
                      type="ie:NIC_stype"/>
        

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

§12.

          <ex:entreprise>
            <ie:SIREN>422260208</ie:SIREN>
            <ex:nom>Dyomedea SARL</ex:nom>
            <ex:etablissements>
              <ex:etablissement>
                <ie:NIC>00026</ie:NIC>
                <ex:nom>Établissement principal</ex:nom>
              </ex:etablissement>
            </ex:etablissements>
          </ex:entreprise>
        

4.4.Attribut NIC

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

§13.

          <xs:attribute name="NIC"
                        type="ie:NIC_stype"/>
        

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

§14.

          <ex:entreprise ie:SIREN="422260208">
            <ex:nom>Dyomedea SARL</ex:nom>
            <ex:etablissements>
              <ex:etablissement ie:NIC="00026">
                <ex:nom>Établissement principal</ex:nom>
              </ex:etablissement>
            </ex:etablissements>
          </ex:entreprise>
        

5.Numéro d'identification SIRET

5.1.Description

Numéro SIRET
Le numéro SIRET est un identifiant numérique de 14 chiffres composé du SIREN (9 chiffres) et d'un numéro interne de classement de 5 chiffres (NIC) caractérisant l'établissement d'une entreprise en tant qu'unité géographiquement localisée. Il est donc modifié en particulier si l'établissement change d'adresse.

5.2.Type SIRET_ctype

Un numéro SIRET est constitué d'un numéro SIREN et d'un NIC 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="SIRET_ctype">
            <xs:sequence>
              <xs:element ref="ie:SIREN"/>
              <xs:element ref="ie:NIC"/>
            </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 SIRET, par exemple:

§16.

          <xs:element name="mon-element-SIRET"
                      type="ie:SIRET_ctype"/>
        

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

§17.

          <ex:mon-element-SIRET>
            <ie:SIREN>422260208</ie:SIREN>
            <ie:NIC>00026</ie:NIC>
          </ex:mon-element-SIRET>
        

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 SIRET

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

§18.

          <xs:element name="SIRET"
                      type="ie:SIRET_ctype"/>
        

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

§19.

          <ex:entreprise>
            <ie:SIRET>
              <ie:SIREN>422260208</ie:SIREN>
              <ie:NIC>00026</ie:NIC>
            </ie:SIRET>
            <ex:nom>Dyomedea SARL (établissement principal)</ex:nom>
          </ex:entreprise>
        

5.4.Type SIRET_stype

Lorsqu'on ne souhaite pas séparer SIREN et NIC en deux sous éléments (par exemple lorsque le numéro SIRET est codé sous forme d'attribut ou qu'on ne souhaite pas 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="SIRET_stype">
            <xs:restriction base="ie:Chaîne_Numérique_stype">
              <xs:length value="14"/>
            </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 SIRET, par exemple:

§21.

          <xs:element name="societe">
            <xs:complexType>
              <xs:sequence>
                <xs:element name="nom"
                            type="xs:token"/>
              </xs:sequence>
              <xs:attribute name="mon-attribut-SIRET"
                            type="ie:SIRET_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:societe mon-attribut-SIRET="42226020800026">
            <ex:nom>Dyomedea SARL (établissement principal)</ex:nom>
          </ex:societe>
        

5.5.Attribut SIRET

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

§23.

          <xs:attribute name="SIRET"
                        type="ie:SIRET_stype"/>
        

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

§24.

          <ex:societe ie:SIRET="42226020800026">
            <ex:nom>Dyomedea SARL (établissement principal)</ex:nom>
          </ex:societe>
        

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 SIRET_ctype).

6.2.Utilisation individuelle de SIREN et NIC

Si l'utilisation individuelle de numéros SIREN et NIC pour former un numéro SIRET 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 SIRET identifiant un établissement à 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 SIRET qui évite ce problème est recommandée pour identifier un établissement.

Lorsqu'ils ne peuvent pas utiliser des éléments, attributs ou types SIRET, les vocabulaires XML souhaitant utiliser de manière individuelle les numéro SIREN et NIC sont invités à respecter les règles suivantes :

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

7.Contrôles de clés sur SIREN, NIC et SIRET

7.1.Description

Les numéros SIREN, NIC et SIRET intègrent le mécanisme de contrôle de parité connu sous le nom de formule (ou clé) de Luhn. Ce contrôle de parité peut être utilisé pour réduire les risques d'erreurs de frappe ou de transmission.

L'algorithme consiste à parcourir les chiffres constituant le numéro SIREN, NIC ou SIRET, à multiplier par 2 les chiffres de rang impair et à faire ensuite la somme de tous les chiffres obtenus.

Attention, il s'agit bien de faire la somme des chiffres obtenus : si après multiplication par 2 d'un des chiffres du numéro on obtient "12", il faudra ajouter les chiffres 1 puis 2 et non le nombre 12.

Le contrôle de parité est correct si le résultat obtenu est un multiple de 10.

7.2.Implémentation XSLT

Le contrôle de la formule de Luhn peut être implémenté en XSLT de la manière suivante :

§25.

          <xsl:template name="controle-luhn">
            <xsl:param name="numero"
                       select="normalize-space(.)"/>
            <xsl:param name="somme"
                       select="0"/>
            <xsl:param name="indice"
                       select="1"/>
            <xsl:choose>
              <xsl:when test="string-length($numero)=0">
                <!-- Nous arrivons ici après le dernier chiffre -->
                <xsl:choose>
                  <xsl:when test="$somme mod 10 = 0">
                    <xsl:text>Correct</xsl:text>
                  </xsl:when>
                  <xsl:otherwise>
                    <xsl:text>Erreur : </xsl:text>
                    <xsl:value-of select="$somme"/>
                  </xsl:otherwise>
                </xsl:choose>
              </xsl:when>
              <xsl:when test="$indice mod 2 = 0">
                <!-- Cas des chiffres d'indice pair -->
                <xsl:call-template name="controle-luhn">
                  <xsl:with-param name="numero"
                                  select="substring($numero, 2)"/>
                  <xsl:with-param name="somme"
                                  select="$somme + substring($numero, 1, 1)"/>
                  <xsl:with-param name="indice"
                                  select="$indice + 1"/>
                </xsl:call-template>
              </xsl:when>
              <xsl:otherwise>
                <!-- Cas des chiffres d'indice impair -->
                <xsl:variable name="double"
                              select="concat(substring($numero, 1, 1) * 2, '0') "/>
                <xsl:call-template name="controle-luhn">
                  <xsl:with-param name="numero"
                                  select="substring($numero, 2)"/>
                  <xsl:with-param name="somme"
                                  select="$somme + substring($double, 1, 1) + substring($double, 2, 1)"/>
                  <xsl:with-param name="indice"
                                  select="$indice + 1"/>
                </xsl:call-template>
              </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 SIREN_stype
            §4.Élément SIREN
            §6.Attribut SIREN
            §8.Type NIC_stype
            §11.Élément NIC
            §13.Attribut NIC
            §15.Type SIRET_ctype
            §18.Élément SIRET
            §20.Type SIRET_stype
            §23.Attribut SIRET
          </xs:schema>
        

8.2.Transformation XSLT validant les éléments et attributs ie:SIREN et ie:NIC

[Document]

§27.

          <xsl:transform xmlns:ex="http://dyomedea.com/ns/example"
                         xmlns:ie="http://xml.insee.fr/schema/2004"
                         xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
                         version="1.0">
            <xsl:output method="text"/>
            <xsl:template match="*|@*">
              <xsl:apply-templates select="*|@*"/>
            </xsl:template>
            <xsl:template match="ie:SIREN|ie:NIC|@ie:SIREN|@ie:NIC">
              <xsl:value-of select="name()"/>
              <xsl:text/>
              <xsl:value-of select="."/>
              <xsl:text> : </xsl:text>
              <xsl:call-template name="controle-luhn"/>
              <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:xs="http://www.w3.org/2001/XMLSchema"
                     xmlns:ex="http://dyomedea.com/ns/example"
                     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="siret.xsd"/>
            §2.Type SIREN_stype
            §9.Type NIC_stype
            §16.Type SIRET_ctype
            §21.Type SIRET_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-siret-types.xsd">
            §3.Type SIREN_stype
            §10.Type NIC_stype
            §17.Type SIRET_ctype
            §22.Type SIRET_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 SIREN
            §7.Attribut SIREN
            §12.Élément NIC
            §14.Attribut NIC
            §19.Élément SIRET
            §24.Attribut SIRET
          </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.Répertoire SIRENE

Le site du Répertoire SIRENE contient de nombreuses informations à propos de l'identification des entreprises et des établissements français. Se reporter notamment à la page "Définitions et nomenclatures" dont sont extraites de nombreuses définitions figurant dans cette documentation.

9.2.EDIRA

EDIRA est l'autorité d'enregistrement pour les échanges de données informatisés. L'INSEE a été reconnu autorité d'enregistrement par EDIRA ; ses identifiants sont donc susceptibles d'être utilisés mondialement.

9.3.ISO 6523-1

La norme ISO 6523-1 dont le titre est "Identification des systèmes d'identification d'organisations" spécifie un mécanisme "pour identifier d'une façon globale et non ambiguë les organisations et leurs parties, pour les besoins d'échange d'informations".

Ne se substituant pas aux répertoires d'organisations ou d'entreprises existants, elle définit une méthode pour identifier les organisations à partir d'identifiants internationaux de code (ICD) -dont le but est d'identifier le système d'identification utilisé- et de leur identifiant dans ce système d'identification.

Cette norme ne spécifie pas la liste des identifiants internationaux de code (ICD) mais uniquement la structure des identifiants globaux.

9.4.ISO 6523-2

La norme ISO 6523-2 dont le titre est "Enregistrement des identifiants internationaux de code (ICD) décrits dans la norme ISO 6523-1".

Cette norme ne spécifie pas la liste des identifiants internationaux de code (ICD) mais uniquement les procédures mises en place pour leur gestion.

9.5.Liste des ICD

La British Standards Institution a la charge d'entretenir la liste des ICD attribués aux différents systèmes d'identification.

L' ICD attribué au répertoire SIRENE dans cette liste est : 0002.

10.Ressources

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

10.1.Liste alphabétique

Attribut NIC
Fonction : référence normative
Nature : XHTML
Attribut SIREN
Fonction : référence normative
Nature : XHTML
Attribut SIRET
Fonction : référence normative
Nature : XHTML
Conditions d'utilisation
Fonction : référence normative
Nature : HTML
[Lien externe]
EDIRA
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
ISO 6523-1
Fonction : référence non normative
Nature : Norme ISO
[Lien externe]
ISO 6523-2
Fonction : référence non normative
Nature : Norme ISO
[Lien externe]
Implémentation XSLT
Fonction : référence non normative
Nature : XHTML
Liste des ICD
Fonction : référence non normative
Nature :
[Lien externe]
Répertoire SIRENE
Fonction : référence normative
Nature : HTML
[Lien externe]
Schéma
Fonction : validation par schéma
Nature : W3C XML Schema
Transformation XSLT validant les éléments et attributs ie:SIREN et ie:NIC
Fonction : validation par schéma
Nature : Transformation XSLT
Type NIC_stype
Fonction : référence normative
Nature : XHTML
Type SIREN_stype
Fonction : référence normative
Nature : XHTML
Type SIRET_ctype
Fonction : référence normative
Nature : XHTML
Type SIRET_stype
Fonction : référence normative
Nature : XHTML
Élément NIC
Fonction : référence normative
Nature : XHTML
Élément SIREN
Fonction : référence normative
Nature : XHTML
Élément SIRET
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