Validador XSD

Un documento XML bien formado aún puede estar incorrecto: falta un elemento requerido, uso del tipo de dato incorrecto para un atributo, o tener elementos en el orden incorrecto. XSD (Definición de Esquema XML) describe exactamente cómo debería verse el documento. Este validador empareja tu XML con su XSD, ejecuta el validador de esquema XML de W3C y lista cada violación con línea, elemento y la restricción específica que se rompió.

Cómo validar XML contra XSD

  1. 1

    Pega ambos archivos

    XML de un lado, esquema XSD del otro. Se pueden pegar múltiples esquemas juntos.

  2. 2

    Ejecuta la validación

    El analizador empareja elementos, atributos y tipos con las declaraciones del esquema.

  3. 3

    Revisa los errores

    Cada violación muestra la ruta del elemento, la restricción esperada y el valor actual.

  4. 4

    Corrige y revalida

    Edita en el lugar y vuelve a ejecutar sin recargar.

Qué verifica XSD

  • Nombres de elementos y cardinalidad: requerido, opcional, ocurrencias mín/max.
  • Orden de elementos: secuencia, elección, todos.
  • Presencia y tipo de atributo: requerido vs opcional, valores predeterminados, valores fijos.
  • Tipos de datos: xs:string, xs:integer, xs:decimal, xs:dateTime, xs:boolean, xs:anyURI, personalizado.
  • Restricciones: longitud mín/max, enumeraciones, patrones regex, valores mín/max.
  • Integridad referencial: xs:key, xs:keyref, xs:unique para restricciones entre elementos.

Errores típicos

Error Restricción XSD
Falta el elemento requerido <email> minOccurs="1"
Demasiados elementos <phone> maxOccurs="2" excedido
El valor “abc” no es un entero válido type="xs:integer"
El valor “[email protected]” no coincide con el patrón xs:pattern en xs:string
Elementos fuera de orden xs:sequence
Elemento desconocido <foo> No declarado en el esquema
Clave duplicada Violación de xs:unique

Elegir entre XSD y alternativas

  • XSD: estándar W3C, verboso, poderoso, ampliamente soportado. Primera opción para XML empresarial.
  • RELAX NG: sintaxis más simple, igualmente expresivo. Popular en formatos de documentación (DocBook, TEI).
  • Schematron: basado en reglas, ejecuta afirmaciones XPath contra el documento. Bueno para reglas de negocio más allá de la estructura.
  • DTD: más antiguo, mucho menos expresivo. Aún en uso por compatibilidad histórica con HTML.

Muchos proyectos utilizan XSD para la estructura y Schematron para reglas complejas entre campos.

Problemas comunes

  • Los espacios de nombres deben coincidir. Si el XSD declara targetNamespace="http://example.com" pero el XML no usa ese espacio de nombres, la validación falla con “no se encontró declaración”.
  • xs:anyType no es un escape mágico. Coincide con cualquier cosa pero no te da ninguna validación.
  • Los valores predeterminados se aplican solo cuando el atributo está ausente. Un valor vacío explícito (attr="") no recibe el predeterminado.
  • El manejo de espacios en blanco varía según el tipo. xs:string lo preserva, xs:token lo colapsa, xs:normalizedString reemplaza tabulaciones/nuevas líneas por espacios.

Flujo de trabajo de depuración

  1. Valida sin esquema primero (verificación de bien formado). Corrige cualquier error de análisis.
  2. Luego valida contra el esquema.
  3. Enfócate en el primer error. Los validadores XSD a veces generan errores en cascada; el primero suele ser el más manejable.
  4. Usa XPath para localizar el elemento problemático en documentos grandes.

Preguntas frecuentes

No. Pégalos por separado, o referencia el esquema a través de xsi:schemaLocation en el XML. La mayoría de las herramientas soportan ambos enfoques.

Sí. Cuando aparecen elementos de diferentes espacios de nombres, cada uno necesita su propio esquema. Pega todos; el validador los carga todos.

XSD 1.0. El motor libxml subyacente no implementa XSD 1.1, por lo que las funciones exclusivas de la versión 1.1 como las aserciones, los tipos condicionales y el contenido abierto no se aplican.

No. Tu XML y tu esquema se envían al servidor únicamente para ejecutar la validación de esa única petición; no se almacenan ni se registran después.

Herramientas relacionadas

Herramienta disponible en otros idiomas