Het vergelijken van XML-schema's met DiffDog 2010

DiffDog 2010 bevat een krachtig nieuw hulpmiddel om XML-schema's te vergelijken, dat XML-ontwikkelaars en anderen kunnen gebruiken om bestaande XML-gegevensbestanden bij te werken naarmate XML-schema's evolueren. Dit artikel beschrijft een voorbeeldscenario voor deze functie.

Voordat we de nieuwe functionaliteit bekijken, laten we snel twee XML-schema's vergelijken met behulp van de functie "DiffDog Bestand Vergelijken". Net als in eerdere versies kunnen gebruikers van DiffDog 2010 XML-schema's vergelijken als .xsd-bestanden en de verschillen weergeven in een kleurencodering, met een XML-bewuste weergave.

Dit is een goede manier om verschillen in XML-schema's te identificeren en te beheren, vooral wanneer u wijzigingen in industriestandaard XML-schema's wilt bekijken die in de loop van de tijd evolueren.Wat is er nieuw In DiffDog 2010 is een aanvullende functie Verschillen in XML-schema's Een optie die twee XML-schema's naast elkaar grafisch weergeeft, automatisch identieke elementen herkent en gebruikers in staat stelt om verschillen te markeren en XSL-transformaties te genereren om XML-gegevensbestanden bij te werken. Hier is de eerste weergave die we zien wanneer we dezelfde twee XML-schema's openen, zoals getoond in de bestandsvergelijking hierboven, met behulp van de nieuwe functie voor het vergelijken van XML-schema's.

De basiselementen van de twee XML-schema's worden automatisch met elkaar verbonden. We kunnen op de knop "Vergelijken" in de werkbalk klikken om automatisch identieke elementen in de twee XML-schema's met elkaar te verbinden.

(Natuurlijk kunnen we ook "XML-schema's vergelijken" selecteren vanuit het contextmenu dat verschijnt wanneer u met de rechtermuisknop klikt, of "Vergelijking starten" kiezen in het menu "Verschil en samenvoegen", of de toetsencombinatie F5 gebruiken – DiffDog biedt u veel opties om dezelfde taak uit te voeren, zodat u op de manier kunt werken die u prettig vindt.) Vervolgens kunnen we elementen met verschillende namen in de twee XML-schema's aan elkaar koppelen door handmatig pijlen tussen hen te tekenen. In dit voorbeeld zorgen de meeste wijzigingen in de versie van het XML-schema aan de rechterkant er simpelweg voor dat elementen nieuwe namen krijgen, wat duidelijker zal zijn wanneer het XML-schema en de bijbehorende data bestanden binnen ons bedrijf worden verspreid.

Zodra alle elementen zijn toegewezen, kunnen we een XSLT-bestand genereren om bestaande XML-gegevensbestanden te transformeren op basis van het XML-schema aan de linkerkant, zodat ze overeenkomen met de wijzigingen in de nieuwere versie aan de rechterkant. Deze functie is ontworpen om XML-ontwikkelaars te helpen bij het vermijden van de tijdrovende taken van het handmatig schrijven en debuggen van XSL-transformaties.

Hier is een voorbeeld van een origineel XML-gegevensbestand, gebaseerd op het XML-schema aan de linkerkant, zoals weergegeven in Altova XMLSpy:

Het resultaatbestand, na het toepassen van de XSL-transformatie die we hebben gemaakt met DiffDog 2010, wordt hieronder weergegeven. Let op de vervanging van het element "author" door "writer", "email" door "feedback", enzovoort.

Als er veel bestaande XML-bestanden zijn die getransformeerd moeten worden, kunnen de projectbeheer-functies van XMLSpy ons helpen om dit proces te automatiseren. We kunnen externe mappen toevoegen aan een XMLSpy-project.

Met behulp van het dialoogvenster voor eigenschappen in XMLSpy, voor elke projectmap, kunnen we standaardwaarden instellen voor het toewijzen van een XML-schema voor validatie, de XSL-transformatie en de bestemming van de uitvoer.

Nu kunnen we de invoermap selecteren in het hulpmiddelvenster van XMLSpy en alle bestanden in die map transformeren met de sneltoets F10. Toen we oorspronkelijk de XML-schema-elementen in DiffDog definieerden, lieten we het publicatie-element aan de linkerkant onverbonden, omdat het geen overeenkomend element had in de eerdere versie van het schema. Dit betekent dat wanneer we XML-invoerb bestanden transformeren met behulp van XSLT, het resulterende uitvoerbestand het publicatie-element niet zal bevatten. Als publicatie een verplicht element is, kunnen we Altova MapForce gebruiken voor een snelle oplossing. Een van de opties in DiffDog is om een MapForce-mapping te genereren in plaats van een XSLT. Wanneer we deze optie kiezen, start MapForce en wordt onze DiffDog-mapping direct geladen als een nieuw MapForce-ontwerp, zoals hieronder te zien is.

Het is eenvoudig om de mapping te verbeteren door een constante waarde als standaardwaarde toe te voegen voor het publicatie-element.

Nu kunnen we een XSL-bestand opslaan vanuit MapForce dat alle elementafbeeldingen hergebruikt die we oorspronkelijk in DiffDog hebben ontworpen, en dat de constante toevoegt. Wanneer we de nieuwe XSL-transformatie toepassen op ons oorspronkelijke XML-gegevensbestand, krijgen we een resultaat dat de standaardwaarde voor het publicatie-element bevat.

Deze post begon met een beschrijving van de nieuwe functie voor het vergelijken van XML-schema's in DiffDog 2010. Het uitwerken van een eenvoudig – maar typisch – voorbeeld uit de praktijk liet snel zien dat er nog meer taken eenvoudig kunnen worden uitgevoerd dankzij de nauwe integratie met XMLSpy en MapForce.

Alle drie deze tools, en nog veel meer, zijn verkrijgbaar met aanzienlijke korting in de Altova MissionKit 2010, een geïntegreerde suite van XML-, database- en UML-tools, ontworpen om te voldoen aan de diverse ontwikkel- en gegevensbeheerbehoeften van moderne softwarearchitecten en XML-ontwikkelaars. Klik hier om vandaag nog een gratis proefversie te downloaden!