I am using XML for my datamapper and I’m trying to set the record boundaries, the problem is that I want it set the boundaries when multiple fields change values. I see multiple posts referencing an “On Script” option instead of selecting “On Change” however I don’t see that option in my datamapper. Am I doing something wrong or looking in the wrong spot?
The On Script option is not available for XML input. So there is no way I can think of to achieve what you are looking for, using your original data file.
Perhaps you should run your XML file through an XSLT processor first in order to add a unique marker to the XML file, and then use that marker for the boundaries.
But… XSLT can be a beast…
Is this something that I can achieve through the workflow? I simply need to concatenate 2 fields to create a unique field for my boundary
Yes, but as I said, XSLT can be a beast. Here’s an example, using this simple XML input file:
<?xml version="1.0" encoding="ISO-8859-1"?>
<ROOT>
<RECORD>
<LastName>Eaves</LastName>
<FirstName>Lakeisha</FirstName>
<Email>eavesl@emailserver.com</Email>
</RECORD>
<RECORD>
<LastName>Mumford</LastName>
<FirstName>Effie</FirstName>
<Email>mumforde@emailserver.com</Email>
</RECORD>
</ROOT>
In a Workflow process, use the above as your XML sample data file. Add a Open XSLT task to the process with the following code:
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
<xsl:output omit-xml-declaration="no" indent="yes"/>
<xsl:template match="/ROOT">
<ROOT>
<xsl:for-each select="./RECORD">
<RECORD>
<FullName>
<xsl:value-of select="concat(./FirstName, ' ', ./LastName)" />
</FullName>
<xsl:for-each select="./*">
<xsl:copy-of select="."/>
</xsl:for-each>
</RECORD>
</xsl:for-each>
</ROOT>
</xsl:template>
</xsl:stylesheet>
This code adds a FullName
field to each record. That new field is a concatenation of the FirstName
and LastName
fields in each record:
<?xml version="1.0" encoding="UTF-8"?>
<ROOT>
<RECORD>
<FullName>Lakeisha Eaves</FullName>
<LastName>Eaves</LastName>
<FirstName>Lakeisha</FirstName>
<Email>eavesl@emailserver.com</Email>
</RECORD>
<RECORD>
<FullName>Effie Mumford</FullName>
<LastName>Mumford</LastName>
<FirstName>Effie</FirstName>
<Email>mumforde@emailserver.com</Email>
</RECORD>
</ROOT>
Now if you are comfortable with XSLT, then feel free to modify this code to suit your needs. But if you aren’t, please contact your reseller to have someone implement it for you. We can unfortunately not develop custom solutions on these forums.