Conversor de XML a XSD

Pega o sube un archivo XML y obtén un esquema XSD listo para usar. Esta herramienta analiza la estructura de tu documento y calcula elementos, atributos, tipos de datos y reglas de repetición por sí sola, sin salir de tu navegador.

Entrada XML

Déjalo vacío para un esquema sin espacio de nombres.

Elemento por defecto
Tamaño de sangría

XSD generado

Tipos complejos reutilizables, uno por cada nombre de elemento distinto.

Listo cuando tú lo estés

Pega tu XML a la izquierda, o carga el ejemplo, y pulsa Generar esquema XSD.

Se ejecuta por completo en tu navegador

Convierte cualquier documento XML en un esquema XSD funcional

La mayoría de los generadores de XSD piden instalar software de escritorio o solo funcionan con documentos triviales. Este recorre todo tu árbol XML, une las etiquetas repetidas en un solo tipo reutilizable y calcula los tipos de dato y las reglas de repetición a partir de los valores reales que encuentra, así el esquema coincide con tus datos y no con una plantilla genérica.

Salida en XML Schema Definition (XSD 1.0)

Qué hace distinto a este generador de XSD

Pensado para cómo se estructuran los documentos XML reales, no un ejemplo de juguete.

  • Reglas de repetición precisas

    Las etiquetas hermanas repetidas se vuelven maxOccurs="unbounded" automáticamente. Un campo que falta en un solo registro se marca minOccurs="0", así el esquema encaja con documentos que tienen campos opcionales.

  • Cinco tipos de dato inferidos

    El texto y los valores de atributo se comparan con xs:integer, xs:decimal, xs:boolean, xs:date y xs:dateTime, y usan xs:string cuando un valor no encaja bien en ninguno.

  • Tipos complejos reutilizables

    Cada nombre de elemento distinto recibe un tipo complejo con nombre, referenciado cada vez que vuelve a aparecer. Las etiquetas recursivas, como una estructura de carpetas anidadas, reutilizan el mismo tipo en lugar de romper el generador.

  • Espacio de nombres opcional

    Añade una URI de espacio de nombres y elige elementos qualified o unqualified, o déjalo en blanco para un esquema simple sin espacio de nombres.

  • Atributos bien manejados

    Los atributos presentes en cada instancia de un elemento se vuelven use="required"; los que solo aparecen en algunas instancias se vuelven use="optional", cada uno con su propio tipo inferido.

  • Nada sale de tu navegador

    El análisis, la inferencia y la generación del esquema se ejecutan en el cliente con JavaScript. Tu XML nunca se sube a ningún sitio, algo importante para configuraciones internas y datos con valores reales de clientes.

Cómo funciona la inferencia de tipos

Una referencia rápida de lo que verás en el esquema generado y por qué.

Cómo funciona la inferencia de tipos
Patrón en el XMLQué revisa la herramientaResultado en el XSD
La misma etiqueta aparece dos veces bajo un padreCuenta el mayor número de hermanos visto en cualquier partemaxOccurs="unbounded"
Falta una etiqueta hija en un registroComprueba si aparece en cada instancia del padreminOccurs="0"
El texto siempre son números enterosPrueba cada valor de muestra contra un patrón de enteroxs:integer
El texto mezcla enteros y decimalesTodo entero también es un decimal válidoxs:decimal
El texto mezcla números y palabrasNingún patrón único encaja con toda la muestraxs:string (respaldo seguro)
Un elemento contiene otros elementosConstruye un tipo complejo con nombre y reutilizablexs:complexType con xs:sequence
Un elemento tiene un prefijo de espacio de nombresEl prefijo se elimina antes del análisisSolo el nombre local del elemento

La herramienta toma hasta 200 valores de muestra por campo, más que suficiente para ver el patrón en documentos habituales.

Lo que esta herramienta no hace

Ser claros sobre los límites, porque un esquema inferido de un solo ejemplo es un punto de partida, no una especificación certificada.

  • No resuelve las URI de espacio de nombres en esquemas separados; cada prefijo se elimina y el resultado describe solo nombres locales de elemento.
  • El contenido mixto (texto junto a elementos hijos) se marca con mixed="true" pero no se modela campo por campo.
  • Infiere las reglas a partir de la muestra que entregas. Un campo que en tu muestra resulta ser un número, pero que en otro documento podría ser texto, aquí se tipará como número.
  • Genera sintaxis XSD 1.0, la que todavía espera casi cualquier herramienta o validador de XML.

Cómo funciona este Conversor de XML a XSD

Esta herramienta lee tu XML en el navegador y calcula el esquema XSD que le corresponde. Recorre cada elemento, agrupa los que comparten un nombre de etiqueta donde sea que aparezcan y revisa cuántas veces se repite cada etiqueta como hermana de otra. Si un padre llega a contener más de una, el esquema la marca maxOccurs="unbounded". Si la etiqueta aparece en cada instancia de su padre, minOccurs se queda en 1; si no, baja a 0, para que el esquema acepte documentos donde falte ese campo.

Los valores de atributos y de texto reciben el mismo tratamiento. La herramienta toma una muestra de cada atributo y de cada texto final, y los prueba contra patrones de enteros, decimales, booleanos, fechas y fecha-hora. Cuando toda la muestra encaja en un patrón, ese se vuelve el tipo XSD. Cuando los valores no coinciden, usa xs:string, así el esquema nunca rechaza un dato real por un solo registro distinto.

Los elementos que contienen otros elementos reciben su propio tipo complejo con nombre, reutilizado cada vez que esa etiqueta reaparece. Esa reutilización evita que una estructura recursiva, como un árbol de carpetas con etiquetas node anidadas, genere un esquema sin fin.

Los prefijos de espacio de nombres se eliminan antes del análisis, porque adivinar la estructura correcta desde un solo documento de ejemplo no es fiable. Nada de lo que pegues o subas sale de tu navegador; el XML se analiza y se descarta en cuanto el esquema aparece en pantalla.

Cómo usar este Conversor de XML a XSD

1

Pega o sube tu XML

Suelta un archivo .xml o pega el marcado directamente. Se carga un catálogo de ejemplo para que veas la herramienta en acción primero.

2

Ajusta las opciones del esquema (opcional)

Añade un espacio de nombres si tu esquema lo necesita y elige si los elementos nuevos son qualified o unqualified. Deja ambos vacíos para un esquema sin espacio de nombres.

3

Genera el esquema

La herramienta recorre todo el documento, une las etiquetas repetidas y calcula minOccurs, maxOccurs y el tipo de dato de cada elemento y atributo.

4

Copia o descarga el XSD

Copia el esquema al portapapeles o descárgalo como archivo .xsd, y valida tu XML original contra él en tu editor o en tu proceso de trabajo.

Ejemplo de Uso

El atributo de <precio> se vuelve xs:decimal, y <enStock> queda minOccurs="0" porque solo uno de los dos libros lo tiene:

Entrada
Un <catalogo> con dos libros, un atributo de moneda y un campo opcional
Salida
<xs:element name="catalogo" type="CatalogoType"/> <xs:complexType name="LibroType"> <xs:sequence> <xs:element name="titulo" type="xs:string" minOccurs="1"/> <xs:element name="precio" type="xs:decimal" minOccurs="1"/> <xs:element name="enStock" type="xs:boolean" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType>

Preguntas Frecuentes

¿Qué es un esquema XSD y para qué generarlo a partir de un XML?
Un XSD (XML Schema Definition) describe la forma que debe seguir una familia de documentos XML: qué elementos y atributos se permiten, en qué orden, cuántas veces pueden repetirse y qué tipo de dato debe tener cada valor. Escribirlo a mano es lento, así que esta herramienta lee un documento XML real y construye un esquema que coincide con él.
¿Cómo decide la herramienta si un elemento es obligatorio u opcional?
Revisa cada lugar donde aparece una etiqueta bajo la misma etiqueta padre en todo el documento. Si aparece en cada instancia de ese padre, el esquema pone minOccurs="1". Si falta en al menos una instancia, minOccurs baja a "0" para que el esquema siga aceptando documentos donde ese campo no está.
¿Por qué algunos elementos reciben maxOccurs="unbounded"?
Sucede cuando la herramienta encuentra más de un hermano con el mismo nombre bajo cualquier instancia del elemento padre, como varias etiquetas <libro> dentro de <catalogo>. Una etiqueta que solo aparece una vez conserva maxOccurs="1", el valor por defecto en XSD, y se omite del resultado para mantener el esquema legible.
¿Detecta automáticamente tipos de dato como números, booleanos y fechas?
Sí. La herramienta toma una muestra de los valores de texto o de atributo de cada elemento y los compara con patrones de números enteros, decimales, booleanos true/false, fechas y fecha-hora. Si toda la muestra encaja en un patrón, ese se vuelve el tipo XSD, por ejemplo xs:integer o xs:date. Si se mezclan números enteros y decimales, el tipo es xs:decimal, porque todo entero es un decimal válido. Si los valores no coinciden entre sí de otra forma, usa xs:string para no rechazar ningún dato real.
¿Qué pasa con los espacios de nombres y los prefijos de XML?
Los prefijos se eliminan antes de construir el esquema, y el resultado describe solo los nombres locales de los elementos. Inferir con fiabilidad una estructura con espacios de nombres a partir de un único documento de ejemplo no es algo que una herramienta genérica pueda acertar siempre, así que es una limitación conocida y no una suposición silenciosa.
¿Puede manejar XML muy anidado o que se referencia a sí mismo, como un árbol de carpetas?
Sí. Cada nombre de etiqueta distinto recibe un único tipo complejo compartido, así que una estructura recursiva, como un <nodo> que contiene más elementos <nodo>, reutiliza la misma definición de tipo en lugar de expandirse sin fin. El esquema se mantiene finito sin importar cuán profundo sea tu documento de ejemplo.
¿El esquema que genera esta herramienta validará mi archivo XML original?
Se construye específicamente a partir del documento que le diste, así que validar ese mismo archivo contra el resultado debería funcionar. Un esquema inferido de un solo ejemplo es un buen punto de partida para documentos con la misma forma, pero puede ser más estricto o más flexible de lo que quieres en casos que la muestra no mostró, así que revísalo antes de usarlo en producción.
¿Qué pasa si mi XML mezcla texto y elementos hijos en la misma etiqueta?
Eso se llama contenido mixto, por ejemplo <p>Hola <b>mundo</b></p>. La herramienta lo detecta y añade mixed="true" al tipo complejo de ese elemento para que el esquema siga siendo válido, aunque no intenta fijar con exactitud dónde cae el texto suelto entre los elementos hijos.
¿Se sube mi XML a un servidor?
No. Tanto el análisis como la generación del esquema se ejecutan en tu navegador con JavaScript. Nada de lo que pegues o subas sale de tu dispositivo.
¿Puedo poner un espacio de nombres de destino en el esquema generado?
Sí. Escribe una URI de espacio de nombres en las opciones del esquema y la herramienta añade targetNamespace y xmlns al elemento <xs:schema> generado, además del elementFormDefault que elijas. Deja el campo vacío para un esquema sin espacio de nombres, el caso más común en XML interno o de configuración.

Herramientas relacionadas

El Conversor de XML a XSD es mantenido por CodeItBro. Nuestro objetivo es ofrecer las mejores herramientas gratuitas para desarrolladores en la web. Si tienes comentarios o sugerencias, visita nuestra página de contacto.

Aparece en

CodeItBro - Free dev tools + practical guides to help you ship faster | Product HuntCodeItBro - Free Online Developer Tools badgeCodeItBro badge