JSON → XSD

Guía para Desarrolladores: Generador de Definiciones JSON a XML Schema (XSD)

Inferencia de esquemas XML (XSD), estructuras de tipos complejos, atributos y reglas de cardinalidad minOccurs/maxOccurs a partir de muestras JSON.

Patrón de Diseño
Documento JSON de Entrada
<?xml version="1.0" encoding="UTF-8"?>
<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
  targetNamespace="https://schema.toolsaa.com/v1"
  xmlns="https://schema.toolsaa.com/v1"
  elementFormDefault="qualified">

  <!-- Top-Level Root Element Declaration -->
  <xs:element name="purchaseOrder" type="PurchaseOrderType"/>

  <!-- Reusable Global Complex Types (Venetian Blind Pattern) -->
  <xs:complexType name="PurchaseOrderType">
    <xs:sequence>
      <xs:element name="orderDate" type="xs:dateTime"/>
      <xs:element name="deliveryDate" type="xs:date"/>
      <xs:element name="status" type="xs:string"/>
      <xs:element name="customer" type="CustomerType"/>
      <xs:element name="lineItems" type="LineItemsType" maxOccurs="unbounded"/>
      <xs:element name="paymentSummary" type="PaymentSummaryType"/>
    </xs:sequence>
    <xs:attribute name="orderNumber" type="xs:string" use="required"/>
    <xs:attribute name="currency" type="xs:string" use="required"/>
    <xs:attribute name="version" type="xs:string" use="required"/>
  </xs:complexType>

  <xs:complexType name="CustomerType">
    <xs:sequence>
      <xs:element name="id" type="xs:string"/>
      <xs:element name="name" type="xs:string"/>
      <xs:element name="email" type="xs:string"/>
      <xs:element name="vatNumber" type="xs:string"/>
      <xs:element name="isTaxExempt" type="xs:boolean"/>
      <xs:element name="addresses" type="AddressesType" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="LineItemsType">
    <xs:sequence>
      <xs:element name="sku" type="xs:string"/>
      <xs:element name="description" type="xs:string"/>
      <xs:element name="quantity" type="xs:int"/>
      <xs:element name="unitPrice" type="xs:decimal"/>
      <xs:element name="taxRate" type="xs:decimal"/>
      <xs:element name="inStock" type="xs:boolean"/>
      <xs:element name="tags" type="xs:string" minOccurs="0" maxOccurs="unbounded"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="PaymentSummaryType">
    <xs:sequence>
      <xs:element name="subtotal" type="xs:int"/>
      <xs:element name="taxTotal" type="xs:decimal"/>
      <xs:element name="shippingFee" type="xs:int"/>
      <xs:element name="grandTotal" type="xs:decimal"/>
      <xs:element name="paymentMethod" type="xs:string"/>
      <xs:element name="paid" type="xs:boolean"/>
    </xs:sequence>
  </xs:complexType>

  <xs:complexType name="AddressesType">
    <xs:sequence>
      <xs:element name="type" type="xs:string"/>
      <xs:element name="street" type="xs:string"/>
      <xs:element name="city" type="xs:string"/>
      <xs:element name="state" type="xs:string"/>
      <xs:element name="postalCode" type="xs:string"/>
      <xs:element name="country" type="xs:string"/>
    </xs:sequence>
  </xs:complexType>

</xs:schema>
Elementos Inferidos
27 Elements (3 Unbounded)
Tipos Complejos y Simples
5 Complex, 3 Attributes
Estándar W3C XSD
W3C XML Schema 1.0 (Strict AST)
100% Privacidad en el Cliente

El análisis JSON, la inferencia de tipos y la síntesis XSD se ejecutan exclusivamente en su navegador sin enviar datos a servidores externos.

Arquitectura XSD Multi-Patrón

Soporte completo para Venetian Blind (tipos con nombre reutilizables), Russian Doll (anidado anónimo) y Salami Slice.

Inferencia Inteligente de Tipos W3C

Detecta con precisión xs:dateTime, xs:date, xs:anyURI, xs:decimal, enteros y atributos con prefijo @.

Referencia técnica y guía de arquitectura

Guía para Desarrolladores: Generador de Definiciones JSON a XML Schema (XSD) — Guía de referencia

Inferencia de esquemas XML (XSD), estructuras de tipos complejos, atributos y reglas de cardinalidad minOccurs/maxOccurs a partir de muestras JSON.

Parámetros clave y controles

designPatternstring

Patrón de modelado estructural W3C XSD: 'venetian-blind' (tipos con nombre reutilizables), 'russian-doll' (tipos anónimos anidados) o 'salami-slice' (elementos globales).

Por defecto: venetian-blind
rootElementNamestring

Nombre asignado al elemento raíz XML en la declaración del esquema generado.

Por defecto: purchaseOrder
targetNamespacestring

URI del espacio de nombres de destino (atributo targetNamespace en xs:schema).

Por defecto: https://schema.toolsaa.com/v1
cardinalityRulestring

Estrategia para determinar la cardinalidad: 'auto' (deriva minOccurs/maxOccurs de listas y nulos), 'strict' (fuerza minOccurs=1) o 'flexible' (establece minOccurs=0).

Por defecto: auto
detectAttributesboolean

Mapea automáticamente claves JSON con prefijo '@' o '_' a declaraciones xs:attribute en lugar de elementos hijos.

Por defecto: true
detectDateUriboolean

Infiere tipos semánticos W3C como xs:dateTime, xs:date y xs:anyURI a partir de cadenas de texto coincidentes.

Por defecto: true

Consejos profesionales y mejores prácticas

Patrón Venetian Blind para generación de código empresarial

Venetian Blind es el estándar preferido para generar código con JAXB (xjc) en Java o xsd.exe en .NET, ya que crea clases nombradas independientes para cada complexType en lugar de clases internas anónimas.

Atributos XML frente a Elementos mediante el prefijo @

Agregue el prefijo '@' a los campos de metadatos en su JSON (por ejemplo, '@id', '@moneda', '@version'). Esto produce esquemas con <xs:attribute> limpios y mantiene los datos comerciales estructurados como <xs:element>.

Muestras de matrices completas para una cardinalidad precisa

Incluya al menos un objeto representativo completo dentro de cada array JSON. El motor de inferencia asignará automáticamente maxOccurs="unbounded" y minOccurs="0", garantizando compatibilidad con listas vacías o múltiples elementos.

Cualificación de nombres con elementFormDefault="qualified"

Mantener elementFormDefault en 'qualified' asegura que los elementos hijos hereden el espacio de nombres de destino, evitando errores de validación en pasarelas SOAP y arquitecturas ESB corporativas.

Errores comunes y solución de problemas

Error de validación en XML debido al orden de los elementos hijos

La directiva xs:sequence de W3C XSD exige que los elementos en el documento XML sigan exactamente el orden declarado en el esquema. Asegure el orden en la serialización o utilice xs:all si los elementos no tienen un orden predeterminado.

Cadenas de fecha interpretadas como xs:string en lugar de xs:dateTime

Verifique que las cadenas de fecha cumplan rigurosamente con el estándar ISO 8601 (por ejemplo, '2026-10-16T14:30:00Z' o '2026-10-16'). Las fechas con formatos no estándar retroceden a xs:string.

Arrays vacíos [] o campos nulos generan tipos indefinidos o xs:anyType

Un array sin elementos no aporta información para inferir la estructura de sus miembros. Rellene el array con al menos un objeto de prueba que contenga todas las propiedades esperadas.

Preguntas frecuentes (FAQ)

¿Cuál es la diferencia entre los patrones Venetian Blind, Russian Doll y Salami Slice?▼

Venetian Blind define un único elemento raíz global y tipos complejos globales con nombre, ideal para interoperabilidad y modelos OOP. Russian Doll anida tipos anónimos dentro de elementos sin posibilidad de reutilización. Salami Slice declara todos los elementos de forma global y los referencia, permitiendo que cualquier elemento actúe potencialmente como raíz.

¿Cómo diferencia el generador entre atributos y elementos XML?▼

Cuando 'detectAttributes' está activo, las claves JSON que inician con '@' (ej. '@codigo') o '_' (ej. '_tipo') se declaran como <xs:attribute> dentro del complexType correspondiente. El resto de claves se procesan como elementos hijos <xs:element>.

¿Se puede compilar el esquema XSD directamente con JAXB (xjc) o .NET xsd.exe?▼

Sí. El esquema resultante cumple al 100% con la recomendación W3C XML Schema 1.0 y puede compilarse directamente con comandos como 'xjc -d src schema.xsd' o 'xsd.exe schema.xsd /classes'.

¿Cómo se transforman los tipos de datos JSON a los tipos simples de W3C XSD?▼

Los enteros se mapean a xs:integer (o xs:long), números con decimales a xs:decimal, booleanos a xs:boolean, cadenas ISO a xs:dateTime o xs:date, y URLs a xs:anyURI. Todo texto general restante se asigna a xs:string.

¿Se transmiten mis datos JSON a servidores externos o servicios de IA?▼

No. El análisis sintáctico, la inferencia de tipos y la generación del esquema XSD se ejecutan al 100% de manera local en el motor JavaScript de su navegador web.

Herramientas y utilidades relacionadas

Todas las herramientas →