1. Inicio
  2. Blog
  3. Cómo validar XML con un esquema XSD (y corregir los errores)
Herramientas XML

Cómo validar XML con un esquema XSD (y corregir los errores)

Publicado el 30 de octubre de 2026 · 7 min de lectura

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:element declara un elemento; el más exterior (catalog) es la raíz.
  • xs:sequence enumera los elementos hijos en orden: title debe ir antes que price.
  • maxOccurs="unbounded" permite cualquier número de libros; por defecto un elemento debe aparecer exactamente una vez.
  • type fija qué puede ser un valor: xs:string es cualquier texto, xs:decimal un número como 29.95.
  • use="required" hace obligatorio el atributo id.

Cómo validar XML con un esquema

  1. Abre el validador de XML y añade tu XML a la izquierda: pégalo, haz clic en Abrir archivo o suelta el archivo.
  2. Añade el esquema a la derecha, en Esquema XSD (opcional). Los botones Ejemplo cargan el ejemplo de esta página.
  3. 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 &amp; 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, no 29,95), sin símbolo de moneda, espacios ni palabras. Los demás tipos funcionan igual: xs:date pide 2026-10-30 y xs:boolean pide true o false.
  • Element 'price': This element is not expected. Expected is ( title ).
    El elemento está fuera de su sitio: la secuencia del esquema dice que title va 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 un targetNamespace, el XML necesita el mismo xmlns="…" 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:include o xs:import no 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

¿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.