Une facture qui demande avant de revendiquer

Tout autre document ici atteint une norme en la déclarant : le fichier dit qu'il est Factur-X, et il est écrit en Factur-X. Déclarer est facile ; avoir raison ne l'est pas. Un document peut nommer une facture qu'il n'a jamais jointe, revendiquer un niveau de détail que le XML à l'intérieur ne suit pas, et tenir dans un contenant que la norme n'autorise pas — et sortir en disant les trois, pour revenir refusé par le service comptable auquel il a été envoyé.

Celui-ci demande donc d'abord. La bibliothèque lit le document tel qu'il est, n'écrit rien, ne change rien, et rend tout ce qu'elle sait se dresser entre ce document et la norme nommée — tout d'un coup, chaque constat citant la clause dont il vient et le fichier dont il parle. Pas la première faute puis un arrêt : la liste, pour qu'un seul tour de travail règle l'affaire.

La facture est composée ici comme quelqu'un l'écrit d'abord, et ce qui revient est imprimé. Deux choses font obstacle : elle ne revendique aucune norme d'archivage, et elle nomme factur-x.xml sans contenir aucun fichier sous ce nom. Corrigez ces deux-là et il en reste une — elle revendique le niveau de détail EN 16931 là où le XML suit Basic — car un fichier qui n'est pas là est un fichier que rien ne peut lire. Corrigez celle-là et plus rien ne fait obstacle, et le PDF est écrit. Rien n'est écrit tant qu'un obstacle demeure.

Un rapport vide n'est pas un certificat. Il dit que rien de ce que cette bibliothèque sait chercher ne fait obstacle, ce qui n'est pas la même chose qu'être conforme : c'est veraPDF, un programme gratuit qui n'a pris aucune part à l'écriture du fichier, qui le dit. Ce que le rapport règle, c'est le document qui se contredit lui-même, la seule faute que personne, plus loin, ne peut réparer. Les mêmes trois tours s'exécutent depuis Rust et depuis Python.

Ce que montre cet exemple

  • Tous les constats d'un coup, chacun nommant la clause dont il vient et le fichier dont il parle.
  • Deux obstacles à la première composition, un seul une fois le fichier contenu et la norme d'archivage revendiquée, aucun une fois que le niveau de détail revendiqué est celui que le XML suit.
  • Le document mesuré avant qu'un seul octet n'en sorte, et refusé plutôt qu'écrit tant que quelque chose fait obstacle.

Le code source complet

Rien n'est omis et rien n'est simplifié : c'est le programme exactement tel qu'il tourne, pour celui qui écrit vos logiciels.

Voir le code Rust Voir le code Python

Le document lui-même

Ouvrir le document en anglais Ouvrir le document en français

Des exemples voisins de celui-ci

Une feuille qui mesure ce qu'elle annonce

Trois règles — centimètres, pouces et points — sur une page qui dit à ce qui l'imprime de la sortir exactement à la taille où elle a été dessinée, et de ne rien proposer d'autre. Posez un mètre ruban sur la feuille imprimée et vous pourrez vérifier vous-même.

Un registre dont chaque page dit d'où elle vient

Deux séances reliées en un seul fichier. Chaque page a son propre relevé — ce qu'elle est, de quelle main elle a été écrite, le jour où elle l'a été — la photographie de la deuxième page en a un aussi, et chaque transcription est rattachée à la page qu'elle transcrit plutôt qu'au fichier entier.

Un fichier qui explique ses entrées

La référence d'un service d'archives, le département dont le document vient, la date jusqu'à laquelle il doit être gardé et sa classification, portés dans un fichier qu'une archive accepte encore. Aucune règle d'archivage ne sait ce qu'est une date de conservation, donc chaque entrée porte une description d'elle-même, et c'est cette description qui fait accepter à un contrôleur un fait que vous seul avez inventé.

Un bon de livraison qui connaît sa commande

Chaque ligne du bon contient la commande pour laquelle elle a été prélevée, le code article et l'étagère d'où elle vient, et n'imprime rien de tout cela. L'endroit où le chauffeur signe contient la tournée et la camionnette, et un autre, à côté du repère de pliage, n'contient rien que son propre emplacement.

Un document qui se lit à voix haute

Deux pages qui contiennent une copie d'elles-mêmes que personne ne voit : voici un titre, voici un tableau, et voici dans quel ordre les lire. Le logiciel qui lit le document à voix haute suit cette copie plutôt que l'ordre où les traits ont été dessinés, et saute le titre courant. Sur la page, rien ne change à l'œil.

Une liste dont les images parlent aussi

Une liste de pièces dont la première colonne est une image plutôt qu'un mot. Chaque image donne la phrase qu'on entend à sa place, si bien que rien de cette liste n'échappe à qui ne la voit pas. Sur la page, les images restent de simples images.

Tous les exemples, par sujet