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[1]. 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 :

<?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>

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.

Voir aussi

Liens externes

Références

  1. ISO/CEI 19757 - Document Schema Definition Languages (DSDL) - Part 3: Rule-based validation - Schematron

Content Disclaimer

Informasi ini disarikan dari Wikipedia dan disajikan kembali untuk tujuan edukasi. Konten tersedia di bawah lisensi CC BY-SA 3.0. Kami tidak bertanggung jawab atas ketidakakuratan data yang bersumber dari kontribusi publik tersebut.

  1. The information displayed on this website is sourced in part or in whole from Wikipedia and has been adapted for the purpose of restating it. We strive to provide accurate and relevant information, however:
  2. There is no guarantee of absolute accuracy. Wikipedia is an open, collaborative project that can be edited by anyone, so information is subject to change.
  3. It is not intended to constitute professional advice. The content displayed is for informational and educational purposes only. For important decisions (e.g., medical, legal, or financial), please consult a professional.
  4. Content copyright. Wikipedia is licensed under the Creative Commons Attribution-ShareAlike License (CC BY-SA). This means that content may be reused with appropriate attribution and shared under a similar license.
  5. Responsible use. Any risk arising from the use of information from this website is entirely the responsibility of the user.