ediverse Explorer la plateforme

À la une PEPPOL BIS Billing 3.0 L’obligation européenne d’e-invoicing arrive : France sept 2026, Belgique janv 2026, Allemagne 2025.

Schematron Rule Runner

Exécutez un schéma Schematron (ISO/IEC 19757-3) contre un document XML, intégralement dans le navigateur. Sous-ensemble XPath 1.0 documenté.

Collez un document XML et un schéma Schematron, puis évaluez.

Comment ça marche

Schematron est une norme ISO/IEC 19757-3 qui décrit la validation par règles sur des structures XML. Le runner suit le flot classique en deux passes :

  1. Parse du schéma — le fichier <schema xmlns="http://purl.oclc.org/dsdl/schematron"> est lu : chaque <pattern> contient des <rule context="…"> qui à leur tour contiennent des <assert test="…"> ou <report test="…">.
  2. Évaluation — pour chaque règle, on évalue l'XPath du context sur le document XML d'entrée, puis sur chaque nœud retourné on évalue le test. Un assert qui rend false(), ou un report qui rend true(), produit un diagnostic avec le chemin du nœud fautif et le message du schéma.

Subset XPath supporté

Pour rester 100 % client-side et tenir dans un bundle JavaScript minimal, nous implémentons un sous-ensemble documenté de XPath 1.0. Les expressions en dehors de ce périmètre déclenchent un diagnostic E_XPATH_UNSUPPORTED — jamais une évaluation silencieuse.

Supporté

  • Chemins absolus (/Invoice/cbc:ID), relatifs depuis le contexte, ., .., *.
  • Axes explicites child::, attribute::, self::, parent::.
  • Attributs via @code.
  • Prédicats numériques ([1]), position(), last(), count(path) op N, comparaisons =, !=, <, <=, >, >=.
  • Opérateurs booléens and, or, fonction not().
  • Fonctions : count, string-length, normalize-space, string, number, boolean, true(), false(), position(), last().
  • Arithmétique +, -, *, div, mod.

Non supporté

  • L'opérateur descendant // et l'axe descendant::.
  • Les axes following-sibling::, preceding::, etc.
  • Les fonctions local-name(), substring(), matches(), key().
  • XPath 2.0+ (séquences, if/then/else, for $x in).

Exemples

Cliquez sur « Charger un exemple » pour pré-remplir les deux panneaux avec une version simplifiée de la règle EN 16931 BR-S-09 : le montant de TVA dans chaque TaxSubtotal doit être égal à la base imposable multipliée par le taux divisé par 100. L'exemple est minimal volontairement : il illustre la mécanique sans nécessiter un UBL complet.

Limites

  • Le runner ne charge pas de <include> ou <extends> externes : votre schéma doit être auto-suffisant.
  • Les déclarations <ns> sont lues mais les préfixes d'élément XML sont matchés littéralement (cbc:ID dans le test cherche un élément tagué exactement cbc:ID).
  • Les <value-of select="…"/> dans les messages sont affichés sous forme de placeholder {select}, sans interpolation en runtime.
  • Les chargements de phase (<phase>) ne sont pas respectés : toutes les règles sont évaluées.

Confidentialité

Documentation associée

  • ISO/IEC 19757-3 — Schematron, la norme officielle. Le site historique schematron.com reste une référence pédagogique.
  • Validateur PEPPOL — utilise des règles Schematron officielles compilées en TypeScript pour EN 16931 + PEPPOL BIS 3.0.
  • Validateur EN 16931 — la couche cœur de norme avant les CIUS.

Dernière mise à jour: 15 mai 2026