Cómo validar XML con un esquema XSD (y corregir los errores)
Un XML puede estar bien formado, con todas las etiquetas cerradas y todos los caracteres escapados, y aun así no servir para el sistema que lo recibe: falta un ID, un precio escrito como texto, elementos en el orden equivocado. Eso es lo que detecta un esquema XSD. Las facturas electrónicas, los ficheros bancarios, los feeds de productos y casi todos los intercambios de datos entre empresas vienen con uno, y los archivos que no lo cumplen se rechazan.
Esta guía explica cómo comprobar un archivo con el validador de XML gratuito y repasa los mensajes de error uno por uno. Para lo básico del XML bien formado, consulta cómo formatear y validar XML.
Qué dice un esquema XSD
Un esquema es también un archivo XML. Este describe un catálogo de libros:
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="catalog">
<xs:complexType>
<xs:sequence>
<xs:element name="book" maxOccurs="unbounded">
<xs:complexType>
<xs:sequence>
<xs:element name="title" type="xs:string"/>
<xs:element name="price" type="xs:decimal"/>
</xs:sequence>
<xs:attribute name="id" type="xs:ID" use="required"/>
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>xs:elementdeclara un elemento; el más exterior (catalog) es la raíz.xs:sequenceenumera los elementos hijos en orden:titledebe ir antes queprice.maxOccurs="unbounded"permite cualquier número de libros; por defecto un elemento debe aparecer exactamente una vez.typefija qué puede ser un valor:xs:stringes cualquier texto,xs:decimalun número como 29.95.use="required"hace obligatorio el atributoid.
Cómo validar XML con un esquema
- Abre el validador de XML y añade tu XML a la izquierda: pégalo, haz clic en Abrir archivo o suelta el archivo.
- Añade el esquema a la derecha, en Esquema XSD (opcional). Los botones Ejemplo cargan el ejemplo de esta página.
- Haz clic en Validar XML. Un ✓ Válido en verde significa que el archivo cumple el esquema. Si no, verás por ejemplo ✗ Se encontraron 2 problemas según el esquema, con la línea de cada problema y un botón Ir a la línea.
Este es el XML de ejemplo. Parece correcto, pero incumple el esquema dos veces:
<?xml version="1.0" encoding="UTF-8"?>
<catalog>
<book id="bk101">
<title>XML & JSON for Everyone</title>
<price>29.95</price>
</book>
<book>
<title>Daten für alle</title>
<price>free</price>
</book>
</catalog>El validador señala la línea 7 (el segundo libro no tiene id) y la línea 9 (el precio es “free”, que no es un número).
Los mensajes de error, explicados
La comprobación del esquema usa libxml2, la biblioteca XML estándar de muchos programas, así que sus mensajes están en inglés. Estos son los más frecuentes:
Element 'book': The attribute 'id' is required but missing.
Falta un atributo obligatorio. Añádelo:<book id="bk102">.Element 'price': 'free' is not a valid value of the atomic type 'xs:decimal'.
El valor no encaja con el tipo. Los decimales llevan punto (29.95, no29,95), sin símbolo de moneda, espacios ni palabras. Los demás tipos funcionan igual:xs:datepide2026-10-30yxs:booleanpidetrueofalse.Element 'price': This element is not expected. Expected is ( title ).
El elemento está fuera de su sitio: la secuencia del esquema dice quetitleva primero. Ordena los elementos como los enumera el esquema.Element 'isbn': This element is not expected.
El esquema no permite este elemento aquí. Revisa cómo está escrito, incluidas mayúsculas y minúsculas, o elimínalo.Element 'order', attribute 'status': [facet 'enumeration'] The value 'sent' is not an element of the set {'open', 'paid', 'shipped'}.
Solo se admiten los valores de la lista. Usa uno de ellos, escrito exactamente igual.Element 'order': No matching global declaration available for the validation root.
El esquema no tiene nada para el elemento raíz. Suele faltar o estar mal el espacio de nombres: si el esquema tiene untargetNamespace, el XML necesita el mismoxmlns="…"en su elemento raíz.
Corrige los problemas de arriba abajo. Un error puede provocar más mensajes más abajo, así que vuelve a validar tras cada corrección; la lista suele acortarse más de lo esperado.
Conviene saber
- Un solo archivo de esquema. Los esquemas que cargan otros archivos con
xs:includeoxs:importno pueden cargarlos aquí; el informe indica qué archivo faltó. Copia antes esas definiciones en un único esquema. - XSD 1.0. Las funciones exclusivas de XSD 1.1, como las aserciones, no se admiten. La mayoría de esquemas en uso son XSD 1.0.
- Primera vez. El motor de comprobación (alrededor de 1 MB) se descarga la primera vez que validas con un esquema; después es instantáneo.
- ¿Sin esquema? Deja el recuadro vacío para comprobar solo que el XML está bien formado.
Más herramientas XML
- Formateador de XML: haz legible el archivo o explóralo en la Vista de árbol.
- Probador de XPath: encuentra los elementos a los que se refiere un mensaje. Lee cómo usar XPath.
- CSV a XML: crea el XML a partir de una hoja de cálculo y valídalo aquí.
¿Se sube mi XML?
No. La comprobación, incluida la del esquema, se hace en tu navegador, así que tu XML y tu esquema nunca salen de tu dispositivo.
Preguntas frecuentes
¿De dónde saco el XSD?
De quien recibe el archivo: la documentación del sistema, la norma que debes seguir (las normas de facturación electrónica y bancarias publican sus esquemas) o los desarrolladores de tu socio.
¿Se admiten DTD?
No, el validador comprueba solo con esquemas XSD.
¿Validar cambia mi XML?
No. Solo lee el archivo e informa de los problemas. Corrígelos en tu editor o en el recuadro y vuelve a validar.
Más artículos
- Cómo comparar dos archivos de Excel o CSV y encontrar las diferencias
- JSON frente a YAML: diferencias, cuándo usar cada uno y cómo convertir
- Cómo convertir PNG a WebP (y cuándo no hacerlo)
- Cómo crear un código QR vCard para tu tarjeta de visita
- Cómo convertir CSV a XML (también desde Excel y Google Sheets)