Skip to content
Sébastien Beyou edited this page Apr 14, 2017 · 3 revisions

Note : cette page est relativement similaire à celle de Changaco sur https://github.com/Legilibre/wiki/wiki/Format-de-la-base-LEGI-officielle, l’idéal serait de fusionner les deux pages.

Cette page explique le parsement (parsing) de la base LEGI en vue de créer le dépôt Git, en se concentrant sur les fichiers et balises XML importantes pour réaliser cette tâche. L’exemple d’illustration sera le code de la propriété intellectuelle (CPI) dont l’identifiant est LEGITEXT000006069414.

De façon générale, pour un identifiant "LEGIABCD123456789012", le fichier XML ou sous-répertoire sera accessible via le chemin "LEGI/ABCD/12/34/56/78/90/LEGIABCD123456789012[.xml]" (noter que les deux derniers chiffres n’ont pas de sous-répertoire dédié, le dernier sous-répertoire pouvant contenir jusqu’à 100 fichiers XML/sous-répertoires correspondant à ces deux derniers chiffres).

1. Aller dans le répertoire du code "legi/global/code_et_TNC_en_vigueur/code_en_vigueur/LEGI/TEXT/**/**/**/**/**/LEGITEXT************".

Pour le CPI, cela sera le sous-dossier "legi/global/code_et_TNC_en_vigueur/code_en_vigueur/LEGI/TEXT/00/00/06/06/94/LEGITEXT000006069414".
Ce dossier contient trois sous-dossiers :
  • "article" : contient tous les articles du code, rangés dans des sous-dossiers en fonction de leur identifiant
  • "section_ta" : similaire aux articles, mais pour les sections (les titres de parties)
  • "texte" : ce sous-dossier est celui qui nous intéressera en premier lieu car il contient les métadonnées de base du texte ainsi que les points d’entrée pour parcourir récursivement les sections et articles
2. Ouvrir le fichier "texte/version/LEGITEXT************.xml"
Pour le CPI, le fichier est "texte/version/LEGITEXT000006069414.xml".
Ce fichier XML les métadonnées générales du texte. Il contient les balises suivantes importantes :
  • TEXTE_VERSION / META / META_COMMUN / ID : identifiant du texte (que l’on avait déjà), par exemple "LEGITEXT000006069414" (l’ID désigne l’identifiant unique de l’objet XML (=texte, section ou article)
  • TEXTE_VERSION / META / META_COMMUN / NATURE : nature du texte, pour nous "CODE"
  • TEXTE_VERSION / META / META_SPEC / META_TEXTE_CHRONICLE / CID : identifiant du texte, par exemple "LEGITEXT000006069414" (il n’y a pas de différence ici avec l’ID précédent puisque l’objet XML est le texte lui-même, mais lorsqu’on parcourera les autres objets XML le champ CID sera toujours l’identifiant du texte)
  • TEXTE_VERSION / META / META_SPEC / META_TEXTE_CHRONICLE / DATE_PUBLI : date de publication au JO du texte (la date spéciale 2999-01-01 indique une absence de date ; pour les codes, il n’y en a pas sur textes eux-même mais uniquement sur les sections et articles)
  • TEXTE_VERSION / META / META_SPEC / META_TEXTE_CHRONICLE / DATE_TEXTE : date d’entrée de signature du texte
  • TEXTE_VERSION / META / META_SPEC / META_TEXTE_VERSION / TITRE : titre du texte, par exemple "Code de la propriété intellectuelle"
  • TEXTE_VERSION / META / META_SPEC / META_TEXTE_VERSION / ETAT : statut juridique du texte, par exemple "VIGUEUR" (ou "ABROGE", "ANNULE", "MODIFIE", etc.)
3. Ouvrir le fichier "texte/struct/LEGITEXT************.xml"
Pour le CPI, le fichier est "texte/struct/LEGITEXT000006069414.xml".
Ce fichier XML contient les sections (titres de parties) de plus haut niveau du texte avec, pour chacune, les dates où elles ont été en vigueur. Par exemple, on pourra avoir les sections "Partie législative" et "Partie réglementaire". Les balises importantes sont :
  • TEXTELR / META / META_COMMUN / ID : identifiant de l’objet XML, par exemple "LEGITEXT000006069414" (encore le même que le texte puisque ce fichier est unique pour un même code)
  • TEXTELR / META / META_SPEC / META_TEXTE_CHRONICLE / CID : identifiant du texte
  • TEXTELR / META / META_SPEC / META_TEXTE_CHRONICLE / DATE_PUBLI et DATE_TEXTE : date de publication au JO et date d’entrée en vigueur
  • TEXTELR / META / META_SPEC / META_TEXTE_CHRONICLE / DERNIERE_MODIFICATION : date de la dernière modification dans la base LEGI
  • TEXTELR / STRUCT / (LIEN_SECTION_TA)* : sections de plus haut niveau ; les attributs importants pour une balise donnée sont :
    • cid et id : identifiant de la section ; cela va nous permettre d’aller chercher récursivement les sections enfants de cette section dans l’étape suivante
    • debut, fin, etat : similaire à ce qu’on a déjà vu ; les dates sont les dates d’entrée en vigueur
    • niv : niveau de la section, il est à 1 pour l’instant et ira croissant en fonction de la profondeur de la section
    • le contenu de cette balise est le nom de la section
4. Ouvrir les fichiers "section_ta/LEGI/SCTA/**/**/**/**/**/**/LEGISCTA************.xml"
Pour le CPI, on pourra prendre la première section ("Partie législative") avec le fichier "section_ta/LEGI/SCTA/00/00/06/08/36/LEGISCTA000006083673.xml".
Ce fichier XML reprend les informations de la section en cours et indique les sections enfants. Les balises sont :
  • SECTION_TA / ID : identifiant de la section en cours
  • SECTION_TA / TITRE : titre de la section, par exemple "Partie législative"
  • SECTION_TA / CONTEXTE / TEXTE et TITRE_TXT : reprend les informations du texte auquel se rattache cette section, dont le cid (identifiant du texte)
  • SECTION_TA / STRUCTURE_TA / (LIEN_SECTION_TA)* : sections de niveau juste inférieur ; les attributs sont similaires à l’étape précédente, l’attribut cid est particulièrement important pour continuer la récursion ; le texte contenu dans cette balise est le nom de la section concernée (de niveau juste inférieur)
5. Continuer la récursion jusqu’à arriver à des sections comprenant des articles
Pour le CPI, on pourra prendre "section_ta/LEGI/SCTA/00/00/06/16/16/LEGISCTA000006161633.xml" correspondant à la Partie législative → Première partie : La propriété littéraire et artistique → Livre Ier : Le droit d'auteur → Titre Ier : Objet du droit d'auteur → Chapitre Ier : Nature du droit d'auteur.
Ce fichier XML est similaire aux sections parentes mais il contient les identifiants des articles, ainsi que l’état juridique des articles. Les nouvelles balises sont :
  • SECTION_TA / CONTEXTE / (TM / TITRE_TM)* : sections de niveau plus élevées, si besoin pour s’y retrouver
  • SECTION_TA / STRUCTURE_TA / (LIEN_ART)* : articles de la section ; les attributs sont classiques ; noter en particulier num qui contient le nom de l’article, par exemple "L111-1" ; noter que plusieurs balises peuvent avoir le même num lorsque leur état juridique est différent
6. Ouvrir les fichiers des articles "article/LEGI/ARTI/00/00/06/27/88/LEGIARTI000006278868.xml"
Pour le CPI, on pourra prendre "article/LEGI/ARTI/00/00/06/27/88/LEGIARTI000006278868.xml" correspondant à l’article L111-1 en vigueur (il existe une précédente version de cet article L111-1 avec l’identifiant LEGIARTI000006278867).
Ce fichier XML contient une version d’un article, comprenant les métadonnées de l’article, sa rédaction et des liens avec d’autres textes ou articles. Les balises sont :
  • ARTICLE / META / META_COMMUN / ID : identifiant de l’article ; les autres versions de l’article (portant le même nom) auront un identifiant différent
  • ARTICLE / META / META_SPEC / META_ARTICLE / NUM et ETAT : numéro/nom de l’article et son état juridique
  • ARTICLE / META / META_SPEC / META_ARTICLE / DATE_DEBUT et DATE_FIN : la date d’entrée en vigueur et de fin de vigueur ; si l’article est toujours en vigueur, sa date de fin devrait être 2999-01-01
  • ARTICLE / CONTEXTE : sections parentes de l’article et texte, similaire à ce qu’on trouvait dans les sections
  • ARTICLE / VERSIONS / (VERSION)* : autres versions de l’article, avec leurs états juridiques
  • ARTICLE / BLOC_TEXTUEL / CONTENU : rédaction de cette version de l’article, au format HTML
  • ARTICLE / LIENS / (LIEN)* : liens vers ou depuis d’autres articles, du même code ou d’autres textes ; historique de l’article lorsqu’il provient d’une loi antérieure ; lien vers le texte ayant mené à la codification du texte
Pour les lois, décrets, arrêtés et autres, la structure est similaire mais généralement plus simple puisqu’il n’y a pas de sections. Les lois sont dans le dossier "legi/global/code_et_TNC_en_vigueur/TNC_en_vigueur" (abréviation de "textes non codifiés") et sont transférées dans "legi/global/code_et_TNC_non_vigueur/TNC_non_vigueur" lorsqu’elles ne sont plus en vigueur (probablement comme les codes, mais ceux-ci ont une durée de vie longue).

L’espace de noms "JORFTEXT" est plus difficile à explorer : il est étalé sur les sections TNC_en_vigueur et TNC_non_vigueur, il peut contenir des objets de l’espace de noms LEGITEXT. Le sous-dossier "texte/version" peut alors contenir un ou plusieurs fichiers LEGITEXT.

Noter que la base LEGI contient des erreurs, cf le programme [legi.py](https://github.com/Legilibre/legi.py), ainsi que :

  • certains articles manquents au milieu de certains textes, cf https://github.com/Legilibre/Archeo-Lex/issues/30
  • certaines loi manquent, par exemple LOI n° 2016-962 du 15 juillet 2016 autorisant l'approbation de l'accord entre le Gouvernement de la République française et le Gouvernement de la République de Guinée relatif à la coopération en matière de défense et au statut des forces (cid=JORFTEXT000032893589), à moins que ça ne soit que dans la base JORF (mais certains textes JORFTEXT sont toutefois dans la base LEGI)
Clone this wiki locally