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 :
- 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="…">. - Évaluation — pour chaque règle, on évalue l'XPath du
contextsur le document XML d'entrée, puis sur chaque nœud retourné on évalue letest. Un assert qui rendfalse(), ou un report qui rendtrue(), 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, fonctionnot(). - 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'axedescendant::. - 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:IDdans le test cherche un élément tagué exactementcbc: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.