JSON → XSD

JSON zu XML-Schema (XSD) Definition Generator Entwickler-Leitfaden

Inferenz von XML-Schema-Definitionen (XSD), komplexen Typstrukturen, Attributen und minOccurs/maxOccurs-Kardinalitätsregeln aus JSON-Beispielen.

Entwurfsmuster
JSON-Eingabedokument
<?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>
Erkannte Schema-Elemente
27 Elements (3 Unbounded)
Komplexe & einfache Typen
5 Complex, 3 Attributes
W3C XSD-Spezifikation
W3C XML Schema 1.0 (Strict AST)
100% Client-seitige Privatsphäre

JSON-Parsing, Typinferenz und XSD-Generierung laufen vollständig lokal in Ihrer Browser-Sandbox ohne Server-Uploads ab.

Flexible XSD-Entwurfsmuster

Wählen Sie flexibel zwischen Venetian Blind (benannte Typen), Russian Doll (verschachtelt) oder Salami Slice (globale Elemente).

Intelligente W3C-Typinferenz

Unterscheidet präzise xs:dateTime, xs:date, xs:anyURI, xs:decimal, xs:integer und erkennt XML-Attributpräfixe (@).

Technische Referenz & Architektur-Leitfaden

JSON zu XML-Schema (XSD) Definition Generator Entwickler-Leitfaden — Referenz-Leitfaden

Inferenz von XML-Schema-Definitionen (XSD), komplexen Typstrukturen, Attributen und minOccurs/maxOccurs-Kardinalitätsregeln aus JSON-Beispielen.

Wichtige Parameter & Steuerelemente

designPatternstring

W3C-XSD-Modellierungsmuster: 'venetian-blind' (wiederverwendbare benannte Typen), 'russian-doll' (verschachtelte anonyme Typen) oder 'salami-slice' (alle Elemente global deklariert).

Standard: venetian-blind
rootElementNamestring

Name des übergeordneten XML-Wurzelelements im generierten Schema.

Standard: purchaseOrder
targetNamespacestring

Ziel-Namespace-URI (Attribut targetNamespace an xs:schema) zur eindeutigen Schemaklassifizierung.

Standard: https://schema.toolsaa.com/v1
cardinalityRulestring

Strategie zur Bestimmung der Elementkardinalität: 'auto' (leitet minOccurs/maxOccurs aus Arrays und Null-Werten ab), 'strict' (erzwingt minOccurs=1) oder 'flexible' (erlaubt minOccurs=0).

Standard: auto
detectAttributesboolean

Wandelt JSON-Schlüssel mit den Präfixen '@' oder '_' automatisch in xs:attribute anstelle von Kindelementen um.

Standard: true
detectDateUriboolean

Erkennt ISO-8601-Datumsangaben und URIs und typisiert diese als xs:dateTime, xs:date bzw. xs:anyURI statt als allgemeines xs:string.

Standard: true

Profi-Tipps & Best Practices

Venetian-Blind-Muster für erstklassige Codegenerierung

Für die Codegenerierung mit JAXB (xjc) in Java oder xsd.exe in .NET ist das Venetian-Blind-Muster der Industriestandard. Es erzeugt für jeden complexType eigenständige, benannte Klassen anstelle unübersichtlicher anonymer innerer Klassen.

XML-Attribute vs. Kindelemente über @-Präfixe steuern

Kennzeichnen Sie Metadaten wie IDs, Währungscodes oder Revisionsnummern in Ihrem JSON mit dem Präfix '@' (z. B. '@orderId'). Dies erzeugt saubere <xs:attribute>-Deklarationen, während geschäftliche Nutzdaten als <xs:element> strukturiert bleiben.

Repräsentative Array-Elemente für exakte Kardinalität

Stellen Sie sicher, dass Ihre JSON-Beispielarrays mindestens ein vollständig ausgeprägtes Objekt enthalten. Der Inferenzalgorithmus weist Arrays automatisch maxOccurs="unbounded" und minOccurs="0" zu, um leere sowie mehrfache Datensätze abzusichern.

Namensraumkonflikte mit elementFormDefault="qualified" vermeiden

Belassen Sie elementFormDefault auf 'qualified', damit alle Kindelemente standardmäßig den Ziel-Namespace erben. Dies verhindert Validierungsfehler in komplexen SOAP-Webservices und Unternehmens-ESB-Systemen.

Häufige Fallstricke & Fehlerbehebung

XML-Instanz schlägt bei der Schemavalidierung aufgrund der Elementreihenfolge fehl

Das W3C-XSD-Konstrukt xs:sequence erfordert eine strikte Einhaltung der deklarierten Elementreihenfolge. Stellen Sie sicher, dass serialisierte XML-Dateien die identische Reihenfolge einhalten, oder verwenden Sie xs:all, wenn die Reihenfolge beliebig sein darf.

Datums- und Zeitstempel werden als xs:string statt als xs:dateTime interpretiert

Prüfen Sie, ob Datumsangaben exakt dem Standard ISO 8601 entsprechen (z. B. '2026-10-16T14:30:00Z' oder '2026-10-16'). Abweichende Datumsformate fallen auf den Basistyp xs:string zurück.

Leere Arrays [] oder Null-Werte führen zu leeren Typen oder xs:anyType

Aus leeren Arrays kann keine Elementstruktur abgeleitet werden. Fügen Sie mindestens ein valides Beispielobjekt mit allen zu erwartenden Schlüsseln in das JSON-Array ein.

Häufig gestellte Fragen (FAQ)

Worin besteht der Unterschied zwischen Venetian Blind, Russian Doll und Salami Slice?▼

Venetian Blind definiert ein einzelnes globales Wurzelelement und benannte globale Typen (xs:complexType), was ideal für objektorientierte Codegenerierung ist. Russian Doll bettet anonyme Typen direkt in Elemente ein und verbirgt Typen vor Wiederverwendung. Salami Slice deklariert jedes Element global und referenziert sie mit 'ref', wodurch jedes Element theoretisch als Dokumentwurzel fungieren kann.

Wie unterscheidet der Generator zwischen XML-Attributen und Kindelementen?▼

Wenn 'detectAttributes' aktiviert ist, werden JSON-Schlüssel mit führendem '@' (z. B. '@version') oder '_' (z. B. '_id') als <xs:attribute> im umgebenden complexType angelegt. Reguläre Schlüssel werden als <xs:element>-Kindknoten erzeugt.

Kann das erzeugte XSD direkt mit Java JAXB (xjc) oder .NET xsd.exe kompiliert werden?▼

Ja. Das ausgegebene Schema entspricht zu 100 % der Spezifikation W3C XML Schema 1.0. Sie können es direkt an Befehle wie 'xjc -d src schema.xsd' oder 'xsd.exe schema.xsd /classes' übergeben.

Wie werden JSON-Basistypen auf W3C-XSD-Datentypen abgebildet?▼

Ganzzahlen werden als xs:integer (oder xs:long) deklariert, Fließkommazahlen als xs:decimal, Booleans als xs:boolean und formatierte Strings entsprechend als xs:dateTime, xs:date oder xs:anyURI. Sonstiger Freitext wird als xs:string typisiert.

Werden meine JSON-Daten an externe Server oder KI-Schnittstellen übertragen?▼

Nein. Sämtliche Parsing-Schritte, Typinferenzen und die XSD-Serialisierung laufen zu 100 % lokal in der JavaScript-Umgebung Ihres Webbrowsers ab. Es findet keinerlei Datenübertragung statt.

Verwandte Werkzeuge & Dienstprogramme

Alle Werkzeuge →