SCHEMATRON
Le langage de validation XML par règles ISO/IEC 19757-3. Complémentaire de XSD pour les business rules — pilier de PEPPOL et d'EN 16931.
Définition
Schematron est un langage de schéma XML basé sur des assertions XPath. Là où XSD décrit la forme d'un document (présence d'éléments, ordre, type des valeurs), Schematron décrit ses contraintes sémantiques : relations entre champs, règles métier, conditions croisées. Sa structure :
- schema : l'élément racine, contient un ou plusieurs patterns.
- pattern : regroupe des rules par thème métier.
- rule context="…" : identifie une zone XPath du document à inspecter.
- assert test="…" : assertion XPath qui doit retourner true. Sinon, message d'erreur émis.
- report test="…" : opposé — message émis si le test est true (typiquement pour des warnings).
Schematron est implémenté par compilation en XSLT 1.0 ou 2.0 (par l'outil skeleton-iso-schematron-xslt de Rick Jelliffe), puis appliqué via tout processeur XSLT standard (Saxon, Xalan, libxslt). Le résultat est un rapport SVRL (Schematron Validation Reporting Language) qui liste les assertions échouées.
Origine
Schematron est créé en 1999 par Rick Jelliffe (Topologi, Australie), initialement comme alternative pragmatique à DTD. Il est standardisé par l'ISO sous le numéro ISO/IEC 19757-3 (Document Schema Definition Languages — Part 3 : Rule-based validation — Schematron) en 2006, révisé en 2016. Son adoption s'accélère avec OASIS UBL, qui distribue ses business rules en Schematron, puis avec PEPPOL qui en fait l'outil de référence pour ses validations BIS (PEPPOL-EN16931-UBL.sch, PEPPOL-COMMON.sch). EN 16931-1 publie ses business rules normatives également en Schematron.
Exemple en contexte
Règle PEPPOL BIS Billing 3.0 simplifiée : un Invoice doit avoir un IBAN si le mode de paiement est virement bancaire.
Lecture : dans tout PaymentMeans, si le code est 30 (Credit transfer), alors un PayeeFinancialAccount/ID (IBAN) doit exister. Sinon, erreur fatale BR-50 (Business Rule 50).
Termes liés
- W3C XML Schema — complémentaire d'usage avec Schematron.
- EN 16931 — utilise Schematron pour ses business rules.
- PEPPOL BIS Billing 3.0 — distribue ses .sch officiellement.