Moins de questions vous reviennent
Les utilisateurs cessent de demander ce que signifie un code d'erreur : la réponse est déjà dans le résultat.
Produit
MirrorMere n'est pas un écran : c'est le moteur de validation XBRL qui tourne derrière. C'est un Validating Processor XBRL certifié, et il se loge directement dans le produit que vous vendez déjà.
Structure
La plupart des validateurs s'arrêtent au What. Ils disent que quelque chose ne va pas et laissent le pourquoi, et le que faire, à celui qui reçoit le message. MirrorMere produit les trois ensemble — ce qui n'est possible que parce que le XBRL est ici bâti comme une ontologie.
Ontologie et inférence
Un validateur qui ne fait qu'émettre des codes d'erreur ne peut pas dire pourquoi. Ici, les concepts, les règles, les erreurs et la clause qui fonde chacune tiennent ensemble dans une seule ontologie, et le verdict est ce que SHACL en infère. L'inférence est la raison.


ixbrlo:illegalMultipleUseOfId
a owl:Class ;
rdfs:subClassOf ixbrlo:ValidationError ;
rdfs:comment "id attribute reused across iXBRL elements that require uniqueness."@en ;
skos:note "Inline XBRL 1.1, Section 3 — ixe:illegalMultipleUseOfId"@en ;
skos:note "Inline XBRL 1.1, Section 4 — ixe:illegalMultipleUseOfId"@en ;
owl:equivalentClass <http://www.xbrl.org/2013/inlineXBRL/errors#illegalMultipleUseOfId> .
Le vocabulaire est celui du standard W3C ; la dernière ligne pointe vers l'identifiant d'erreur publié par XBRL International. Aucun nom ici n'est de notre invention.
Why Path
Un code d'erreur dit que quelque chose ne va pas. Why Path dit quel objet, quelle règle et quelle clause — la personne qui tient le dépôt peut corriger, et vous pouvez montrer votre raisonnement si on vous le demande.
Les utilisateurs cessent de demander ce que signifie un code d'erreur : la réponse est déjà dans le résultat.
L'objet et la clause sont nommés : personne n'a à les chercher.
Quand un auditeur ou un régulateur demande pourquoi, la trace est la réponse.
Entrée
Le fichier validé.
Règle
Les contrôles XBRL 2.1 §3–§5 qui se sont exécutés.
Clause
Deux violations, toutes deux rattachées à XBRL 2.1 §5.1.3.4.
Ce qu'il faut corriger
Le rôle http://xbrl.org/role/conformance ne peut pas être employé sur link:label.
C'est cette dernière ligne qui compte : elle nomme la correction, pas seulement l'échec.
Des résultats sur lesquels compter
Un résultat de validation finit par servir de fondement à un audit ou à un dépôt. Deux choses comptent donc : que la réponse ne vacille pas, et que « conforme » veuille bien dire conforme. Rien ici ne devine ni ne répond par probabilité : soumettez cent fois le même document, vous aurez cent fois la même réponse.
Chaque constat arrive avec la clause sur laquelle il repose. Si aucune clause n'est enfreinte, il le dit. Autant de temps que votre équipe ne passe pas à vérifier si une alerte était fondée.
Un contrôle qu'il n'a pas pu exécuter est signalé comme non exécuté et compté à part des réussites. Rien ne passe en silence : un résultat propre peut être pris au pied de la lettre.
Les suites de tests standards tournent à chaque build, et une modification qui en casse une seule ne sort jamais. Passer à une nouvelle version ne renverse pas ce que vous aviez conclu le mois dernier.
Relancez-le. Même réponse.
Cœur de validation
Chaque spécification est un module distinct. Prenez le moteur entier, ou seulement ceux que vous traitez réellement.
| Spécification | Ce qu'il vérifie |
|---|---|
| XBRL 2.1 Core | Si les montants, périodes, unités et définitions de concepts tiennent ensemble |
| XBRL Dimensions 1.0 | Si les ventilations par segment ou par zone sont des combinaisons autorisées |
| XBRL Formula 1.0 | Si les règles de calcul et de contrôle propres à l'entreprise ou au régulateur sont respectées |
| XBRL Table Linkbase 1.0 | Si le rapport sort dans la présentation tabulaire imposée par le régulateur |
| Inline XBRL 1.1 | Si ce que voit un lecteur et ce que lit une machine disent la même chose |
| Open Information Model 1.0 | Si le même contenu garde son sens en XML, JSON et CSV |
| Extensible Enumerations 1.0 / 2.0 | Si un champ censé être choisi dans une liste fermée contient bien une valeur de cette liste |
| Report Packages 1.0 | Si le paquet de soumission est constitué comme l'exigent les règles |
| Taxonomy Packages 1.0 | Si un paquet de taxonomie est correctement constitué et se résout sans accès Internet |
| Units Registry 1.0 | Si les unités (devise, actions, pourcentages) suivent le registre standard |
| Link Role Registry 1.0 | Si les rôles employés sont bien ceux publiés au registre standard |
| Transformation Rules Registry v3 / v4 / v5 | Si « 1 234 » ou « mars 2025 » à l'écran se convertit en la valeur prescrite |
Calculation 1.1 est fourni avec le cœur. Quel que soit l'ensemble retenu, les constats reviennent tous sous la même forme.
Java pur et performance
Pur Java : aucun code natif, rien de plus à installer. Et assez rapide pour faire tourner toute la suite dans votre build. Pas une fois par version : à chaque modification.
Les temps varient selon la machine ; ce qui compte est l'ordre de grandeur, pas le chiffre exact. Les tests sont publiés : mesurez-le sur votre propre matériel.
Là où une JVM tourne, ceci tourne. Rien d'autre à installer, aucune bibliothèque native dans le paquet.
Pour évaluation
Le moyen le plus rapide de juger un moteur est de le lancer sur des documents dont vous connaissez déjà la réponse.