Skip to content
LambogeniusDocs

Compose using XSLT for Azure Logic Apps

Introduction

What Compose using XSLT does, and how it differs from the stock Logic Apps XSLT actions.

Service provider/serviceProviders/lamboXsltComposeOperation ComposeXslt, shown in the designer as Compose using XSLT.

XSLT maps as a built-in action

Compose using XSLT transforms XML with an XSLT 1.0 stylesheet inside a Logic Apps Standard workflow. It is a built-in (service provider) connector, installed as a NuGet package, so it runs in the Logic App itself: no integration account and no extra Azure resources.

It is made for the maps that real integrations already have, many of them from BizTalk Server: XSLT 1.0 with imported modules, msxsl:script C# helpers, and lookups against other systems.

Compose using XSLTLogic Apps Transform XML (built-in)
MapsDeployed (Artifacts/Maps) or inline in the workflowDeployed maps or an integration account
Include and importRelative modules inside the map folder, with XSLT 1.0 import precedenceNot for deployed map files
Embedded C#msxsl:script, compiled with Roslyn (a documented C# subset)Not in Standard (inline scripts need .NET Framework assemblies)
Lookupsaz:InvokeText calls an Azure Function, by alias, from XPathNo
IsolationA supervised worker process per transformation, killed at the deadlineIn the Logic Apps host
Outputxml, html or text, always UTF-8, with timings and cache diagnosticsxml, html or text

How it runs

  • Supervised workers. Transformations run in a small pool of worker processes. When the action's deadline passes, the worker is killed and replaced: a runaway script or a deep recursion cannot hang the Logic App.
  • Compiled once. Each worker caches compiled maps (C# included) by content hash, so later runs take about a millisecond plus the transformation itself.
  • Safe by default. document(), DTDs, network and file access outside the map folder are refused; Function endpoints come only from an operator-owned registry; errors never contain payload data.
XSLT 1.0

The engine is .NET's XslCompiledTransform. XSLT 2.0 and 3.0 stylesheets are rejected with UnsupportedXsltVersion.