XML zu XSD Konverter

Füge dein XML ein oder lade es hoch und erhalte ein fertiges XSD-Schema zurück. Dieses Tool liest die Struktur deines Dokuments und ermittelt Elemente, Attribute, Datentypen und Wiederholungsregeln von selbst, direkt in deinem Browser.

XML-Eingabe

Leer lassen für ein Schema ohne Namespace.

Element-Standard
Einrückung

Erzeugtes XSD

Wiederverwendbare komplexe Typen, einer je eigenem Elementnamen.

Bereit, wenn du es bist

Füge links dein XML ein oder lade das Beispiel, und klicke auf XSD-Schema erzeugen.

Läuft vollständig in deinem Browser

Verwandle jedes XML-Dokument in ein funktionierendes XSD-Schema

Die meisten XSD-Generatoren verlangen eine Desktop-Installation oder kommen nur mit trivialen Dokumenten klar. Dieses Tool durchläuft deinen gesamten XML-Baum, fasst wiederholte Tags zu einem einzigen wiederverwendbaren Typ zusammen und ermittelt Datentypen und Wiederholungsregeln aus den Werten, die es tatsächlich findet, damit das Schema zu deinen echten Daten passt und nicht zu einer generischen Vorlage.

Ausgabe als XML Schema Definition (XSD 1.0)

Was diesen XSD-Generator anders macht

Gebaut für echte XML-Dokumente, nicht für ein Spielzeugbeispiel.

  • Präzise Wiederholungsregeln

    Wiederholte Geschwister-Tags werden automatisch zu maxOccurs="unbounded". Ein Feld, das in nur einem Datensatz fehlt, wird mit minOccurs="0" markiert, damit das Schema zu Dokumenten mit optionalen Feldern passt.

  • Fünf erkannte Datentypen

    Text- und Attributwerte werden gegen xs:integer, xs:decimal, xs:boolean, xs:date und xs:dateTime geprüft und fallen auf xs:string zurück, wenn ein Wert nicht sauber passt.

  • Wiederverwendbare komplexe Typen

    Jeder eigene Elementname bekommt einen benannten komplexen Typ, der überall referenziert wird, wo er wieder vorkommt. Rekursive Tags, etwa eine verschachtelte Ordnerstruktur, nutzen denselben Typ, statt den Generator zu sprengen.

  • Optionaler Ziel-Namespace

    Ergänze eine Namespace-URI und wähle qualified oder unqualified, oder lass das Feld leer für ein einfaches Schema ganz ohne Namespace.

  • Attribute korrekt behandelt

    Attribute, die bei jeder Instanz eines Elements vorkommen, werden zu use="required"; Attribute, die nur bei manchen Instanzen auftauchen, werden zu use="optional", jeweils mit eigenem erkanntem Typ.

  • Nichts verlässt deinen Browser

    Parsen, Typerkennung und Schema-Erzeugung laufen komplett clientseitig in JavaScript. Dein XML wird nirgendwo hochgeladen, was bei internen Konfigurationen und echten Kundendaten zählt.

So funktioniert die Typerkennung

Eine kurze Referenz dafür, was im erzeugten Schema steht und warum.

So funktioniert die Typerkennung
Muster im XMLWas das Tool prüftErgebnis im XSD
Derselbe Tag kommt zweimal unter einem Elternteil vorZählt die höchste je gesehene Anzahl an GeschwisternmaxOccurs="unbounded"
Ein Kind-Tag fehlt in einem DatensatzPrüft, ob der Tag bei jeder Instanz des Elternteils vorkommtminOccurs="0"
Text besteht immer aus ganzen ZahlenPrüft jeden Stichprobenwert gegen ein Ganzzahl-Musterxs:integer
Text mischt ganze Zahlen und DezimalzahlenJede ganze Zahl ist auch eine gültige Dezimalzahlxs:decimal
Text mischt Zahlen und WörterKein einzelnes Muster passt zur gesamten Stichprobexs:string (sichere Rückfalloption)
Ein Element enthält weitere ElementeBaut einen benannten, wiederverwendbaren komplexen Typxs:complexType mit xs:sequence
Ein Element hat ein Namespace-PräfixPräfix wird vor der Analyse entferntNur der lokale Elementname

Das Tool nimmt bis zu 200 Stichprobenwerte je Feld, mehr als genug, um das Muster in typischen Dokumenten zu erkennen.

Was dieses Tool nicht macht

Ehrlich über die Grenzen, denn ein aus einem einzigen Beispiel abgeleitetes Schema ist ein Ausgangspunkt, keine zertifizierte Spezifikation.

  • Es löst Namespace-URIs nicht in getrennte Schemas auf; jedes Präfix wird entfernt, und das Ergebnis beschreibt nur lokale Elementnamen.
  • Gemischter Inhalt (Text neben Kindelementen) wird mit mixed="true" markiert, aber nicht Feld für Feld modelliert.
  • Es leitet die Regeln aus der Stichprobe ab, die du lieferst. Ein Feld, das in deiner Stichprobe zufällig eine Zahl ist, andernorts aber Text sein könnte, wird hier trotzdem als Zahl typisiert.
  • Es erzeugt XSD-1.0-Syntax, die nach wie vor fast jedes XML-Tool und jeder Validator erwartet.

So funktioniert XML zu XSD Konverter

Dieses Tool liest dein XML im Browser und ermittelt das passende XSD-Schema dazu. Es durchläuft jedes Element, gruppiert die, die sich einen Tag-Namen teilen, egal wo sie vorkommen, und prüft dann, wie oft jeder Tag als Geschwister auftaucht. Enthält ein Elternteil irgendwann mehr als eines, markiert das Schema es mit maxOccurs="unbounded". Taucht der Tag bei jeder Instanz seines Elternteils auf, bleibt minOccurs bei 1; sonst sinkt es auf 0, damit das Schema auch Dokumente akzeptiert, denen dieses Feld fehlt.

Attribut- und Textwerte werden genauso behandelt. Das Tool nimmt eine Stichprobe der gefundenen Werte je Attribut und je Textinhalt und prüft sie gegen Muster für ganze Zahlen, Dezimalzahlen, Booleans, Datum und Datum-Uhrzeit. Passt die gesamte Stichprobe zu einem Muster, wird das der XSD-Typ. Stimmen die Werte nicht überein, greift xs:string, damit das Schema nie einen echten Wert wegen eines einzelnen Ausreissers ablehnt.

Elemente, die weitere Elemente enthalten, bekommen einen eigenen benannten komplexen Typ, der überall wiederverwendet wird, wo dieser Tag erneut vorkommt. Genau diese Wiederverwendung verhindert auch, dass eine rekursive Struktur, etwa ein Ordnerbaum aus verschachtelten node-Tags, ein endloses Schema erzeugt.

Namespace-Präfixe werden vor der Analyse entfernt, weil sich die passende namespace-fähige Struktur aus einem einzigen Beispieldokument nicht zuverlässig erraten lässt. Nichts, was du einfügst oder hochlädst, verlässt deinen Browser; das XML wird geparst und verworfen, sobald das Schema auf dem Bildschirm erscheint.

So verwenden Sie XML zu XSD Konverter

1

XML einfügen oder hochladen

Lade eine .xml-Datei hoch oder füge das Markup direkt ein. Ein Beispielkatalog ist bereits geladen, damit du das Tool zuerst in Aktion sehen kannst.

2

Schema-Optionen einstellen (optional)

Ergänze einen Ziel-Namespace, falls dein Schema einen braucht, und wähle, ob neue Elemente qualified oder unqualified sind. Lass beides leer für ein einfaches Schema ohne Namespace.

3

Schema erzeugen

Das Tool durchläuft das gesamte Dokument, fasst wiederholte Tags zusammen und ermittelt minOccurs, maxOccurs und den Datentyp für jedes Element und Attribut.

4

XSD kopieren oder herunterladen

Kopiere das Schema in die Zwischenablage oder lade es als .xsd-Datei herunter und validiere dein ursprüngliches XML in deinem Editor oder deiner Pipeline dagegen.

Anwendungsbeispiel

Das Attribut von <preis> wird xs:decimal, und <vorraetig> erhält minOccurs="0", weil nur eines der beiden Bücher es hat:

Eingabe
Ein <katalog> mit zwei Büchern, einem Attribut für die Währung und einem optionalen Feld
Ausgabe
<xs:element name="katalog" type="KatalogType"/> <xs:complexType name="BuchType"> <xs:sequence> <xs:element name="titel" type="xs:string" minOccurs="1"/> <xs:element name="preis" type="xs:decimal" minOccurs="1"/> <xs:element name="vorraetig" type="xs:boolean" minOccurs="0"/> </xs:sequence> <xs:attribute name="id" type="xs:string" use="required"/> </xs:complexType>

Häufig gestellte Fragen

Was ist ein XSD-Schema, und warum sollte ich eines aus einer XML-Datei erzeugen?
Ein XSD (XML Schema Definition) beschreibt, welche Form eine Gruppe von XML-Dokumenten haben muss: welche Elemente und Attribute erlaubt sind, in welcher Reihenfolge, wie oft sie sich wiederholen dürfen und welchen Datentyp jeder Wert haben soll. Von Hand geschrieben dauert das lange, deshalb liest dieses Tool ein echtes XML-Dokument und baut ein passendes Schema dazu.
Wie entscheidet das Tool, ob ein Element erforderlich oder optional ist?
Es prüft jede Stelle, an der ein Tag unter demselben übergeordneten Tag im Dokument vorkommt. Erscheint es bei jeder Instanz dieses Elternteils, setzt das Schema minOccurs="1". Fehlt es bei mindestens einer Instanz, sinkt minOccurs auf "0", damit das Schema auch Dokumente akzeptiert, in denen dieses Feld fehlt.
Warum erhalten manche Elemente maxOccurs="unbounded"?
Das passiert, sobald das Tool unter irgendeiner Instanz des übergeordneten Elements mehr als ein Geschwister mit demselben Namen findet, etwa mehrere <buch>-Tags in <katalog>. Ein Tag, das nur einmal vorkommt, behält maxOccurs="1", den Standardwert in XSD, der im Ergebnis weggelassen wird, damit das Schema lesbar bleibt.
Erkennt es Datentypen wie Zahlen, Booleans und Datumsangaben automatisch?
Ja. Das Tool nimmt eine Stichprobe der Text- oder Attributwerte jedes Elements und prüft sie gegen Muster für ganze Zahlen, Dezimalzahlen, true/false-Booleans, Datum und Datum-Uhrzeit. Passt die gesamte Stichprobe zu einem Muster, wird das der XSD-Typ, etwa xs:integer oder xs:date. Gemischte ganze Zahlen und Dezimalzahlen ergeben xs:decimal, da jede ganze Zahl eine gültige Dezimalzahl ist. Stimmen die Werte sonst nicht überein, greift xs:string, damit kein echter Wert abgelehnt wird.
Was passiert mit Namespaces und Präfixen in meinem XML?
Präfixe werden vor der Analyse entfernt, und das erzeugte Schema beschreibt nur lokale Elementnamen. Eine namespace-fähige Struktur aus einem einzigen Beispieldokument zuverlässig zu erschließen, kann ein generisches Tool nicht immer richtig treffen, deshalb ist das eine bekannte Grenze und keine stille Annahme.
Kommt das Tool mit tief verschachteltem oder selbstreferenzierendem XML zurecht, etwa einer Ordnerstruktur?
Ja. Jeder eigene Tag-Name bekommt einen gemeinsamen komplexen Typ, sodass eine rekursive Struktur, etwa ein <node>, das weitere node-Elemente enthält, dieselbe Typdefinition wiederverwendet, statt sich endlos aufzurollen. Das Schema bleibt endlich, egal wie tief dein Beispieldokument verschachtelt ist.
Validiert das erzeugte Schema meine ursprüngliche XML-Datei?
Es wird gezielt aus der Datei gebaut, die du eingegeben hast, deshalb sollte genau diese Datei gegen das Ergebnis validieren. Ein aus einem Beispiel abgeleitetes Schema ist ein guter Ausgangspunkt für ähnlich aufgebaute Dokumente, kann aber bei Randfällen, die das Beispiel nie gezeigt hat, strenger oder lockerer sein als gewünscht — prüfe es also vor dem Einsatz in Produktion.
Was, wenn mein XML Text und Kindelemente im selben Tag mischt?
Das nennt sich gemischter Inhalt, zum Beispiel <p>Hallo <b>Welt</b></p>. Das Tool erkennt das und setzt mixed="true" beim komplexen Typ dieses Elements, damit das Schema gültig bleibt, versucht aber nicht, genau festzulegen, wo der lose Text zwischen den Kindelementen steht.
Wird mein XML auf einen Server hochgeladen?
Nein. Sowohl das Einlesen als auch die Schema-Erzeugung laufen per JavaScript in deinem Browser. Nichts, was du einfügst oder hochlädst, verlässt dein Gerät.
Kann ich für das erzeugte Schema einen Ziel-Namespace festlegen?
Ja. Gib eine Namespace-URI in den Schema-Optionen ein, und das Tool ergänzt targetNamespace und xmlns im erzeugten <xs:schema>-Element sowie den gewählten elementFormDefault. Lass das Feld leer für ein Schema ohne Namespace, der häufigere Fall bei internem XML oder Konfigurationsdateien.

Verwandte Werkzeuge

XML zu XSD Konverter wird von CodeItBro gewartet. Wir streben danach, die besten kostenlosen Entwicklerwerkzeuge im Web bereitzustellen. Wenn Sie Feedback oder Vorschläge haben, besuchen Sie bitte unsere Kontaktseite.

Bekannt aus

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