XML naar XSD: Een schema genereren op basis van meerdere XML-instanties
Ik sprak onlangs met een van onze support engineers over veelvoorkomende vragen die hij van klanten ontvangt. Een vraag die vaak voorbijkomt is het genereren van schema's, met name: "Hoe kan ik een XSD genereren vanuit XML?" Het antwoord is, uiteraard, om uw favoriete XML-editor te gebruiken. XMLSpy kan een geldig XSD genereren vanuit een DTD, een relationele database structuur, een JSON Schema en, natuurlijk, een XML-instantie.
Maar wat veel klanten verrassend vinden, is dat de XML-editor ook een XML-schema genereert op basis van een groep gerelateerde XML-bestanden – en dit is een veelvoorkomende vereiste. Laten we eens kijken hoe dit werkt.

Genereer een XSD-bestand
Stel, ik heb een webontwikkelingsproject overgenomen en ik heb een verzameling XML-bestanden als startpunt ontvangen, maar er is geen XML-schema bijgevoegd. Om een XSD-bestand voor die bestanden te genereren, moet ik ze eerst toevoegen aan een XMLSpy-project. Dit is later handig, omdat het project alle gerelateerde bestanden in één, overzichtelijke mapstructuur groepeert. Hierdoor kan ik gemakkelijk specifieke bestanden vinden, XSLT-transformaties toewijzen, batchbewerkingen uitvoeren, zoals validatie voor het hele project en zoeken in bestanden, en meer.
Het is de moeite waard om even stil te staan bij het XMLSpy-project zelf. De mappen kunnen overeenkomen met daadwerkelijke mappen op het bestandssysteem, of ik kan bestandstype-extensies definiëren voor elke map, zodat veelgebruikte bestanden bij elkaar op één handige plek worden opgeslagen. De projectmappen zijn virtuele mappen en hoeven niet overeen te komen met enige hiërarchische structuur van de bestanden op de server zelf.
Ik kan ook verschillende XSL-transformatieparameters toewijzen aan elke map, en hetzelfde fysieke bestand kan in meer dan één projectmap staan. Dit is vooral handig wanneer ik gegevens in één XML-bestand wil opslaan en verschillende XSL-stijlbladen wilt gebruiken om verschillende resultaten te genereren. En, uiteraard, het projectbeheer van XMLSpy is geïntegreerd met de meeste versiebeheersystemen.
OK, terug naar het genereren van het XSD-bestand. De eerste stap is om "Nieuw project" te selecteren in het menu "Project". XMLSpy maakt een basisproject aan met mapstructuren voor verschillende bestandstypen. Het is eenvoudig om aangepaste mappen toe te voegen, indien nodig. Om de bestanden die ik heb ontvangen aan dit nieuwe project toe te voegen, klik ik met de rechtermuisknop op de map "XML-bestanden" en selecteer "Bestanden toevoegen..."
![]()
...en blader door de bestanden om de XML-bestanden te selecteren die u voor de website wilt gebruiken. Dit is een goed moment om het project op te slaan met een beschrijvende naam, en dit zorgt er ook voor dat de nieuw toegevoegde bestandskoppelingen worden opgeslagen bij het project.
![]()
Nu hoef ik alleen nog maar met de rechtermuisknop op de map "XML-bestanden" te klikken, "DTD/schema genereren..." te selecteren en de configureerbare opties te bekijken of bij te werken.
![]()
Dit genereert een XSD-bestand op basis van alle XML-bestanden die in de map zijn opgenomen. Nadat u op OK hebt geklikt, wordt u gevraagd om het automatisch gegenereerde XML-schema op te slaan, en het wordt geopend in de grafische XML-schemaweergave. Hieronder staan de globale elementen die zijn gegenereerd op basis van de XML-instantiebestanden:
![]()
Door op het boom-icoon naast een element te klikken, wordt het gedetailleerde inhoudsmodel weergegeven.
![]()
Het grafische ontwerp van de XSD-editor maakt het eenvoudig om dit schema te verfijnen en te bewerken indien nodig.
Dat is alles – in een paar snelle stappen heb ik een geldig schema gegenereerd op basis van een verzameling voorbeeldbestanden.
Welke functies van XMLSpy maken uw dagelijkse werk gemakkelijker? Of, is er een functie die u graag zou zien worden toegevoegd en die tijd zou besparen? We zijn benieuwd naar uw mening. Laat gerust een reactie achter hieronder!