JSON → XSD

Guide Développeur : Générateur de Définition JSON vers XML Schema (XSD)

Inférence de schémas XML (XSD), structures de types complexes, attributs et règles de cardinalité minOccurs/maxOccurs à partir d'échantillons JSON.

Modèle de Conception
Document JSON d'Entrée
<?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>
Éléments Déduits
27 Elements (3 Unbounded)
Types Complexes et Simples
5 Complex, 3 Attributes
Spécification W3C XSD
W3C XML Schema 1.0 (Strict AST)
100% Confidentialité Côté Client

L'analyse JSON, l'inférence des types et la synthèse XSD s'exécutent strictement dans votre navigateur sans transfert de données.

Architecture XSD Multi-Modèles

Sélectionnez les modèles Venetian Blind (types nommés réutilisables), Russian Doll (imbriqué anonyme) ou Salami Slice.

Inférence Intelligente des Types W3C

Distingue rigoureusement xs:dateTime, xs:date, xs:anyURI, xs:decimal, les entiers et les attributs préfixés par @.

Référence technique et guide d'architecture

Guide Développeur : Générateur de Définition JSON vers XML Schema (XSD) — Guide de référence

Inférence de schémas XML (XSD), structures de types complexes, attributs et règles de cardinalité minOccurs/maxOccurs à partir d'échantillons JSON.

Paramètres clés et contrôles

designPatternstring

Modèle de conception W3C XSD : 'venetian-blind' (types nommés réutilisables), 'russian-doll' (types anonymes imbriqués) ou 'salami-slice' (éléments globaux).

Par défaut : venetian-blind
rootElementNamestring

Nom attribué à l'élément racine XML dans le schéma généré.

Par défaut : purchaseOrder
targetNamespacestring

URI de l'espace de noms cible (attribut targetNamespace sur xs:schema).

Par défaut : https://schema.toolsaa.com/v1
cardinalityRulestring

Règle de cardinalité : 'auto' (déduit minOccurs/maxOccurs des tableaux et valeurs nulles), 'strict' (impose minOccurs=1) ou 'flexible' (minOccurs=0).

Par défaut : auto
detectAttributesboolean

Mappe automatiquement les clés JSON préfixées par '@' ou '_' en déclarations xs:attribute plutôt qu'en éléments enfants.

Par défaut : true
detectDateUriboolean

Détecte les dates ISO 8601 et les URI pour assigner xs:dateTime, xs:date ou xs:anyURI au lieu du type générique xs:string.

Par défaut : true

Conseils de pro et bonnes practices

Modèle Venetian Blind pour la génération de code objet

Le modèle Venetian Blind est la norme recommandée pour JAXB (xjc) en Java et xsd.exe sous .NET. Il produit des classes et structures nommées indépendantes pour chaque complexType, évitant la prolifération de classes internes anonymes.

Attributs XML vs Éléments enfants avec le préfixe @

Ajoutez un préfixe '@' aux champs de métadonnées JSON (ex. '@id', '@devise', '@version'). Le générateur produira des <xs:attribute> propres tout en conservant les données métier sous forme d'éléments <xs:element> structurés.

Échantillons de tableaux représentatifs pour une cardinalité précise

Veillez à fournir au moins un élément d'objet complet dans vos listes JSON. Le moteur d'inférence appliquera automatiquement maxOccurs="unbounded" et minOccurs="0", garantissant la conformité pour des tableaux vides ou multiples.

Gestion des espaces de noms avec elementFormDefault="qualified"

Conserver elementFormDefault sur 'qualified' assure que tous les éléments enfants héritent de l'espace de noms cible, prévenant ainsi les erreurs de validation dans les passerelles SOAP et architectures ESB d'entreprise.

Pièges courants et dépannage

Échec de validation XML dû à l'ordre des éléments enfants

La directive xs:sequence du standard W3C XSD exige un ordre strict des éléments conforme au schéma. Veillez à ce que la sérialisation XML respecte cet agencement, ou optez pour xs:all si l'ordre des éléments n'est pas prévisible.

Dates ou horodatages ISO typés en xs:string au lieu de xs:dateTime

Vérifiez que vos dates respectent rigoureusement la norme ISO 8601 (ex. '2026-10-16T14:30:00Z' ou '2026-10-16'). Les formats non standard basculent automatiquement vers le type générique xs:string.

Tableaux vides [] ou valeurs nulles générant des types indéterminés

Un tableau vide ne permet pas d'inférer la structure des éléments qu'il contient. Renseignez au moins un objet représentatif contenant l'ensemble des clés attendues dans votre JSON d'entrée.

Foire aux questions (FAQ)

Quelle est la différence entre les modèles Venetian Blind, Russian Doll et Salami Slice ?▼

Venetian Blind définit un élément racine global et des types complexes globaux nommés, idéal pour la génération de code objet. Russian Doll imbrique des types anonymes directement dans les éléments, empêchant toute réutilisation. Salami Slice déclare tous les éléments au niveau global avec 'ref', ce qui permet à n'importe quel élément de servir de racine au document.

Comment le générateur distingue-t-il les attributs des éléments XML ?▼

Lorsque l'option 'detectAttributes' est active, toute clé JSON débutant par '@' (ex. '@idCommande') ou '_' (ex. '_type') est convertie en <xs:attribute> dans le complexType parent. Les autres clés deviennent des éléments enfants <xs:element>.

Le schéma XSD généré est-il compatible avec JAXB (xjc) ou xsd.exe de Microsoft ?▼

Oui. Le schéma produit respecte à 100 % la recommandation W3C XML Schema 1.0. Il peut être immédiatement compilé via 'xjc -d src schema.xsd' en Java ou 'xsd.exe schema.xsd /classes' sous .NET.

Comment les types primitifs JSON sont-ils mappés vers les types simples W3C XSD ?▼

Les nombres entiers deviennent des xs:integer (ou xs:long), les décimaux des xs:decimal, les booléens des xs:boolean, et les chaînes au format date ou URL deviennent des xs:dateTime, xs:date ou xs:anyURI. Tout autre texte est typé en xs:string.

Mes données JSON sont-elles envoyées vers un serveur distant ou une IA ?▼

Non. L'analyse syntaxique de l'AST, l'inférence des types et la sérialisation XSD s'exécutent intégralement côté client dans le navigateur web. Aucune donnée n'est transmise sur le réseau.

Outils et utilitaires connexes

Tous les outils →