XML zu XSD: Generierung eines Schemas aus mehreren XML-Instanzen

Ich habe kürzlich mit einem unserer Support-Ingenieure über häufige Fragen gesprochen, die er von Kunden erhält. Eine Frage, die oft auftaucht, ist die Generierung von Schemas, insbesondere: "Wie kann ich eine XSD-Datei aus einer XML-Datei erstellen?" Die Antwort ist natürlich, einen XML-Editor Ihrer Wahl zu verwenden. XMLSpy kann eine gültige XSD-Datei aus einer DTD, einer relationalen Datenbankstruktur, einem JSON-Schema und natürlich aus einer XML-Instanz generieren.

Aber was viele Kunden überrascht, ist, dass der XML-Editor auch ein XML-Schema basierend auf einer.. Gruppe von zugehörigen XML-Dateien – und dies ist eine häufige Anforderung. Sehen wir uns an, wie das funktioniert.

Erstellen Sie eine XSD-Datei

Nehmen wir an, ich habe ein Webentwicklungsprojekt geerbt und dabei eine Sammlung von XML-Dateien als Ausgangspunkt erhalten – jedoch ohne ein zugehöriges XML-Schema. Um eine XSD-Datei für diese Dateien zu erstellen, muss ich sie zunächst zu einem XMLSpy-Projekt hinzufügen. Dies ist später sehr nützlich, da das Projekt alle zugehörigen Dateien in einer übersichtlichen Ordnerstruktur zusammenfasst, in der ich nach bestimmten Dateien suchen, XSLT-Transformationen zuweisen, Batch-Operationen wie die projektweite Validierung und die Suche innerhalb von Dateien durchführen und vieles mehr kann.

Es lohnt sich, einen Moment Zeit zu nehmen, um das XMLSpy-Projekt selbst genauer zu betrachten. Die Ordner können entweder tatsächlichen Verzeichnissen im Dateisystem entsprechen, oder ich kann für jeden Ordner Dateityperweiterungen definieren, sodass häufig verwendete Dateien an einem zentralen und übersichtlichen Ort zusammengefasst werden. Die Projektordner sind virtuelle Ordner und müssen nicht zwangsläufig einer bestimmten hierarchischen Struktur der Dateien auf dem Server selbst entsprechen.

Ich kann auch unterschiedliche XSL-Transformationsparameter für jeden Ordner zuweisen und sicherstellen, dass dieselbe physische Datei in mehr als einem Projektordner enthalten ist. Dies ist besonders nützlich, wenn ich Daten in einer XML-Datei speichern und verschiedene XSL-Stylesheets verwenden möchte, um unterschiedliche Ergebnisse zu erzielen. Und natürlich integriert das Projektmanagement von XMLSpy sich mit den meisten Versionskontrollsystemen.

OK, zurück zur Erstellung der XSD-Datei. Der erste Schritt ist, im Menü "Projekt" die Option "Neues Projekt" auszuwählen. XMLSpy erstellt ein Grundgerüst für ein Projekt mit Platzhalterordnern für verschiedene Dateitypen. Es ist einfach, bei Bedarf benutzerdefinierte Ordner hinzuzufügen. Um die empfangenen Dateien zu diesem neuen Projekt hinzuzufügen, klicke ich mit der rechten Maustaste auf den Ordner "XML-Dateien" und wähle "Dateien hinzufügen..."

...und wählen Sie die XML-Dateien aus, die für die Webseite verwendet werden sollen. Dies ist ein guter Zeitpunkt, um das Projekt unter einem aussagekräftigen Namen zu speichern. Dadurch werden auch die neu hinzugefügten Dateiverknüpfungen mit dem Projekt gespeichert.

Jetzt muss ich nur noch mit der rechten Maustaste auf den Ordner "XML-Dateien" klicken, "DTD/Schema generieren..." auswählen und die konfigurierbaren Optionen überprüfen oder aktualisieren.

Dies generiert eine XSD-Datei, die auf allen XML-Dateien basiert, die sich im Ordner enthalten. Nach dem Klicken auf "OK" wird ein Dialogfenster angezeigt, in dem Sie aufgefordert werden, das automatisch generierte XML-Schema zu speichern. Es öffnet sich dann in der grafischen XML-Schema-Ansicht. Hier sind die globalen Elemente, die auf Basis der XML-Instanzdateien generiert wurden:

Durch Klicken auf das Baum-Symbol neben einem Element wird das detaillierte Inhaltsmodell angezeigt.

Das grafische Design des XSD-Editors ermöglicht es, dieses Schema einfach zu verfeinern und bei Bedarf zu bearbeiten.

Das ist alles – mit nur wenigen einfachen Schritten habe ich ein gültiges Schema erstellt, das auf einer Gruppe von Instanzdateien basiert.

Welche Funktionen von XMLSpy erleichtern Ihren Arbeitsalltag? Oder gibt es eine Funktion, die Ihrer Meinung nach hinzugefügt werden sollte, um Zeit zu sparen? Wir freuen uns über Ihr Feedback. Bitte hinterlassen Sie einen Kommentar unten!