≡En resumen
- Un XSD es un contrato: define qué forma debe tener un XML para que el otro sistema lo acepte.
- Un XML puede estar bien formado y aun así no ser válido frente a su esquema.
- XSD aporta tipos de datos (fechas, decimales, enteros, listas cerradas de valores) que las DTD no tenían.
- Facturae, UBL y el protocolo de sitemaps publican esquemas XSD oficiales para validar sus archivos.
- La versión que casi todo el software soporta es XSD 1.0; la 1.1 añade reglas condicionales.
01 ¿Qué es XML Schema (XSD)?
El W3C aprobó XML Schema 1.0 como recomendación el 2 de mayo de 2001, para sustituir a las DTD heredadas de SGML, que no sabían distinguir un número de un texto. En 2004 publicó una segunda edición con correcciones y el 5 de abril de 2012 llegó XSD 1.1, compatible en lo esencial con la 1.0. El grupo de trabajo de XML Schema está cerrado y el mantenimiento pasó al grupo XML Core del W3C: es un estándar estable.
02 Cómo funciona un XSD: elementos, tipos y restricciones
Esquema (pedido.xsd):
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="pedido">
<xs:complexType>
<xs:sequence>
<xs:element name="cliente" type="xs:string"/>
<xs:element name="fecha" type="xs:date"/>
<xs:element name="total" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:positiveInteger" use="required"/>
</xs:complexType>
</xs:element>
</xs:schema>
Documento válido:
<pedido id="1042"><cliente>Ana Pérez</cliente><fecha>2026-09-29</fecha><total>89.95</total></pedido>
Si la fecha llegara como 29/09/2026 o el total como 89,95, el documento seguiría bien formado, pero el validador lo marcaría como no válido.
| Pieza | Para qué sirve | Ejemplo de uso |
|---|---|---|
| xs:element | Declara un elemento permitido | cliente, fecha, total |
| xs:attribute | Declara un atributo y si es obligatorio | id obligatorio en pedido |
| xs:complexType | Define un elemento que contiene otros elementos o atributos | La estructura del pedido |
| xs:simpleType | Define un tipo de valor propio a partir de otro | Un código postal de 5 dígitos |
| xs:sequence / xs:choice / xs:all | Fija el orden o las alternativas de los hijos | Cabecera antes que líneas de factura |
| minOccurs / maxOccurs | Número de apariciones permitidas | De 1 a ilimitadas líneas de producto |
| Facetas (pattern, enumeration, maxLength, minInclusive…) | Restringen los valores | Moneda solo EUR, USD o GBP |
Tipos predefinidos
xs:string, xs:boolean, xs:decimal, xs:integer, xs:date, xs:dateTime, xs:anyURI y decenas más, con reglas de formato exactas.
Espacios de nombres
Un esquema declara su targetNamespace, lo que permite combinar vocabularios, como las extensiones de imagen y vídeo de un sitemap.
Reutilización
Con import e include un esquema aprovecha tipos definidos en otros; así se construyen formatos grandes como UBL.
03 Cómo validar un XML contra un XSD
-
1
Consigue el esquema oficial
Descárgalo de la fuente del formato: facturae.gob.es para Facturae, sitemaps.org para los sitemaps, OASIS para UBL.
-
2
Enlaza el esquema (opcional)
El XML puede indicar dónde está su esquema con el atributo xsi:schemaLocation; muchos validadores lo usan para encontrarlo.
-
3
Valida con una herramienta
En la línea de comandos, xmllint de libxml2 (opción --schema); en código, las librerías de validación de Java, .NET, PHP o Python.
-
4
Lee los errores en orden
El primer error suele arrastrar a los siguientes: corrige el elemento que falta o el valor con formato incorrecto y vuelve a validar.
-
5
Automatízalo
Integra la validación en el proceso que genera o recibe el XML para que ningún archivo inválido salga ni entre en tu sistema.
04 Ejemplos reales de XML Schema: Facturae, UBL y sitemaps
| Formato | Quién publica el XSD | Qué valida |
|---|---|---|
| Facturae 3.2.2 | Ministerio de Hacienda (facturae.gob.es) | Facturas electrónicas a las Administraciones Públicas españolas a través de FACe |
| UBL | OASIS | Facturas y documentos comerciales; es una de las sintaxis admitidas para la factura electrónica B2B en España |
| Sitemap 0.9 | sitemaps.org (sitemap.xsd y siteindex.xsd) | Archivos sitemap y sitemaps índice |
| Extensiones de Google | Google (imagen, vídeo y noticias) | Etiquetas image:, video: y news: dentro de un sitemap |
En la factura electrónica, el esquema es la frontera entre una factura aceptada y una rechazada. Con el Real Decreto 238/2026, las facturas entre empresas deberán usar UBL, CII, EDIFACT o Facturae; tienes el calendario en la ficha de facturación.
En SEO, el protocolo de sitemaps propone validar cada archivo contra sitemap.xsd declarando el espacio de nombres http://www.sitemaps.org/schemas/sitemap/0.9. Un sitemap XML que no valida puede procesarse de forma parcial o ignorarse; por eso revisarlo forma parte de cualquier auditoría SEO técnica.
05 XSD vs DTD, RELAX NG y JSON Schema
| Criterio | DTD | XML Schema (XSD) | RELAX NG | JSON Schema |
|---|---|---|---|---|
| Sintaxis | Propia, no XML | XML | XML o compacta | JSON |
| Tipos de datos | Casi ninguno (texto) | Más de 40 tipos predefinidos y derivados | Usa los tipos de XSD | string, number, integer, boolean, object, array, null |
| Espacios de nombres | No | Sí | Sí | No aplica |
| Uso hoy | Documentos heredados | Estándar en integraciones y factura electrónica | Documentación técnica (DocBook, ODF) | API y configuración en JSON |
Si tu integración usa JSON en lugar de XML, el equivalente práctico de XSD es JSON Schema. La idea es la misma: un contrato legible por máquinas que se comprueba antes de procesar los datos.
06 Cuándo necesitas un XML Schema en tu proyecto
- ✓Intercambias datos con un organismo, banco o cliente que exige un formato XML concreto.
- ✓Generas facturas electrónicas, pedidos EDI o catálogos para marketplaces.
- ✓Recibes XML de terceros y no quieres que un archivo mal formado rompa tu base de datos.
- ✓Expones o consumes servicios SOAP, cuyo contrato WSDL incluye tipos definidos en XSD.
- ✓Quieres generar clases de código a partir del esquema en lugar de escribirlas a mano.
Los servicios web SOAP describen sus mensajes con XSD, y la mayoría de las integraciones con ERP, bancos y Administraciones siguen ese modelo. Si tienes que conectar tu plataforma con alguno de ellos, una agencia de desarrollo web que trabaje con esquemas te evita semanas de prueba y error.
Preguntas frecuentes sobre XML Schema
Es un documento, normalmente con extensión .xsd, que define qué elementos, atributos, orden y tipos de datos debe tener un XML para considerarse válido. Lo estandariza el W3C.
XML Schema Definition, el nombre del lenguaje del W3C con el que se escriben los esquemas XML y la extensión habitual de sus archivos.
Para validar automáticamente que un XML cumple el formato acordado antes de procesarlo, documentar ese formato y generar código a partir de él.
El XML contiene los datos; el XSD es otro XML que describe las reglas que esos datos deben cumplir.
La DTD tiene sintaxis propia y casi no distingue tipos de datos; XSD está escrito en XML, admite espacios de nombres y valida fechas, números o listas de valores.
Con una herramienta como xmllint (opción --schema) o con la librería de validación de tu lenguaje de programación, indicando el archivo XML y su esquema.
En la web oficial facturae.gob.es, que publica los XSD de las versiones 3.2, 3.2.1 y 3.2.2, esta última la vigente.
Fuentes consultadas
Sobre el autor
Development Manager en appyweb
Dirige el equipo de desarrollo de appyweb: aplicaciones web y móviles, SaaS, integraciones y arquitectura de software.
Ver perfil y artículos → Ver perfil en LinkedIn ↗