AutomationFlowsWeb Scraping › Sql To Xml Export With Xsl Template Formatting

Sql To Xml Export With Xsl Template Formatting

Sql To Xml Export With Xsl Template Formatting. Uses mySql, itemLists, xml, html. Webhook trigger; 15 nodes.

Webhook trigger★★★★☆ complexity15 nodesMy SqlItem ListsXmlMove Binary DataHttp Request
Web Scraping Trigger: Webhook Nodes: 15 Complexity: ★★★★☆

The workflow JSON

Copy or download the full n8n JSON below. Paste it into a new n8n workflow, add your credentials, activate. Full import guide →

Download .json
{
  "nodes": [
    {
      "id": "bca571ac-25dc-470d-b249-460861e99791",
      "name": "Webhook",
      "type": "n8n-nodes-base.webhook",
      "position": [
        660,
        380
      ],
      "parameters": {
        "path": "81115579-ca32-496f-baa7-f14fb3baec6f",
        "options": {},
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "e851d287-f739-462e-816b-605daf7b4897",
      "name": "Show 16 random products",
      "type": "n8n-nodes-base.mySql",
      "position": [
        840,
        380
      ],
      "parameters": {
        "query": "SELECT * from products\nORDER BY RAND()\nLIMIT 16;",
        "options": {},
        "operation": "executeQuery"
      },
      "credentials": {
        "mySql": {
          "name": "<your credential>"
        }
      },
      "typeVersion": 2.1
    },
    {
      "id": "895725ed-e250-408b-95f5-32223a58adfe",
      "name": "Define file structure",
      "type": "n8n-nodes-base.set",
      "position": [
        1020,
        380
      ],
      "parameters": {
        "values": {
          "string": [
            {
              "name": "Product.Code",
              "value": "={{ $json.productCode }}"
            },
            {
              "name": "Product.Name",
              "value": "={{ $json.productName }}"
            },
            {
              "name": "Product.Line",
              "value": "={{ $json.productLine }}"
            },
            {
              "name": "Product.Scale",
              "value": "={{ $json.productScale }}"
            },
            {
              "name": "Product.Price",
              "value": "={{ $json.MSRP }}"
            }
          ]
        },
        "options": {},
        "keepOnlySet": true
      },
      "typeVersion": 2
    },
    {
      "id": "4bf5deb3-56d8-45f3-8c26-01cd7e58968c",
      "name": "Concatenate Items",
      "type": "n8n-nodes-base.itemLists",
      "position": [
        1200,
        380
      ],
      "parameters": {
        "aggregate": "aggregateAllItemData",
        "operation": "concatenateItems",
        "destinationFieldName": "Products"
      },
      "typeVersion": 3
    },
    {
      "id": "0d97118d-bf0c-4084-9d18-54fed1a9c8b6",
      "name": "Convert to XML",
      "type": "n8n-nodes-base.xml",
      "position": [
        1380,
        380
      ],
      "parameters": {
        "mode": "jsonToxml",
        "options": {
          "headless": true
        }
      },
      "typeVersion": 1
    },
    {
      "id": "670f23f3-2b18-4121-93c8-6b047f999054",
      "name": "Create HTML",
      "type": "n8n-nodes-base.html",
      "position": [
        1760,
        380
      ],
      "parameters": {
        "html": "<?xml version=\"1.0\" encoding=\"ISO-8859-1\"?>\n<?xml-stylesheet type=\"text/xsl\" href=\"{{ $env.WEBHOOK_URL }}webhook/044ccd2d-d1a7-485b-bb22-218a6848fd1c/models.xsl\"?>\n\n{{ $json.data }}"
      },
      "typeVersion": 1
    },
    {
      "id": "43bb6052-4a4e-4951-836b-ee5afe478188",
      "name": "Move Binary Data",
      "type": "n8n-nodes-base.moveBinaryData",
      "position": [
        2240,
        380
      ],
      "parameters": {
        "mode": "jsonToBinary",
        "options": {
          "mimeType": "text/xml",
          "keepSource": false,
          "useRawData": true
        },
        "sourceKey": "html",
        "convertAllData": false
      },
      "typeVersion": 1
    },
    {
      "id": "3ca41f0f-e21a-450e-bfbe-8d94c3f65277",
      "name": "Respond to Webhook",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        2420,
        380
      ],
      "parameters": {
        "options": {
          "responseCode": 200,
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "text/xml"
              },
              {
                "name": "Control-Allow-Origin",
                "value": "*"
              }
            ]
          }
        },
        "respondWith": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "776db7a4-7e03-4bb1-a937-e15cb1f66a59",
      "name": "Get XSLT",
      "type": "n8n-nodes-base.httpRequest",
      "position": [
        840,
        740
      ],
      "parameters": {
        "url": "https://gist.githubusercontent.com/teds-tech-talks/02c4bb157627e5e9031df996ffa7d2d2/raw/9a058ba2866c9853c52cdd136c74276b883af04a/models.xsl",
        "options": {
          "response": {
            "response": {
              "responseFormat": "file"
            }
          }
        }
      },
      "typeVersion": 4.1
    },
    {
      "id": "aedf30e5-d670-4f14-8ba1-f7afd613628d",
      "name": "Respond to Webhook1",
      "type": "n8n-nodes-base.respondToWebhook",
      "position": [
        1020,
        740
      ],
      "parameters": {
        "options": {
          "responseCode": 200,
          "responseHeaders": {
            "entries": [
              {
                "name": "Content-Type",
                "value": "text/xsl"
              }
            ]
          }
        },
        "respondWith": "binary"
      },
      "typeVersion": 1
    },
    {
      "id": "cb69cda9-3639-46cc-a16d-aaf101261fb2",
      "name": "Request xsl template",
      "type": "n8n-nodes-base.webhook",
      "position": [
        660,
        740
      ],
      "parameters": {
        "path": "044ccd2d-d1a7-485b-bb22-218a6848fd1c/models.xsl",
        "options": {
          "rawBody": false
        },
        "responseMode": "responseNode"
      },
      "typeVersion": 1
    },
    {
      "id": "306bc89e-d497-4344-9bb5-6f4ea607130a",
      "name": "Sticky Note",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        620,
        657.1779141104296
      ],
      "parameters": {
        "width": 644.1717791411014,
        "height": 249.44785276073617,
        "content": "### This webhook is needed to comply with the CORS policy of modern browsers.\n### It requests XSL template stored on GitHub gist and serves it using your n8n URL"
      },
      "typeVersion": 1
    },
    {
      "id": "5f57d577-577f-4dc9-a0b3-696fedeeab08",
      "name": "Sticky Note1",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        800,
        234.8490345891829
      ],
      "parameters": {
        "width": 728.0981595091996,
        "height": 315.4577138770747,
        "content": "## Get data from SQL and convert it to XML\n### Note that XML node has an activated Headless toggle"
      },
      "typeVersion": 1
    },
    {
      "id": "21ecc2b5-8ae1-421b-8a0e-8d75d94dd63e",
      "name": "Sticky Note2",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        1560,
        233.36956603560543
      ],
      "parameters": {
        "width": 511.65644171779115,
        "height": 315.43648613045264,
        "content": "## Set node can be used as well\n### XML declaration and a link to the XSL template are added here\n### Note that {{$env.WEBHOOK_URL}} variable is used, so that an URL of your n8n instance is automatically selected"
      },
      "typeVersion": 1
    },
    {
      "id": "84df91b1-767b-46fb-aa1f-847b549a3c0d",
      "name": "Sticky Note3",
      "type": "n8n-nodes-base.stickyNote",
      "position": [
        2100,
        237.0954119462532
      ],
      "parameters": {
        "width": 531.5337423312881,
        "height": 312.1448304414918,
        "content": "## Convert to binary data and send the webhook response"
      },
      "typeVersion": 1
    }
  ],
  "connections": {
    "Webhook": {
      "main": [
        [
          {
            "node": "Show 16 random products",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Get XSLT": {
      "main": [
        [
          {
            "node": "Respond to Webhook1",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Create HTML": {
      "main": [
        [
          {
            "node": "Move Binary Data",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Convert to XML": {
      "main": [
        [
          {
            "node": "Create HTML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Move Binary Data": {
      "main": [
        [
          {
            "node": "Respond to Webhook",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Concatenate Items": {
      "main": [
        [
          {
            "node": "Convert to XML",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Request xsl template": {
      "main": [
        [
          {
            "node": "Get XSLT",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Define file structure": {
      "main": [
        [
          {
            "node": "Concatenate Items",
            "type": "main",
            "index": 0
          }
        ]
      ]
    },
    "Show 16 random products": {
      "main": [
        [
          {
            "node": "Define file structure",
            "type": "main",
            "index": 0
          }
        ]
      ]
    }
  }
}

Credentials you'll need

Each integration node will prompt for credentials when you import. We strip credential IDs before publishing — you'll add your own.

About this workflow

Sql To Xml Export With Xsl Template Formatting. Uses mySql, itemLists, xml, html. Webhook trigger; 15 nodes.

Source: https://github.com/Zie619/n8n-workflows — original creator credit. Request a take-down →

More Web Scraping workflows → · Browse all categories →