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
editar- 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
editarSchematron 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
editarHa 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:
http://purl.oclc.org/dsdl/schematron
Un ejemplo
editar<schema xmlns="http://purl.oclc.org/dsdl/schematron">
<pattern>
<title>Date rules</title>
<rule context="Contract">
<assert test="ContractDate < current-date()">ContractDate should be in the past because future contracts are not allowed.</assert>
</rule>
</pattern>
</schema>
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
Véase también
editar- Validación XML
- en:XML Schema Language Comparison - Comparison to other XML Schema languages.
- en:Service Modeling Language - Service Modeling Language uses Schematron.
Enlaces externos
editar- Esta obra contiene una traducción derivada de «en:Schematron» de Wikipedia en inglés, publicada por sus editores bajo la Licencia de documentación libre de GNU y la Licencia Creative Commons Atribución-CompartirIgual 4.0 Internacional.
- ISO Schematron Home Page
- Introducción en Schematron
- Academia Sinica Computing Centre's Schematron Home Page
- Schematron Wiki including Implementer's FAQ
- new book on schematron (en alemán)