# Schematron

Schematron se engloba dentro de la familia de lenguajes de marcado XML, siendo un lenguaje de validación basado en reglas y en XPATH. Se basa en afirmaciones en vez de en gramática. Utiliza expresiones de acceso en lugar de gramaticales para definir lo que se permite y lo que no se permite en un documento XML.
Este método de validación aporta una gran flexibilidad en la descripción de estructuras relacionales. En cambio, es un lenguaje muy limitado a la hora de especificar la estructura básica del documento, problema que se soluciona combinando Schematron con otros lenguajes de esquema.
En su forma típica de implementación, los esquemas Schematron son procesados como código XSLT. Pudiendo ser utilizados en cualquier situación donde XSLT pueda ser aplicable.

## Algunos usos prácticos
### Asistente de validación estructural

    Mediante la comprobación de restricciones de concurrencia, restricciones no-regulares y restricciones inter-documentos, Schematron puede ser útil para extender validaciones expresadas en lenguajes tales como DTD, RELAX NG o XML Schema

### Motor ligero de reglas empresariales

    Aunque no es tan exhaustivo como otros motores de reglas, (por ejemplo, Rete), Schematron puede utilizarse para expresar reglas acerca de complejas estructuras dentro de un documento XML.

### Reglas de resalte de sintaxis, para un editor XML

    Hay bastantes editores XML que emplean Schematron para sus reglas condicionales detectoras/resaltadoras de errores.

## Versiones

Schematron fue inventado por Rich Jelliffe en la Academia Sinica Computing Centre, de Taiwán. Según sus propias palabras: como "un plumero para llegar a aquellas partes que otros lenguajes de esquema no pueden alcanzar".
Las principales versiones que se han lanzado desde entonces han sido:
* Schematron 1.0 (1999)
* Schematron 1.3 (2000): incorporando el espacio de nombres http://xml.ascc.net/schematron/; y teniendo una implementación XSLT mediante una arquitectura de componentes "plug-in".
* Schematron 1.5 (2001): versión ampliamente implementada y aún en activo.
* Schematron 1.6 (2002): versión base utilizada para elaborar el ISO Schematron, y que fue retirada por este.
* ISO Schematron (2006): versión que regulariza algunas de las funcionalidades, y proporciona una salida XML para el formato SVRL. Incorpora el nuevo espacio de nombres http://purl.oclc.org/dsdl/schematron
* ISO Schematron (2010): esta propuesta de versión incorpora soporte para XSLT2 y propiedades arbitrarias.

## Schematron como un estándar ISO

Ha sido estandarizado como parte de la norma : ISO/IEC 19757 - Document Schema Definition Languages (DSDL) - Part 3: "Rule-based validation - Schematron".
Este estándar está disponible de manera gratuita en la lista ISO Publicly Available Specifications. Y puede ser adquirido impreso en papel en el propio ISO o en algunas de las instituciones nacionales de estándares.
Los esquemas que hagan uso de la norma ISO/IEC FDIS 19757-3, deben utilizar el siguiente espacio de nombres:

## Un ejemplo

Esta regla comprueba que el elemento ContractDate tenga una fecha anterior a la fecha en curso. Si esta condición no se cumple, se devolverá el mensaje de error indicado en el cuerpo del elemento assert