Aller au contenu

Schematron

Un article de Wikipédia, l'encyclopédie libre.

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

[modifier | modifier le code]

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[1]. Cette version introduit également un format de rapport de validation, SVRL.

Fonctionnement

[modifier | modifier le code]

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 :

<?xml version="1.0" encoding="UTF-8"?>
<schema xmlns="http://purl.oclc.org/dsdl/schematron">
   <pattern>
      <title>Contraintes sur les dates</title>
      <rule context="Contract">
         <assert test="ContractDate &lt; current-date()">La date des contrats, ContractDate, doit être passée.</assert>
      </rule>
   </pattern>
</schema>

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 :

<?xml version="1.0" encoding="UTF-8"?>
<xs:schema
  xmlns:xs="http://www.w3.org/2001/XMLSchema"
  xmlns:sch="http://purl.oclc.org/dsdl/schematron">
  <xs:element name="adresse">
    <xs:annotation>
      <xs:appinfo>
        <sch:pattern>
          <sch:rule context="adresse">
            <sch:assert test="(@ville and @codePostal) or not @ville">Dans une adresse,
 si l'attribut ville est renseigné, alors le code postal doit également être renseigné.</sch:assert>
          </sch:rule>
        </sch:pattern>
      </xs:appinfo>
    </xs:annotation>
    <xs:complexType>
    <xs:attribute name="ville" type="xs:string" use="optional"/>
    <xs:attribute name="codePostal" type="xs:string" use="optional"/>
     </xs:complexType>
   </xs:element>
</xs:schema>

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.

Liens externes

[modifier | modifier le code]

Références

[modifier | modifier le code]
  1. ISO/CEI 19757 - Document Schema Definition Languages (DSDL) - Part 3: Rule-based validation - Schematron