Skip to content
LambogeniusDocs

Compose using XSLT for Azure Logic Apps

Maps and modules

Deployed and inline maps, include and import, output methods, and what XSLT 1.0 features are available.

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

Deployed maps

Deployed maps live in the Logic App's Artifacts/Maps folder (or the connection's mapFolder, or the XsltCompose__MapRoot setting) and are deployed with the app. A map can include and import other maps by relative path:

<!-- Artifacts/Maps/orders/order-to-sales-order.xslt -->
<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/Transform">
  <xsl:import href="../common/normalize.xslt"/>   <!-- relative to this module, inside the map folder -->
  …
</xsl:stylesheet>
  • Inside the map folder only. Absolute paths, drives, UNC, URLs, file:, .. escapes, symbolic links and junctions are refused with MapAccessDenied.
  • Errors name the module and line, for a missing import too: MapNotFound says which module referenced it, at which line.
  • Changing any module changes the map hash, so the compiled cache picks it up.

Inline maps

Set mapSource to inline and put the stylesheet in xslt. Good for small, self-contained maps; they cannot include or import.

Output

xsl:output methodcontentTypeTypical use
xml (default)application/xml; charset=utf-8Canonical messages, then xpath() in later actions
htmltext/html; charset=utf-8Reports and e-mails
texttext/plain; charset=utf-8CSV, fixed-width, or JSON text parsed with json()

XSLT 1.0 on .NET

  • msxsl:node-set() and the other built-in msxsl: functions work, so you can sum computed values without scripts.
  • EXSLT is not available; document() is disabled; DTDs are prohibited.
  • Output is always UTF-8 without a BOM, with \n line endings.
  • xsl:message terminate="yes" fails the action with TransformationFailed; the message text is not returned, because it may contain payload data.