Notitie
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen u aan te melden of de directory te wijzigen.
Voor toegang tot deze pagina is autorisatie vereist. U kunt proberen de mappen te wijzigen.
Van toepassing op: Azure Logic Apps (Standard)
Wanneer u berichten uitwisselt die verschillende XML- of JSON-indelingen gebruiken in een werkstroom van een logische app, moet u opgeven hoe u de gegevens van de bronindeling transformeert of converteert naar de doelindeling, bijvoorbeeld tussen XML-documenten of tussen JSON-documenten. Deze taak is belangrijk, met name wanneer u hiaten hebt tussen de gegevensstructuren in de bron- en doelschema's. In een schema worden de gegevenselementen, kenmerken en gegevenstypen in een XML- of JSON-document beschreven.
Als u transformaties tussen gegevensstructuren wilt definiëren en eventuele hiaten wilt overbruggen, kunt u een kaart (XSLT-bestand) maken waarmee de relaties tussen de gegevenselementen in de bron- en doelschema's worden opgegeven. U kunt een kaart visueel maken of bewerken met behulp van Visual Studio Code met de Azure Logic Apps-extensie (Standard) in de context van een standaard-logische app-project. Het hulpprogramma Data Mapper biedt een uniforme ervaring voor het toewijzen en transformeren met behulp van bewegingen voor slepen en neerzetten, vooraf gedefinieerde functies voor het bouwen van expressies en een manier om kaarten handmatig te testen voordat u ze in uw werkstromen gebruikt.
Nadat u de kaart hebt gemaakt, kunt u die kaart rechtstreeks aanroepen vanuit een werkstroom in uw logische app-project of vanuit een standaardwerkstroom voor logische apps in Azure Portal. Voor deze taak kunt u de actie Gegevenstoewijzingsbewerkingen met de naam Transformeren gebruiken met behulp van Data Mapper XSLT in uw werkstroom.
Deze handleiding laat zien hoe u een lege gegevenstoewijzing maakt, uw bron- en doelschema's kiest, verschillende soorten toewijzingen maakt tussen schema-elementen, uw kaart opslaat en test en vervolgens de kaart aanroept vanuit een werkstroom in uw logische app-project.
Beperkingen en bekende problemen
Data Mapper is momenteel alleen beschikbaar in Visual Studio Code, niet in De Azure-portal, en alleen vanuit Standaard logische app-projecten, niet met behulp van logische app-projecten voor verbruik.
De front-endervaring voor Data Mapper is beschikbaar als open source in de openbare GitHub-opslagplaats voor het Azure Logic Apps-team. Zie de volgende bronnen voor meer informatie:
Data Mapper werkt momenteel alleen in Visual Studio Code die wordt uitgevoerd op Windows-besturingssystemen.
Data Mapper biedt momenteel geen ondersteuning voor schema's die gebruikmaken van de bestandsindeling met door komma's gescheiden waarden (.csv).
Het codedeelvenster in Data Mapper is momenteel alleen-lezen.
Op het data mapperoppervlak zijn de indeling en posities voor functies beweegbaar, maar schemaknooppunten zijn statisch.
De functie Filter verwerkt correct numerieke voorwaarden die tussen dubbele aanhalingstekens staan, bijvoorbeeld ">=10". Deze functie gedraagt zich momenteel echter niet consistent voor tekenreeksvergelijkingen, zoals een controle of een itemnaam '= 'Pen' is.
Wanneer u een toewijzing maakt tussen de bovenliggende matrixelementen in de bron- en doelschema's, voegt de mapper automatisch een lus toe om de elementen van het matrixitem te herhalen. U moet echter nog steeds expliciet toewijzingen maken tussen de elementen van het bron- en doelmatrixitem.
Als u kaarten wilt aanroepen die zijn gemaakt met Data Mapper, kunt u alleen de actie Data Mapper Operations met de naam Transformeren gebruiken met behulp van Data Mapper XSLT. Gebruik voor toewijzingen die zijn gemaakt door een ander hulpprogramma de actie XML-bewerkingen met de naam XML transformeren.
Als u de kaarten wilt gebruiken die u met Data Mapper met werkstromen in Azure Portal maakt, moet u deze rechtstreeks toevoegen aan uw resource van de logische standaard-app.
Voor niet-blokkerende bugs of functieaanvragen opent u een item met het label Data Mapper in de GitHub-opslagplaats voor het Azure Logic Apps-team.
Vereisten
Een Azure-account en -abonnement. Als u nog geen abonnement hebt, meld u dan aan voor een gratis Azure-account.
Visual Studio Code en de Azure Logic Apps-extensie (Standard) voor het maken van standaardwerkstromen voor logische apps.
Notitie
De voorheen afzonderlijke Data Mapper-extensie wordt nu samengevoegd met de Azure Logic Apps-extensie (Standard). Om conflicten te voorkomen, wordt elke bestaande versie van de Data Mapper-extensie verwijderd wanneer u de Azure Logic Apps-extensie (Standard) installeert of bijwerkt. Start Visual Studio Code opnieuw nadat de extensie is geïnstalleerd of bijgewerkt.
De bron- en doelschemabestanden die de gegevenstypen beschrijven die moeten worden getransformeerd. Deze bestanden kunnen de volgende indelingen hebben:
Een XML-schemadefinitiebestand met de bestandsextensie .xsd
Een JavaScript Object Notation-bestand met de bestandsextensie .json
Een standaard logische app-project met een stateful of stateless werkstroom met minimaal een trigger. Als u geen project hebt, volgt u deze stappen in Visual Studio Code:
Maak verbinding met uw Azure-account als u dat nog niet hebt gedaan.
Maak een lokale map, een werkruimte en project van de standaardlogica-app en een stateful of stateless werkstroom. Selecteer Tijdens het maken van de werkstroom de optie Openen in het huidige venster.
Voorbeeldinvoergegevens als u de kaart wilt testen en controleert of de transformatie werkt zoals verwacht.
Een gegevenstoewijzing maken
Open in Visual Studio Code de map voor uw Standaard logische app-project.
Selecteer in het linkermenu van Visual Studio Code het Azure-pictogram .
Selecteer in het Azure-venster onder Data Mapper de optie Gegevenstoewijzing maken.
Op de titelbalk van Visual Studio Code wordt een promptvak geopend, zodat u een naam voor uw kaart kunt opgeven.
Voer in het promptvak een naam voor de kaart in.
Voor deze handleiding gebruiken deze stappen de naam Example-data-map.
Met Data Mapper wordt een lege gegevenstoewijzing gemaakt en geopend.
Kies uw bron- en doelschema's door de volgende stappen uit te voeren:
Selecteer in het deelvenster Bron de optie Nieuwe> toevoegen om uw bronschema te zoeken en te uploaden.
Nadat u het bronschema hebt toegevoegd, wordt het deelvenster Bron gevuld met het XML-element 'knooppunten' voor de gegevenstypen in het bronschema, bijvoorbeeld:
Selecteer in het doelvenster Nieuwe
Nadat u het doelschema hebt toegevoegd, wordt het doelvenster gevuld met het XML-element 'knooppunten' voor de gegevenstypen in het doelschema, bijvoorbeeld:
Aanbeveling
Als u problemen ondervindt bij het laden van uw schema's, kunt u uw bron- en doelschemabestanden toevoegen aan de lokale map Artefactenschema's/ van uw logische app-project. Als u in dit scenario uw bron- en doelschema in Data Mapper wilt opgeven, opent u in de deelvensters Bron en Doel de bestaande lijst selecteren in plaats van nieuwe toe te voegen en selecteert u uw schema.
Schemagegevenstypen
In de volgende tabel worden de mogelijke gegevenstypen beschreven die in een schema kunnen worden weergegeven:
| Symbool | Typologie | Meer info |
|---|---|---|
|
|
Complex (matrix) | Bevat items of herhalende itemknooppunten. Een matrixelement geeft ook het volgende verbindingspunt weer:
|
|
|
Bool | Alleen waar of onwaar |
|
|
Ingewikkeld | Een XML-object met onderliggende eigenschappen, vergelijkbaar met het JSON-type Object |
|
|
Datum en tijd | |
|
|
Decimaal | |
|
|
Geheel getal | Alleen gehele getallen |
|
|
Snaar / Touwtje |
Een directe toewijzing tussen elementen maken
Als u een eenvoudige transformatie wilt opgeven tussen elementen met hetzelfde type in de bron- en doelschema's, voert u de volgende stappen uit:
Als u wilt zien wat er in code gebeurt terwijl u de toewijzing maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Zoek op het mapper-oppervlak in het deelvenster Bron het bronelement dat u wilt toewijzen.
Bovenliggende elementen worden standaard automatisch uitgevouwen om hun onderliggende elementen weer te geven.
In dit voorbeeld wordt de toewijzing gestart vanuit het bronelement, maar u kunt ervoor kiezen om de toewijzing vanuit het doelelement te starten.
Beweeg de muiswijzer over de cirkel naast de naam van het bronelement totdat de aanwijzer verandert in een plusteken (+).
In dit voorbeeld wordt een toewijzing gemaakt die begint met het bronelement Werknemer-id .
Sleep een lijn en teken deze zodat het bronelement verbinding maakt met de cirkel voor het doelelement in het deelvenster Doel .
In dit voorbeeld wordt de toewijzing voltooid met het id-doelelement , dat hetzelfde gegevenstype heeft als het bronelement.
U hebt nu een directe toewijzing gemaakt tussen beide elementen met dezelfde gegevenstypen.
In het deelvenster Code ziet u de toewijzingsrelatie die u hebt gemaakt:
Aanbeveling
Als u wilt controleren of er problemen zijn met uw toewijzingen, selecteert u Problemen weergeven. Er wordt bijvoorbeeld een waarschuwing weergegeven in de lijst Problemen op het tabblad Waarschuwingen als u een toewijzing maakt tussen elementen met niet-overeenkomende gegevenstypen:
Een complexe toewijzing tussen elementen maken
Als u een complexere transformatie tussen elementen in de bron- en doelschema's wilt opgeven, bijvoorbeeld elementen die u wilt combineren of verschillende gegevenstypen wilt hebben, kunt u een of meer functies gebruiken die de gewenste transformatie in uw toewijzing uitvoeren.
Op het kaartperoppervlak is het functielabel kleurgecodeerd op basis van de functiegroep. Naast de functienaam wordt het symbool van de functie weergegeven, bijvoorbeeld:
De volgende tabel bevat de functiegroepen en enkele voorbeeldfuncties die u kunt gebruiken. Zie de functions-lijst in Data Mapper voor de volledige lijst.
| Groep | Voorbeeldfuncties |
|---|---|
| Verzameling | Gemiddelde, Aantal, Directe toegang, Afzonderlijke waarden, Filter, Index, Join, Maximum, Minimum, Omkeren, Sorteren, Subreeks, Som |
| Conversie | Tot heden, naar geheel getal, naar getal, naar tekenreeks |
| Datum en tijd | Dagen, huidige datum, huidige tijd, is gelijk aan datum toevoegen |
| Logische vergelijking | Gelijk aan, bestaat, groter, groter of gelijk, als, als, als anders, is Nil, is null, is getal, is tekenreeks, kleiner, kleiner of gelijk, logisch EN, logisch NIET, logisch OF, niet gelijk aan |
| Wiskunde | Absoluut, Optellend, Boogtangens, Plafond, Cosinus, Delen, Exponentiële, Exponentiële waarde (grondtal 10), Vloer, Geheel delen, Logboek, Logboek (grondtal 10), Module, Vermenigvuldigen, Macht, Rond, Sinus, Vierkantswortel, Aftrekken, Tangens |
| Tekenreeks | Codepunten naar tekenreeks, Concat, Contains, Ends with, Length, Lowercase, Name, Regular Expression Matches, Regular Expression Replace, Replace, Starts with, String to Codepoints, Substring, Substring after, Substring before, Trim, Trim, Trim Left, Trim Right, Uppercase |
| Hulpprogramma | Kopiëren, Fout, XPath uitvoeren, Datum/tijd opmaken, Nummer opmaken, XSLT uitvoeren |
Een functie zonder toewijzing toevoegen
In het voorbeeld in deze sectie worden gegevens in het bronelement getransformeerd van Tekenreeks naar Datum/tijd. Dit is het type doelelement. Het voorbeeld begint zonder eerst een toewijzing te maken en gebruikt de functie To Date , die één invoer accepteert.
Als u wilt zien wat er in code gebeurt terwijl u de toewijzing maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Zoek en selecteer in de lijst Functies de functie die u wilt gebruiken, waarmee de functie wordt toegevoegd aan het mapperoppervlak. Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).In dit voorbeeld wordt de functie Tot heden geselecteerd, die zich in de groep Conversiefunctie bevindt.
Notitie
Als er geen toewijzing op de kaart bestaat of als er een toewijzing is geselecteerd wanneer u een functie aan de kaart toevoegt, wordt de functie weergegeven, maar is deze niet verbonden met elementen of andere functies, bijvoorbeeld:
Verbind de functie met de bron- en doelelementen.
Sleep en teken een lijn tussen het bronelement en de cirkel aan de linkerrand van de functie. U kunt beginnen met het bronelement of de functie.
Sleep en teken een lijn tussen de rechterrand van de functie en het doelelement. U kunt beginnen vanaf het doelelement of de functie.
In het deelvenster Code ziet u de toewijzingsrelatie die u hebt gemaakt:
Selecteer op het kaartoppervlak de functieshape om de functiedetails weer te geven.
Bevestig of bewerk de invoer die u wilt gebruiken op het tabblad Invoer .
Voor sommige scenario's moet een transformatie worden gedefinieerd buiten het directe paar bron- en doelelementen. Als u bijvoorbeeld een transformatie tussen een paar matrices en hun items wilt definiëren, moet u een lus tussen de matrices maken. Als u een taak wilt uitvoeren wanneer de waarde van een element aan een voorwaarde voldoet, moet u een voorwaarde tussen elementen toevoegen.
Een functie toevoegen die gebruikmaakt van meerdere invoergegevens
In het voorbeeld in deze sectie worden meerdere bronelementen samengevoegd als invoer en wordt één uitvoer toegewezen aan het doelelement. In het voorbeeld wordt de functie Concat gebruikt, die meerdere invoer accepteert.
Als u wilt zien wat er in code gebeurt terwijl u de toewijzing maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Zoek en selecteer in de lijst Functies de functie die u wilt gebruiken, waarmee de functie wordt toegevoegd aan het mapperoppervlak.
Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).In dit voorbeeld selecteert u de functie Concat , die zich in de groep Tekenreeksfunctie bevindt.
Notitie
Als er geen toewijzing op de kaart bestaat of als er een toewijzing is geselecteerd wanneer u een functie aan de kaart toevoegt, wordt de functie weergegeven, maar is deze niet verbonden met elementen of andere functies, bijvoorbeeld:
Selecteer op het kaartoppervlak de functieshape om de functiedetails weer te geven.
Selecteer op het tabblad Invoer de bronschema-elementen die u als invoer wilt gebruiken.
In dit voorbeeld worden de bronschema-elementen Voornaam en Achternaam geselecteerd als de functie-invoer. De mapper voegt automatisch de respectieve toewijzingen toe tussen de bronelementen en de functie.
Als u de toewijzing wilt voltooien, sleept en tekent u een lijn tussen de rechterrand van de functie en het doelelement. U kunt beginnen met het doelelement of de functie.
In het deelvenster Code ziet u de toewijzingsrelaties die u hebt gemaakt:
Door matrices herhalen
Als uw bron- en doelschema's matrices bevatten, kunt u een lus maken om de items van de matrices te herhalen. In het voorbeeld in deze sectie wordt een lus gemaakt door een werknemersbronmatrix en een person-doelmatrix, samen met toewijzingen tussen de items van de matrices.
Als u wilt zien wat er in code gebeurt terwijl u de toewijzing maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Zoek op het kaartoppervlak in de deelvensters Bron en Doel de matrices die u wilt toewijzen.
Sleep een lijn tussen het paar matrixitems en teken deze. U kunt beginnen vanuit het deelvenster Bron of het doelvenster .
Het volgende voorbeeld begint vanuit het deelvenster Bron en wijst de naamitems in de bronmatrix Werknemer en de doelmatrix Persoon toe:
Nadat u klaar bent met het toewijzen van het eerste paar matrixitems, voegt de mapper automatisch een lus toe tussen de bovenliggende elementen van de bron- en doelmatrix, met het volgende verbindingspunttype:

In het volgende voorbeeld wordt de automatisch toegevoegde lus tussen de bovenliggende matrices werknemer en doelpersoon gemarkeerd:
In het deelvenster Code ziet u de toewijzing en lus die u hebt gemaakt:
Ga door met het toewijzen van de andere matrixelementen, bijvoorbeeld:
Een voorwaarde evalueren om een taak uit te voeren
Stel dat u een toewijzing wilt toevoegen die een voorwaarde evalueert en een taak uitvoert wanneer aan de voorwaarde wordt voldaan. Voor dit scenario kunt u meerdere functies gebruiken.
In het volgende voorbeeld, wanneer de aankoophoeveelheid groter is dan 20 items, berekent de toewijzing een korting die moet worden toegepast met behulp van de volgende functies:
| Functiegroep | Functie | Doel in dit voorbeeld |
|---|---|---|
| Vergelijking | Groter | Controleer of de aankoophoeveelheid meer dan 20 is. |
| Vergelijking | Als | Controleer of de functie Groter waar retourneert. |
| Wiskunde | Vermenigvuldigen | Als de voorwaarde waar is, vermenigvuldigt u de itemprijs met 10% om de korting te berekenen. |
Zoek in de deelvensters Bron en Doel de elementen die u in uw scenario wilt toewijzen.
In dit voorbeeld worden de volgende elementen gebruikt:
Bronvenster : ItemPrice en ItemQuantity
Doelvenster : ItemPrice, ItemQuantity en ItemDiscount
Zoek en selecteer in de lijst Functies de functies die u wilt gebruiken, waarmee de functies worden toegevoegd aan het mapper-oppervlak.
Als de lijst Functies is samengevouwen, selecteert u in de linkerbovenhoek van de mapper het functiepictogram (
).Verplaats indien nodig de functieshapes op het mapperoppervlak om ze gemakkelijker te selecteren.
In dit voorbeeld worden de volgende functies toegevoegd aan het mapperoppervlak: Groter, If en Vermenigvuldigen
Als u wilt weergeven wat er in code gebeurt terwijl u de toewijzingen maakt, selecteert u code weergeven in de rechterbovenhoek van de mapper.
Verbind de bronelementen, functies en doelelementen in de specifieke volgorde, zoals uw scenario vereist.
In dit voorbeeld worden de volgende items in de opgegeven volgorde verbonden om de toewijzingen correct te maken:
Starten Einde ItemPrice-bronelement ItemPrice-doelelement ItemQuantity-bronelement De invoer van de functie groter op de linkerrand van de shape. Deze invoer bevat de gegevens voor het veld Waarde 1 in de functiedetails. De uitvoer van een grotere functie op de rechterrand van de shape Als de invoer van de functie op de linkerrand van de shape wordt weergegeven. Deze invoer bevat de gegevens voor het veld Voorwaarde in de functiedetails. ItemPrice-bronelement De invoer van de functie vermenigvuldigen op de linkerrand van de shape. Deze invoer bevat de gegevens voor het veld Multiplicand in de functiedetails. De uitvoer van de functie vermenigvuldigen op de rechterrand van de shape. Als de invoer van de functie op de linkerrand van de shape wordt weergegeven. Deze invoer bevat de gegevens voor het veld Waarde in de functiedetails. Als de uitvoer van de functie op de rechterrand van de shape staat. Doelelement ItemDiscount In het volgende voorbeeld ziet u de toewijzingen op dit moment:
Bevestig of geef op het tabblad Invoer de volgende waarden op in de volgende functiedetails:
Functie Invoerveld en -waarde Groter - Waarde 1: ItemQuantity-bronelement
- Waarde 2: 20 als een aangepaste waardeVermenigvuldigen - Multiplicand 1: ItemPrice-bronelement
- Vermenigvuldiging 2: .10 als een aangepaste waardeAls - Voorwaarde: is groter dan(ItemQuantity, 20)
- Waarde: multiply(ItemPrice, .10)Op de volgende kaart ziet u het voltooide voorbeeld:
In het deelvenster Code ziet u de toewijzing die u hebt gemaakt:
Uw kaart opslaan
Wanneer u klaar bent, selecteert u Opslaan op de werkbalk Van de kaart.
Visual Studio Code slaat uw gegevenstoewijzing op als de volgende artefacten:
- Een Data Mapper (<uw-map-naam.LML>) bestand in de projectmap Artifacts>MapDefinitions
- Een gegevenstoewijzing (<uw-map-naam.xslt>) bestand in de projectmap Artefactenkaarten>
Aanbeveling
Als u uw artefacten op diepere niveaus wilt ordenen, kunt u de volgende mappen en submappen gebruiken:
- Artefacten/Kaartdefinities
- Artefacten/Schemas
- Artefacten/DataMapper/Extensies/Functies
- Artefacten/DataMapper/Extensies/InlineXslt
Uw kaart testen
Om te bevestigen dat de transformatie werkt zoals verwacht, hebt u voorbeeldinvoergegevens nodig.
Voordat u de kaart test, slaat u de kaart op om een huidig< bestand met uw map-name.xslt> te genereren.
Selecteer op de werkbalk van de kaart het testvenster openen.
Plak uw voorbeeldinvoer in het deelvenster Testtoewijzing in het vak Voorbeeldgegevens en selecteer Testen.
In het vak Resultaat worden de testresultaten weergegeven.
Uw kaart aanroepen vanuit een werkstroom in uw project
Selecteer Op de visual Studio Code-activiteitsbalk verkenner (pictogram bestanden) om de structuur van uw logische app-project weer te geven.
Vouw de map met de naam van uw werkstroom uit. Selecteer Open Designer in het snelmenu van het workflow.json-bestand.
Volg deze algemene stappen in de werkstroomontwerper om de ingebouwde actie Data Mapper Operations met de naam Transformeren toe te voegen met behulp van Data Mapper XSLT.
Selecteer in de ontwerpfunctie de actie Transformeren met data mapper XSLT .
Geef in het deelvenster met actiegegevens dat wordt weergegeven de inhoudswaarde op en laat de kaartbron ingesteld op LogicApp.
Open de lijst Mapnaam en selecteer uw kaart (XSLT-bestand).
Als u dezelfde transformatie wilt gebruiken met de XSLT-actie Data Mapper in Azure Portal, moet u de kaart toevoegen aan de resource van de standaard logische app.
XSLT uitvoeren vanuit een gegevenskaart
U kunt uitvoerbare XSLT-fragmenten uitvoeren in een gegevenstoewijzingsbestand (.xslt) met behulp van de functie XSLT uitvoeren . Wanneer u deze functie gebruikt, krijgt u een gegevenstoewijzingsbestand dat het daadwerkelijke uitvoerbare bestand XSLT bevat. Het bestand Data Mapper (.LML) bevat een verwijzing naar het uitvoerbare XSLT-bestand (.xslt of .xml).
Ga als volgt te werk om deze taak te voltooien:
Maak een nieuw gegevenstoewijzingsbestand (.xslt of .xml) dat het uitvoerbare XSLT-fragment bevat dat u wilt uitvoeren.
Plaats of verplaats het XSLT-fragmentbestand naar de volgende projectmap:
Artefacten>DataMapper\Extensies>InlineXSLT
Notitie
Als u dit uitvoerbare XSLT-bestand maakt of opslaat in Visual Studio Code, wordt het bestand automatisch weergegeven in de projectmap Artefactentoewijzingen>. Zorg ervoor dat u XSLT-fragmentbestanden naar de map InlineXslt verplaatst.
Open de gegevenstoewijzing van waaruit u de XSLT wilt uitvoeren.
Selecteer in het deelvenster Functies onder Hulpprogrammade optie XSLT uitvoeren om de functie toe te voegen aan het mapper-oppervlak.
Selecteer op het mapper-oppervlak de optie XSLT uitvoeren.
Selecteer in de vervolgkeuzelijst Bestand het uitvoerbare .xslt-bestand dat u hebt toegevoegd aan de map InlineXSLT , bijvoorbeeld:
Verbind de functie XSLT uitvoeren met het doelknooppunt waar u de XSLT-logica wilt toepassen, bijvoorbeeld:
Aangezien de XSLT-logica alleen van toepassing is op het doelknooppunt, hoeft u de functie XSLT uitvoeren niet te verbinden met een bronknooppunt.
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het doelschema.
Voor implementatie hebt u alleen de resulterende gegevenstoewijzing met het inline uitvoerbare bestand XSLT nodig.
Toegang tot knooppunten in geneste XML
Stel dat u een schema hebt met geneste XML-knooppunten en dat u op de volgende manieren met deze knooppunten wilt werken:
- Krijg toegang tot kenmerken of geneste elementen.
- Pas logica toe op basis van de structuur of inhoud van binnenkomende gegevens.
Gebruik de functie XPath uitvoeren om deze taken uit te voeren:
Open de gegevenstoewijzing waaraan u wilt werken.
Selecteer in het deelvenster Functies onder Hulpprogrammade optie XPath uitvoeren om de functie toe te voegen aan het mapper-oppervlak.
Selecteer op het mapperoppervlak de optie XPath uitvoeren.
Voer in het vak XPATH-expressie een expressie in waarmee het gewenste werk wordt uitgevoerd.
Zie XPath-syntaxis voor meer informatie over de syntaxis van expressies.
In dit voorbeeld wordt de
//Addressexpressie gebruikt in combinatie met een testnettolading:Notitie
Dubbele schuine strepen (
//) selecteren knooppunten van het huidige knooppunt die overeenkomen met de selectie, ongeacht waar de knooppunten zich bevinden.Verbind de functie XPath uitvoeren met het doelknooppunt waar u de functie wilt uitvoeren.
In dit voorbeeld wordt de functie verbonden met het adresknooppunt in het doelschema:
Notitie
Knooppuntnamen worden automatisch omsloten door dubbele aanhalingstekens ("" ").
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het doelschema.
In dit voorbeeld wordt een testnettolading gebruikt en worden de resultaten correct gegenereerd met meerdere adresknooppunten , omdat het bronadresknooppunt bestaat in een werknemersmatrix , terwijl het doeladresknooppunt bestaat in een persoonsmatrix .
Notitie
Als u een toewijzing maakt tussen matrices in de bron- en doelschema's, verschijnt er automatisch een lus op het mapperoppervlak om de matrixelementen te doorlopen. U moet echter nog steeds toewijzingen maken tussen de bron- en doelmatrixelementen. Zie Herhalen door matrices voor informatie over het doorlussen van matrices.
Aangepaste XML-functies maken
Als u herbruikbare logica in uw kaart wilt definiëren, kunt u aangepaste XML-functies maken, die de volgende voordelen bieden:
- Verminder dubbel werk en ondersteun schemaspecifieke transformaties.
- Verpak complexe logica in beheersbare componenten.
- Behandel schema-specifieke randgevallen.
Ga als volgt te werk om een aangepaste XML-functie te maken:
Maak een XML-bestand (.xml) met een betekenisvolle naam die het doel van uw functie beschrijft.
In het XML-bestand moet een specifiek schema worden gebruikt voor functiedefinities. Als u meerdere gerelateerde functies hebt, kunt u één bestand voor deze functies gebruiken. Hoewel u elke bestandsnaam kunt gebruiken, maakt een betekenisvolle bestandsnaam of categorie uw functies gemakkelijker te identificeren, te vinden en te ontdekken.
Voeg dit XML-bestand toe aan uw logische app-project in de volgende map:
Artefacten>DataMapper\Extensies>Functies
Open de gegevenstoewijzing waarin u uw functie wilt gebruiken.
Selecteer in het deelvenster Functies onder Hulpprogramma de aangepaste functie, die nu wordt weergegeven op het mapper-oppervlak.
Selecteer uw functie op het oppervlak van de mapper. Geef de input die de functie nodig heeft om te werken.
Verbind de functie met de vereiste eindpunten.
In het volgende voorbeeld ziet u een aangepaste functie met de naam Leeftijd die de leeftijd voor de opgegeven geboortedatum retourneert. De functie maakt verbinding met het Dat_of_Birth bronknooppunt en het andere bestemmingsknooppunt. Zie De definitie van de voorbeeldfunctie bekijken om de definitie voor deze aangepaste functie te bekijken.
Test uw kaart om te controleren of de verwachte resultaten worden weergegeven in het bestemmingsschema, bijvoorbeeld:
Bekijk het schema voor een functiedefinitie
Uw XML-bestand moet het volgende schema gebruiken voor een functiedefinitie. Elk XML-element met de "function" naam implementeert een XSLT 3.0-stijlfunctie met een paar extra attributen. De lijst met functies van Data Mapper bevat de functienaam, beschrijving, parameternamen en parametertypen.
<?xml version="1.0" encoding="utf-8"?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<xs:element name="customfunctions">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="function">
<xs:complexType>
<xs:sequence>
<xs:element maxOccurs="unbounded" name="param">
<xs:complexType>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="as" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
<xs:any minOccurs="0" />
</xs:sequence>
<xs:attribute name="name" type="xs:string" use="required" />
<xs:attribute name="as" type="xs:string" use="required" />
<xs:attribute name="description" type="xs:string" use="required" />
</xs:complexType>
</xs:element>
</xs:sequence>
</xs:complexType>
</xs:element>
</xs:schema>
Bekijk de voorbeeldfunctiedefinities
In het volgende SampleFunctions.xml bestand ziet u de implementatie voor de volgende functies:
"age""custom-if-then-else"
<?xml version="1.0" encoding="utf-8" ?>
<xs:schema attributeFormDefault="unqualified" elementFormDefault="qualified" xmlns:xs="http://www.w3.org/2001/XMLSchema">
<customfunctions>
<function name="age" as="xs:float" description="Returns the current age.">
<param name="inputDate" as="xs:date"/>
<value-of select="round(days-from-duration(current-date() - xs:date($inputDate)) div 365.25, 1)"/>
</function>
<function name="custom-if-then-else" as="xs:string" description="Evaluates the condition and returns corresponding value.">
<param name="condition" as="xs:boolean"/>
<param name="thenResult" as="xs:anyAtomicType"/>
<param name="elseResult" as="xs:anyAtomicType"/>
<choose>
<when test="$condition">
<value-of select="$thenResult"></value-of>
</when>
<otherwise>
<value-of select="$elseResult"></value-of>
</otherwise>
</choose>
</function>
</customfunctions>