Schematron
# Schematron

En langage de balisage, Schematron est un langage permettant de valider la structure d'un document XML par une liste d'assertions. Schematron permet de définir des contraintes complexes, que d'autres langages de validation XML ne permettent pas. Cependant, contrairement aux langages de validation par grammaire, comme DTD, XML Schema ou RELAX NG, tout ce qui n'est pas spécifié est considéré comme valide. Aussi, Schematron est utilisé en complément d'un de ces langages.

## Versions et standard

Schematron a été inventé par Rick Jelliffe à l'Academia Sinica Computing Centre de Taiwan.

Les versions les plus remarquables sont :

* Schematron 1.0 (1999)
* Schematron 1.3 (2000): Cette version utilise l'espace de nommage http://xml.ascc.net/schematron/.
* Schematron 1.5 (2001)
* Schematron 1.6 (2002)
* ISO Schematron (2006): Cette version utilise l'espace de nommage http://purl.oclc.org/dsdl/schematron. Elle fait partie de la norme ISO/CEI 19757. Cette version introduit également un format de rapport de validation, SVRL.

## Fonctionnement

### Format

Schematron est un langage se conformant lui-même au balisage XML. Il permet de définir un ensemble d'assertions en XPath liées à des métadonnées, tel qu'un message d'erreur en texte libre. Le code ci-dessous est un exemple de fichier Schematron :

L'assertion vérifie que, pour chaque élément Contract, il existe un élément fils ContractDate dont la valeur est inférieure à la date actuelle.

Il est également possible d'embarquer les règles directement dans un fichier XSD ou RELAX NG. Le code ci-dessous est un exemple de règles embarquées dans un schéma XSD :

### Validation

Plusieurs implémentations consistent à convertir les fichiers Schematron en feuilles XSLT, un simple processeur XSLT permet alors de valider les fichiers XML.

Certains outils commerciaux, par exemple Oxygen XML Editor et XMLBlueprint XML Editor, vérifient nativement les contraintes Schematron.

