- 8 minutes to read

Add or manage Stylesheet

Transform logged messages into user-friendly formats for self-service Log Views and alarm notifications.

A Stylesheet is associated with one or more Message Types to render user-friendly output for logged messages (Log Events) and alert notifications sent by Alarm Plugins.

Understanding the Stylesheet Editor

graph LR A["fa:fa-square-plus Add Stylesheet
Name and Description"] --> B["fa:fa-code Type
XSLT or Liquid"] B --> C["fa:fa-tags Associate
Message Types"] C --> D["fa:fa-file-lines Message Body
Raw input, File upload, or Message Id"] D --> E["fa:fa-eye Preview"] E --> F["fa:fa-save Save"] style A fill:#2678BD,color:#fff style B fill:#2678BD,color:#fff style C fill:#2678BD,color:#fff style D fill:#E47528,color:#fff style E fill:#E47528,color:#fff style F fill:#93d16d,color:#000

Define the Stylesheet (blue), test it against sample data (orange), and save it (green) so Log Views and Alarm Plugins can use it.

Key Capabilities

  • Transform XML messages with XSLT into HTML or other XML formats
  • Transform JSON messages with Liquid templates
  • Preview output before deploying to production
  • Associate one stylesheet with multiple Message Types
  • Customize display for both Log Views and email alerts
Option Best for Input
XSLT XML messages and the alarm object of the Email Alarm Plugins XML
Liquid JSON messages, flat files, and the Event Log Alarm Plugin JSON, or the raw body as text

Add Stylesheet

Click the 'Add stylesheet' button to create a new Stylesheet for use with selected Message Types.

Add Stylesheet button in the Stylesheets list
The Add Stylesheet button sits in the upper right corner of the Stylesheets Overview.

Add the Liquid Stylesheet Contoso - Invoice view with Render as HTML and a short template, then find it in the list, animated walkthrough (7.12)
Animated walkthrough: a new Liquid Stylesheet, from Add Stylesheet to the list.

  1. Click Add Stylesheet.
  2. Enter the Name Contoso - Invoice view and a Description.
  3. Choose the Type Liquid. A new Stylesheet starts as XSLT.
  4. Tick Render as HTML. Message Body is Json is already checked for a new Liquid Stylesheet.
  5. Paste the template: the invoice, the order, the customer, the lines, and the total.
  6. Click Save and close. The new Stylesheet is in the list.

The Add Stylesheet form opens with these fields and options, top to bottom:

Empty Add Stylesheet form with Name, Description, Type, Render as HTML, the Stylesheet editor, and the Message Types panels (7.12)
A new Stylesheet defaults to XSLT; only the Name is mandatory, and the Save buttons are greyed out on the empty form.

Field or option Where Description
Name * Main form Mandatory name of the Stylesheet, shown in the Stylesheets list and when you pick a Stylesheet elsewhere.
Description Main form Optional details about the Stylesheet's purpose.
Type Main form The template language: XSLT (default) or Liquid, see below.
Render as HTML Main form Checkbox. When checked, the output is rendered as HTML.
Message Body is Json Main form Shown when Type is Liquid, and checked by default on a new Stylesheet. When checked, the message body is treated as JSON; when unchecked, it is available as {{data}}, see Liquid.
Stylesheet Main form The code editor for the template (left pane) next to the rendered preview (right pane); drag the divider between them to resize. Above the editor sit the Message Body button, which opens the test message dialog (see Preview with a test message body), an icon for full-screen editing, and an icon that rotates the two panes between side by side and stacked. This split editor is shared across Nodinite: Articles, and the BPM and C4 Diagram views opened from a Log View, work the same way.
Message Types Right panel Click Edit to bind specific Message Types, see Associate with Message Types.
Message Types By Name Right panel Click Edit to bind Message Types by a name pattern, see Bind by name.
Save, Save and close, Close Bottom right Save keeps the editor open, Save and close returns to the list, and Close leaves the editor. The header also holds Add Stylesheet and Save.

Next, select the type of stylesheet. Currently, the following two formats are supported:

  1. XSLT - for XML transformations
  2. Liquid - for JSON transformations

Type dropdown with the XSLT and Liquid options (7.12)
The editor below the Type field switches to the selected language.

XSLT

XSLT stands for EXtensible Stylesheet Language Transformations, and is a style sheet language for XML documents.

Use XSLT to format XML messages into other XML formats or HTML. Set the output MIME type with xsl:output, see Output Content-Type.

Liquid

If the message body is JSON you can use Liquid instead of XSLT to produce your output. With Message Body is Json checked, Nodinite injects the JSON properties as Liquid variables; unchecked, the raw body is available as {{data}} (see Line break an EDIFACT for an example).

Warning

A Stylesheet with embedded scripts, such as msxsl:script blocks or JavaScript, runs only when the StylesheetScriptsEnabled System Parameter is true. With false, the default on a new installation (an upgrade keeps its value), the Stylesheet fails and an error is logged.

Associate with Message Types

Click one of the Edit buttons to open a new dialogue to enter one or more Message Types. The include option by name (Message Types By Name, with % wildcards) is new with Nodinite version 7 New 7.x.

Message Types panel with O2C.Order.Invoice/1.0 bound and the Message Types By Name panel with the filter O2C.Order.Invoice/%, each with Edit (7.12)
Two ways to bind: Message Types one by one, here O2C.Order.Invoice/1.0, or Message Types By Name, here O2C.Order.Invoice/%. Each bound Message Type has an edit icon, Show in Mapify, and Show in Mermaid; click the red minus to remove a binding.

Tip

Multiple Message Types can be associated with the same Stylesheet.

Bind O2C.Order.Invoice/1.0 to the Stylesheet Contoso - Invoice view, then every version of it by the name pattern O2C.Order.Invoice/%, animated walkthrough (7.12)
Animated walkthrough: bound twice, to the invoice Message Type and to every version of it by name.

  1. Open the Stylesheet. It isn't bound to any Message Type yet.
  2. Click Edit on Message Types, find O2C.Order.Invoice/1.0, tick it, and click Confirm and close.
  3. Click Edit on Message Types By Name, and type the pattern O2C.Order.Invoice/%. Preview lists O2C.Order.Invoice/1.0.
  4. Click Confirm and close, then Save. Both cards show their binding.

Bind specific Message Types

Click Edit on the Message Types panel to open Assign Message Types to Stylesheet.

Assign Message Types to Stylesheet dialog filtered on O2C.Order, with the All and Selected tabs, Include deleted, and O2C.Order.Invoice/1.0 ticked (7.12)
Filter the list of Message Types, check the ones the Stylesheet should format, and click Confirm and close. The Selected tab shows what is bound.

Bind Message Types by name

Click Edit on the Message Types By Name panel to open Assign Message Types by name to Stylesheet. A name filter also binds Message Types created later, as long as their names match.

Assign Message Types by name to Stylesheet dialog with the filter O2C.Order.Invoice/%, the Add Filter button, and the Preview pane (7.12)
Each filter uses the SQL LIKE operator, so % is a wildcard: %test matches every Message Type whose name ends with "test". Preview shows the first 10 Message Types that match the most recently changed or clicked filter.

  1. Type a name or pattern in the filter box.
  2. Click Add Filter to add more patterns; a Message Type that matches any filter is bound.
  3. Check the matches in Preview, then click Confirm and close.

The pattern follows SQL LIKE, and the match ignores case:

  • % matches any run of characters, so O2C.Order.Invoice/% matches every version.
  • _ matches exactly one character; write [_] for a literal underscore.
  • [abc] and [^abc] match one character from, or not from, a set.
  • Regular expressions don't work.

Preview with a test message body

Test the Stylesheet against a sample message before you save it. The editor shows the template on the left and the rendered output on the right; until you supply a message body, the right pane says Please enter a message body to load the preview.

Stylesheet editor for the Liquid Stylesheet Contoso - Invoice view, bound to O2C.Order.Invoice/1.0 and by name to O2C.Order.Invoice/%, with the Message Body button above the two-pane editor (7.12)
An existing Liquid Stylesheet. The preview pane stays empty until you load a message body.

Load the Message Id of the ORD-10001 invoice as the test message body, and the editor renders the invoice, animated walkthrough (7.12)
Animated walkthrough: a real logged invoice as the test message, and the rendered invoice in the editor.

  1. Open the Stylesheet (or start a new one) and click Message Body above the editor.

    Message Body button of the Stylesheet editor (7.12)
    The button sits to the right of the Stylesheet label, next to the full-screen icon.

  2. The Edit Stylesheet dialog opens with the template on the left. Under Step 1 - Select data input, choose where the test message comes from: Raw input (default), File upload, or Message Id.

    Edit Stylesheet dialog with Step 1 - Select data input set to Raw input and the Step 2 - Raw input text box (7.12)
    With Raw input, paste the sample message into the Step 2 - Raw input box ("The message to preview").

  3. Under Step 2, supply the message body for the option you chose:

    • Raw input – paste or type the message data.
    • File upload – click Browse, or drop one file on the drop zone, to load a file that contains the message data.
    • Message Id – pick a Log Database in Select Log Database, enter the Message Id of a logged message (Log Event), and click Get Message. Use the event's Message Id, as the Log View shows it in the event details; an Event Id doesn't work. The message appears in Message data. The locate in Admin view link opens the Admin view, which helps you find the Message Id.

    Step 2 - File upload with the Browse button, the drop zone, and No file selected (7.12)
    Upload a sample file when the message is too large to paste.

    Message Id option with Step 2 - Message Id, Select Log Database, the Message Id field, Get Message, and the Message data box (7.12)
    Fetch a real logged message to test the Stylesheet against production data.

  4. Leave Auto-close after input checked to close the input menu and open the preview as soon as the message body is in place. Uncheck it to stay on the input steps.

  5. Click Preview in the dialog header to switch from the message body input to the rendered output. The button then reads Message Body; click it to go back and change the message.

    Preview button in the header of the Edit Stylesheet dialog, next to the rotate, full-screen, and close icons (7.12)
    The Preview button toggles the right side of the dialog between the message body and the rendered preview.

  6. Click Close to return to the Stylesheet editor. The test message stays loaded, and the editor's right pane keeps rendering it as you change the template. Confirm and Confirm and close are active only after you change the template inside the dialog: they copy that edit to the editor.

Tip

If the preview fails for a Stylesheet with embedded scripts, check the StylesheetScriptsEnabled System Parameter. For ready-made templates to test with, see the Stylesheet Examples.

Next Steps