XSD locatie in de XML source dynamisch maken

Gepubliceerd op 4/9/2013

De afgelopen jaren ben ik nog niet vaak tegengekomen dat er in een datawarehouse omgeving met XML files gewerkt wordt. Maar momenteel zit ik in een omgeving waar XML zelfs de standaard is. De hoogste tijd dus om de XML kennis weer eens op te poetsen!

 

Eén ding waar ik in het verleden (en ook nu weer) naar moest zoeken, is het dynamisch maken van de locatie van het XSD bestand bij een XML Source. Hopelijk zorgt dit blog ervoor dat ik het vanaf nu niet meer vergeet.

 

Als je een dataflow maakt met een XML Source als bron, dan is dit de editor die je te zien krijgt.

 

Voor de bron van het XML bestand heb je drie mogelijkheden:

- XML file location

als je deze optie kiest moet je in het invulvak eronder het volledige pad naar de XML file zetten

- XML file from variable

bij deze optie kun je een variabele kiezen waarin het volledige pad naar de XML file staat

- XML data from variable

deze optie gebruik je als je de XML data al op een andere manier in een variabele hebt ingelezen

 

Voor de XML file zelf heb je dus voldoende mogelijkheden om de locatie en naam flexibel te maken. Dit is erg handig als de naam van het bestand elke keer verandert (bijvoorbeeld als een datum in de bestandsnaam opgenomen is) of als de locatie in de ontwikkel omgeving anders is dan in test of productie.

 

Je moet in de XML Source ook altijd een XSD schema opgeven. Is het schema opgenomen in de XML file, dan vink je "Use inline schema" aan. De XSD locatie hoef je dan niet meer in te vullen.

Als je geen "inline schema" hebt, dan moet je in het veld "XSD location:" het volledige pad naar de XSD file invullen. Je hebt hier geen optie om de XSD locatie uit een variabele te halen. Het lijkt op het eerste gezicht onmogelijk om deze dynamisch te maken. Maar gelukkig is daar wel een manier voor!

 

Om de locatie (en naam) van de XSD dynamisch te maken, moet je de properties van de dataflow waarin de XML source gebruikt wordt bewerken.

 

Ga naar de Control Flow, rechtermuisklik op de Data flow en kies voor Properties.

 

Scroll naar de property "Expressions" en klik op de ellipse (de knop met de drie puntjes [...]).

Je kunt nu een expressie maken voor de [XML Source].[XMLSchemaDefinition] en hier een variabele aan koppelen.

Deze variabele kun je in de rest van de programmatuur vullen en zo is het toch mogelijk om de XSD locatie óók uit een variabele te halen en dynamisch te bepalen.

 

Erg handig om het package eenvoudig op andere omgevingen te kunnen draaien!

 

 

Terug naar Artikelen

Stuur een e-mail