Search Results for

    Show / Hide Table of Contents

    Using XML Library

    This article will give an overview of how the XML and XSLT tasks can be used within a workflow to process and transform data.  XML is used as the input and output of virtually all Zynk tasks, with various different object models being used. XSLT (and the Auto Mapper task) can be used to convert data to the required format.

    Input XML

    All of the examples are based around the following StockTransaction XML, which should be saved out to your working directory as input.xml

    <?xml version="1.0"?>
    <Company xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
        <StockTransactions>
            <StockTransaction>
                <UniqueId>1</UniqueId>
                <StockTransactionType>AdjustmentIn</StockTransactionType>
                <StockCode>BOARD001</StockCode>
                <StockTransactionDate>2006-12-31T00:00:00</StockTransactionDate>
                <Reference>STK TAKE</Reference>
                <Details>Whiteboard - Drywipe (900 x 1200)</Details>
                <Qty>2</Qty>
                <CostPrice>15</CostPrice>
                <SalesPrice>0</SalesPrice>
                <StockTransactionNumber>1</StockTransactionNumber>
            </StockTransaction>
            <StockTransaction>
                <UniqueId>2</UniqueId>
                <StockTransactionType>AdjustmentIn</StockTransactionType>
                <StockCode>BOARD002</StockCode>
                <StockTransactionDate>2006-12-31T00:00:00</StockTransactionDate>
                <Reference>STK TAKE</Reference>
                <Details>Whiteboard - Drywipe (1000 x 1500)</Details>
                <Qty>2</Qty>
                <CostPrice>17</CostPrice>
                <SalesPrice>0</SalesPrice>
                <StockTransactionNumber>2</StockTransactionNumber>
            </StockTransaction>
        </StockTransactions>
    </Company>
    

    XML Split Example

    XML Split can be used to batch large data sets into smaller chunks for processing, for example if you are uploading a large number of products to a website you might want to split the file and send as multiple requests.

    As an example we will split the above input XML file using the following settings:

    Input File

    Path to input.xml

    Output Folder

    XML

    Record Limit

    1

    XPath Query

    /Company/StockTransactions/StockTransaction

    The result of the task will be two files created in the XML folder in the working directory.  In the sample workflow there is a File Repeater task that will write out the names of the generated files using a Log Info Message task.

    XML Merge Example

    XML Merge can be used to create a single XML file from a number of smaller documents, for example if your third party systems exports orders to individual files you can create a single import file for easier processing.

    As an example we will merge back the two tasks from above using the following settings:

    Input Files

    (Output from previous task)

    Output File

    input2.xml

    In the sample workflow there is a List Files task above the XML Merge task, this will provide the file listing from the XML folder to the Input Files setting.  The result of the task will be a single file created called input2.xml in the working directory.

    XML Repeater Example

    XML Repeater can be used if you need to run part of your workflow based on the contents of an XML document, for example if you need to update a database based on the values in the sample file you could build up and execute a SQL statement based on the contents of the file.

    As an example we will write out the StockCode values from the above output file with the following settings:

    Input File

    input2.xml

    XPath Query

    /Company/StockTransactions/StockTransaction

    In the sample workflow we have a Log Info Message task that will write out the StockCode for each of the StockTransactions.

    XML to CSV Example

    XML to CSV can be used to create simple or complex mappings from XML to CSV, including support for flatting hierarchical data e.g. orders with order items in our XML format to a flat CSV format, for example to create a report to open in Excel.

    As an example we will convert the output file from above into a simple CSV format with the following settings:

    Input File

    input2.xml

    Mapping Fields

    From To Format
    StockCode Code string
    StockTransactionType type string
    Qty quantity decimal
    CostPrice cost decimal (with format c)

    Output File

    output.csv

    XPath

    /Company/StockTransactions/StockTransaction

    In the sample workflow we have a Log Info Message task that will write out the contents of the CSV file generated by the workflow.

    XSLT Transformation Example

    XSLT Transformation is used in most integrations to convert between different XML formats, and the Auto Mapper tasks provides a collection of pre-canned mappings that can be used to quickly build workflows.

    Save the below to transform.xslt

    <xsl:stylesheet
        version="1.0"
        xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
    
        <xsl:output method="xml" indent="yes" />
    
        <xsl:template match="/">
            <Rows>
                <xsl:for-each select="Company/StockTransactions/StockTransaction">
                    <xsl:call-template name="ProcessRow" />
                </xsl:for-each>
            </Rows>
        </xsl:template>
    
        <xsl:template name="ProcessRow">
            <Row>
                <Code><xsl:value-of select="StockCode" /></Code>
                <Type><xsl:value-of select="StockTransactionType" /></Type>
                <Quantity><xsl:value-of select="Qty" /></Quantity>
                <Cost><xsl:value-of select="CostPrice" /></Cost>
            </Row>
        </xsl:template>
    </xsl:stylesheet>
    

    As an example we will convert the output file from the above into a simple XML format with the following settings:

    Input File

    input2.xml

    Output File

    output.xml

    XSLT File

    transform.xslt

    In the sample workflow we have a Log Info message task that will write out the contents of the XML file generated by the workflow.

    In This Article
    Zynk Documentation © 2021, Zynk Software Limited. Zynk is a registered trademark of Zynk Software Limited